@plait/mind 0.2.2 → 0.3.1

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 (130) hide show
  1. package/{drawer/base/base.d.ts → base/base.drawer.d.ts} +1 -1
  2. package/{plugins/emoji → base}/emoji-base.component.d.ts +2 -2
  3. package/{plugins/emoji → base}/index.d.ts +1 -1
  4. package/draw/abstract.d.ts +2 -1
  5. package/draw/indented-link.d.ts +1 -1
  6. package/draw/link/logic-link.d.ts +1 -1
  7. package/draw/node.d.ts +5 -0
  8. package/draw/topic.d.ts +16 -0
  9. package/{plugins/emoji → drawer}/emoji.drawer.d.ts +3 -3
  10. package/drawer/quick-insert.drawer.d.ts +1 -1
  11. package/esm2020/base/base.drawer.mjs +17 -0
  12. package/esm2020/base/emoji-base.component.mjs +33 -0
  13. package/esm2020/base/index.mjs +3 -0
  14. package/esm2020/draw/abstract.mjs +8 -7
  15. package/esm2020/draw/indented-link.mjs +3 -3
  16. package/esm2020/draw/link/abstract-link.mjs +9 -15
  17. package/esm2020/draw/link/logic-link.mjs +9 -9
  18. package/esm2020/draw/node.mjs +21 -0
  19. package/esm2020/draw/topic.mjs +32 -0
  20. package/esm2020/drawer/emoji.drawer.mjs +73 -0
  21. package/esm2020/drawer/quick-insert.drawer.mjs +3 -3
  22. package/esm2020/interfaces/index.mjs +2 -2
  23. package/esm2020/interfaces/pointer.mjs +5 -0
  24. package/esm2020/mind.component.mjs +2 -2
  25. package/esm2020/mind.module.mjs +5 -5
  26. package/esm2020/node.component.mjs +11 -10
  27. package/esm2020/plugins/with-abstract-resize.board.mjs +12 -0
  28. package/esm2020/plugins/with-abstract-resize.mjs +107 -0
  29. package/esm2020/plugins/with-mind-create.mjs +85 -0
  30. package/esm2020/plugins/with-mind-extend.mjs +11 -0
  31. package/esm2020/plugins/with-mind.board.mjs +2 -0
  32. package/esm2020/plugins/with-mind.mjs +30 -16
  33. package/esm2020/plugins/with-node-dnd.mjs +162 -0
  34. package/esm2020/public-api.mjs +5 -3
  35. package/esm2020/transforms/abstract-node.mjs +3 -2
  36. package/esm2020/transforms/emoji.mjs +37 -0
  37. package/esm2020/transforms/index.mjs +7 -3
  38. package/esm2020/transforms/node.mjs +40 -33
  39. package/esm2020/utils/abstract/common.mjs +64 -31
  40. package/esm2020/utils/abstract/resize.mjs +3 -2
  41. package/esm2020/utils/clipboard.mjs +16 -18
  42. package/esm2020/utils/dnd/common.mjs +35 -0
  43. package/esm2020/utils/dnd/detector.mjs +268 -0
  44. package/esm2020/utils/dnd/draw.mjs +161 -0
  45. package/esm2020/utils/index.mjs +6 -6
  46. package/esm2020/utils/mind.mjs +6 -129
  47. package/esm2020/utils/node/adjust-node.mjs +49 -0
  48. package/esm2020/utils/node/common.mjs +6 -0
  49. package/esm2020/utils/node/create-node.mjs +61 -0
  50. package/esm2020/utils/node/index.mjs +4 -0
  51. package/esm2020/utils/point-placement.mjs +22 -2
  52. package/esm2020/utils/position/emoji.mjs +31 -0
  53. package/esm2020/utils/position/index.mjs +4 -0
  54. package/esm2020/utils/position/node.mjs +34 -0
  55. package/esm2020/utils/position/topic.mjs +14 -0
  56. package/esm2020/utils/space/emoji.mjs +19 -0
  57. package/esm2020/utils/space/layout-options.mjs +72 -0
  58. package/esm2020/utils/space/node-space.mjs +77 -0
  59. package/fesm2015/plait-mind.mjs +1464 -1631
  60. package/fesm2015/plait-mind.mjs.map +1 -1
  61. package/fesm2020/plait-mind.mjs +1486 -1642
  62. package/fesm2020/plait-mind.mjs.map +1 -1
  63. package/interfaces/index.d.ts +1 -1
  64. package/interfaces/pointer.d.ts +3 -0
  65. package/mind.module.d.ts +2 -2
  66. package/node.component.d.ts +3 -3
  67. package/package.json +3 -3
  68. package/{interfaces/abstract.d.ts → plugins/with-abstract-resize.board.d.ts} +2 -2
  69. package/plugins/with-mind-create.d.ts +11 -0
  70. package/plugins/with-mind-extend.d.ts +3 -0
  71. package/plugins/{with-extend-mind.d.ts → with-mind.board.d.ts} +4 -4
  72. package/plugins/with-mind.d.ts +1 -1
  73. package/public-api.d.ts +4 -2
  74. package/styles/styles.scss +5 -2
  75. package/transforms/abstract-node.d.ts +1 -1
  76. package/transforms/emoji.d.ts +6 -0
  77. package/transforms/index.d.ts +3 -0
  78. package/transforms/node.d.ts +5 -5
  79. package/utils/abstract/common.d.ts +19 -4
  80. package/utils/abstract/resize.d.ts +2 -1
  81. package/utils/dnd/common.d.ts +7 -0
  82. package/utils/dnd/detector.d.ts +31 -0
  83. package/utils/dnd/draw.d.ts +9 -0
  84. package/utils/index.d.ts +5 -5
  85. package/utils/mind.d.ts +3 -22
  86. package/utils/node/adjust-node.d.ts +5 -0
  87. package/utils/{node.d.ts → node/common.d.ts} +1 -1
  88. package/utils/node/create-node.d.ts +14 -0
  89. package/utils/node/index.d.ts +3 -0
  90. package/utils/point-placement.d.ts +8 -1
  91. package/utils/position/emoji.d.ts +7 -0
  92. package/utils/position/index.d.ts +3 -0
  93. package/utils/position/node.d.ts +12 -0
  94. package/utils/position/topic.d.ts +16 -0
  95. package/utils/space/emoji.d.ts +7 -0
  96. package/{layout-option.d.ts → utils/space/layout-options.d.ts} +1 -1
  97. package/utils/{node-space.d.ts → space/node-space.d.ts} +4 -4
  98. package/draw/link.d.ts +0 -3
  99. package/draw/richtext.d.ts +0 -15
  100. package/draw/shape.d.ts +0 -3
  101. package/esm2020/draw/link.mjs +0 -160
  102. package/esm2020/draw/richtext.mjs +0 -39
  103. package/esm2020/draw/shape.mjs +0 -18
  104. package/esm2020/drawer/base/base.mjs +0 -17
  105. package/esm2020/interfaces/abstract.mjs +0 -12
  106. package/esm2020/layout-option.mjs +0 -72
  107. package/esm2020/plugins/emoji/emoji-base.component.mjs +0 -33
  108. package/esm2020/plugins/emoji/emoji.drawer.mjs +0 -72
  109. package/esm2020/plugins/emoji/emoji.mjs +0 -47
  110. package/esm2020/plugins/emoji/index.mjs +0 -3
  111. package/esm2020/plugins/with-abstract.mjs +0 -106
  112. package/esm2020/plugins/with-dnd.mjs +0 -179
  113. package/esm2020/plugins/with-extend-mind.mjs +0 -11
  114. package/esm2020/utils/direction-corrector.mjs +0 -54
  115. package/esm2020/utils/direction-detector.mjs +0 -56
  116. package/esm2020/utils/dnd.mjs +0 -122
  117. package/esm2020/utils/draw-placeholder.mjs +0 -313
  118. package/esm2020/utils/drop-target-corrector.mjs +0 -87
  119. package/esm2020/utils/graph.mjs +0 -24
  120. package/esm2020/utils/node-space.mjs +0 -77
  121. package/esm2020/utils/node.mjs +0 -6
  122. package/plugins/emoji/emoji.d.ts +0 -11
  123. package/utils/direction-corrector.d.ts +0 -4
  124. package/utils/direction-detector.d.ts +0 -9
  125. package/utils/dnd.d.ts +0 -16
  126. package/utils/draw-placeholder.d.ts +0 -42
  127. package/utils/drop-target-corrector.d.ts +0 -9
  128. package/utils/graph.d.ts +0 -5
  129. /package/plugins/{with-abstract.d.ts → with-abstract-resize.d.ts} +0 -0
  130. /package/plugins/{with-dnd.d.ts → with-node-dnd.d.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, getSelectedElements, throttleRAF, toPoint, transformPoint, updateForeignObject } from '@plait/core';
2
+ import { MindPointerType } from '../interfaces/pointer';
3
+ import { getRectangleByElement, getTopicRectangleByElement } from '../utils';
4
+ import { drawRoundRectangleByElement } from '../draw/node';
5
+ import { drawTopicByElement } from '../draw/topic';
6
+ import { createEmptyMind } from '../utils/node/create-node';
7
+ const DefaultHotkey = 'm';
8
+ export const withCreateMind = (board) => {
9
+ const newBoard = board;
10
+ const { keydown, mousemove, mouseup } = board;
11
+ let fakeCreateNodeRef = null;
12
+ newBoard.mousemove = (event) => {
13
+ if (PlaitBoard.isReadonly(board)) {
14
+ mousemove(event);
15
+ return;
16
+ }
17
+ if (PlaitBoard.isPointer(board, MindPointerType.mind)) {
18
+ throttleRAF(() => {
19
+ const movingPoint = PlaitBoard.getMovingPoint(board);
20
+ if (movingPoint) {
21
+ const targetPoint = transformPoint(board, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
22
+ const emptyMind = createEmptyMind(board, targetPoint);
23
+ const nodeRectangle = getRectangleByElement(newBoard, targetPoint, emptyMind);
24
+ const nodeG = drawRoundRectangleByElement(board, nodeRectangle, emptyMind);
25
+ const topicRectangle = getTopicRectangleByElement(newBoard, nodeRectangle, emptyMind);
26
+ if (!fakeCreateNodeRef) {
27
+ const { richtextComponentRef, richtextG, foreignObject } = drawTopicByElement(newBoard, topicRectangle, emptyMind);
28
+ fakeCreateNodeRef = {
29
+ instanceRef: richtextComponentRef,
30
+ nodeG,
31
+ foreignObject,
32
+ topicG: richtextG
33
+ };
34
+ richtextComponentRef.changeDetectorRef.detectChanges();
35
+ PlaitBoard.getHost(board).append(...[fakeCreateNodeRef.nodeG, fakeCreateNodeRef.topicG]);
36
+ }
37
+ else {
38
+ fakeCreateNodeRef.nodeG.remove();
39
+ fakeCreateNodeRef.nodeG = nodeG;
40
+ PlaitBoard.getHost(board).append(nodeG);
41
+ PlaitBoard.getHost(board).append(fakeCreateNodeRef.topicG);
42
+ updateForeignObject(fakeCreateNodeRef.topicG, topicRectangle.width, topicRectangle.height, topicRectangle.x, topicRectangle.y);
43
+ }
44
+ }
45
+ });
46
+ }
47
+ else {
48
+ destroy();
49
+ }
50
+ mousemove(event);
51
+ };
52
+ newBoard.mouseup = (event) => {
53
+ const movingPoint = PlaitBoard.getMovingPoint(board);
54
+ if (movingPoint && fakeCreateNodeRef && PlaitBoard.isPointer(board, MindPointerType.mind)) {
55
+ const targetPoint = transformPoint(board, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
56
+ const emptyMind = createEmptyMind(board, targetPoint);
57
+ Transforms.insertNode(board, emptyMind, [board.children.length]);
58
+ BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
59
+ }
60
+ destroy();
61
+ mouseup(event);
62
+ };
63
+ board.keydown = (event) => {
64
+ if (PlaitBoard.isReadonly(board) || getSelectedElements(board).length > 0) {
65
+ keydown(event);
66
+ return;
67
+ }
68
+ if (event.key === DefaultHotkey && !PlaitBoard.isPointer(board, MindPointerType.mind)) {
69
+ BoardTransforms.updatePointerType(board, MindPointerType.mind);
70
+ event.preventDefault();
71
+ return;
72
+ }
73
+ keydown(event);
74
+ };
75
+ function destroy() {
76
+ if (fakeCreateNodeRef) {
77
+ fakeCreateNodeRef.instanceRef.destroy();
78
+ fakeCreateNodeRef.nodeG.remove();
79
+ fakeCreateNodeRef.topicG.remove();
80
+ fakeCreateNodeRef = null;
81
+ }
82
+ }
83
+ return newBoard;
84
+ };
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1taW5kLWNyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsT0FBTyxFQUNQLGNBQWMsRUFDZCxtQkFBbUIsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFTMUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQW9DLENBQUM7SUFDdEQsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzlDLElBQUksaUJBQWlCLEdBQTZCLElBQUksQ0FBQztJQUV2RCxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO1FBQ3ZDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsT0FBTztTQUNWO1FBQ0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFxQyxLQUFLLEVBQUUs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LENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0aHJvdHRsZVJBRixcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIHVwZGF0ZUZvcmVpZ25PYmplY3Rcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRNaW5kQm9hcmQgfSBmcm9tICcuL3dpdGgtbWluZC5ib2FyZCc7XG5pbXBvcnQgeyBNaW5kUG9pbnRlclR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50ZXInO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50LCBnZXRUb3BpY1JlY3RhbmdsZUJ5RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGRyYXdSb3VuZFJlY3RhbmdsZUJ5RWxlbWVudCB9IGZyb20gJy4uL2RyYXcvbm9kZSc7XG5pbXBvcnQgeyBkcmF3VG9waWNCeUVsZW1lbnQgfSBmcm9tICcuLi9kcmF3L3RvcGljJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRSaWNodGV4dENvbXBvbmVudCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBjcmVhdGVFbXB0eU1pbmQgfSBmcm9tICcuLi91dGlscy9ub2RlL2NyZWF0ZS1ub2RlJztcblxuY29uc3QgRGVmYXVsdEhvdGtleSA9ICdtJztcblxuZXhwb3J0IGludGVyZmFjZSBGYWtlQ3JlYXRlTm9kZVJlZiB7XG4gICAgbm9kZUc6IFNWR0dFbGVtZW50O1xuICAgIGluc3RhbmNlUmVmOiBDb21wb25lbnRSZWY8UGxhaXRSaWNodGV4dENvbXBvbmVudD47XG4gICAgZm9yZWlnbk9iamVjdDogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7XG4gICAgdG9waWNHOiBTVkdHRWxlbWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhDcmVhdGVNaW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgbmV3Qm9hcmQgPSBib2FyZCBhcyBQbGFpdEJvYXJkICYgUGxhaXRNaW5kQm9hcmQ7XG4gICAgY29uc3QgeyBrZXlkb3duLCBtb3VzZW1vdmUsIG1vdXNldXAgfSA9IGJvYXJkO1xuICAgIGxldCBmYWtlQ3JlYXRlTm9kZVJlZjogRmFrZUNyZWF0ZU5vZGVSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIG5ld0JvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXI8TWluZFBvaW50ZXJUeXBlIHwgUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKSkge1xuICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdmluZ1BvaW50ID0gUGxhaXRCb2FyZC5nZXRNb3ZpbmdQb2ludChib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmluZ1BvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQobW92aW5nUG9pbnRbMF0sIG1vdmluZ1BvaW50WzFdLCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVtcHR5TWluZCA9IGNyZWF0ZUVtcHR5TWluZChib2FyZCwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50KG5ld0JvYXJkLCB0YXJnZXRQb2ludCwgZW1wdHlNaW5kKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIG5vZGVSZWN0YW5nbGUsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvcGljUmVjdGFuZ2xlID0gZ2V0VG9waWNSZWN0YW5nbGVCeUVsZW1lbnQobmV3Qm9hcmQsIG5vZGVSZWN0YW5nbGUsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmFrZUNyZWF0ZU5vZGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmljaHRleHRDb21wb25lbnRSZWYsIHJpY2h0ZXh0RywgZm9yZWlnbk9iamVjdCB9ID0gZHJhd1RvcGljQnlFbGVtZW50KG5ld0JvYXJkLCB0b3BpY1JlY3RhbmdsZSwgZW1wdHlNaW5kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlUmVmOiByaWNodGV4dENvbXBvbmVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlRyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlaWduT2JqZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcGljRzogcmljaHRleHRHXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmljaHRleHRDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmQoLi4uW2Zha2VDcmVhdGVOb2RlUmVmLm5vZGVHLCBmYWtlQ3JlYXRlTm9kZVJlZi50b3BpY0ddKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLm5vZGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYubm9kZUcgPSBub2RlRztcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kKG5vZGVHKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kKGZha2VDcmVhdGVOb2RlUmVmLnRvcGljRyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLnRvcGljRyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BpY1JlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BpY1JlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9waWNSZWN0YW5nbGUueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BpY1JlY3RhbmdsZS55XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgbmV3Qm9hcmQubW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBtb3ZpbmdQb2ludCA9IFBsYWl0Qm9hcmQuZ2V0TW92aW5nUG9pbnQoYm9hcmQpO1xuICAgICAgICBpZiAobW92aW5nUG9pbnQgJiYgZmFrZUNyZWF0ZU5vZGVSZWYgJiYgUGxhaXRCb2FyZC5pc1BvaW50ZXI8TWluZFBvaW50ZXJUeXBlIHwgUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKSkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChtb3ZpbmdQb2ludFswXSwgbW92aW5nUG9pbnRbMV0sIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5TWluZCA9IGNyZWF0ZUVtcHR5TWluZChib2FyZCwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbXB0eU1pbmQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIGRlc3Ryb3koKTtcbiAgICAgICAgbW91c2V1cChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gRGVmYXVsdEhvdGtleSAmJiAhUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKSkge1xuICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVBvaW50ZXJUeXBlKGJvYXJkLCBNaW5kUG9pbnRlclR5cGUubWluZCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBpZiAoZmFrZUNyZWF0ZU5vZGVSZWYpIHtcbiAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmluc3RhbmNlUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLm5vZGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYudG9waWNHLnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0JvYXJkO1xufTtcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export const withMindExtend = (board) => {
2
+ const newBoard = board;
3
+ newBoard.drawEmoji = (emoji, element) => {
4
+ throw new Error('Not implement drawEmoji method error.');
5
+ };
6
+ newBoard.getMindOptions = () => {
7
+ return { spaceBetweenEmojis: 4, emojiPadding: 0 };
8
+ };
9
+ return newBoard;
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLWV4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1taW5kLWV4dGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDaEQsTUFBTSxRQUFRLEdBQUcsS0FBb0MsQ0FBQztJQUV0RCxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxPQUFvQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFO1FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBFbW9qaUl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4vd2l0aC1taW5kLmJvYXJkJztcblxuZXhwb3J0IGNvbnN0IHdpdGhNaW5kRXh0ZW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgbmV3Qm9hcmQgPSBib2FyZCBhcyBQbGFpdEJvYXJkICYgUGxhaXRNaW5kQm9hcmQ7XG5cbiAgICBuZXdCb2FyZC5kcmF3RW1vamkgPSAoZW1vamk6IEVtb2ppSXRlbSwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50IGRyYXdFbW9qaSBtZXRob2QgZXJyb3IuJyk7XG4gICAgfTtcblxuICAgIG5ld0JvYXJkLmdldE1pbmRPcHRpb25zID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4geyBzcGFjZUJldHdlZW5FbW9qaXM6IDQsIGVtb2ppUGFkZGluZzogMCB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gbmV3Qm9hcmQ7XG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLmJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBFbW9qaUl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBNaW5kT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcbmltcG9ydCB7IE1pbmRFbW9qaUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2Vtb2ppLWJhc2UuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdE1pbmRCb2FyZCBleHRlbmRzIFBsYWl0QWJzdHJhY3RCb2FyZCB7XG4gICAgZHJhd0Vtb2ppOiAoZW1vamk6IEVtb2ppSXRlbSwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IENvbXBvbmVudFR5cGU8TWluZEVtb2ppQmFzZUNvbXBvbmVudD47XG4gICAgZ2V0TWluZE9wdGlvbnM6ICgpID0+IE1pbmRPcHRpb25zO1xufVxuIl19
@@ -1,21 +1,22 @@
1
- import { addSelectedElement, getSelectedElements, hotkeys, IS_TEXT_EDITABLE, PlaitBoard, PlaitHistoryBoard, RectangleClient, removeSelectedElement, toPoint, transformPoint, Transforms, depthFirstRecursion, Path, Selection } from '@plait/core';
1
+ import { addSelectedElement, getSelectedElements, hotkeys, PlaitBoard, PlaitHistoryBoard, RectangleClient, removeSelectedElement, toPoint, transformPoint, Transforms, depthFirstRecursion, Path, Selection } from '@plait/core';
2
2
  import { getSizeByText } from '@plait/richtext';
3
3
  import { MindElement, PlaitMind } from '../interfaces';
4
4
  import { PlaitMindComponent } from '../mind.component';
5
5
  import { MindNodeComponent } from '../node.component';
6
- import { changeRightNodeCount, insertMindElement, deleteSelectedELements, getFirstLevelElement, shouldChangeRightNodeCount, insertElementHandleAbstract } from '../utils';
7
- import { getRectangleByNode, hitMindElement } from '../utils/graph';
6
+ import { changeRightNodeCount, insertMindElement, getFirstLevelElement, isInRightBranchOfStandardLayout, insertElementHandleAbstract, deleteElementHandleAbstract } from '../utils';
7
+ import { getRectangleByNode, isHitMindElement } from '../utils/position/node';
8
8
  import { isVirtualKey } from '../utils/is-virtual-key';
9
- import { withDnd } from './with-dnd';
9
+ import { withDnd } from './with-node-dnd';
10
10
  import { buildClipboardData, getDataFromClipboard, insertClipboardData, insertClipboardText, setClipboardData } from '../utils/clipboard';
11
11
  import { AbstractNode } from '@plait/layouts';
12
12
  import { findNewChildNodePath, findNewSiblingNodePath } from '../utils/path';
13
- import { enterNodeEditing } from '../utils/node';
14
- import { withAbstract } from './with-abstract';
15
- import { withExtendMind } from './with-extend-mind';
13
+ import { enterNodeEditing } from '../utils/node/common';
14
+ import { withAbstract } from './with-abstract-resize';
15
+ import { withMindExtend } from './with-mind-extend';
16
16
  import { TOPIC_DEFAULT_MAX_WORD_COUNT } from '../constants/node-topic-style';
17
17
  import { MindTransforms } from '../transforms';
18
- import { isHitEmojis } from './emoji/emoji';
18
+ import { isHitEmojis } from '../utils/position/emoji';
19
+ import { withCreateMind } from './with-mind-create';
19
20
  export const withMind = (board) => {
20
21
  const { drawElement, dblclick, keydown, insertFragment, setFragment, deleteFragment, isHitSelection, getRectangle, isMovable, isRecursion } = board;
21
22
  board.drawElement = (context) => {
@@ -57,7 +58,7 @@ export const withMind = (board) => {
57
58
  return isMovable(element);
58
59
  };
59
60
  board.keydown = (event) => {
60
- if (board.options.readonly || IS_TEXT_EDITABLE.get(board)) {
61
+ if (PlaitBoard.isReadonly(board)) {
61
62
  keydown(event);
62
63
  return;
63
64
  }
@@ -80,7 +81,7 @@ export const withMind = (board) => {
80
81
  insertMindElement(board, selectedElement, findNewChildNodePath(board, selectedElement));
81
82
  }
82
83
  else {
83
- if (shouldChangeRightNodeCount(selectedElement)) {
84
+ if (isInRightBranchOfStandardLayout(selectedElement)) {
84
85
  changeRightNodeCount(board, selectedElementPath.slice(0, 1), 1);
85
86
  }
86
87
  const abstractRefs = insertElementHandleAbstract(board, Path.next(selectedElementPath));
@@ -91,7 +92,10 @@ export const withMind = (board) => {
91
92
  }
92
93
  if (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event)) {
93
94
  event.preventDefault();
94
- deleteSelectedELements(board, selectedElements);
95
+ const deletableElements = getFirstLevelElement(selectedElements).reverse();
96
+ const abstractRefs = deleteElementHandleAbstract(board, deletableElements);
97
+ MindTransforms.setAbstractsByRefs(board, abstractRefs);
98
+ MindTransforms.removeElements(board, selectedElements);
95
99
  let activeElement;
96
100
  const firstLevelElements = getFirstLevelElement(selectedElements);
97
101
  if (AbstractNode.isAbstract(firstLevelElements[0])) {
@@ -137,7 +141,7 @@ export const withMind = (board) => {
137
141
  keydown(event);
138
142
  };
139
143
  board.dblclick = (event) => {
140
- if (board.options.readonly || IS_TEXT_EDITABLE.get(board)) {
144
+ if (PlaitBoard.isReadonly(board)) {
141
145
  dblclick(event);
142
146
  return;
143
147
  }
@@ -146,9 +150,16 @@ export const withMind = (board) => {
146
150
  .filter(value => PlaitMind.isMind(value))
147
151
  .forEach(mindMap => {
148
152
  depthFirstRecursion(mindMap, node => {
149
- if (!PlaitBoard.hasBeenTextEditing(board) && hitMindElement(board, point, node)) {
153
+ if (!PlaitBoard.hasBeenTextEditing(board) && isHitMindElement(board, point, node)) {
150
154
  enterNodeEditing(node);
151
155
  }
156
+ }, node => {
157
+ if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
158
+ return true;
159
+ }
160
+ else {
161
+ return false;
162
+ }
152
163
  });
153
164
  });
154
165
  if (PlaitBoard.hasBeenTextEditing(board)) {
@@ -186,9 +197,12 @@ export const withMind = (board) => {
186
197
  };
187
198
  board.deleteFragment = (data) => {
188
199
  const selectedElements = getSelectedElements(board);
189
- deleteSelectedELements(board, selectedElements);
200
+ const deletableElements = getFirstLevelElement(selectedElements).reverse();
201
+ const abstractRefs = deleteElementHandleAbstract(board, deletableElements);
202
+ MindTransforms.setAbstractsByRefs(board, abstractRefs);
203
+ MindTransforms.removeElements(board, selectedElements);
190
204
  deleteFragment(data);
191
205
  };
192
- return withExtendMind(withAbstract(withDnd(board)));
206
+ return withMindExtend(withCreateMind(withAbstract(withDnd(board))));
193
207
  };
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy93aXRoLW1pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsaUJBQWlCLEVBR2pCLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBRVYsbUJBQW1CLEVBRW5CLElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUM5QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlD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QUFNO1lBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQVcsQ0FBQztZQUNuRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FDbkMsSUFBSSxFQUNKLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBNEIsRUFDdEQsNEJBQTRCLENBQy9CLENBQUM7WUFDRixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELElBQUksSUFBSSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3hFO1NBQ0o7UUFDRCxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUF5QixFQUFFLEVBQUU7UUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQWtCLENBQUM7UUFDckUsc0JBQXNCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDaEQsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLE9BQU8sY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaG90a2V5cyxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRIaXN0b3J5Qm9hcmQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50LFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBSYW5nZSxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQYXRoLFxuICAgIFNlbGVjdGlvblxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRTaXplQnlUZXh0IH0gZnJvbSAnQHBsYWl0L3JpY2h0ZXh0JztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBsYWl0TWluZENvbXBvbmVudCB9IGZyb20gJy4uL21pbmQuY29tcG9uZW50JztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBjaGFuZ2VSaWdodE5vZGVDb3VudCxcbiAgICBpbnNlcnRNaW5kRWxlbWVudCxcbiAgICBkZWxldGVTZWxlY3RlZEVMZW1lbnRzLFxuICAgIGdldEZpcnN0TGV2ZWxFbGVtZW50LFxuICAgIHNob3VsZENoYW5nZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGluc2VydEVsZW1lbnRIYW5kbGVBYnN0cmFjdFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUsIGhpdE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgaXNWaXJ0dWFsS2V5IH0gZnJvbSAnLi4vdXRpbHMvaXMtdmlydHVhbC1rZXknO1xuaW1wb3J0IHsgd2l0aERuZCB9IGZyb20gJy4vd2l0aC1kbmQnO1xuaW1wb3J0IHsgYnVpbGRDbGlwYm9hcmREYXRhLCBnZXREYXRhRnJvbUNsaXBib2FyZCwgaW5zZXJ0Q2xpcGJvYXJkRGF0YSwgaW5zZXJ0Q2xpcGJvYXJkVGV4dCwgc2V0Q2xpcGJvYXJkRGF0YSB9IGZyb20gJy4uL3V0aWxzL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBmaW5kTmV3Q2hpbGROb2RlUGF0aCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aCB9IGZyb20gJy4uL3V0aWxzL3BhdGgnO1xuaW1wb3J0IHsgZW50ZXJOb2RlRWRpdGluZyB9IGZyb20gJy4uL3V0aWxzL25vZGUnO1xuaW1wb3J0IHsgd2l0aEFic3RyYWN0IH0gZnJvbSAnLi93aXRoLWFic3RyYWN0JztcbmltcG9ydCB7IHdpdGhFeHRlbmRNaW5kIH0gZnJvbSAnLi93aXRoLWV4dGVuZC1taW5kJztcbmltcG9ydCB7IFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQgfSBmcm9tICcuLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgaXNIaXRFbW9qaXMgfSBmcm9tICcuL2Vtb2ppL2Vtb2ppJztcblxuZXhwb3J0IGNvbnN0IHdpdGhNaW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkcmF3RWxlbWVudCxcbiAgICAgICAgZGJsY2xpY2ssXG4gICAgICAgIGtleWRvd24sXG4gICAgICAgIGluc2VydEZyYWdtZW50LFxuICAgICAgICBzZXRGcmFnbWVudCxcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQsXG4gICAgICAgIGlzSGl0U2VsZWN0aW9uLFxuICAgICAgICBnZXRSZWN0YW5nbGUsXG4gICAgICAgIGlzTW92YWJsZSxcbiAgICAgICAgaXNSZWN1cnNpb25cbiAgICB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVjdGFuZ2xlID0gZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc1JlY3Vyc2lvbiA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkgJiYgZWxlbWVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1JlY3Vyc2lvbihlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNIaXRTZWxlY3Rpb24gPSAoZWxlbWVudCwgcmFuZ2U6IFJhbmdlKSA9PiB7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSAmJiBib2FyZC5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgICAgIGNvbnN0IGlzSGl0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcmFuZ2UuYW5jaG9yLCByYW5nZS5mb2N1c10pLCBjbGllbnQpO1xuICAgICAgICAgICAgaWYgKGlzSGl0ICYmIE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSAmJiBTZWxlY3Rpb24uaXNDb2xsYXBzZWQocmFuZ2UpICYmIGlzSGl0RW1vamlzKGJvYXJkLCBlbGVtZW50LCByYW5nZS5hbmNob3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGlzSGl0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdFNlbGVjdGlvbihlbGVtZW50LCByYW5nZSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzTW92YWJsZSA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KSAmJiBlbGVtZW50LmlzUm9vdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTW92YWJsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoYm9hcmQub3B0aW9ucy5yZWFkb25seSB8fCBJU19URVhUX0VESVRBQkxFLmdldChib2FyZCkpIHtcbiAgICAgICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIChldmVudC5rZXkgPT09ICdUYWInIHx8XG4gICAgICAgICAgICAgICAgICAgIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIXNlbGVjdGVkRWxlbWVudHNbMF0uaXNSb290ICYmICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChzZWxlY3RlZEVsZW1lbnRzWzBdKSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0geyBpc0NvbGxhcHNlZDogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0SGlzdG9yeUJvYXJkLndpdGhvdXRTYXZpbmcoYm9hcmQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHNlbGVjdGVkRWxlbWVudFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCwgZmluZE5ld0NoaWxkTm9kZVBhdGgoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGFuZ2VSaWdodE5vZGVDb3VudChzZWxlY3RlZEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VSaWdodE5vZGVDb3VudChib2FyZCwgc2VsZWN0ZWRFbGVtZW50UGF0aC5zbGljZSgwLCAxKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdFJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIFBhdGgubmV4dChzZWxlY3RlZEVsZW1lbnRQYXRoKSk7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0c0J5UmVmcyhib2FyZCwgYWJzdHJhY3RSZWZzKTtcblxuICAgICAgICAgICAgICAgICAgICBpbnNlcnRNaW5kRWxlbWVudChib2FyZCwgc2VsZWN0ZWRFbGVtZW50LCBmaW5kTmV3U2libGluZ05vZGVQYXRoKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhvdGtleXMuaXNEZWxldGVCYWNrd2FyZChldmVudCkgfHwgaG90a2V5cy5pc0RlbGV0ZUZvcndhcmQoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBkZWxldGVTZWxlY3RlZEVMZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIGxldCBhY3RpdmVFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdExldmVsRWxlbWVudHMgPSBnZXRGaXJzdExldmVsRWxlbWVudChzZWxlY3RlZEVsZW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChmaXJzdExldmVsRWxlbWVudHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChmaXJzdExldmVsRWxlbWVudHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gcGFyZW50LmNoaWxkcmVuW2ZpcnN0TGV2ZWxFbGVtZW50c1swXS5zdGFydF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RFbGVtZW50ID0gZmlyc3RMZXZlbEVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudFBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoZmlyc3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNTYW1lUGFyZW50ID0gZmlyc3RMZXZlbEVsZW1lbnRzLmV2ZXJ5KGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWluZEVsZW1lbnQuZmluZFBhcmVudChlbGVtZW50KSA9PT0gZmlyc3RFbGVtZW50UGFyZW50O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdEVsZW1lbnRQYXJlbnQgJiYgaGFzU2FtZVBhcmVudCAmJiAhYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEVsZW1lbnRJbmRleCA9IGZpcnN0RWxlbWVudFBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGZpcnN0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuQ291bnQgPSBmaXJzdEVsZW1lbnRQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmUgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuQ291bnQgPT09IGZpcnN0TGV2ZWxFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBmaXJzdEVsZW1lbnRQYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RFbGVtZW50SW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IGZpcnN0RWxlbWVudFBhcmVudC5jaGlsZHJlbltmaXJzdEVsZW1lbnRJbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF1dG8gZW50ZXIgZWRpdCBzdGF0dXNcbiAgICAgICAgICAgIGlmICghaXNWaXJ0dWFsS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmRibGNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChib2FyZC5vcHRpb25zLnJlYWRvbmx5IHx8IElTX1RFWFRfRURJVEFCTEUuZ2V0KGJvYXJkKSkge1xuICAgICAgICAgICAgZGJsY2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBib2FyZC5jaGlsZHJlblxuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiBQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgICAgIC5mb3JFYWNoKG1pbmRNYXAgPT4ge1xuICAgICAgICAgICAgICAgIGRlcHRoRmlyc3RSZWN1cnNpb248TWluZEVsZW1lbnQ+KG1pbmRNYXAgYXMgTWluZEVsZW1lbnQsIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSAmJiBoaXRNaW5kRWxlbWVudChib2FyZCwgcG9pbnQsIG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRibGNsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuc2V0RnJhZ21lbnQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkgYXMgTWluZEVsZW1lbnRbXSk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBidWlsZENsaXBib2FyZERhdGEoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgc2V0Q2xpcGJvYXJkRGF0YShkYXRhLCBlbGVtZW50cyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0RnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmluc2VydEZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIHRhcmdldFBvaW50PzogUG9pbnQpID0+IHtcbiAgICAgICAgaWYgKGJvYXJkLm9wdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGluc2VydEZyYWdtZW50KGRhdGEsIHRhcmdldFBvaW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0RGF0YUZyb21DbGlwYm9hcmQoZGF0YSk7XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluc2VydENsaXBib2FyZERhdGEoYm9hcmQsIGVsZW1lbnRzLCB0YXJnZXRQb2ludCB8fCBbMCwgMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGRhdGE/LmdldERhdGEoYHRleHQvcGxhaW5gKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFNpemVCeVRleHQoXG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmICh0ZXh0ICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0Q2xpcGJvYXJkVGV4dChib2FyZCwgc2VsZWN0ZWRFbGVtZW50c1swXSwgdGV4dCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RnJhZ21lbnQoZGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5kZWxldGVGcmFnbWVudCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBkZWxldGVTZWxlY3RlZEVMZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoRXh0ZW5kTWluZCh3aXRoQWJzdHJhY3Qod2l0aERuZChib2FyZCkpKTtcbn07XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy93aXRoLW1pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsT0FBTyxFQUVQLFVBQVUsRUFDVixpQkFBaUIsRUFHakIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsY0FBYyxFQUNkLFVBQVUsRUFFVixtQkFBbUIsRUFDbkIsSUFBSSxFQUNKLFNBQVMsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUNILG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLCtCQUErQixFQUMvQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDMUMsTUFBTSxFQUNGLFdBQVcsRUFDWCxRQUFRLEVBQ1IsT0FBTyxFQUNQLGNBQWMsRUFDZCxXQUFXLEVBQ1gsY0FBYyxFQUNkLGNBQWMsRUFDZCxZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDZCxHQUFHLEtBQUssQ0FBQztJQUVWLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxPQUFrQyxFQUFFLEVBQUU7UUFDdkQsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQyxPQUFPLGtCQUFrQixDQUFDO1NBQzdCO2FBQU0sSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUQsT0FBTyxpQkFBaUIsQ0FBQztTQUM1QjtRQUNELE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDM0IsSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRTtZQUMzQyxPQUFPLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDMUIsSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2xFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFZLEVBQUUsRUFBRTtRQUM3QyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDOUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1RyxJQUFJLEtBQUssSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN0SCxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDeEIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDN0MsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7UUFDckMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNmLE9BQU87U0FDVjtRQUNELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFrQixDQUFDO1FBQ3JFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQ3pCLElBQ0ksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQzdCLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLO29CQUNoQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDOUc7Z0JBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFO29CQUNyQixJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUU7d0JBQzdCLE1BQU0sVUFBVSxHQUF5QixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDaEUsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7NEJBQ3hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO3dCQUMvRCxDQUFDLENBQUMsQ0FBQztxQkFDTjtvQkFDRCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO2lCQUMzRjtxQkFBTTtvQkFDSCxJQUFJLCtCQUErQixDQUFDLGVBQWUsQ0FBQyxFQUFFO3dCQUNsRCxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDbkU7b0JBRUQsTUFBTSxZQUFZLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO29CQUN4RixjQUFjLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUV2RCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO2lCQUM3RjtnQkFDRCxPQUFPO2FBQ1Y7WUFDRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0UsTUFBTSxZQUFZLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7Z0JBQzNFLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRXZELGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBRXZELElBQUksYUFBc0MsQ0FBQztnQkFDM0MsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUVsRSxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEQsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEU7Z0JBRUQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDaEUsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyRCxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssa0JBQWtCLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksa0JBQWtCLElBQUksYUFBYSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN2RCxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzVFLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0JBQ3pELHdCQUF3QjtvQkFDeEIsSUFBSSxhQUFhLEtBQUssa0JBQWtCLENBQUMsTUFBTSxFQUFFO3dCQUM3QyxhQUFhLEdBQUcsa0JBQWtCLENBQUM7cUJBQ3RDO3lCQUFNO3dCQUNILElBQUksaUJBQWlCLEdBQUcsQ0FBQyxFQUFFOzRCQUN2QixhQUFhLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO3lCQUN0RTtxQkFDSjtpQkFDSjtnQkFDRCxJQUFJLGFBQWEsRUFBRTtvQkFDZixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7aUJBQzVDO2dCQUNELE9BQU87YUFDVjtZQUNELHlCQUF5QjtZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbEMsT0FBTzthQUNWO1NBQ0o7UUFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDM0MsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7Z0JBQzFCLE9BQU87YUFDVjtTQUNKO1FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDbkMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQixPQUFPO1NBQ1Y7UUFDRCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUYsS0FBSyxDQUFDLFFBQVE7YUFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNmLG1CQUFtQixDQUNmLE9BQXNCLEVBQ3RCLElBQUksQ0FBQyxFQUFFO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDL0UsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzFCO1lBQ0wsQ0FBQyxFQUNELElBQUksQ0FBQyxFQUFFO2dCQUNILElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyRCxPQUFPLElBQUksQ0FBQztpQkFDZjtxQkFBTTtvQkFDSCxPQUFPLEtBQUssQ0FBQztpQkFDaEI7WUFDTCxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxVQUFVLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEMsT0FBTztTQUNWO1FBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUF5QixFQUFFLEVBQUU7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQWtCLENBQUMsQ0FBQztRQUMzRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM3RCxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTztTQUNWO1FBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUF5QixFQUFFLFdBQW1CLEVBQUUsRUFBRTtRQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3hCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbEMsT0FBTztTQUNWO1FBRUQsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ2pCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFXLENBQUM7WUFDbkQsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQ25DLElBQUksRUFDSixVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQTRCLEVBQ3RELDRCQUE0QixDQUMvQixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxJQUFJLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUN2QyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN4RTtTQUNKO1FBQ0QsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFrQixDQUFDO1FBQ3JFLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzRSxNQUFNLFlBQVksR0FBRywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxjQUFjLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXZELGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaG90a2V5cyxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRIaXN0b3J5Qm9hcmQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50LFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBSYW5nZSxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIFBhdGgsXG4gICAgU2VsZWN0aW9uXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFNpemVCeVRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGxhaXRNaW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbWluZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIGNoYW5nZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGluc2VydE1pbmRFbGVtZW50LFxuICAgIGdldEZpcnN0TGV2ZWxFbGVtZW50LFxuICAgIGlzSW5SaWdodEJyYW5jaE9mU3RhbmRhcmRMYXlvdXQsXG4gICAgaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUsIGlzSGl0TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IGlzVmlydHVhbEtleSB9IGZyb20gJy4uL3V0aWxzL2lzLXZpcnR1YWwta2V5JztcbmltcG9ydCB7IHdpdGhEbmQgfSBmcm9tICcuL3dpdGgtbm9kZS1kbmQnO1xuaW1wb3J0IHsgYnVpbGRDbGlwYm9hcmREYXRhLCBnZXREYXRhRnJvbUNsaXBib2FyZCwgaW5zZXJ0Q2xpcGJvYXJkRGF0YSwgaW5zZXJ0Q2xpcGJvYXJkVGV4dCwgc2V0Q2xpcGJvYXJkRGF0YSB9IGZyb20gJy4uL3V0aWxzL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBmaW5kTmV3Q2hpbGROb2RlUGF0aCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aCB9IGZyb20gJy4uL3V0aWxzL3BhdGgnO1xuaW1wb3J0IHsgZW50ZXJOb2RlRWRpdGluZyB9IGZyb20gJy4uL3V0aWxzL25vZGUvY29tbW9uJztcbmltcG9ydCB7IHdpdGhBYnN0cmFjdCB9IGZyb20gJy4vd2l0aC1hYnN0cmFjdC1yZXNpemUnO1xuaW1wb3J0IHsgd2l0aE1pbmRFeHRlbmQgfSBmcm9tICcuL3dpdGgtbWluZC1leHRlbmQnO1xuaW1wb3J0IHsgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVCB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlJztcbmltcG9ydCB7IE1pbmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc0hpdEVtb2ppcyB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2Vtb2ppJztcbmltcG9ydCB7IHdpdGhDcmVhdGVNaW5kIH0gZnJvbSAnLi93aXRoLW1pbmQtY3JlYXRlJztcblxuZXhwb3J0IGNvbnN0IHdpdGhNaW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkcmF3RWxlbWVudCxcbiAgICAgICAgZGJsY2xpY2ssXG4gICAgICAgIGtleWRvd24sXG4gICAgICAgIGluc2VydEZyYWdtZW50LFxuICAgICAgICBzZXRGcmFnbWVudCxcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQsXG4gICAgICAgIGlzSGl0U2VsZWN0aW9uLFxuICAgICAgICBnZXRSZWN0YW5nbGUsXG4gICAgICAgIGlzTW92YWJsZSxcbiAgICAgICAgaXNSZWN1cnNpb25cbiAgICB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVjdGFuZ2xlID0gZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc1JlY3Vyc2lvbiA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkgJiYgZWxlbWVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1JlY3Vyc2lvbihlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNIaXRTZWxlY3Rpb24gPSAoZWxlbWVudCwgcmFuZ2U6IFJhbmdlKSA9PiB7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSAmJiBib2FyZC5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgICAgIGNvbnN0IGlzSGl0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcmFuZ2UuYW5jaG9yLCByYW5nZS5mb2N1c10pLCBjbGllbnQpO1xuICAgICAgICAgICAgaWYgKGlzSGl0ICYmIE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSAmJiBTZWxlY3Rpb24uaXNDb2xsYXBzZWQocmFuZ2UpICYmIGlzSGl0RW1vamlzKGJvYXJkLCBlbGVtZW50LCByYW5nZS5hbmNob3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGlzSGl0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdFNlbGVjdGlvbihlbGVtZW50LCByYW5nZSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzTW92YWJsZSA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KSAmJiBlbGVtZW50LmlzUm9vdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTW92YWJsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICAgICAgKGV2ZW50LmtleSA9PT0gJ1RhYicgfHxcbiAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhc2VsZWN0ZWRFbGVtZW50c1swXS5pc1Jvb3QgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHNlbGVjdGVkRWxlbWVudHNbMF0pKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRIaXN0b3J5Qm9hcmQud2l0aG91dFNhdmluZyhib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgc2VsZWN0ZWRFbGVtZW50UGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbnNlcnRNaW5kRWxlbWVudChib2FyZCwgc2VsZWN0ZWRFbGVtZW50LCBmaW5kTmV3Q2hpbGROb2RlUGF0aChib2FyZCwgc2VsZWN0ZWRFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5SaWdodEJyYW5jaE9mU3RhbmRhcmRMYXlvdXQoc2VsZWN0ZWRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlUmlnaHROb2RlQ291bnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudFBhdGguc2xpY2UoMCwgMSksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RSZWZzID0gaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCBQYXRoLm5leHQoc2VsZWN0ZWRFbGVtZW50UGF0aCkpO1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRBYnN0cmFjdHNCeVJlZnMoYm9hcmQsIGFic3RyYWN0UmVmcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aChib2FyZCwgc2VsZWN0ZWRFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChob3RrZXlzLmlzRGVsZXRlQmFja3dhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNEZWxldGVGb3J3YXJkKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsZXRhYmxlRWxlbWVudHMgPSBnZXRGaXJzdExldmVsRWxlbWVudChzZWxlY3RlZEVsZW1lbnRzKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RSZWZzID0gZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCBkZWxldGFibGVFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0QWJzdHJhY3RzQnlSZWZzKGJvYXJkLCBhYnN0cmFjdFJlZnMpO1xuXG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMucmVtb3ZlRWxlbWVudHMoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGFjdGl2ZUVsZW1lbnQ6IE1pbmRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0TGV2ZWxFbGVtZW50cyA9IGdldEZpcnN0TGV2ZWxFbGVtZW50KHNlbGVjdGVkRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGZpcnN0TGV2ZWxFbGVtZW50c1swXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGZpcnN0TGV2ZWxFbGVtZW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBwYXJlbnQuY2hpbGRyZW5bZmlyc3RMZXZlbEVsZW1lbnRzWzBdLnN0YXJ0XTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSBmaXJzdExldmVsRWxlbWVudHNbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RFbGVtZW50UGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChmaXJzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVQYXJlbnQgPSBmaXJzdExldmVsRWxlbWVudHMuZXZlcnkoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBNaW5kRWxlbWVudC5maW5kUGFyZW50KGVsZW1lbnQpID09PSBmaXJzdEVsZW1lbnRQYXJlbnQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0RWxlbWVudFBhcmVudCAmJiBoYXNTYW1lUGFyZW50ICYmICFhY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudEluZGV4ID0gZmlyc3RFbGVtZW50UGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZmlyc3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IGZpcnN0RWxlbWVudFBhcmVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2ZSBwYXJlbnQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5Db3VudCA9PT0gZmlyc3RMZXZlbEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IGZpcnN0RWxlbWVudFBhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEVsZW1lbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gZmlyc3RFbGVtZW50UGFyZW50LmNoaWxkcmVuW2ZpcnN0RWxlbWVudEluZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBhY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYXV0byBlbnRlciBlZGl0IHN0YXR1c1xuICAgICAgICAgICAgaWYgKCFpc1ZpcnR1YWxLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIGVudGVyTm9kZUVkaXRpbmcoc2VsZWN0ZWRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm9hcmQuc2VsZWN0aW9uICYmIGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBrZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZGJsY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkpIHtcbiAgICAgICAgICAgIGRibGNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgYm9hcmQuY2hpbGRyZW5cbiAgICAgICAgICAgIC5maWx0ZXIodmFsdWUgPT4gUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpXG4gICAgICAgICAgICAuZm9yRWFjaChtaW5kTWFwID0+IHtcbiAgICAgICAgICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uPE1pbmRFbGVtZW50PihcbiAgICAgICAgICAgICAgICAgICAgbWluZE1hcCBhcyBNaW5kRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSAmJiBpc0hpdE1pbmRFbGVtZW50KGJvYXJkLCBwb2ludCwgbm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgfHwgYm9hcmQuaXNSZWN1cnNpb24obm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGJsY2xpY2soZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5zZXRGcmFnbWVudCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRGaXJzdExldmVsRWxlbWVudChnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBNaW5kRWxlbWVudFtdKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IGJ1aWxkQ2xpcGJvYXJkRGF0YShib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICBzZXRDbGlwYm9hcmREYXRhKGRhdGEsIGVsZW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRGcmFnbWVudChkYXRhKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaW5zZXJ0RnJhZ21lbnQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCwgdGFyZ2V0UG9pbnQ/OiBQb2ludCkgPT4ge1xuICAgICAgICBpZiAoYm9hcmQub3B0aW9ucy5yZWFkb25seSkge1xuICAgICAgICAgICAgaW5zZXJ0RnJhZ21lbnQoZGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXREYXRhRnJvbUNsaXBib2FyZChkYXRhKTtcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgaW5zZXJ0Q2xpcGJvYXJkRGF0YShib2FyZCwgZWxlbWVudHMsIHRhcmdldFBvaW50IHx8IFswLCAwXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZGF0YT8uZ2V0RGF0YShgdGV4dC9wbGFpbmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0U2l6ZUJ5VGV4dChcbiAgICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICBUT1BJQ19ERUZBVUxUX01BWF9XT1JEX0NPVU5UXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHRleHQgJiYgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpbnNlcnRDbGlwYm9hcmRUZXh0KGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzWzBdLCB0ZXh0LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRGcmFnbWVudChkYXRhLCB0YXJnZXRQb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmRlbGV0ZUZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgIGNvbnN0IGRlbGV0YWJsZUVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoc2VsZWN0ZWRFbGVtZW50cykucmV2ZXJzZSgpO1xuICAgICAgICBjb25zdCBhYnN0cmFjdFJlZnMgPSBkZWxldGVFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIGRlbGV0YWJsZUVsZW1lbnRzKTtcbiAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0QWJzdHJhY3RzQnlSZWZzKGJvYXJkLCBhYnN0cmFjdFJlZnMpO1xuXG4gICAgICAgIE1pbmRUcmFuc2Zvcm1zLnJlbW92ZUVsZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoTWluZEV4dGVuZCh3aXRoQ3JlYXRlTWluZCh3aXRoQWJzdHJhY3Qod2l0aERuZChib2FyZCkpKSk7XG59O1xuIl19
@@ -0,0 +1,162 @@
1
+ import { distanceBetweenPointAndPoint, IS_TEXT_EDITABLE, Path, PlaitBoard, PlaitElement, toPoint, transformPoint, Transforms, getSelectedElements, depthFirstRecursion, createG, PlaitNode } from '@plait/core';
2
+ import { AbstractNode, getNonAbstractChildren } from '@plait/layouts';
3
+ import { MindElement, PlaitMind } from '../interfaces/element';
4
+ import { changeRightNodeCount, deleteElementHandleAbstract, getFirstLevelElement, getOverallAbstracts, getValidAbstractRefs, insertElementHandleAbstract, isInRightBranchOfStandardLayout } from '../utils';
5
+ import { isHitMindElement } from '../utils/position/node';
6
+ import { addActiveOnDragOrigin, isDragging, removeActiveOnDragOrigin, setIsDragging } from '../utils/dnd/common';
7
+ import { detectDropTarget, getPathByDropTarget } from '../utils/dnd/detector';
8
+ import { drawFakeDragNode, drawFakeDropNodeByPath } from '../utils/dnd/draw';
9
+ import { MindTransforms } from '../transforms';
10
+ import { adjustAbstractToNode, adjustRootToNode } from '../utils/node/adjust-node';
11
+ const DRAG_MOVE_BUFFER = 5;
12
+ export const withDnd = (board) => {
13
+ const { mousedown, mousemove, globalMouseup } = board;
14
+ let activeElements = [];
15
+ let correspondingElements = [];
16
+ let startPoint;
17
+ let dragFakeNodeG;
18
+ let fakeDropNodeG;
19
+ let dropTarget = null;
20
+ let targetPath;
21
+ board.mousedown = (event) => {
22
+ if (board.options.readonly || IS_TEXT_EDITABLE.get(board) || event.button === 2) {
23
+ mousedown(event);
24
+ return;
25
+ }
26
+ // 确认是否 hit 节点
27
+ const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
28
+ const selectedElements = getSelectedElements(board);
29
+ depthFirstRecursion(board, element => {
30
+ if (activeElements.length || !MindElement.isMindElement(board, element)) {
31
+ return;
32
+ }
33
+ const isHitElement = isHitMindElement(board, point, element) && !element.isRoot && !AbstractNode.isAbstract(element);
34
+ const isAllMindElement = selectedElements.every(element => MindElement.isMindElement(board, element));
35
+ const isMultiple = isHitElement && selectedElements.length > 1 && selectedElements.includes(element) && isAllMindElement;
36
+ const isSingle = isHitElement && !(selectedElements.length > 1 && selectedElements.includes(element));
37
+ if (isSingle) {
38
+ activeElements = [element];
39
+ startPoint = point;
40
+ }
41
+ else if (isMultiple) {
42
+ activeElements = getFirstLevelElement(selectedElements);
43
+ startPoint = point;
44
+ }
45
+ }, node => {
46
+ if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
47
+ return true;
48
+ }
49
+ else {
50
+ return false;
51
+ }
52
+ });
53
+ if (activeElements.length) {
54
+ correspondingElements = getOverallAbstracts(board, activeElements);
55
+ }
56
+ mousedown(event);
57
+ };
58
+ board.mousemove = (event) => {
59
+ if (!board.options.readonly && activeElements?.length && startPoint) {
60
+ const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
61
+ const distance = distanceBetweenPointAndPoint(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);
62
+ if (distance < DRAG_MOVE_BUFFER) {
63
+ return;
64
+ }
65
+ setIsDragging(board, true);
66
+ fakeDropNodeG?.remove();
67
+ const detectPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
68
+ dropTarget = detectDropTarget(board, detectPoint, dropTarget, [...activeElements, ...correspondingElements]);
69
+ if (dropTarget?.target) {
70
+ targetPath = getPathByDropTarget(board, dropTarget);
71
+ fakeDropNodeG = drawFakeDropNodeByPath(board, dropTarget.target, targetPath);
72
+ PlaitBoard.getHost(board).appendChild(fakeDropNodeG);
73
+ }
74
+ const offsetX = endPoint[0] - startPoint[0];
75
+ const offsetY = endPoint[1] - startPoint[1];
76
+ dragFakeNodeG?.remove();
77
+ dragFakeNodeG = createG();
78
+ [...activeElements, ...correspondingElements].forEach(element => {
79
+ addActiveOnDragOrigin(element);
80
+ if (activeElements.includes(element)) {
81
+ const activeComponent = PlaitElement.getComponent(element);
82
+ const nodeG = drawFakeDragNode(board, activeComponent, offsetX, offsetY);
83
+ dragFakeNodeG?.appendChild(nodeG);
84
+ }
85
+ });
86
+ PlaitBoard.getHost(board).appendChild(dragFakeNodeG);
87
+ }
88
+ mousemove(event);
89
+ };
90
+ board.globalMouseup = (event) => {
91
+ if (!board.options.readonly && activeElements?.length) {
92
+ const elements = [...activeElements, ...correspondingElements];
93
+ if (isDragging(board)) {
94
+ elements.forEach(element => removeActiveOnDragOrigin(element));
95
+ }
96
+ if (dropTarget) {
97
+ const targetPathRef = board.pathRef(targetPath);
98
+ const targetElementPathRef = board.pathRef(PlaitBoard.findPath(board, dropTarget.target));
99
+ const abstractRefs = getValidAbstractRefs(board, elements);
100
+ const normalElements = elements
101
+ .filter(element => !abstractRefs.some(refs => refs.abstract === element))
102
+ .map(element => {
103
+ if (AbstractNode.isAbstract(element)) {
104
+ return adjustAbstractToNode(element);
105
+ }
106
+ if (PlaitMind.isMind(element)) {
107
+ return adjustRootToNode(board, element);
108
+ }
109
+ return element;
110
+ });
111
+ const effectedAbstracts = deleteElementHandleAbstract(board, elements);
112
+ insertElementHandleAbstract(board, targetPath, normalElements.length, false, effectedAbstracts);
113
+ MindTransforms.setAbstractsByRefs(board, effectedAbstracts);
114
+ MindTransforms.removeElements(board, elements);
115
+ let insertPath = targetPathRef.current;
116
+ const parentPath = Path.parent(targetPathRef.current || targetPath);
117
+ if (!insertPath) {
118
+ const parent = PlaitNode.get(board, parentPath);
119
+ const children = getNonAbstractChildren(parent);
120
+ insertPath = [...parentPath, children.length || 0];
121
+ }
122
+ MindTransforms.insertNodes(board, normalElements, insertPath);
123
+ if (abstractRefs.length) {
124
+ MindTransforms.insertAbstractNodes(board, abstractRefs, normalElements, insertPath);
125
+ }
126
+ const shouldChangeRoot = isInRightBranchOfStandardLayout(dropTarget?.target) &&
127
+ targetElementPathRef.current &&
128
+ (Path.isSibling(targetPath, targetElementPathRef.current) || Path.equals(targetPath, targetElementPathRef.current));
129
+ if (shouldChangeRoot && targetElementPathRef.current) {
130
+ changeRightNodeCount(board, targetElementPathRef.current.slice(0, 1), normalElements.length);
131
+ }
132
+ if (targetElementPathRef.current &&
133
+ targetPathRef.current &&
134
+ Path.isAncestor(targetElementPathRef.current, targetPathRef.current) &&
135
+ dropTarget.target.isCollapsed) {
136
+ Transforms.setNode(board, { isCollapsed: false }, targetElementPathRef.current);
137
+ }
138
+ targetElementPathRef.unref();
139
+ targetPathRef.unref();
140
+ const selectedElements = getSelectedElements(board);
141
+ let setActiveElements = [];
142
+ depthFirstRecursion(board, node => {
143
+ const isSelected = selectedElements.some(element => element.id === node.id);
144
+ if (isSelected) {
145
+ setActiveElements.push(node);
146
+ }
147
+ });
148
+ Transforms.setSelectionWithTemporaryElements(board, setActiveElements);
149
+ }
150
+ setIsDragging(board, false);
151
+ activeElements = [];
152
+ dragFakeNodeG?.remove();
153
+ dragFakeNodeG = undefined;
154
+ fakeDropNodeG?.remove();
155
+ fakeDropNodeG = undefined;
156
+ dropTarget = null;
157
+ }
158
+ globalMouseup(event);
159
+ };
160
+ return board;
161
+ };
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub2RlLWRuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1ub2RlLWRuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osVUFBVSxFQUNWLFlBQVksRUFFWixPQUFPLEVBQ1AsY0FBYyxFQUNkLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxTQUFTLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHL0QsT0FBTyxFQUNILG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLCtCQUErQixFQUNsQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFD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LENBQUM7YUFDMUU7WUFFRCxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDcEIsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLGFBQWEsR0FBRyxTQUFTLENBQUM7WUFDMUIsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLGFBQWEsR0FBRyxTQUFTLENBQUM7WUFDMUIsVUFBVSxHQUFHLElBQUksQ0FBQztTQUNyQjtRQUNELGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgSVNfVEVYVF9FRElUQUJMRSxcbiAgICBQYXRoLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBvaW50LFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24sXG4gICAgY3JlYXRlRyxcbiAgICBQbGFpdE5vZGVcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlLCBnZXROb25BYnN0cmFjdENoaWxkcmVuIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIGNoYW5nZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdCxcbiAgICBnZXRGaXJzdExldmVsRWxlbWVudCxcbiAgICBnZXRPdmVyYWxsQWJzdHJhY3RzLFxuICAgIGdldFZhbGlkQWJzdHJhY3RSZWZzLFxuICAgIGluc2VydEVsZW1lbnRIYW5kbGVBYnN0cmFjdCxcbiAgICBpc0luUmlnaHRCcmFuY2hPZlN0YW5kYXJkTGF5b3V0XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGlzSGl0TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IGFkZEFjdGl2ZU9uRHJhZ09yaWdpbiwgaXNEcmFnZ2luZywgcmVtb3ZlQWN0aXZlT25EcmFnT3JpZ2luLCBzZXRJc0RyYWdnaW5nIH0gZnJvbSAnLi4vdXRpbHMvZG5kL2NvbW1vbic7XG5pbXBvcnQgeyBkZXRlY3REcm9wVGFyZ2V0LCBnZXRQYXRoQnlEcm9wVGFyZ2V0IH0gZnJvbSAnLi4vdXRpbHMvZG5kL2RldGVjdG9yJztcbmltcG9ydCB7IGRyYXdGYWtlRHJhZ05vZGUsIGRyYXdGYWtlRHJvcE5vZGVCeVBhdGggfSBmcm9tICcuLi91dGlscy9kbmQvZHJhdyc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgYWRqdXN0QWJzdHJhY3RUb05vZGUsIGFkanVzdFJvb3RUb05vZGUgfSBmcm9tICcuLi91dGlscy9ub2RlL2FkanVzdC1ub2RlJztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoRG5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgZ2xvYmFsTW91c2V1cCB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYWN0aXZlRWxlbWVudHM6IE1pbmRFbGVtZW50W10gPSBbXTtcbiAgICBsZXQgY29ycmVzcG9uZGluZ0VsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50O1xuICAgIGxldCBkcmFnRmFrZU5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSB8IG51bGwgPSBudWxsO1xuICAgIGxldCB0YXJnZXRQYXRoOiBQYXRoO1xuXG4gICAgYm9hcmQubW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChib2FyZC5vcHRpb25zLnJlYWRvbmx5IHx8IElTX1RFWFRfRURJVEFCTEUuZ2V0KGJvYXJkKSB8fCBldmVudC5idXR0b24gPT09IDIpIHtcbiAgICAgICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyDnoa7orqTmmK/lkKYgaGl0IOiKgueCuVxuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKFxuICAgICAgICAgICAgKGJvYXJkIGFzIHVua25vd24pIGFzIE1pbmRFbGVtZW50LFxuICAgICAgICAgICAgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCB8fCAhTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hpdEVsZW1lbnQgPSBpc0hpdE1pbmRFbGVtZW50KGJvYXJkLCBwb2ludCwgZWxlbWVudCkgJiYgIWVsZW1lbnQuaXNSb290ICYmICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FsbE1pbmRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5ldmVyeShlbGVtZW50ID0+IE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc011bHRpcGxlID0gaXNIaXRFbGVtZW50ICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSAmJiBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpICYmIGlzQWxsTWluZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTaW5nbGUgPSBpc0hpdEVsZW1lbnQgJiYgIShzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEgJiYgc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNTaW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBbZWxlbWVudF07XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBnZXRGaXJzdExldmVsRWxlbWVudChzZWxlY3RlZEVsZW1lbnRzIGFzIE1pbmRFbGVtZW50W10pO1xuICAgICAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgfHwgYm9hcmQuaXNSZWN1cnNpb24obm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nRWxlbWVudHMgPSBnZXRPdmVyYWxsQWJzdHJhY3RzKGJvYXJkLCBhY3RpdmVFbGVtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZW1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFib2FyZC5vcHRpb25zLnJlYWRvbmx5ICYmIGFjdGl2ZUVsZW1lbnRzPy5sZW5ndGggJiYgc3RhcnRQb2ludCkge1xuICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXSwgZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdKTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IERSQUdfTU9WRV9CVUZGRVIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldElzRHJhZ2dpbmcoYm9hcmQsIHRydWUpO1xuXG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGRldGVjdFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgZHJvcFRhcmdldCA9IGRldGVjdERyb3BUYXJnZXQoYm9hcmQsIGRldGVjdFBvaW50LCBkcm9wVGFyZ2V0LCBbLi4uYWN0aXZlRWxlbWVudHMsIC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50c10pO1xuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQ/LnRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldFBhdGggPSBnZXRQYXRoQnlEcm9wVGFyZ2V0KGJvYXJkLCBkcm9wVGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGZha2VEcm9wTm9kZUcgPSBkcmF3RmFrZURyb3BOb2RlQnlQYXRoKGJvYXJkLCBkcm9wVGFyZ2V0LnRhcmdldCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChmYWtlRHJvcE5vZGVHKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRyYWdGYWtlTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICBbLi4uYWN0aXZlRWxlbWVudHMsIC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50c10uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBhZGRBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVHID0gZHJhd0Zha2VEcmFnTm9kZShib2FyZCwgYWN0aXZlQ29tcG9uZW50LCBvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgICAgICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kQ2hpbGQobm9kZUcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLmFwcGVuZENoaWxkKGRyYWdGYWtlTm9kZUcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsTW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbLi4uYWN0aXZlRWxlbWVudHMsIC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50c107XG4gICAgICAgICAgICBpZiAoaXNEcmFnZ2luZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4gcmVtb3ZlQWN0aXZlT25EcmFnT3JpZ2luKGVsZW1lbnQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UGF0aFJlZiA9IGJvYXJkLnBhdGhSZWYodGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudFBhdGhSZWYgPSBib2FyZC5wYXRoUmVmKFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGRyb3BUYXJnZXQudGFyZ2V0KSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RSZWZzID0gZ2V0VmFsaWRBYnN0cmFjdFJlZnMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxFbGVtZW50cyA9IGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiAhYWJzdHJhY3RSZWZzLnNvbWUocmVmcyA9PiByZWZzLmFic3RyYWN0ID09PSBlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RBYnN0cmFjdFRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdFJvb3RUb05vZGUoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0ZWRBYnN0cmFjdHMgPSBkZWxldGVFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIHRhcmdldFBhdGgsIG5vcm1hbEVsZW1lbnRzLmxlbmd0aCwgZmFsc2UsIGVmZmVjdGVkQWJzdHJhY3RzKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRBYnN0cmFjdHNCeVJlZnMoYm9hcmQsIGVmZmVjdGVkQWJzdHJhY3RzKTtcblxuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnJlbW92ZUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaW5zZXJ0UGF0aCA9IHRhcmdldFBhdGhSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRQYXRoID0gUGF0aC5wYXJlbnQodGFyZ2V0UGF0aFJlZi5jdXJyZW50IHx8IHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgICAgIGlmICghaW5zZXJ0UGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXJlbnRQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBnZXROb25BYnN0cmFjdENoaWxkcmVuKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFBhdGggPSBbLi4ucGFyZW50UGF0aCwgY2hpbGRyZW4ubGVuZ3RoIHx8IDBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGJvYXJkLCBub3JtYWxFbGVtZW50cywgaW5zZXJ0UGF0aCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RSZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5pbnNlcnRBYnN0cmFjdE5vZGVzKGJvYXJkLCBhYnN0cmFjdFJlZnMsIG5vcm1hbEVsZW1lbnRzLCBpbnNlcnRQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRDaGFuZ2VSb290ID1cbiAgICAgICAgICAgICAgICAgICAgaXNJblJpZ2h0QnJhbmNoT2ZTdGFuZGFyZExheW91dChkcm9wVGFyZ2V0Py50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgKFBhdGguaXNTaWJsaW5nKHRhcmdldFBhdGgsIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQpIHx8IFBhdGguZXF1YWxzKHRhcmdldFBhdGgsIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hhbmdlUm9vdCAmJiB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZVJpZ2h0Tm9kZUNvdW50KGJvYXJkLCB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50LnNsaWNlKDAsIDEpLCBub3JtYWxFbGVtZW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXRoUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgUGF0aC5pc0FuY2VzdG9yKHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQsIHRhcmdldFBhdGhSZWYuY3VycmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldC50YXJnZXQuaXNDb2xsYXBzZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9LCB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudFBhdGhSZWYudW5yZWYoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoUmVmLnVucmVmKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgbGV0IHNldEFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbigoYm9hcmQgYXMgdW5rbm93bikgYXMgTWluZEVsZW1lbnQsIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRFbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbm9kZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgc2V0QWN0aXZlRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsTW91c2V1cChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
@@ -7,9 +7,11 @@ export * from './mind.module';
7
7
  export * from './utils';
8
8
  export * from './interfaces';
9
9
  export * from './plugins/with-mind';
10
- export * from './plugins/with-extend-mind';
10
+ export * from './plugins/with-mind-extend';
11
11
  export * from './constants';
12
12
  export * from './queries/index';
13
13
  export * from './transforms/index';
14
- export * from './plugins/emoji';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBtaW5kXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9taW5kLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25vZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWluZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zL3dpdGgtbWluZCc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMvd2l0aC1leHRlbmQtbWluZCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJpZXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2Zvcm1zL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy9lbW9qaSc7XG4iXX0=
14
+ export * from './base';
15
+ export * from './plugins/with-mind.board';
16
+ export * from './plugins/with-abstract-resize.board';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG1pbmRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL21pbmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9taW5kLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMvd2l0aC1taW5kJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy93aXRoLW1pbmQtZXh0ZW5kJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vcXVlcmllcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zZm9ybXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcbiJdfQ==