@plait/draw 0.50.0 → 0.51.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 (83) hide show
  1. package/README.md +13 -1
  2. package/constants/line.d.ts +1 -0
  3. package/engines/basic-shapes/ellipse.d.ts +1 -10
  4. package/engines/flowchart/terminal.d.ts +1 -0
  5. package/esm2022/constants/line.mjs +2 -1
  6. package/esm2022/engines/basic-shapes/comment.mjs +4 -5
  7. package/esm2022/engines/basic-shapes/ellipse.mjs +5 -29
  8. package/esm2022/engines/basic-shapes/parallelogram.mjs +3 -2
  9. package/esm2022/engines/basic-shapes/pentagon.mjs +3 -3
  10. package/esm2022/engines/basic-shapes/polygon.mjs +20 -4
  11. package/esm2022/engines/basic-shapes/process-arrow.mjs +3 -3
  12. package/esm2022/engines/basic-shapes/rectangle.mjs +4 -4
  13. package/esm2022/engines/basic-shapes/round-comment.mjs +4 -5
  14. package/esm2022/engines/basic-shapes/round-rectangle.mjs +3 -3
  15. package/esm2022/engines/basic-shapes/star.mjs +3 -3
  16. package/esm2022/engines/basic-shapes/trapezoid.mjs +3 -2
  17. package/esm2022/engines/basic-shapes/triangle.mjs +5 -4
  18. package/esm2022/engines/flowchart/delay.mjs +6 -6
  19. package/esm2022/engines/flowchart/manual-input.mjs +5 -4
  20. package/esm2022/engines/flowchart/manual-loop.mjs +3 -2
  21. package/esm2022/engines/flowchart/merge.mjs +4 -4
  22. package/esm2022/engines/flowchart/stored-data.mjs +16 -10
  23. package/esm2022/engines/flowchart/terminal.mjs +37 -27
  24. package/esm2022/generators/geometry-shape.generator.mjs +3 -3
  25. package/esm2022/generators/line-active.generator.mjs +52 -68
  26. package/esm2022/generators/line.generator.mjs +2 -2
  27. package/esm2022/geometry.component.mjs +4 -4
  28. package/esm2022/interfaces/geometry.mjs +1 -1
  29. package/esm2022/interfaces/line.mjs +2 -2
  30. package/esm2022/line.component.mjs +39 -9
  31. package/esm2022/plugins/with-draw-fragment.mjs +3 -3
  32. package/esm2022/plugins/with-draw-hotkey.mjs +6 -6
  33. package/esm2022/plugins/with-draw-resize.mjs +149 -0
  34. package/esm2022/plugins/with-draw.mjs +14 -8
  35. package/esm2022/plugins/with-geometry-create.mjs +10 -10
  36. package/esm2022/plugins/with-geometry-resize.mjs +27 -74
  37. package/esm2022/plugins/with-line-auto-complete.mjs +17 -5
  38. package/esm2022/plugins/with-line-bound-reaction.mjs +6 -5
  39. package/esm2022/plugins/with-line-create.mjs +2 -2
  40. package/esm2022/plugins/with-line-resize.mjs +105 -19
  41. package/esm2022/plugins/with-line-text-move.mjs +5 -4
  42. package/esm2022/plugins/with-line-text.mjs +7 -5
  43. package/esm2022/transforms/geometry.mjs +4 -4
  44. package/esm2022/transforms/line.mjs +6 -8
  45. package/esm2022/utils/clipboard.mjs +2 -2
  46. package/esm2022/utils/geometry.mjs +16 -33
  47. package/esm2022/utils/hit.mjs +18 -10
  48. package/esm2022/utils/index.mjs +2 -2
  49. package/esm2022/utils/line/elbow.mjs +101 -0
  50. package/esm2022/utils/line/index.mjs +6 -0
  51. package/esm2022/utils/line/line-arrow.mjs +123 -0
  52. package/esm2022/utils/line/line-basic.mjs +258 -0
  53. package/esm2022/utils/line/line-common.mjs +111 -0
  54. package/esm2022/utils/line/line-resize.mjs +313 -0
  55. package/esm2022/utils/polygon.mjs +30 -0
  56. package/esm2022/utils/position/geometry.mjs +5 -6
  57. package/esm2022/utils/position/line.mjs +38 -15
  58. package/esm2022/utils/resize-align-reaction.mjs +316 -0
  59. package/esm2022/utils/resize-align.mjs +37 -0
  60. package/fesm2022/plait-draw.mjs +2108 -1143
  61. package/fesm2022/plait-draw.mjs.map +1 -1
  62. package/generators/line-active.generator.d.ts +4 -2
  63. package/interfaces/geometry.d.ts +1 -0
  64. package/interfaces/line.d.ts +4 -0
  65. package/package.json +1 -1
  66. package/plugins/with-draw-resize.d.ts +13 -0
  67. package/utils/geometry.d.ts +1 -3
  68. package/utils/hit.d.ts +3 -1
  69. package/utils/index.d.ts +1 -1
  70. package/utils/line/elbow.d.ts +19 -0
  71. package/utils/line/index.d.ts +5 -0
  72. package/utils/{line-arrow.d.ts → line/line-arrow.d.ts} +1 -1
  73. package/utils/line/line-basic.d.ts +13 -0
  74. package/utils/line/line-common.d.ts +35 -0
  75. package/utils/line/line-resize.d.ts +23 -0
  76. package/utils/polygon.d.ts +4 -0
  77. package/utils/position/geometry.d.ts +2 -3
  78. package/utils/position/line.d.ts +4 -2
  79. package/utils/resize-align-reaction.d.ts +42 -0
  80. package/utils/resize-align.d.ts +8 -0
  81. package/esm2022/utils/line-arrow.mjs +0 -123
  82. package/esm2022/utils/line.mjs +0 -392
  83. package/utils/line.d.ts +0 -25
@@ -1,6 +1,4 @@
1
- import { PlaitBoard, RectangleClient, drawRoundRectangle, getNearestPointBetweenPointAndSegments, isPointInRoundRectangle } from '@plait/core';
2
- import { getEdgeOnPolygonByPoint } from '../../utils/geometry';
3
- import { RectangleEngine } from '../basic-shapes/rectangle';
1
+ import { PlaitBoard, RectangleClient, drawRoundRectangle, getEllipseTangentSlope, getNearestPointBetweenPointAndSegments, getVectorFromPointAndSlope, isPointInRoundRectangle } from '@plait/core';
4
2
  import { getNearestPointBetweenPointAndEllipse } from '../basic-shapes/ellipse';
5
3
  export const TerminalEngine = {
6
4
  draw(board, rectangle, options) {
@@ -15,10 +13,18 @@ export const TerminalEngine = {
15
13
  getNearestPoint(rectangle, point) {
16
14
  return getNearestPointBetweenPointAndRoundRectangle(point, rectangle, getStartEndRadius(rectangle));
17
15
  },
18
- getEdgeByConnectionPoint(rectangle, pointOfRectangle) {
19
- const corners = RectangleEngine.getCornerPoints(rectangle);
20
- const point = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
21
- return getEdgeOnPolygonByPoint(corners, point);
16
+ getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
17
+ const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
18
+ const radius = getStartEndRadius(rectangle);
19
+ const center = getBoundCenterOfRoundRectangle(rectangle, radius, connectionPoint);
20
+ if (center) {
21
+ const point = [connectionPoint[0] - center[0], -(connectionPoint[1] - center[1])];
22
+ const a = radius;
23
+ const b = radius;
24
+ const slope = getEllipseTangentSlope(point[0], point[1], a, b);
25
+ return getVectorFromPointAndSlope(point[0], point[1], slope);
26
+ }
27
+ return null;
22
28
  },
23
29
  getConnectorPoints(rectangle) {
24
30
  return RectangleClient.getEdgeCenterPoints(rectangle);
@@ -28,32 +34,36 @@ export const getStartEndRadius = (rectangle) => {
28
34
  return Math.min(rectangle.width / 2, rectangle.height / 2);
29
35
  };
30
36
  export function getNearestPointBetweenPointAndRoundRectangle(point, rectangle, radius) {
31
- const { x: rectX, y: rectY, width, height } = rectangle;
32
- const cornerPoints = RectangleClient.getCornerPoints(rectangle);
33
- let result = getNearestPointBetweenPointAndSegments(point, cornerPoints);
34
- let circleCenter = null;
35
- const inLeftTop = point[0] >= rectX && point[0] <= rectX + radius && point[1] >= rectY && point[1] <= rectY + radius;
37
+ let result = null;
38
+ let boundCenter = getBoundCenterOfRoundRectangle(rectangle, radius, point);
39
+ if (boundCenter) {
40
+ result = getNearestPointBetweenPointAndEllipse(point, boundCenter, radius, radius);
41
+ }
42
+ else {
43
+ const cornerPoints = RectangleClient.getCornerPoints(rectangle);
44
+ result = getNearestPointBetweenPointAndSegments(point, cornerPoints);
45
+ }
46
+ return result;
47
+ }
48
+ export function getBoundCenterOfRoundRectangle(rectangle, radius, point) {
49
+ const { x, y, width, height } = rectangle;
50
+ let center = null;
51
+ const inLeftTop = point[0] >= x && point[0] <= x + radius && point[1] >= y && point[1] <= y + radius;
36
52
  if (inLeftTop) {
37
- circleCenter = [rectX + radius, rectY + radius];
53
+ center = [x + radius, y + radius];
38
54
  }
39
- const inLeftBottom = point[0] >= rectX && point[0] <= rectX + radius && point[1] >= rectY + height && point[1] <= rectY + height - radius;
55
+ const inLeftBottom = point[0] >= x && point[0] <= x + radius && point[1] >= y + height - radius && point[1] <= y + height;
40
56
  if (inLeftBottom) {
41
- circleCenter = [rectX + radius, rectY + height - radius];
57
+ center = [x + radius, y + height - radius];
42
58
  }
43
- const inRightTop = point[0] >= rectX + width - radius && point[0] <= rectX + width && point[1] >= rectY && point[1] <= rectY + radius;
59
+ const inRightTop = point[0] >= x + width - radius && point[0] <= x + width && point[1] >= y && point[1] <= y + radius;
44
60
  if (inRightTop) {
45
- circleCenter = [rectX + width - radius, rectY + radius];
61
+ center = [x + width - radius, y + radius];
46
62
  }
47
- const inRightBottom = point[0] >= rectX + width - radius &&
48
- point[0] <= rectX + width &&
49
- point[1] >= rectY + height - radius &&
50
- point[1] <= rectY + height;
63
+ const inRightBottom = point[0] >= x + width - radius && point[0] <= x + width && point[1] >= y + height - radius && point[1] <= y + height;
51
64
  if (inRightBottom) {
52
- circleCenter = [rectX + width - radius, rectY + height - radius];
53
- }
54
- if (circleCenter) {
55
- result = getNearestPointBetweenPointAndEllipse(point, circleCenter, radius, radius);
65
+ center = [x + width - radius, y + height - radius];
56
66
  }
57
- return result;
67
+ return center;
58
68
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL2Zsb3djaGFydC90ZXJtaW5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0NBQXNDLEVBQ3RDLHVCQUF1QixFQUMxQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFnQjtJQUN2QyxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE9BQU8sa0JBQWtCLENBQ3JCLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLFNBQVMsQ0FBQyxDQUFDLEVBQ1gsU0FBUyxDQUFDLENBQUMsRUFDWCxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQzdCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFDOUIsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQ2xDLEtBQUssRUFDTCxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FDL0IsQ0FBQztJQUNOLENBQUM7SUFDRCxLQUFLLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQzFDLE9BQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEI7UUFDdEMsT0FBTyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxlQUFlLENBQUMsU0FBMEIsRUFBRSxLQUFZO1FBQ3BELE9BQU8sNENBQTRDLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxTQUEwQixFQUFFLGdCQUFrQztRQUNuRixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxPQUFPLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsU0FBMEI7UUFDekMsT0FBTyxlQUFlLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQTBCLEVBQUUsRUFBRTtJQUM1RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsNENBQTRDLENBQUMsS0FBWSxFQUFFLFNBQTBCLEVBQUUsTUFBYztJQUNqSCxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDeEQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRSxJQUFJLE1BQU0sR0FBRyxzQ0FBc0MsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekUsSUFBSSxZQUFZLEdBQWlCLElBQUksQ0FBQztJQUV0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDckgsSUFBSSxTQUFTLEVBQUU7UUFDWCxZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQztLQUNuRDtJQUNELE1BQU0sWUFBWSxHQUNkLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pILElBQUksWUFBWSxFQUFFO1FBQ2QsWUFBWSxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQzVEO0lBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDdEksSUFBSSxVQUFVLEVBQUU7UUFDWixZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUM7S0FDM0Q7SUFDRCxNQUFNLGFBQWEsR0FDZixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNO1FBQ2xDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSztRQUN6QixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNO1FBQ25DLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQy9CLElBQUksYUFBYSxFQUFFO1FBQ2YsWUFBWSxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztLQUNwRTtJQUNELElBQUksWUFBWSxFQUFFO1FBQ2QsTUFBTSxHQUFHLHFDQUFxQyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBkcmF3Um91bmRSZWN0YW5nbGUsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgaXNQb2ludEluUm91bmRSZWN0YW5nbGVcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEVkZ2VPblBvbHlnb25CeVBvaW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL2VsbGlwc2UnO1xuXG5leHBvcnQgY29uc3QgVGVybWluYWxFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgICAgIHJlY3RhbmdsZS54LFxuICAgICAgICAgICAgcmVjdGFuZ2xlLnksXG4gICAgICAgICAgICByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIHsgLi4ub3B0aW9ucywgZmlsbFN0eWxlOiAnc29saWQnIH0sXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIGdldFN0YXJ0RW5kUmFkaXVzKHJlY3RhbmdsZSlcbiAgICAgICAgKTtcbiAgICB9LFxuICAgIGlzSGl0KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzUG9pbnRJblJvdW5kUmVjdGFuZ2xlKHBvaW50LCByZWN0YW5nbGUsIGdldFN0YXJ0RW5kUmFkaXVzKHJlY3RhbmdsZSkpO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXROZWFyZXN0UG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kUm91bmRSZWN0YW5nbGUocG9pbnQsIHJlY3RhbmdsZSwgZ2V0U3RhcnRFbmRSYWRpdXMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50T2ZSZWN0YW5nbGU6IFBvaW50T2ZSZWN0YW5nbGUpOiBbUG9pbnQsIFBvaW50XSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gUmVjdGFuZ2xlRW5naW5lLmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldEVkZ2VPblBvbHlnb25CeVBvaW50KGNvcm5lcnMsIHBvaW50KTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhcnRFbmRSYWRpdXMgPSAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICByZXR1cm4gTWF0aC5taW4ocmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLmhlaWdodCAvIDIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFJvdW5kUmVjdGFuZ2xlKHBvaW50OiBQb2ludCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHJhZGl1czogbnVtYmVyKSB7XG4gICAgY29uc3QgeyB4OiByZWN0WCwgeTogcmVjdFksIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3RhbmdsZTtcbiAgICBjb25zdCBjb3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgbGV0IHJlc3VsdCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBjb3JuZXJQb2ludHMpO1xuICAgIGxldCBjaXJjbGVDZW50ZXI6IFBvaW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBpbkxlZnRUb3AgPSBwb2ludFswXSA+PSByZWN0WCAmJiBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJiBwb2ludFsxXSA+PSByZWN0WSAmJiBwb2ludFsxXSA8PSByZWN0WSArIHJhZGl1cztcbiAgICBpZiAoaW5MZWZ0VG9wKSB7XG4gICAgICAgIGNpcmNsZUNlbnRlciA9IFtyZWN0WCArIHJhZGl1cywgcmVjdFkgKyByYWRpdXNdO1xuICAgIH1cbiAgICBjb25zdCBpbkxlZnRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCAmJiBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJiBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAmJiBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cztcbiAgICBpZiAoaW5MZWZ0Qm90dG9tKSB7XG4gICAgICAgIGNpcmNsZUNlbnRlciA9IFtyZWN0WCArIHJhZGl1cywgcmVjdFkgKyBoZWlnaHQgLSByYWRpdXNdO1xuICAgIH1cbiAgICBjb25zdCBpblJpZ2h0VG9wID0gcG9pbnRbMF0gPj0gcmVjdFggKyB3aWR0aCAtIHJhZGl1cyAmJiBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmIHBvaW50WzFdID49IHJlY3RZICYmIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzO1xuICAgIGlmIChpblJpZ2h0VG9wKSB7XG4gICAgICAgIGNpcmNsZUNlbnRlciA9IFtyZWN0WCArIHdpZHRoIC0gcmFkaXVzLCByZWN0WSArIHJhZGl1c107XG4gICAgfVxuICAgIGNvbnN0IGluUmlnaHRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCArIHdpZHRoIC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgKyBoZWlnaHQgLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQ7XG4gICAgaWYgKGluUmlnaHRCb3R0b20pIHtcbiAgICAgICAgY2lyY2xlQ2VudGVyID0gW3JlY3RYICsgd2lkdGggLSByYWRpdXMsIHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzXTtcbiAgICB9XG4gICAgaWYgKGNpcmNsZUNlbnRlcikge1xuICAgICAgICByZXN1bHQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlKHBvaW50LCBjaXJjbGVDZW50ZXIsIHJhZGl1cywgcmFkaXVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9lbmdpbmVzL2Zsb3djaGFydC90ZXJtaW5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUdWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLHNDQUFzQyxFQUN0QywwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQzFCLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBZ0I7SUFDdkMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxPQUFPLGtCQUFrQixDQUNyQixVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUM3QixTQUFTLENBQUMsQ0FBQyxFQUNYLFNBQVMsQ0FBQyxDQUFDLEVBQ1gsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUM3QixTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQzlCLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUNsQyxLQUFLLEVBQ0wsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQy9CLENBQUM7SUFDTixDQUFDO0lBQ0QsS0FBSyxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUMxQyxPQUFPLHVCQUF1QixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUNwRCxP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QUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztLQUNyQztJQUNELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFILElBQUksWUFBWSxFQUFFO1FBQ2QsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0tBQzlDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdEgsSUFBSSxVQUFVLEVBQUU7UUFDWixNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7S0FDN0M7SUFDRCxNQUFNLGFBQWEsR0FDZixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3pILElBQUksYUFBYSxFQUFFO1FBQ2YsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztLQUN0RDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZHJhd1JvdW5kUmVjdGFuZ2xlLFxuICAgIGdldEVsbGlwc2VUYW5nZW50U2xvcGUsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUsXG4gICAgaXNQb2ludEluUm91bmRSZWN0YW5nbGVcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UgfSBmcm9tICcuLi9iYXNpYy1zaGFwZXMvZWxsaXBzZSc7XG5cbmV4cG9ydCBjb25zdCBUZXJtaW5hbEVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLngsXG4gICAgICAgICAgICByZWN0YW5nbGUueSxcbiAgICAgICAgICAgIHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgZ2V0U3RhcnRFbmRSYWRpdXMocmVjdGFuZ2xlKVxuICAgICAgICApO1xuICAgIH0sXG4gICAgaXNIaXQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICByZXR1cm4gaXNQb2ludEluUm91bmRSZWN0YW5nbGUocG9pbnQsIHJlY3RhbmdsZSwgZ2V0U3RhcnRFbmRSYWRpdXMocmVjdGFuZ2xlKSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIHJldHVybiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRSb3VuZFJlY3RhbmdsZShwb2ludCwgcmVjdGFuZ2xlLCBnZXRTdGFydEVuZFJhZGl1cyhyZWN0YW5nbGUpKTtcbiAgICB9LFxuICAgIGdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnRPZlJlY3RhbmdsZTogUG9pbnRPZlJlY3RhbmdsZSkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgcG9pbnRPZlJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9IGdldFN0YXJ0RW5kUmFkaXVzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IGdldEJvdW5kQ2VudGVyT2ZSb3VuZFJlY3RhbmdsZShyZWN0YW5nbGUsIHJhZGl1cywgY29ubmVjdGlvblBvaW50KTtcbiAgICAgICAgaWYgKGNlbnRlcikge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBbY29ubmVjdGlvblBvaW50WzBdIC0gY2VudGVyWzBdLCAtKGNvbm5lY3Rpb25Qb2ludFsxXSAtIGNlbnRlclsxXSldO1xuICAgICAgICAgICAgY29uc3QgYSA9IHJhZGl1cztcbiAgICAgICAgICAgIGNvbnN0IGIgPSByYWRpdXM7XG4gICAgICAgICAgICBjb25zdCBzbG9wZSA9IGdldEVsbGlwc2VUYW5nZW50U2xvcGUocG9pbnRbMF0sIHBvaW50WzFdLCBhLCBiKSBhcyBhbnk7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUocG9pbnRbMF0sIHBvaW50WzFdLCBzbG9wZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICBnZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFN0YXJ0RW5kUmFkaXVzID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgcmV0dXJuIE1hdGgubWluKHJlY3RhbmdsZS53aWR0aCAvIDIsIHJlY3RhbmdsZS5oZWlnaHQgLyAyKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRSb3VuZFJlY3RhbmdsZShwb2ludDogUG9pbnQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByYWRpdXM6IG51bWJlcikge1xuICAgIGxldCByZXN1bHQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGJvdW5kQ2VudGVyOiBQb2ludCB8IG51bGwgPSBnZXRCb3VuZENlbnRlck9mUm91bmRSZWN0YW5nbGUocmVjdGFuZ2xlLCByYWRpdXMsIHBvaW50KTtcbiAgICBpZiAoYm91bmRDZW50ZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZShwb2ludCwgYm91bmRDZW50ZXIsIHJhZGl1cywgcmFkaXVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJlc3VsdCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBjb3JuZXJQb2ludHMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm91bmRDZW50ZXJPZlJvdW5kUmVjdGFuZ2xlKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByYWRpdXM6IG51bWJlciwgcG9pbnQ6IFBvaW50KSB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGU7XG4gICAgbGV0IGNlbnRlcjogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBpbkxlZnRUb3AgPSBwb2ludFswXSA+PSB4ICYmIHBvaW50WzBdIDw9IHggKyByYWRpdXMgJiYgcG9pbnRbMV0gPj0geSAmJiBwb2ludFsxXSA8PSB5ICsgcmFkaXVzO1xuICAgIGlmIChpbkxlZnRUb3ApIHtcbiAgICAgICAgY2VudGVyID0gW3ggKyByYWRpdXMsIHkgKyByYWRpdXNdO1xuICAgIH1cbiAgICBjb25zdCBpbkxlZnRCb3R0b20gPSBwb2ludFswXSA+PSB4ICYmIHBvaW50WzBdIDw9IHggKyByYWRpdXMgJiYgcG9pbnRbMV0gPj0geSArIGhlaWdodCAtIHJhZGl1cyAmJiBwb2ludFsxXSA8PSB5ICsgaGVpZ2h0O1xuICAgIGlmIChpbkxlZnRCb3R0b20pIHtcbiAgICAgICAgY2VudGVyID0gW3ggKyByYWRpdXMsIHkgKyBoZWlnaHQgLSByYWRpdXNdO1xuICAgIH1cbiAgICBjb25zdCBpblJpZ2h0VG9wID0gcG9pbnRbMF0gPj0geCArIHdpZHRoIC0gcmFkaXVzICYmIHBvaW50WzBdIDw9IHggKyB3aWR0aCAmJiBwb2ludFsxXSA+PSB5ICYmIHBvaW50WzFdIDw9IHkgKyByYWRpdXM7XG4gICAgaWYgKGluUmlnaHRUb3ApIHtcbiAgICAgICAgY2VudGVyID0gW3ggKyB3aWR0aCAtIHJhZGl1cywgeSArIHJhZGl1c107XG4gICAgfVxuICAgIGNvbnN0IGluUmlnaHRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSB4ICsgd2lkdGggLSByYWRpdXMgJiYgcG9pbnRbMF0gPD0geCArIHdpZHRoICYmIHBvaW50WzFdID49IHkgKyBoZWlnaHQgLSByYWRpdXMgJiYgcG9pbnRbMV0gPD0geSArIGhlaWdodDtcbiAgICBpZiAoaW5SaWdodEJvdHRvbSkge1xuICAgICAgICBjZW50ZXIgPSBbeCArIHdpZHRoIC0gcmFkaXVzLCB5ICsgaGVpZ2h0IC0gcmFkaXVzXTtcbiAgICB9XG4gICAgcmV0dXJuIGNlbnRlcjtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { BasicShapes } from '../interfaces';
2
- import { getRectangleByPoints, Generator } from '@plait/common';
2
+ import { Generator } from '@plait/common';
3
3
  import { getFillByElement, getLineDashByElement, getStrokeColorByElement, getStrokeWidthByElement } from '../utils/style/stroke';
4
4
  import { drawGeometry } from '../utils';
5
5
  import { RectangleClient } from '@plait/core';
@@ -8,7 +8,7 @@ export class GeometryShapeGenerator extends Generator {
8
8
  return true;
9
9
  }
10
10
  draw(element, data) {
11
- const rectangle = getRectangleByPoints(element.points);
11
+ const rectangle = RectangleClient.getRectangleByPoints(element.points);
12
12
  const shape = element.shape;
13
13
  if (shape === BasicShapes.text) {
14
14
  return;
@@ -25,4 +25,4 @@ export class GeometryShapeGenerator extends Generator {
25
25
  });
26
26
  }
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQW1DO0lBQzNFLE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDLElBQUksRUFBRTtZQUM1QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRTtZQUNyRixNQUFNLEVBQUUsV0FBVztZQUNuQixXQUFXO1lBQ1gsSUFBSTtZQUNKLGNBQWM7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzaWNTaGFwZXMsIFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5UG9pbnRzLCBHZW5lcmF0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldEZpbGxCeUVsZW1lbnQsIGdldExpbmVEYXNoQnlFbGVtZW50LCBnZXRTdHJva2VDb2xvckJ5RWxlbWVudCwgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgZHJhd0dlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXBlRGF0YSB7fVxuXG5leHBvcnQgY2xhc3MgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdEdlb21ldHJ5LCBTaGFwZURhdGE+IHtcbiAgICBjYW5EcmF3KGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIGRhdGE6IFNoYXBlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIGRhdGE6IFNoYXBlRGF0YSkge1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gZWxlbWVudC5zaGFwZTtcbiAgICAgICAgaWYgKHNoYXBlID09PSBCYXNpY1NoYXBlcy50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBnZXRTdHJva2VDb2xvckJ5RWxlbWVudCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0TGluZURhc2hCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBkcmF3R2VvbWV0cnkodGhpcy5ib2FyZCwgUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCAtc3Ryb2tlV2lkdGgpLCBzaGFwZSwge1xuICAgICAgICAgICAgc3Ryb2tlOiBzdHJva2VDb2xvcixcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgZmlsbCxcbiAgICAgICAgICAgIHN0cm9rZUxpbmVEYXNoXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQW1DO0lBQzNFLE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBSyxLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDNUIsT0FBTztTQUNWO1FBQ0QsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUU7WUFDckYsTUFBTSxFQUFFLFdBQVc7WUFDbkIsV0FBVztZQUNYLElBQUk7WUFDSixjQUFjO1NBQ2pCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2ljU2hhcGVzLCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBHZW5lcmF0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldEZpbGxCeUVsZW1lbnQsIGdldExpbmVEYXNoQnlFbGVtZW50LCBnZXRTdHJva2VDb2xvckJ5RWxlbWVudCwgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgZHJhd0dlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXBlRGF0YSB7fVxuXG5leHBvcnQgY2xhc3MgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdEdlb21ldHJ5LCBTaGFwZURhdGE+IHtcbiAgICBjYW5EcmF3KGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIGRhdGE6IFNoYXBlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIGRhdGE6IFNoYXBlRGF0YSkge1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGVsZW1lbnQuc2hhcGU7XG4gICAgICAgIGlmIChzaGFwZSA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHN0cm9rZUNvbG9yID0gZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGZpbGwgPSBnZXRGaWxsQnlFbGVtZW50KHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBzdHJva2VMaW5lRGFzaCA9IGdldExpbmVEYXNoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZHJhd0dlb21ldHJ5KHRoaXMuYm9hcmQsIFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgLXN0cm9rZVdpZHRoKSwgc2hhcGUsIHtcbiAgICAgICAgICAgIHN0cm9rZTogc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIGZpbGwsXG4gICAgICAgICAgICBzdHJva2VMaW5lRGFzaFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,9 +1,16 @@
1
- import { PlaitBoard, createG, distanceBetweenPointAndPoint, drawCircle, drawRectangle, getSelectedElements } from '@plait/core';
1
+ import { createG, drawRectangle, getSelectedElements } from '@plait/core';
2
2
  import { LineShape, PlaitLine } from '../interfaces';
3
- import { Generator, PRIMARY_COLOR, RESIZE_HANDLE_DIAMETER, getRectangleByPoints } from '@plait/common';
4
- import { getCurvePoints, getLinePoints } from '../utils';
3
+ import { Generator, PRIMARY_COLOR, drawFillPrimaryHandle, drawPrimaryHandle } from '@plait/common';
4
+ import { getMiddlePoints } from '../utils/line/line-basic';
5
5
  import { DefaultGeometryActiveStyle } from '../constants';
6
+ import { getNextRenderPoints } from '../utils/line/elbow';
7
+ import { isUpdatedHandleIndex } from '../utils/line';
8
+ import { getHitPointIndex } from '../utils/position/line';
6
9
  export class LineActiveGenerator extends Generator {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.onlySelectedCurrentLine = false;
13
+ }
7
14
  canDraw(element, data) {
8
15
  if (data.selected) {
9
16
  return true;
@@ -15,81 +22,58 @@ export class LineActiveGenerator extends Generator {
15
22
  draw(element, data) {
16
23
  const activeG = createG();
17
24
  const selectedElements = getSelectedElements(this.board);
18
- const isSingleSelection = selectedElements.length === 1;
19
- if (isSingleSelection) {
25
+ this.onlySelectedCurrentLine = selectedElements.length === 1;
26
+ if (this.onlySelectedCurrentLine) {
20
27
  activeG.classList.add('active');
21
28
  activeG.classList.add('line-handle');
22
29
  const points = PlaitLine.getPoints(this.board, element);
23
- points.forEach(point => {
24
- const circle = drawCircle(PlaitBoard.getRoughSVG(this.board), point, RESIZE_HANDLE_DIAMETER, {
25
- stroke: '#999999',
26
- strokeWidth: 1,
27
- fill: '#FFF',
28
- fillStyle: 'solid'
29
- });
30
- activeG.appendChild(circle);
30
+ let updatePoints = [...points];
31
+ let elbowNextRenderPoints = [];
32
+ if (element.shape === LineShape.elbow) {
33
+ updatePoints = points.slice(0, 1).concat(points.slice(-1));
34
+ elbowNextRenderPoints = getNextRenderPoints(this.board, element, data.linePoints);
35
+ }
36
+ updatePoints.forEach(point => {
37
+ const updateHandle = drawPrimaryHandle(this.board, point);
38
+ activeG.appendChild(updateHandle);
31
39
  });
32
- getMiddlePoints(this.board, element).forEach(point => {
33
- const circle = drawCircle(PlaitBoard.getRoughSVG(this.board), point, RESIZE_HANDLE_DIAMETER, {
34
- stroke: '#FFFFFF80',
35
- strokeWidth: 1,
36
- fill: `${PRIMARY_COLOR}80`,
37
- fillStyle: 'solid'
38
- });
40
+ const middlePoints = getMiddlePoints(this.board, element);
41
+ for (let i = 0; i < middlePoints.length; i++) {
42
+ const point = middlePoints[i];
43
+ if (element.shape === LineShape.elbow && elbowNextRenderPoints.length) {
44
+ const handleIndex = getHitPointIndex(middlePoints, point);
45
+ const isUpdateHandleIndex = isUpdatedHandleIndex(this.board, element, [...points], elbowNextRenderPoints, handleIndex);
46
+ if (isUpdateHandleIndex) {
47
+ const updateHandle = drawPrimaryHandle(this.board, point);
48
+ activeG.appendChild(updateHandle);
49
+ continue;
50
+ }
51
+ }
52
+ const circle = drawFillPrimaryHandle(this.board, point);
39
53
  activeG.appendChild(circle);
40
- });
54
+ }
41
55
  }
42
56
  else {
43
- const points = getLinePoints(this.board, element);
44
- const activeRectangle = getRectangleByPoints(points);
45
- let opacity = '0.5';
46
- if (activeRectangle.height === 0 || activeRectangle.width === 0) {
47
- opacity = '0.8';
57
+ const activeRectangle = this.board.getRectangle(element);
58
+ if (activeRectangle) {
59
+ let opacity = '0.5';
60
+ if (activeRectangle.height === 0 || activeRectangle.width === 0) {
61
+ opacity = '0.8';
62
+ }
63
+ const strokeG = drawRectangle(this.board, activeRectangle, {
64
+ stroke: PRIMARY_COLOR,
65
+ strokeWidth: DefaultGeometryActiveStyle.selectionStrokeWidth
66
+ });
67
+ strokeG.style.opacity = opacity;
68
+ activeG.appendChild(strokeG);
48
69
  }
49
- const strokeG = drawRectangle(this.board, activeRectangle, {
50
- stroke: PRIMARY_COLOR,
51
- strokeWidth: DefaultGeometryActiveStyle.selectionStrokeWidth
52
- });
53
- strokeG.style.opacity = opacity;
54
- activeG.appendChild(strokeG);
55
70
  }
56
71
  return activeG;
57
72
  }
58
- }
59
- export function getMiddlePoints(board, element) {
60
- const result = [];
61
- const shape = element.shape;
62
- const hideBuffer = 10;
63
- if (shape === LineShape.straight) {
64
- const points = PlaitLine.getPoints(board, element);
65
- for (let i = 0; i < points.length - 1; i++) {
66
- const distance = distanceBetweenPointAndPoint(...points[i], ...points[i + 1]);
67
- if (distance < hideBuffer)
68
- continue;
69
- result.push([(points[i][0] + points[i + 1][0]) / 2, (points[i][1] + points[i + 1][1]) / 2]);
70
- }
71
- }
72
- if (shape === LineShape.curve) {
73
- const points = PlaitLine.getPoints(board, element);
74
- const pointsOnBezier = getCurvePoints(board, element);
75
- if (points.length === 2) {
76
- const start = 0;
77
- const endIndex = pointsOnBezier.length - 1;
78
- const middleIndex = Math.round((start + endIndex) / 2);
79
- result.push(pointsOnBezier[middleIndex]);
80
- }
81
- else {
82
- for (let i = 0; i < points.length - 1; i++) {
83
- const startIndex = pointsOnBezier.findIndex(point => point[0] === points[i][0] && point[1] === points[i][1]);
84
- const endIndex = pointsOnBezier.findIndex(point => point[0] === points[i + 1][0] && point[1] === points[i + 1][1]);
85
- const middleIndex = Math.round((startIndex + endIndex) / 2);
86
- const distance = distanceBetweenPointAndPoint(...points[i], ...points[i + 1]);
87
- if (distance < hideBuffer)
88
- continue;
89
- result.push(pointsOnBezier[middleIndex]);
90
- }
91
- }
73
+ needUpdate() {
74
+ const selectedElements = getSelectedElements(this.board);
75
+ const onlySelectedCurrentLine = selectedElements.length === 1;
76
+ return onlySelectedCurrentLine !== this.onlySelectedCurrentLine;
92
77
  }
93
- return result;
94
78
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9saW5lLWFjdGl2ZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFNBQWdDO0lBQ3JFLE9BQU8sQ0FBQyxPQUFrQixFQUFFLElBQWdCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFrQixFQUFFLElBQWdCO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0saUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLGlCQUFpQixFQUFFO1lBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFD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QUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RyxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkgsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLElBQUksUUFBUSxHQUFHLFVBQVU7b0JBQUUsU0FBUztnQkFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUM1QztTQUNKO0tBQ0o7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGNyZWF0ZUcsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsIGRyYXdDaXJjbGUsIGRyYXdSZWN0YW5nbGUsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgR2VuZXJhdG9yLCBQUklNQVJZX0NPTE9SLCBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCBnZXRSZWN0YW5nbGVCeVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0Q3VydmVQb2ludHMsIGdldExpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBEZWZhdWx0R2VvbWV0cnlBY3RpdmVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlRGF0YSB7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lQWN0aXZlR2VuZXJhdG9yIGV4dGVuZHMgR2VuZXJhdG9yPFBsYWl0TGluZSwgQWN0aXZlRGF0YT4ge1xuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBBY3RpdmVEYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXRhLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBBY3RpdmVEYXRhKTogU1ZHR0VsZW1lbnQge1xuICAgICAgICBjb25zdCBhY3RpdmVHID0gY3JlYXRlRygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVTZWxlY3Rpb24gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgaWYgKGlzU2luZ2xlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBhY3RpdmVHLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgYWN0aXZlRy5jbGFzc0xpc3QuYWRkKCdsaW5lLWhhbmRsZScpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIHBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaXJjbGUgPSBkcmF3Q2lyY2xlKFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCksIHBvaW50LCBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJyM5OTk5OTknLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJyNGRkYnLFxuICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKGNpcmNsZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGdldE1pZGRsZVBvaW50cyh0aGlzLmJvYXJkLCBlbGVtZW50KS5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaXJjbGUgPSBkcmF3Q2lyY2xlKFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCksIHBvaW50LCBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJyNGRkZGRkY4MCcsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBgJHtQUklNQVJZX0NPTE9SfTgwYCxcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIGxldCBvcGFjaXR5ID0gJzAuNSc7XG4gICAgICAgICAgICBpZiAoYWN0aXZlUmVjdGFuZ2xlLmhlaWdodCA9PT0gMCB8fCBhY3RpdmVSZWN0YW5nbGUud2lkdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5ID0gJzAuOCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdHJva2VHID0gZHJhd1JlY3RhbmdsZSh0aGlzLmJvYXJkLCBhY3RpdmVSZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRHZW9tZXRyeUFjdGl2ZVN0eWxlLnNlbGVjdGlvblN0cm9rZVdpZHRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN0cm9rZUcuc3R5bGUub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKHN0cm9rZUcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY3RpdmVHO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pZGRsZVBvaW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSB7XG4gICAgY29uc3QgcmVzdWx0OiBQb2ludFtdID0gW107XG4gICAgY29uc3Qgc2hhcGUgPSBlbGVtZW50LnNoYXBlO1xuICAgIGNvbnN0IGhpZGVCdWZmZXIgPSAxMDtcbiAgICBpZiAoc2hhcGUgPT09IExpbmVTaGFwZS5zdHJhaWdodCkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBQbGFpdExpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4ucG9pbnRzW2ldLCAuLi5wb2ludHNbaSArIDFdKTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IGhpZGVCdWZmZXIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goWyhwb2ludHNbaV1bMF0gKyBwb2ludHNbaSArIDFdWzBdKSAvIDIsIChwb2ludHNbaV1bMV0gKyBwb2ludHNbaSArIDFdWzFdKSAvIDJdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hhcGUgPT09IExpbmVTaGFwZS5jdXJ2ZSkge1xuICAgICAgICBjb25zdCBwb2ludHMgPSBQbGFpdExpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgcG9pbnRzT25CZXppZXIgPSBnZXRDdXJ2ZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IDA7XG4gICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHBvaW50c09uQmV6aWVyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBtaWRkbGVJbmRleCA9IE1hdGgucm91bmQoKHN0YXJ0ICsgZW5kSW5kZXgpIC8gMik7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwb2ludHNPbkJlemllclttaWRkbGVJbmRleF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHBvaW50c09uQmV6aWVyLmZpbmRJbmRleChwb2ludCA9PiBwb2ludFswXSA9PT0gcG9pbnRzW2ldWzBdICYmIHBvaW50WzFdID09PSBwb2ludHNbaV1bMV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gcG9pbnRzT25CZXppZXIuZmluZEluZGV4KHBvaW50ID0+IHBvaW50WzBdID09PSBwb2ludHNbaSArIDFdWzBdICYmIHBvaW50WzFdID09PSBwb2ludHNbaSArIDFdWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGVJbmRleCA9IE1hdGgucm91bmQoKHN0YXJ0SW5kZXggKyBlbmRJbmRleCkgLyAyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4ucG9pbnRzW2ldLCAuLi5wb2ludHNbaSArIDFdKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBoaWRlQnVmZmVyKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwb2ludHNPbkJlemllclttaWRkbGVJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9saW5lLWFjdGl2ZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFNBQWdDO0lBQXpFOztRQUNJLDRCQUF1QixHQUFHLEtBQUssQ0FBQztJQWtFcEMsQ0FBQztJQWhFRyxPQUFPLENBQUMsT0FBa0IsRUFBRSxJQUFnQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBa0IsRUFBRSxJQUFnQjtRQUNyQyxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUMxQixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFL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ZSxFQUFFO29CQUN2RCxNQUFNLEVBQUUsYUFBYTtvQkFDckIsV0FBVyxFQUFFLDBCQUEwQixDQUFDLG9CQUFvQjtpQkFDL0QsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQkFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDOUQsT0FBTyx1QkFBdUIsS0FBSyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDcEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIGNyZWF0ZUcsIGRyYXdSZWN0YW5nbGUsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgR2VuZXJhdG9yLCBQUklNQVJZX0NPTE9SLCBkcmF3RmlsbFByaW1hcnlIYW5kbGUsIGRyYXdQcmltYXJ5SGFuZGxlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRNaWRkbGVQb2ludHMgfSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtYmFzaWMnO1xuaW1wb3J0IHsgRGVmYXVsdEdlb21ldHJ5QWN0aXZlU3R5bGUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TmV4dFJlbmRlclBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvZWxib3cnO1xuaW1wb3J0IHsgaXNVcGRhdGVkSGFuZGxlSW5kZXggfSBmcm9tICcuLi91dGlscy9saW5lJztcbmltcG9ydCB7IGdldEhpdFBvaW50SW5kZXggfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVEYXRhIHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBsaW5lUG9pbnRzOiBQb2ludFtdO1xufVxuXG5leHBvcnQgY2xhc3MgTGluZUFjdGl2ZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIEFjdGl2ZURhdGE+IHtcbiAgICBvbmx5U2VsZWN0ZWRDdXJyZW50TGluZSA9IGZhbHNlO1xuXG4gICAgY2FuRHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBTVkdHRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLm9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgIGlmICh0aGlzLm9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lKSB7XG4gICAgICAgICAgICBhY3RpdmVHLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgYWN0aXZlRy5jbGFzc0xpc3QuYWRkKCdsaW5lLWhhbmRsZScpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGxldCB1cGRhdGVQb2ludHMgPSBbLi4ucG9pbnRzXTtcbiAgICAgICAgICAgIGxldCBlbGJvd05leHRSZW5kZXJQb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb2ludHMgPSBwb2ludHMuc2xpY2UoMCwgMSkuY29uY2F0KHBvaW50cy5zbGljZSgtMSkpO1xuICAgICAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyA9IGdldE5leHRSZW5kZXJQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCwgZGF0YS5saW5lUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVIYW5kbGUgPSBkcmF3UHJpbWFyeUhhbmRsZSh0aGlzLmJvYXJkLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZCh1cGRhdGVIYW5kbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBtaWRkbGVQb2ludHMgPSBnZXRNaWRkbGVQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pZGRsZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gbWlkZGxlUG9pbnRzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgJiYgZWxib3dOZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IGdldEhpdFBvaW50SW5kZXgobWlkZGxlUG9pbnRzLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVXBkYXRlSGFuZGxlSW5kZXggPSBpc1VwZGF0ZWRIYW5kbGVJbmRleCh0aGlzLmJvYXJkLCBlbGVtZW50LCBbLi4ucG9pbnRzXSwgZWxib3dOZXh0UmVuZGVyUG9pbnRzLCBoYW5kbGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VwZGF0ZUhhbmRsZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVIYW5kbGUgPSBkcmF3UHJpbWFyeUhhbmRsZSh0aGlzLmJvYXJkLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKHVwZGF0ZUhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjaXJjbGUgPSBkcmF3RmlsbFByaW1hcnlIYW5kbGUodGhpcy5ib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIGFjdGl2ZUcuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IHRoaXMuYm9hcmQuZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZVJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgIGxldCBvcGFjaXR5ID0gJzAuNSc7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVJlY3RhbmdsZS5oZWlnaHQgPT09IDAgfHwgYWN0aXZlUmVjdGFuZ2xlLndpZHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAnMC44JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Ryb2tlRyA9IGRyYXdSZWN0YW5nbGUodGhpcy5ib2FyZCwgYWN0aXZlUmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRHZW9tZXRyeUFjdGl2ZVN0eWxlLnNlbGVjdGlvblN0cm9rZVdpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3Ryb2tlRy5zdHlsZS5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICAgICAgICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKHN0cm9rZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY3RpdmVHO1xuICAgIH1cblxuICAgIG5lZWRVcGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICBjb25zdCBvbmx5U2VsZWN0ZWRDdXJyZW50TGluZSA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxO1xuICAgICAgICByZXR1cm4gb25seVNlbGVjdGVkQ3VycmVudExpbmUgIT09IHRoaXMub25seVNlbGVjdGVkQ3VycmVudExpbmU7XG4gICAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Generator } from '@plait/common';
2
- import { drawLine } from '../utils';
2
+ import { drawLine } from '../utils/line/line-basic';
3
3
  export class LineShapeGenerator extends Generator {
4
4
  canDraw(element, data) {
5
5
  return true;
@@ -10,4 +10,4 @@ export class LineShapeGenerator extends Generator {
10
10
  return lineG;
11
11
  }
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3JzL2xpbmUuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUlwQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBK0I7SUFDbkUsT0FBTyxDQUFDLE9BQWtCLEVBQUUsSUFBZTtRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWtCLEVBQUUsSUFBZTtRQUNwQyxJQUFJLEtBQThCLENBQUM7UUFDbkMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBkcmF3TGluZSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIExpbmVTaGFwZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIFNoYXBlRGF0YT4ge1xuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IFNoYXBlRGF0YSkge1xuICAgICAgICBsZXQgbGluZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBsaW5lRyA9IGRyYXdMaW5lKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBsaW5lRztcbiAgICB9XG59XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3JzL2xpbmUuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXBELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUErQjtJQUNuRSxPQUFPLENBQUMsT0FBa0IsRUFBRSxJQUFlO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBa0IsRUFBRSxJQUFlO1FBQ3BDLElBQUksS0FBOEIsQ0FBQztRQUNuQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBHZW5lcmF0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGRyYXdMaW5lIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIExpbmVTaGFwZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIFNoYXBlRGF0YT4ge1xuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IFNoYXBlRGF0YSkge1xuICAgICAgICBsZXQgbGluZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBsaW5lRyA9IGRyYXdMaW5lKHRoaXMuYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbGluZUc7XG4gICAgfVxufVxuIl19
@@ -1,11 +1,11 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { PlaitBoard, isSelectionMoving, getSelectedElements, ACTIVE_STROKE_WIDTH } from '@plait/core';
2
+ import { PlaitBoard, isSelectionMoving, getSelectedElements, ACTIVE_STROKE_WIDTH, RectangleClient } from '@plait/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import { GeometryShapeGenerator } from './generators/geometry-shape.generator';
5
5
  import { TextManage } from '@plait/text';
6
6
  import { DrawTransforms } from './transforms';
7
7
  import { getTextRectangle } from './utils/geometry';
8
- import { ActiveGenerator, WithTextPluginKey, getRectangleByPoints, CommonPluginElement } from '@plait/common';
8
+ import { ActiveGenerator, WithTextPluginKey, CommonPluginElement } from '@plait/common';
9
9
  import { GeometryThreshold } from './constants/geometry';
10
10
  import { PlaitDrawElement } from './interfaces';
11
11
  import { getEngine } from './engines';
@@ -43,7 +43,7 @@ export class GeometryComponent extends CommonPluginElement {
43
43
  }
44
44
  },
45
45
  getRectangle: (element) => {
46
- return getRectangleByPoints(element.points);
46
+ return RectangleClient.getRectangleByPoints(element.points);
47
47
  },
48
48
  hasResizeHandle: () => {
49
49
  const selectedElements = getSelectedElements(this.board);
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
153
153
  standalone: true
154
154
  }]
155
155
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VvbWV0cnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEVBQ0gsVUFBVSxFQUdWLGlCQUFpQixFQUNqQixtQkFBbUIsRUFFbkIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFtQixvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBUTdDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBOEM7SUFVakYsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FB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ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIEFDVElWRV9TVFJPS0VfV0lEVEhcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSB9IGZyb20gJy4vaW50ZXJmYWNlcy9nZW9tZXRyeSc7XG5pbXBvcnQgeyBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL2dlb21ldHJ5LXNoYXBlLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBUZXh0TWFuYWdlLCBUZXh0TWFuYWdlUmVmIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0VGV4dFJlY3RhbmdsZSB9IGZyb20gJy4vdXRpbHMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgQWN0aXZlR2VuZXJhdG9yLCBXaXRoVGV4dFBsdWdpbktleSwgV2l0aFRleHRPcHRpb25zLCBnZXRSZWN0YW5nbGVCeVBvaW50cywgQ29tbW9uUGx1Z2luRWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgR2VvbWV0cnlUaHJlc2hvbGQgfSBmcm9tICcuL2NvbnN0YW50cy9nZW9tZXRyeSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFRleHQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmVzJztcbmltcG9ydCB7IExpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvbGluZS1hdXRvLWNvbXBsZXRlLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBtZW1vcml6ZUxhdGVzdFRleHQgfSBmcm9tICcuL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1kcmF3LWdlb21ldHJ5JyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHZW9tZXRyeUNvbXBvbmVudCBleHRlbmRzIENvbW1vblBsdWdpbkVsZW1lbnQ8UGxhaXRHZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNvbnRleHRDaGFuZ2VkPFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQ+IHtcbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeT47XG5cbiAgICBsaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yITogTGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcjtcblxuICAgIHNoYXBlR2VuZXJhdG9yITogR2VvbWV0cnlTaGFwZUdlbmVyYXRvcjtcblxuICAgIGdldCB0ZXh0TWFuYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0TWFuYWdlcygpWzBdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplR2VuZXJhdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IG5ldyBBY3RpdmVHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeT4odGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VPcGFjaXR5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGhpcy5ib2FyZCkgJiYgUGxhaXREcmF3RWxlbWVudC5pc1RleHQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgPSBuZXcgTGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvciA9IG5ldyBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVUZXh0TWFuYWdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUdlbmVyYXRvcigpO1xuICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgdGhpcy5nKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmF3VGV4dCgpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZWQoXG4gICAgICAgIHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQ+LFxuICAgICAgICBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdEdlb21ldHJ5LCBQbGFpdEJvYXJkPlxuICAgICkge1xuICAgICAgICBjb25zdCBpc0NoYW5nZVRoZW1lID0gdGhpcy5ib2FyZC5vcGVyYXRpb25zLmZpbmQob3AgPT4gb3AudHlwZSA9PT0gJ3NldF90aGVtZScpO1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gcHJldmlvdXMuZWxlbWVudCB8fCBpc0NoYW5nZVRoZW1lKSB7XG4gICAgICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgdGhpcy5nKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVTZWxlY3RlZCA9IHZhbHVlLnNlbGVjdGVkID09PSBwcmV2aW91cy5zZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVIYW5kbGVTdGF0ZSA9IHRoaXMuYWN0aXZlR2VuZXJhdG9yLm9wdGlvbnMuaGFzUmVzaXplSGFuZGxlKCkgPT09IHRoaXMuYWN0aXZlR2VuZXJhdG9yLmhhc1Jlc2l6ZUhhbmRsZTtcbiAgICAgICAgICAgIGlmICghaGFzU2FtZVNlbGVjdGVkIHx8ICFoYXNTYW1lSGFuZGxlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZWRpdFRleHQoKSB7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5lZGl0KCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICB9XG5cbiAgICBkcmF3VGV4dCgpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRyYXcodGhpcy5lbGVtZW50LnRleHQpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMudGV4dE1hbmFnZS5nKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUZXh0KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlVGV4dCh0aGlzLmVsZW1lbnQudGV4dCk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplVGV4dE1hbmFnZSgpIHtcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9ICgodGhpcy5ib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoVGV4dE9wdGlvbnM+KFdpdGhUZXh0UGx1Z2luS2V5KSB8fCB7fSkudGV4dFBsdWdpbnM7XG5cbiAgICAgICAgY29uc3QgbWFuYWdlID0gbmV3IFRleHRNYW5hZ2UodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB7XG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnZXRSZWN0YW5nbGUgPSBnZXRFbmdpbmUodGhpcy5lbGVtZW50LnNoYXBlKS5nZXRUZXh0UmVjdGFuZ2xlO1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VGV4dFJlY3RhbmdsZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2VIYW5kbGU6ICh0ZXh0TWFuYWdlUmVmOiBUZXh0TWFuYWdlUmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGV4dE1hbmFnZVJlZi5oZWlnaHQgLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0ZXh0TWFuYWdlUmVmLndpZHRoIC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0TWFuYWdlUmVmLm5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnNldFRleHQodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB0ZXh0TWFuYWdlUmVmLm5ld1ZhbHVlLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRUZXh0U2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlUmVmLm9wZXJhdGlvbnMgJiYgbWVtb3JpemVMYXRlc3RUZXh0KHRoaXMuZWxlbWVudCwgdGV4dE1hbmFnZVJlZi5vcGVyYXRpb25zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRNYXhXaWR0aDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGdldFRleHRSZWN0YW5nbGUodGhpcy5lbGVtZW50KS53aWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBnZXRSZWN0YW5nbGUgPSBnZXRFbmdpbmUodGhpcy5lbGVtZW50LnNoYXBlKS5nZXRUZXh0UmVjdGFuZ2xlO1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBnZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50KS53aWR0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmVsZW1lbnQgYXMgUGxhaXRUZXh0KT8uYXV0b1NpemUgPyBHZW9tZXRyeVRocmVzaG9sZC5kZWZhdWx0VGV4dE1heFdpZHRoIDogd2lkdGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dFBsdWdpbnM6IHBsdWdpbnNcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRNYW5hZ2VzKFttYW5hZ2VdKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VvbWV0cnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEVBQ0gsVUFBVSxFQUdWLGlCQUFpQixFQUNqQixtQkFBbUIsRUFFbkIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFRN0MsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUE4QztJQVVqRixJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFD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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUmVjdGFuZ2xlQ2xpZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgVGV4dE1hbmFnZSwgVGV4dE1hbmFnZVJlZiB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGdldFRleHRSZWN0YW5nbGUgfSBmcm9tICcuL3V0aWxzL2dlb21ldHJ5JztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvciwgV2l0aFRleHRQbHVnaW5LZXksIFdpdGhUZXh0T3B0aW9ucywgQ29tbW9uUGx1Z2luRWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgR2VvbWV0cnlUaHJlc2hvbGQgfSBmcm9tICcuL2NvbnN0YW50cy9nZW9tZXRyeSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFRleHQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmVzJztcbmltcG9ydCB7IExpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvbGluZS1hdXRvLWNvbXBsZXRlLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBtZW1vcml6ZUxhdGVzdFRleHQgfSBmcm9tICcuL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1kcmF3LWdlb21ldHJ5JyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHZW9tZXRyeUNvbXBvbmVudCBleHRlbmRzIENvbW1vblBsdWdpbkVsZW1lbnQ8UGxhaXRHZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNvbnRleHRDaGFuZ2VkPFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQ+IHtcbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeT47XG5cbiAgICBsaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yITogTGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcjtcblxuICAgIHNoYXBlR2VuZXJhdG9yITogR2VvbWV0cnlTaGFwZUdlbmVyYXRvcjtcblxuICAgIGdldCB0ZXh0TWFuYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0TWFuYWdlcygpWzBdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplR2VuZXJhdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IG5ldyBBY3RpdmVHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeT4odGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VPcGFjaXR5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzUmVzaXplSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yID0gbmV3IExpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IgPSBuZXcgR2VvbWV0cnlTaGFwZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplVGV4dE1hbmFnZSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIHRoaXMuZyk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJhd1RleHQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdEdlb21ldHJ5LCBQbGFpdEJvYXJkPixcbiAgICAgICAgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRHZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICApIHtcbiAgICAgICAgY29uc3QgaXNDaGFuZ2VUaGVtZSA9IHRoaXMuYm9hcmQub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLnR5cGUgPT09ICdzZXRfdGhlbWUnKTtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgaXNDaGFuZ2VUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIHRoaXMuZyk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lSGFuZGxlU3RhdGUgPSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5vcHRpb25zLmhhc1Jlc2l6ZUhhbmRsZSgpID09PSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5oYXNSZXNpemVIYW5kbGU7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCB8fCAhaGFzU2FtZUhhbmRsZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVkaXRUZXh0KCkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UuZWRpdCgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgfVxuXG4gICAgZHJhd1RleHQoKSB7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5kcmF3KHRoaXMuZWxlbWVudC50ZXh0KTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLnRleHRNYW5hZ2UuZyk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGV4dCgpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVRleHQodGhpcy5lbGVtZW50LnRleHQpO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlUmVjdGFuZ2xlKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbnMgPSAoKHRoaXMuYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFRleHRPcHRpb25zPihXaXRoVGV4dFBsdWdpbktleSkgfHwge30pLnRleHRQbHVnaW5zO1xuXG4gICAgICAgIGNvbnN0IG1hbmFnZSA9IG5ldyBUZXh0TWFuYWdlKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZiwge1xuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0UmVjdGFuZ2xlID0gZ2V0RW5naW5lKHRoaXMuZWxlbWVudC5zaGFwZSkuZ2V0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFRleHRSZWN0YW5nbGUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblZhbHVlQ2hhbmdlSGFuZGxlOiAodGV4dE1hbmFnZVJlZjogVGV4dE1hbmFnZVJlZikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IHRleHRNYW5hZ2VSZWYuaGVpZ2h0IC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGV4dE1hbmFnZVJlZi53aWR0aCAvIHRoaXMuYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRUZXh0KHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCwgdGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGV4dFNpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGV4dE1hbmFnZVJlZi5vcGVyYXRpb25zICYmIG1lbW9yaXplTGF0ZXN0VGV4dCh0aGlzLmVsZW1lbnQsIHRleHRNYW5hZ2VSZWYub3BlcmF0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0TWF4V2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSBnZXRUZXh0UmVjdGFuZ2xlKHRoaXMuZWxlbWVudCkud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0UmVjdGFuZ2xlID0gZ2V0RW5naW5lKHRoaXMuZWxlbWVudC5zaGFwZSkuZ2V0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZ2V0UmVjdGFuZ2xlKHRoaXMuZWxlbWVudCkud2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5lbGVtZW50IGFzIFBsYWl0VGV4dCk/LmF1dG9TaXplID8gR2VvbWV0cnlUaHJlc2hvbGQuZGVmYXVsdFRleHRNYXhXaWR0aCA6IHdpZHRoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRQbHVnaW5zOiBwbHVnaW5zXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVUZXh0TWFuYWdlcyhbbWFuYWdlXSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -36,4 +36,4 @@ export var FlowchartSymbols;
36
36
  FlowchartSymbols["storedData"] = "storedData";
37
37
  })(FlowchartSymbols || (FlowchartSymbols = {}));
38
38
  export const PlaitGeometry = {};
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9pbnRlcmZhY2VzL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBTixJQUFZLFdBcUJYO0FBckJELFdBQVksV0FBVztJQUNuQixzQ0FBdUIsQ0FBQTtJQUN2QixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtJQUNuQixnREFBaUMsQ0FBQTtJQUNqQyw4Q0FBK0IsQ0FBQTtJQUMvQiw0QkFBYSxDQUFBO0lBQ2Isb0NBQXFCLENBQUE7SUFDckIsc0NBQXVCLENBQUE7SUFDdkIsc0NBQXVCLENBQUE7SUFDdkIsd0NBQXlCLENBQUE7SUFDekIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBNkIsQ0FBQTtJQUM3QiwwQ0FBMkIsQ0FBQTtJQUMzQixrQ0FBbUIsQ0FBQTtJQUNuQiw0Q0FBNkIsQ0FBQTtBQUNqQyxDQUFDLEVBckJXLFdBQVcsS0FBWCxXQUFXLFFBcUJ0QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQVlYO0FBWkQsV0FBWSxnQkFBZ0I7SUFDeEIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7SUFDckIsaUNBQWEsQ0FBQTtJQUNiLDJDQUF1QixDQUFBO0lBQ3ZCLHlDQUFxQixDQUFBO0lBQ3JCLCtDQUEyQixDQUFBO0lBQzNCLCtDQUEyQixDQUFBO0lBQzNCLDZDQUF5QixDQUFBO0lBQ3pCLG1DQUFlLENBQUE7SUFDZixtQ0FBZSxDQUFBO0lBQ2YsNkNBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQVpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFZM0I7QUFrQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFBvaW50T2ZSZWN0YW5nbGUsIFJlY3RhbmdsZUNsaWVudCwgVmVjdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUGFyYWdyYXBoRWxlbWVudCB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IFN0cm9rZVN0eWxlIH0gZnJvbSAnLi9lbGVtZW50JztcblxuZXhwb3J0IGVudW0gQmFzaWNTaGFwZXMge1xuICAgIHJlY3RhbmdsZSA9ICdyZWN0YW5nbGUnLFxuICAgIGVsbGlwc2UgPSAnZWxsaXBzZScsXG4gICAgZGlhbW9uZCA9ICdkaWFtb25kJyxcbiAgICByb3VuZFJlY3RhbmdsZSA9ICdyb3VuZFJlY3RhbmdsZScsXG4gICAgcGFyYWxsZWxvZ3JhbSA9ICdwYXJhbGxlbG9ncmFtJyxcbiAgICB0ZXh0ID0gJ3RleHQnLFxuICAgIHRyaWFuZ2xlID0gJ3RyaWFuZ2xlJyxcbiAgICBsZWZ0QXJyb3cgPSAnbGVmdEFycm93JyxcbiAgICB0cmFwZXpvaWQgPSAndHJhcGV6b2lkJyxcbiAgICByaWdodEFycm93ID0gJ3JpZ2h0QXJyb3cnLFxuICAgIGNyb3NzID0gJ2Nyb3NzJyxcbiAgICBzdGFyID0gJ3N0YXInLFxuICAgIHBlbnRhZ29uID0gJ3BlbnRhZ29uJyxcbiAgICBoZXhhZ29uID0gJ2hleGFnb24nLFxuICAgIG9jdGFnb24gPSAnb2N0YWdvbicsXG4gICAgcGVudGFnb25BcnJvdyA9ICdwZW50YWdvbkFycm93JyxcbiAgICBwcm9jZXNzQXJyb3cgPSAncHJvY2Vzc0Fycm93JyxcbiAgICB0d29XYXlBcnJvdyA9ICd0d29XYXlBcnJvdycsXG4gICAgY29tbWVudCA9ICdjb21tZW50JyxcbiAgICByb3VuZENvbW1lbnQgPSAncm91bmRDb21tZW50J1xufVxuXG5leHBvcnQgZW51bSBGbG93Y2hhcnRTeW1ib2xzIHtcbiAgICBwcm9jZXNzID0gJ3Byb2Nlc3MnLFxuICAgIGRlY2lzaW9uID0gJ2RlY2lzaW9uJyxcbiAgICBkYXRhID0gJ2RhdGEnLFxuICAgIGNvbm5lY3RvciA9ICdjb25uZWN0b3InLFxuICAgIHRlcm1pbmFsID0gJ3Rlcm1pbmFsJyxcbiAgICBtYW51YWxJbnB1dCA9ICdtYW51YWxJbnB1dCcsXG4gICAgcHJlcGFyYXRpb24gPSAncHJlcGFyYXRpb24nLFxuICAgIG1hbnVhbExvb3AgPSAnbWFudWFsTG9vcCcsXG4gICAgbWVyZ2UgPSAnbWVyZ2UnLFxuICAgIGRlbGF5ID0gJ2RlbGF5JyxcbiAgICBzdG9yZWREYXRhID0gJ3N0b3JlZERhdGEnXG59XG5cbmV4cG9ydCB0eXBlIEdlb21ldHJ5U2hhcGVzID0gQmFzaWNTaGFwZXMgfCBGbG93Y2hhcnRTeW1ib2xzO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0R2VvbWV0cnkgZXh0ZW5kcyBQbGFpdEVsZW1lbnQge1xuICAgIHBvaW50czogW1BvaW50LCBQb2ludF07XG4gICAgdHlwZTogJ2dlb21ldHJ5JztcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZXM7XG5cbiAgICB0ZXh0OiBQYXJhZ3JhcGhFbGVtZW50O1xuICAgIHRleHRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8vIG5vZGUgc3R5bGUgYXR0cmlidXRlc1xuICAgIGZpbGw/OiBzdHJpbmc7XG4gICAgc3Ryb2tlQ29sb3I/OiBzdHJpbmc7XG4gICAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gICAgc3Ryb2tlU3R5bGU/OiBTdHJva2VTdHlsZTtcblxuICAgIGFuZ2xlOiBudW1iZXI7XG4gICAgb3BhY2l0eTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0UmVjdGFuZ2xlIGV4dGVuZHMgUGxhaXRHZW9tZXRyeSB7XG4gICAgc2hhcGU6IEJhc2ljU2hhcGVzLnJlY3RhbmdsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEVsbGlwc2UgZXh0ZW5kcyBQbGFpdEdlb21ldHJ5IHtcbiAgICBzaGFwZTogQmFzaWNTaGFwZXMuZWxsaXBzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdERpYW1vbmQgZXh0ZW5kcyBQbGFpdEdlb21ldHJ5IHtcbiAgICBzaGFwZTogQmFzaWNTaGFwZXMuZGlhbW9uZDtcbn1cblxuZXhwb3J0IGNvbnN0IFBsYWl0R2VvbWV0cnkgPSB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZUVuZ2luZSB7XG4gICAgaXNIaXQ6IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSA9PiBib29sZWFuO1xuICAgIGdldE5lYXJlc3RQb2ludDogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpID0+IFBvaW50O1xuICAgIGdldENvbm5lY3RvclBvaW50czogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiBQb2ludFtdO1xuICAgIGdldENvcm5lclBvaW50czogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiBQb2ludFtdO1xuICAgIGdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludD86IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50T2ZSZWN0YW5nbGUpID0+IFtQb2ludCwgUG9pbnRdIHwgbnVsbDtcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQ/OiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludE9mUmVjdGFuZ2xlKSA9PiBWZWN0b3IgfCBudWxsO1xuICAgIGRyYXc6IChib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpID0+IFNWR0dFbGVtZW50O1xuICAgIGdldFRleHRSZWN0YW5nbGU/OiAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9pbnRlcmZhY2VzL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBTixJQUFZLFdBcUJYO0FBckJELFdBQVksV0FBVztJQUNuQixzQ0FBdUIsQ0FBQTtJQUN2QixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtJQUNuQixnREFBaUMsQ0FBQTtJQUNqQyw4Q0FBK0IsQ0FBQTtJQUMvQiw0QkFBYSxDQUFBO0lBQ2Isb0NBQXFCLENBQUE7SUFDckIsc0NBQXVCLENBQUE7SUFDdkIsc0NBQXVCLENBQUE7SUFDdkIsd0NBQXlCLENBQUE7SUFDekIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBNkIsQ0FBQTtJQUM3QiwwQ0FBMkIsQ0FBQTtJQUMzQixrQ0FBbUIsQ0FBQTtJQUNuQiw0Q0FBNkIsQ0FBQTtBQUNqQyxDQUFDLEVBckJXLFdBQVcsS0FBWCxXQUFXLFFBcUJ0QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQVlYO0FBWkQsV0FBWSxnQkFBZ0I7SUFDeEIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7SUFDckIsaUNBQWEsQ0FBQTtJQUNiLDJDQUF1QixDQUFBO0lBQ3ZCLHlDQUFxQixDQUFBO0lBQ3JCLCtDQUEyQixDQUFBO0lBQzNCLCtDQUEyQixDQUFBO0lBQzNCLDZDQUF5QixDQUFBO0lBQ3pCLG1DQUFlLENBQUE7SUFDZixtQ0FBZSxDQUFBO0lBQ2YsNkNBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQVpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFZM0I7QUFrQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFBvaW50T2ZSZWN0YW5nbGUsIFJlY3RhbmdsZUNsaWVudCwgVmVjdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUGFyYWdyYXBoRWxlbWVudCB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IFN0cm9rZVN0eWxlIH0gZnJvbSAnLi9lbGVtZW50JztcblxuZXhwb3J0IGVudW0gQmFzaWNTaGFwZXMge1xuICAgIHJlY3RhbmdsZSA9ICdyZWN0YW5nbGUnLFxuICAgIGVsbGlwc2UgPSAnZWxsaXBzZScsXG4gICAgZGlhbW9uZCA9ICdkaWFtb25kJyxcbiAgICByb3VuZFJlY3RhbmdsZSA9ICdyb3VuZFJlY3RhbmdsZScsXG4gICAgcGFyYWxsZWxvZ3JhbSA9ICdwYXJhbGxlbG9ncmFtJyxcbiAgICB0ZXh0ID0gJ3RleHQnLFxuICAgIHRyaWFuZ2xlID0gJ3RyaWFuZ2xlJyxcbiAgICBsZWZ0QXJyb3cgPSAnbGVmdEFycm93JyxcbiAgICB0cmFwZXpvaWQgPSAndHJhcGV6b2lkJyxcbiAgICByaWdodEFycm93ID0gJ3JpZ2h0QXJyb3cnLFxuICAgIGNyb3NzID0gJ2Nyb3NzJyxcbiAgICBzdGFyID0gJ3N0YXInLFxuICAgIHBlbnRhZ29uID0gJ3BlbnRhZ29uJyxcbiAgICBoZXhhZ29uID0gJ2hleGFnb24nLFxuICAgIG9jdGFnb24gPSAnb2N0YWdvbicsXG4gICAgcGVudGFnb25BcnJvdyA9ICdwZW50YWdvbkFycm93JyxcbiAgICBwcm9jZXNzQXJyb3cgPSAncHJvY2Vzc0Fycm93JyxcbiAgICB0d29XYXlBcnJvdyA9ICd0d29XYXlBcnJvdycsXG4gICAgY29tbWVudCA9ICdjb21tZW50JyxcbiAgICByb3VuZENvbW1lbnQgPSAncm91bmRDb21tZW50J1xufVxuXG5leHBvcnQgZW51bSBGbG93Y2hhcnRTeW1ib2xzIHtcbiAgICBwcm9jZXNzID0gJ3Byb2Nlc3MnLFxuICAgIGRlY2lzaW9uID0gJ2RlY2lzaW9uJyxcbiAgICBkYXRhID0gJ2RhdGEnLFxuICAgIGNvbm5lY3RvciA9ICdjb25uZWN0b3InLFxuICAgIHRlcm1pbmFsID0gJ3Rlcm1pbmFsJyxcbiAgICBtYW51YWxJbnB1dCA9ICdtYW51YWxJbnB1dCcsXG4gICAgcHJlcGFyYXRpb24gPSAncHJlcGFyYXRpb24nLFxuICAgIG1hbnVhbExvb3AgPSAnbWFudWFsTG9vcCcsXG4gICAgbWVyZ2UgPSAnbWVyZ2UnLFxuICAgIGRlbGF5ID0gJ2RlbGF5JyxcbiAgICBzdG9yZWREYXRhID0gJ3N0b3JlZERhdGEnXG59XG5cbmV4cG9ydCB0eXBlIEdlb21ldHJ5U2hhcGVzID0gQmFzaWNTaGFwZXMgfCBGbG93Y2hhcnRTeW1ib2xzO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0R2VvbWV0cnkgZXh0ZW5kcyBQbGFpdEVsZW1lbnQge1xuICAgIHBvaW50czogW1BvaW50LCBQb2ludF07XG4gICAgdHlwZTogJ2dlb21ldHJ5JztcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZXM7XG5cbiAgICB0ZXh0OiBQYXJhZ3JhcGhFbGVtZW50O1xuICAgIHRleHRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8vIG5vZGUgc3R5bGUgYXR0cmlidXRlc1xuICAgIGZpbGw/OiBzdHJpbmc7XG4gICAgc3Ryb2tlQ29sb3I/OiBzdHJpbmc7XG4gICAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gICAgc3Ryb2tlU3R5bGU/OiBTdHJva2VTdHlsZTtcblxuICAgIGFuZ2xlOiBudW1iZXI7XG4gICAgb3BhY2l0eTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0UmVjdGFuZ2xlIGV4dGVuZHMgUGxhaXRHZW9tZXRyeSB7XG4gICAgc2hhcGU6IEJhc2ljU2hhcGVzLnJlY3RhbmdsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEVsbGlwc2UgZXh0ZW5kcyBQbGFpdEdlb21ldHJ5IHtcbiAgICBzaGFwZTogQmFzaWNTaGFwZXMuZWxsaXBzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdERpYW1vbmQgZXh0ZW5kcyBQbGFpdEdlb21ldHJ5IHtcbiAgICBzaGFwZTogQmFzaWNTaGFwZXMuZGlhbW9uZDtcbn1cblxuZXhwb3J0IGNvbnN0IFBsYWl0R2VvbWV0cnkgPSB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZUVuZ2luZSB7XG4gICAgaXNIaXQ6IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSA9PiBib29sZWFuO1xuICAgIGdldE5lYXJlc3RQb2ludDogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpID0+IFBvaW50O1xuICAgIGdldE5lYXJlc3RDcm9zc2luZ1BvaW50PzogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpID0+IFBvaW50O1xuICAgIGdldENvbm5lY3RvclBvaW50czogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiBQb2ludFtdO1xuICAgIGdldENvcm5lclBvaW50czogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiBQb2ludFtdO1xuICAgIGdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludD86IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50T2ZSZWN0YW5nbGUpID0+IFtQb2ludCwgUG9pbnRdIHwgbnVsbDtcbiAgICBnZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQ/OiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludE9mUmVjdGFuZ2xlKSA9PiBWZWN0b3IgfCBudWxsO1xuICAgIGRyYXc6IChib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpID0+IFNWR0dFbGVtZW50O1xuICAgIGdldFRleHRSZWN0YW5nbGU/OiAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { getElementById } from '@plait/core';
2
- import { getConnectionPoint } from '../utils';
2
+ import { getConnectionPoint } from '../utils/line/line-common';
3
3
  export var LineMarkerType;
4
4
  (function (LineMarkerType) {
5
5
  LineMarkerType["arrow"] = "arrow";
@@ -55,4 +55,4 @@ export const PlaitLine = {
55
55
  return [sourcePoint, ...restPoints, targetPoint];
56
56
  }
57
57
  };
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2ludGVyZmFjZXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtuSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHOUMsTUFBTSxDQUFOLElBQVksY0FVWDtBQVZELFdBQVksY0FBYztJQUN0QixpQ0FBZSxDQUFBO0lBQ2YsK0JBQWEsQ0FBQTtJQUNiLGdEQUE4QixDQUFBO0lBQzlCLGtEQUFnQyxDQUFBO0lBQ2hDLDRDQUEwQixDQUFBO0lBQzFCLDJDQUF5QixDQUFBO0lBQ3pCLCtDQUE2QixDQUFBO0lBQzdCLG9EQUFrQyxDQUFBO0lBQ2xDLDhDQUE0QixDQUFBO0FBQ2hDLENBQUMsRUFWVyxjQUFjLEtBQWQsY0FBYyxRQVV6QjtBQUVELE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDakIsa0NBQXFCLENBQUE7SUFDckIsNEJBQWUsQ0FBQTtJQUNmLDRCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUNyQixrQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEI7QUF1REQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3JCLHdCQUF3QixDQUFDLElBQWUsRUFBRSxRQUF3QixFQUFFLFNBQXdCO1FBQ3hGLElBQUksU0FBUyxLQUFLLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7U0FDMUM7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUNELFlBQVksQ0FBQyxJQUFlLEVBQUUsUUFBd0I7UUFDbEQsT0FBTyxTQUFTLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUNELFlBQVksQ0FBQyxJQUFlLEVBQUUsUUFBd0I7UUFDbEQsT0FBTyxTQUFTLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUNELHNCQUFzQixDQUFDLElBQWUsRUFBRSxPQUFtQztRQUN2RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELHNCQUFzQixDQUFDLElBQWUsRUFBRSxPQUFtQztRQUN2RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFpQixFQUFFLElBQWU7UUFDeEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2pDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQWdCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVyxDQUFDO1lBQ3pHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUNqQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFnQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQztZQUN6RyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlGLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFBvaW50T2ZSZWN0YW5nbGUsIFZlY3RvciwgZ2V0RWxlbWVudEJ5SWQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgTGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2xpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IFN0cm9rZVN0eWxlIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0SW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ltYWdlJztcblxuZXhwb3J0IGVudW0gTGluZU1hcmtlclR5cGUge1xuICAgIGFycm93ID0gJ2Fycm93JyxcbiAgICBub25lID0gJ25vbmUnLFxuICAgIG9wZW5UcmlhbmdsZSA9ICdvcGVuLXRyaWFuZ2xlJyxcbiAgICBzb2xpZFRyaWFuZ2xlID0gJ3NvbGlkLXRyaWFuZ2xlJyxcbiAgICBzaGFycEFycm93ID0gJ3NoYXJwLWFycm93JyxcbiAgICBvbmVTaWRlVXAgPSAnb25lLXNpZGUtdXAnLFxuICAgIG9uZVNpZGVEb3duID0gJ29uZS1zaWRlLWRvd24nLFxuICAgIGhvbGxvd1RyaWFuZ2xlID0gJ2hvbGxvdy10cmlhbmdsZScsXG4gICAgc2luZ2xlU2xhc2ggPSAnc2luZ2xlLXNsYXNoJ1xufVxuXG5leHBvcnQgZW51bSBMaW5lU2hhcGUge1xuICAgIHN0cmFpZ2h0ID0gJ3N0cmFpZ2h0JyxcbiAgICBjdXJ2ZSA9ICdjdXJ2ZScsXG4gICAgZWxib3cgPSAnZWxib3cnXG59XG5cbmV4cG9ydCBlbnVtIExpbmVIYW5kbGVLZXkge1xuICAgIHNvdXJjZSA9ICdzb3VyY2UnLFxuICAgIHRhcmdldCA9ICd0YXJnZXQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZVRleHQge1xuICAgIHRleHQ6IEVsZW1lbnQ7XG4gICAgLy8gUGVyY2VudGFnZSBvZiBwb3NpdGlvbmluZyBiYXNlZCBvbiBsaW5lIGxlbmd0aFxuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5lSGFuZGxlIHtcbiAgICAvLyBUaGUgaWQgb2YgdGhlIGJvdW5kZWQgZWxlbWVudFxuICAgIGJvdW5kSWQ/OiBzdHJpbmc7XG4gICAgY29ubmVjdGlvbj86IFBvaW50T2ZSZWN0YW5nbGU7XG4gICAgbWFya2VyOiBMaW5lTWFya2VyVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5lSGFuZGxlUmVmIHtcbiAgICBrZXk6IExpbmVIYW5kbGVLZXk7XG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG4gICAgcG9pbnQ6IFBvaW50T2ZSZWN0YW5nbGU7XG4gICAgdmVjdG9yOiBWZWN0b3I7XG4gICAgYm91bmRFbGVtZW50PzogUGxhaXRHZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdExpbmUgZXh0ZW5kcyBQbGFpdEVsZW1lbnQge1xuICAgIHR5cGU6ICdsaW5lJztcbiAgICBzaGFwZTogTGluZVNoYXBlO1xuICAgIHBvaW50czogUG9pbnRbXTtcblxuICAgIHNvdXJjZTogTGluZUhhbmRsZTtcbiAgICB0YXJnZXQ6IExpbmVIYW5kbGU7XG5cbiAgICB0ZXh0czogTGluZVRleHRbXTtcblxuICAgIC8vIG5vZGUgc3R5bGUgYXR0cmlidXRlc1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHN0cm9rZVN0eWxlPzogU3Ryb2tlU3R5bGU7XG5cbiAgICBvcGFjaXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRTdHJhaWdodExpbmUgZXh0ZW5kcyBQbGFpdExpbmUge1xuICAgIHNoYXBlOiBMaW5lU2hhcGUuc3RyYWlnaHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRDdXJ2ZUxpbmUgZXh0ZW5kcyBQbGFpdExpbmUge1xuICAgIHNoYXBlOiBMaW5lU2hhcGUuY3VydmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRFbGJvd0xpbmUgZXh0ZW5kcyBQbGFpdExpbmUge1xuICAgIHNoYXBlOiBMaW5lU2hhcGUuZWxib3c7XG59XG5cbmV4cG9ydCBjb25zdCBQbGFpdExpbmUgPSB7XG4gICAgaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGxpbmU6IFBsYWl0TGluZSwgbWFya1R5cGU6IExpbmVNYXJrZXJUeXBlLCBoYW5kbGVLZXk6IExpbmVIYW5kbGVLZXkpIHtcbiAgICAgICAgaWYgKGhhbmRsZUtleSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5lLnNvdXJjZS5tYXJrZXIgPT09IG1hcmtUeXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmUudGFyZ2V0Lm1hcmtlciA9PT0gbWFya1R5cGU7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzU291cmNlTWFyayhsaW5lOiBQbGFpdExpbmUsIG1hcmtUeXBlOiBMaW5lTWFya2VyVHlwZSkge1xuICAgICAgICByZXR1cm4gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhsaW5lLCBtYXJrVHlwZSwgTGluZUhhbmRsZUtleS5zb3VyY2UpO1xuICAgIH0sXG4gICAgaXNUYXJnZXRNYXJrKGxpbmU6IFBsYWl0TGluZSwgbWFya1R5cGU6IExpbmVNYXJrZXJUeXBlKSB7XG4gICAgICAgIHJldHVybiBQbGFpdExpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGxpbmUsIG1hcmtUeXBlLCBMaW5lSGFuZGxlS2V5LnRhcmdldCk7XG4gICAgfSxcbiAgICBpc0JvdW5kRWxlbWVudE9mU291cmNlKGxpbmU6IFBsYWl0TGluZSwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2UpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUuc291cmNlLmJvdW5kSWQgPT09IGVsZW1lbnQuaWQ7XG4gICAgfSxcbiAgICBpc0JvdW5kRWxlbWVudE9mVGFyZ2V0KGxpbmU6IFBsYWl0TGluZSwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2UpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUudGFyZ2V0LmJvdW5kSWQgPT09IGVsZW1lbnQuaWQ7XG4gICAgfSxcbiAgICBnZXRQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGxpbmU6IFBsYWl0TGluZSkge1xuICAgICAgICBsZXQgc291cmNlUG9pbnQgPSBsaW5lLnNvdXJjZS5ib3VuZElkXG4gICAgICAgICAgICA/IGdldENvbm5lY3Rpb25Qb2ludChnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgbGluZS5zb3VyY2UuYm91bmRJZCkhLCBsaW5lLnNvdXJjZS5jb25uZWN0aW9uISlcbiAgICAgICAgICAgIDogbGluZS5wb2ludHNbMF07XG4gICAgICAgIGxldCB0YXJnZXRQb2ludCA9IGxpbmUudGFyZ2V0LmJvdW5kSWRcbiAgICAgICAgICAgID8gZ2V0Q29ubmVjdGlvblBvaW50KGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBsaW5lLnRhcmdldC5ib3VuZElkKSEsIGxpbmUudGFyZ2V0LmNvbm5lY3Rpb24hKVxuICAgICAgICAgICAgOiBsaW5lLnBvaW50c1tsaW5lLnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgcmVzdFBvaW50cyA9IGxpbmUucG9pbnRzLmxlbmd0aCA+IDIgPyBsaW5lLnBvaW50cy5zbGljZSgxLCBsaW5lLnBvaW50cy5sZW5ndGggLSAxKSA6IFtdO1xuICAgICAgICByZXR1cm4gW3NvdXJjZVBvaW50LCAuLi5yZXN0UG9pbnRzLCB0YXJnZXRQb2ludF07XG4gICAgfVxufTtcbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2ludGVyZmFjZXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUtuSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUvRCxNQUFNLENBQU4sSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3RCLGlDQUFlLENBQUE7SUFDZiwrQkFBYSxDQUFBO0lBQ2IsZ0RBQThCLENBQUE7SUFDOUIsa0RBQWdDLENBQUE7SUFDaEMsNENBQTBCLENBQUE7SUFDMUIsMkNBQXlCLENBQUE7SUFDekIsK0NBQTZCLENBQUE7SUFDN0Isb0RBQWtDLENBQUE7SUFDbEMsOENBQTRCLENBQUE7QUFDaEMsQ0FBQyxFQVZXLGNBQWMsS0FBZCxjQUFjLFFBVXpCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNqQixrQ0FBcUIsQ0FBQTtJQUNyQiw0QkFBZSxDQUFBO0lBQ2YsNEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3JCLGtDQUFpQixDQUFBO0lBQ2pCLGtDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQTRERCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDckIsd0JBQXdCLENBQUMsSUFBZSxFQUFFLFFBQXdCLEVBQUUsU0FBd0I7UUFDeEYsSUFBSSxTQUFTLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQztTQUMxQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQWUsRUFBRSxRQUF3QjtRQUNsRCxPQUFPLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQWUsRUFBRSxRQUF3QjtRQUNsRCxPQUFPLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsSUFBZSxFQUFFLE9BQW1DO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsSUFBZSxFQUFFLE9BQW1DO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQWlCLEVBQUUsSUFBZTtRQUN4QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDakMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBZ0IsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFXLENBQUM7WUFDekcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2pDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQWdCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVyxDQUFDO1lBQ3pHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUYsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgUG9pbnRPZlJlY3RhbmdsZSwgVmVjdG9yLCBnZXRFbGVtZW50QnlJZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBTdHJva2VTdHlsZSB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEltYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbWFnZSc7XG5pbXBvcnQgeyBnZXRDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtY29tbW9uJztcblxuZXhwb3J0IGVudW0gTGluZU1hcmtlclR5cGUge1xuICAgIGFycm93ID0gJ2Fycm93JyxcbiAgICBub25lID0gJ25vbmUnLFxuICAgIG9wZW5UcmlhbmdsZSA9ICdvcGVuLXRyaWFuZ2xlJyxcbiAgICBzb2xpZFRyaWFuZ2xlID0gJ3NvbGlkLXRyaWFuZ2xlJyxcbiAgICBzaGFycEFycm93ID0gJ3NoYXJwLWFycm93JyxcbiAgICBvbmVTaWRlVXAgPSAnb25lLXNpZGUtdXAnLFxuICAgIG9uZVNpZGVEb3duID0gJ29uZS1zaWRlLWRvd24nLFxuICAgIGhvbGxvd1RyaWFuZ2xlID0gJ2hvbGxvdy10cmlhbmdsZScsXG4gICAgc2luZ2xlU2xhc2ggPSAnc2luZ2xlLXNsYXNoJ1xufVxuXG5leHBvcnQgZW51bSBMaW5lU2hhcGUge1xuICAgIHN0cmFpZ2h0ID0gJ3N0cmFpZ2h0JyxcbiAgICBjdXJ2ZSA9ICdjdXJ2ZScsXG4gICAgZWxib3cgPSAnZWxib3cnXG59XG5cbmV4cG9ydCBlbnVtIExpbmVIYW5kbGVLZXkge1xuICAgIHNvdXJjZSA9ICdzb3VyY2UnLFxuICAgIHRhcmdldCA9ICd0YXJnZXQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZVRleHQge1xuICAgIHRleHQ6IEVsZW1lbnQ7XG4gICAgLy8gUGVyY2VudGFnZSBvZiBwb3NpdGlvbmluZyBiYXNlZCBvbiBsaW5lIGxlbmd0aFxuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5lSGFuZGxlIHtcbiAgICAvLyBUaGUgaWQgb2YgdGhlIGJvdW5kZWQgZWxlbWVudFxuICAgIGJvdW5kSWQ/OiBzdHJpbmc7XG4gICAgY29ubmVjdGlvbj86IFBvaW50T2ZSZWN0YW5nbGU7XG4gICAgbWFya2VyOiBMaW5lTWFya2VyVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5lSGFuZGxlUmVmIHtcbiAgICBrZXk6IExpbmVIYW5kbGVLZXk7XG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG4gICAgcG9pbnQ6IFBvaW50T2ZSZWN0YW5nbGU7XG4gICAgdmVjdG9yOiBWZWN0b3I7XG4gICAgYm91bmRFbGVtZW50PzogUGxhaXRHZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5lSGFuZGxlUmVmUGFpciB7XG4gICAgc291cmNlOiBMaW5lSGFuZGxlUmVmO1xuICAgIHRhcmdldDogTGluZUhhbmRsZVJlZjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdExpbmUgZXh0ZW5kcyBQbGFpdEVsZW1lbnQge1xuICAgIHR5cGU6ICdsaW5lJztcbiAgICBzaGFwZTogTGluZVNoYXBlO1xuICAgIHBvaW50czogUG9pbnRbXTtcblxuICAgIHNvdXJjZTogTGluZUhhbmRsZTtcbiAgICB0YXJnZXQ6IExpbmVIYW5kbGU7XG5cbiAgICB0ZXh0czogTGluZVRleHRbXTtcblxuICAgIC8vIG5vZGUgc3R5bGUgYXR0cmlidXRlc1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHN0cm9rZVN0eWxlPzogU3Ryb2tlU3R5bGU7XG5cbiAgICBvcGFjaXR5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRTdHJhaWdodExpbmUgZXh0ZW5kcyBQbGFpdExpbmUge1xuICAgIHNoYXBlOiBMaW5lU2hhcGUuc3RyYWlnaHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRDdXJ2ZUxpbmUgZXh0ZW5kcyBQbGFpdExpbmUge1xuICAgIHNoYXBlOiBMaW5lU2hhcGUuY3VydmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRFbGJvd0xpbmUgZXh0ZW5kcyBQbGFpdExpbmUge1xuICAgIHNoYXBlOiBMaW5lU2hhcGUuZWxib3c7XG59XG5cbmV4cG9ydCBjb25zdCBQbGFpdExpbmUgPSB7XG4gICAgaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGxpbmU6IFBsYWl0TGluZSwgbWFya1R5cGU6IExpbmVNYXJrZXJUeXBlLCBoYW5kbGVLZXk6IExpbmVIYW5kbGVLZXkpIHtcbiAgICAgICAgaWYgKGhhbmRsZUtleSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5lLnNvdXJjZS5tYXJrZXIgPT09IG1hcmtUeXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmUudGFyZ2V0Lm1hcmtlciA9PT0gbWFya1R5cGU7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzU291cmNlTWFyayhsaW5lOiBQbGFpdExpbmUsIG1hcmtUeXBlOiBMaW5lTWFya2VyVHlwZSkge1xuICAgICAgICByZXR1cm4gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhsaW5lLCBtYXJrVHlwZSwgTGluZUhhbmRsZUtleS5zb3VyY2UpO1xuICAgIH0sXG4gICAgaXNUYXJnZXRNYXJrKGxpbmU6IFBsYWl0TGluZSwgbWFya1R5cGU6IExpbmVNYXJrZXJUeXBlKSB7XG4gICAgICAgIHJldHVybiBQbGFpdExpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGxpbmUsIG1hcmtUeXBlLCBMaW5lSGFuZGxlS2V5LnRhcmdldCk7XG4gICAgfSxcbiAgICBpc0JvdW5kRWxlbWVudE9mU291cmNlKGxpbmU6IFBsYWl0TGluZSwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2UpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUuc291cmNlLmJvdW5kSWQgPT09IGVsZW1lbnQuaWQ7XG4gICAgfSxcbiAgICBpc0JvdW5kRWxlbWVudE9mVGFyZ2V0KGxpbmU6IFBsYWl0TGluZSwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2UpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUudGFyZ2V0LmJvdW5kSWQgPT09IGVsZW1lbnQuaWQ7XG4gICAgfSxcbiAgICBnZXRQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGxpbmU6IFBsYWl0TGluZSkge1xuICAgICAgICBsZXQgc291cmNlUG9pbnQgPSBsaW5lLnNvdXJjZS5ib3VuZElkXG4gICAgICAgICAgICA/IGdldENvbm5lY3Rpb25Qb2ludChnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgbGluZS5zb3VyY2UuYm91bmRJZCkhLCBsaW5lLnNvdXJjZS5jb25uZWN0aW9uISlcbiAgICAgICAgICAgIDogbGluZS5wb2ludHNbMF07XG4gICAgICAgIGxldCB0YXJnZXRQb2ludCA9IGxpbmUudGFyZ2V0LmJvdW5kSWRcbiAgICAgICAgICAgID8gZ2V0Q29ubmVjdGlvblBvaW50KGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBsaW5lLnRhcmdldC5ib3VuZElkKSEsIGxpbmUudGFyZ2V0LmNvbm5lY3Rpb24hKVxuICAgICAgICAgICAgOiBsaW5lLnBvaW50c1tsaW5lLnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgcmVzdFBvaW50cyA9IGxpbmUucG9pbnRzLmxlbmd0aCA+IDIgPyBsaW5lLnBvaW50cy5zbGljZSgxLCBsaW5lLnBvaW50cy5sZW5ndGggLSAxKSA6IFtdO1xuICAgICAgICByZXR1cm4gW3NvdXJjZVBvaW50LCAuLi5yZXN0UG9pbnRzLCB0YXJnZXRQb2ludF07XG4gICAgfVxufTtcbiJdfQ==