@plait/draw 0.62.0-next.7 → 0.62.0-next.8
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.
- package/constants/geometry.d.ts +1 -0
- package/esm2022/constants/geometry.mjs +8 -1
- package/esm2022/engines/basic-shapes/ellipse.mjs +5 -3
- package/esm2022/engines/basic-shapes/round-comment.mjs +5 -3
- package/esm2022/engines/flowchart/or.mjs +5 -3
- package/esm2022/engines/flowchart/summing-junction.mjs +5 -3
- package/esm2022/engines/table/table.mjs +48 -26
- package/esm2022/engines/uml/deletion.mjs +3 -2
- package/esm2022/plugins/with-swimlane-create.mjs +4 -7
- package/esm2022/plugins/with-table.mjs +15 -6
- package/esm2022/transforms/arrow-line.mjs +5 -39
- package/esm2022/transforms/common.mjs +36 -0
- package/esm2022/transforms/geometry.mjs +4 -26
- package/esm2022/transforms/index.mjs +7 -6
- package/esm2022/transforms/swimlane.mjs +1 -1
- package/esm2022/utils/arrow-line/arrow-line-common.mjs +38 -3
- package/esm2022/utils/common.mjs +12 -3
- package/esm2022/utils/geometry.mjs +5 -2
- package/esm2022/utils/style/stroke.mjs +6 -4
- package/esm2022/utils/swimlane.mjs +6 -3
- package/esm2022/utils/table.mjs +13 -5
- package/fesm2022/plait-draw.mjs +246 -165
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +11 -1
- package/transforms/arrow-line.d.ts +2 -6
- package/transforms/common.d.ts +3 -0
- package/transforms/geometry.d.ts +1 -2
- package/transforms/index.d.ts +2 -2
- package/utils/arrow-line/arrow-line-common.d.ts +5 -1
- package/utils/clipboard.d.ts +1 -1
- package/utils/common.d.ts +1 -0
- package/utils/geometry.d.ts +17 -16
- package/utils/hit.d.ts +1 -1
- package/utils/swimlane.d.ts +2 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { getElementById, RectangleClient, Direction, hasValidAngle, rotatePointsByElement } from '@plait/core';
|
|
1
|
+
import { PlaitBoard, getElementById, RectangleClient, Direction, hasValidAngle, rotatePointsByElement, findElements, Path } from '@plait/core';
|
|
2
2
|
import { getDirectionFactor, rotateVectorAnti90, getDirectionByVector, getOppositeDirection, getDirectionByPointOfRectangle, getSourceAndTargetOuterRectangle, getNextPoint, rotateVector } from '@plait/common';
|
|
3
|
-
import { BasicShapes, ArrowLineHandleKey, ArrowLineMarkerType, PlaitArrowLine } from '../../interfaces';
|
|
3
|
+
import { BasicShapes, ArrowLineHandleKey, ArrowLineMarkerType, PlaitArrowLine, PlaitDrawElement } from '../../interfaces';
|
|
4
4
|
import { getEngine } from '../../engines';
|
|
5
5
|
import { getElementShape } from '../shape';
|
|
6
6
|
import { getSourceAndTargetRectangle } from './elbow';
|
|
7
7
|
import { getStrokeWidthByElement } from '../common';
|
|
8
|
+
import { getArrowLinePoints, getHitConnection } from './arrow-line-basic';
|
|
8
9
|
export const getArrowLineHandleRefPair = (board, element) => {
|
|
9
10
|
const strokeWidth = getStrokeWidthByElement(element);
|
|
10
11
|
const sourceBoundElement = element.source.boundId ? getElementById(board, element.source.boundId) : undefined;
|
|
@@ -124,4 +125,38 @@ export const getElbowLineRouteOptions = (board, element, handleRefPair) => {
|
|
|
124
125
|
targetOuterRectangle
|
|
125
126
|
};
|
|
126
127
|
};
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxjQUFjLEVBQ2QsZUFBZSxFQUVmLFNBQVMsRUFFVCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3hCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQyxZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsa0JBQWtCLEVBR2xCLG1CQUFtQixFQUNuQixjQUFjLEVBR2pCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXVCLEVBQTBCLEVBQUU7SUFDNUcsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFvQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pJLE1BQU0sa0JBQWtCLEdB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QUFDO1lBQ2IsT0FBTyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUF1QixFQUFFLGFBQXNDLEVBQUUsRUFBRTtJQUMzSCxhQUFhLEdBQUcsYUFBYSxJQUFJLHlCQUF5QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxHQUFHLDJCQUEyQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDeEcsTUFBTSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLEdBQUcsZ0NBQWdDLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFILE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEcsT0FBTztRQUNILFdBQVc7UUFDWCxlQUFlO1FBQ2YsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixXQUFXO1FBQ1gsZUFBZTtRQUNmLGVBQWU7UUFDZixvQkFBb0I7S0FDdkIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUG9pbnQsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBnZXRFbGVtZW50QnlJZCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgUG9pbnRPZlJlY3RhbmdsZSxcbiAgICBEaXJlY3Rpb24sXG4gICAgVmVjdG9yLFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgcm90YXRlUG9pbnRzQnlFbGVtZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgZ2V0RGlyZWN0aW9uRmFjdG9yLFxuICAgIHJvdGF0ZVZlY3RvckFudGk5MCxcbiAgICBnZXREaXJlY3Rpb25CeVZlY3RvcixcbiAgICBnZXRPcHBvc2l0ZURpcmVjdGlvbixcbiAgICBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUsXG4gICAgZ2V0U291cmNlQW5kVGFyZ2V0T3V0ZXJSZWN0YW5nbGUsXG4gICAgZ2V0TmV4dFBvaW50LFxuICAgIHJvdGF0ZVZlY3RvclxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQmFzaWNTaGFwZXMsXG4gICAgQXJyb3dMaW5lSGFuZGxlS2V5LFxuICAgIEFycm93TGluZUhhbmRsZVJlZixcbiAgICBBcnJvd0xpbmVIYW5kbGVSZWZQYWlyLFxuICAgIEFycm93TGluZU1hcmtlclR5cGUsXG4gICAgUGxhaXRBcnJvd0xpbmUsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdFNoYXBlRWxlbWVudFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uLy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudFNoYXBlIH0gZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgZ2V0U291cmNlQW5kVGFyZ2V0UmVjdGFuZ2xlIH0gZnJvbSAnLi9lbGJvdyc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZXRBcnJvd0xpbmVIYW5kbGVSZWZQYWlyID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEFycm93TGluZSk6IEFycm93TGluZUhhbmRsZVJlZlBhaXIgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlQm91bmRFbGVtZW50ID0gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0U2hhcGVFbGVtZW50Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGFyZ2V0Qm91bmRFbGVtZW50ID0gZWxlbWVudC50YXJnZXQuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0U2hhcGVFbGVtZW50Pihib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IHNvdXJjZVBvaW50ID0gc291cmNlQm91bmRFbGVtZW50ID8gZ2V0Q29ubmVjdGlvblBvaW50KHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpIDogZWxlbWVudC5wb2ludHNbMF07XG4gICAgbGV0IHRhcmdldFBvaW50ID0gdGFyZ2V0Qm91bmRFbGVtZW50XG4gICAgICAgID8gZ2V0Q29ubmVjdGlvblBvaW50KHRhcmdldEJvdW5kRWxlbWVudCwgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiEpXG4gICAgICAgIDogZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgbGV0IHNvdXJjZURpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKFt0YXJnZXRQb2ludFswXSAtIHNvdXJjZVBvaW50WzBdLCB0YXJnZXRQb2ludFsxXSAtIHNvdXJjZVBvaW50WzFdXSkgfHwgRGlyZWN0aW9uLnJpZ2h0O1xuICAgIGxldCB0YXJnZXREaXJlY3Rpb24gPSBnZXRPcHBvc2l0ZURpcmVjdGlvbihzb3VyY2VEaXJlY3Rpb24pO1xuICAgIGNvbnN0IHNvdXJjZUZhY3RvciA9IGdldERpcmVjdGlvbkZhY3Rvcihzb3VyY2VEaXJlY3Rpb24pO1xuICAgIGNvbnN0IHRhcmdldEZhY3RvciA9IGdldERpcmVjdGlvbkZhY3Rvcih0YXJnZXREaXJlY3Rpb24pO1xuICAgIGNvbnN0IHNvdXJjZUhhbmRsZVJlZjogQXJyb3dMaW5lSGFuZGxlUmVmID0ge1xuICAgICAgICBrZXk6IEFycm93TGluZUhhbmRsZUtleS5zb3VyY2UsXG4gICAgICAgIHBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiBzb3VyY2VEaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3NvdXJjZUZhY3Rvci54LCBzb3VyY2VGYWN0b3IueV1cbiAgICB9O1xuICAgIGNvbnN0IHRhcmdldEhhbmRsZVJlZjogQXJyb3dMaW5lSGFuZGxlUmVmID0ge1xuICAgICAgICBrZXk6IEFycm93TGluZUhhbmRsZUtleS50YXJnZXQsXG4gICAgICAgIHBvaW50OiB0YXJnZXRQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiB0YXJnZXREaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3RhcmdldEZhY3Rvci54LCB0YXJnZXRGYWN0b3IueV1cbiAgICB9O1xuICAgIGlmIChzb3VyY2VCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbk9mZnNldCA9IFBsYWl0QXJyb3dMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhcbiAgICAgICAgICAgIGVsZW1lbnQgYXMgUGxhaXRBcnJvd0xpbmUsXG4gICAgICAgICAgICBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUsXG4gICAgICAgICAgICBBcnJvd0xpbmVIYW5kbGVLZXkuc291cmNlXG4gICAgICAgIClcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBzdHJva2VXaWR0aDtcbiAgICAgICAgY29uc3Qgc291cmNlVmVjdG9yID0gZ2V0VmVjdG9yQnlDb25uZWN0aW9uKHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYudmVjdG9yID0gc291cmNlVmVjdG9yO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gc291cmNlQm91bmRFbGVtZW50O1xuICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZShzb3VyY2VCb3VuZEVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcihyb3RhdGVWZWN0b3Ioc291cmNlVmVjdG9yLCBzb3VyY2VCb3VuZEVsZW1lbnQuYW5nbGUhKSk7XG4gICAgICAgICAgICBzb3VyY2VEaXJlY3Rpb24gPSBkaXJlY3Rpb24gPyBkaXJlY3Rpb24gOiBzb3VyY2VEaXJlY3Rpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcihzb3VyY2VWZWN0b3IpO1xuICAgICAgICAgICAgc291cmNlRGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogc291cmNlRGlyZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5kaXJlY3Rpb24gPSBzb3VyY2VEaXJlY3Rpb247XG4gICAgICAgIHNvdXJjZVBvaW50ID0gZ2V0Q29ubmVjdGlvblBvaW50KHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEsIHNvdXJjZURpcmVjdGlvbiwgY29ubmVjdGlvbk9mZnNldCk7XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5wb2ludCA9IHJvdGF0ZVBvaW50c0J5RWxlbWVudChzb3VyY2VQb2ludCwgc291cmNlQm91bmRFbGVtZW50KSB8fCBzb3VyY2VQb2ludDtcbiAgICB9XG4gICAgaWYgKHRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRBcnJvd0xpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKFxuICAgICAgICAgICAgZWxlbWVudCBhcyBQbGFpdEFycm93TGluZSxcbiAgICAgICAgICAgIEFycm93TGluZU1hcmtlclR5cGUubm9uZSxcbiAgICAgICAgICAgIEFycm93TGluZUhhbmRsZUtleS50YXJnZXRcbiAgICAgICAgKVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0cm9rZVdpZHRoO1xuICAgICAgICBjb25zdCB0YXJnZXRWZWN0b3IgPSBnZXRWZWN0b3JCeUNvbm5lY3Rpb24odGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISk7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi52ZWN0b3IgPSB0YXJnZXRWZWN0b3I7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi5ib3VuZEVsZW1lbnQgPSB0YXJnZXRCb3VuZEVsZW1lbnQ7XG4gICAgICAgIGlmIChoYXNWYWxpZEFuZ2xlKHRhcmdldEJvdW5kRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHJvdGF0ZVZlY3Rvcih0YXJnZXRWZWN0b3IsIHRhcmdldEJvdW5kRWxlbWVudC5hbmdsZSEpKTtcbiAgICAgICAgICAgIHRhcmdldERpcmVjdGlvbiA9IGRpcmVjdGlvbiA/IGRpcmVjdGlvbiA6IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHRhcmdldFZlY3Rvcik7XG4gICAgICAgICAgICB0YXJnZXREaXJlY3Rpb24gPSBkaXJlY3Rpb24gPyBkaXJlY3Rpb24gOiB0YXJnZXREaXJlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLmRpcmVjdGlvbiA9IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgdGFyZ2V0UG9pbnQgPSBnZXRDb25uZWN0aW9uUG9pbnQodGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISwgdGFyZ2V0RGlyZWN0aW9uLCBjb25uZWN0aW9uT2Zmc2V0KTtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLnBvaW50ID0gcm90YXRlUG9pbnRzQnlFbGVtZW50KHRhcmdldFBvaW50LCB0YXJnZXRCb3VuZEVsZW1lbnQpIHx8IHRhcmdldFBvaW50O1xuICAgIH1cbiAgICByZXR1cm4geyBzb3VyY2U6IHNvdXJjZUhhbmRsZVJlZiwgdGFyZ2V0OiB0YXJnZXRIYW5kbGVSZWYgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uUG9pbnQgPSAoZ2VvbWV0cnk6IFBsYWl0U2hhcGVFbGVtZW50LCBjb25uZWN0aW9uOiBQb2ludCwgZGlyZWN0aW9uPzogRGlyZWN0aW9uLCBkZWx0YT86IG51bWJlcik6IFBvaW50ID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkZhY3Rvci54ICogZGVsdGEsIHBvaW50WzFdICsgZGlyZWN0aW9uRmFjdG9yLnkgKiBkZWx0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmVjdG9yQnlDb25uZWN0aW9uID0gKGJvdW5kRWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsIGNvbm5lY3Rpb246IFBvaW50T2ZSZWN0YW5nbGUpOiBWZWN0b3IgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhib3VuZEVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldEVsZW1lbnRTaGFwZShib3VuZEVsZW1lbnQpO1xuICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZShzaGFwZSk7XG4gICAgbGV0IHZlY3RvcjogVmVjdG9yID0gWzAsIDBdO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5UG9pbnRPZlJlY3RhbmdsZShjb25uZWN0aW9uKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGJvdW5kRWxlbWVudC5zaGFwZSAhPT0gQmFzaWNTaGFwZXMuZWxsaXBzZSkge1xuICAgICAgICBjb25zdCBmYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3IoZGlyZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtmYWN0b3IueCwgZmFjdG9yLnldO1xuICAgIH1cbiAgICBpZiAoZW5naW5lLmdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludCkge1xuICAgICAgICBjb25zdCBlZGdlID0gZW5naW5lLmdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIGNvbm5lY3Rpb24pO1xuICAgICAgICBpZiAoZWRnZSkge1xuICAgICAgICAgICAgY29uc3QgbGluZVZlY3RvciA9IFtlZGdlWzFdWzBdIC0gZWRnZVswXVswXSwgZWRnZVsxXVsxXSAtIGVkZ2VbMF1bMV1dIGFzIFZlY3RvcjtcbiAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3JBbnRpOTAobGluZVZlY3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgbGluZVZlY3RvciA9IGVuZ2luZS5nZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKGxpbmVWZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3JBbnRpOTAobGluZVZlY3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZlY3Rvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBoYW5kbGVSZWZQYWlyPzogQXJyb3dMaW5lSGFuZGxlUmVmUGFpcikgPT4ge1xuICAgIGhhbmRsZVJlZlBhaXIgPSBoYW5kbGVSZWZQYWlyID8/IGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgc291cmNlUmVjdGFuZ2xlLCB0YXJnZXRSZWN0YW5nbGUgfSA9IGdldFNvdXJjZUFuZFRhcmdldFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaGFuZGxlUmVmUGFpcik7XG4gICAgY29uc3QgeyBzb3VyY2VPdXRlclJlY3RhbmdsZSwgdGFyZ2V0T3V0ZXJSZWN0YW5nbGUgfSA9IGdldFNvdXJjZUFuZFRhcmdldE91dGVyUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICBjb25zdCBzb3VyY2VQb2ludCA9IGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50O1xuICAgIGNvbnN0IHRhcmdldFBvaW50ID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgY29uc3QgbmV4dFNvdXJjZVBvaW50ID0gZ2V0TmV4dFBvaW50KHNvdXJjZVBvaW50LCBzb3VyY2VPdXRlclJlY3RhbmdsZSwgaGFuZGxlUmVmUGFpci5zb3VyY2UuZGlyZWN0aW9uKTtcbiAgICBjb25zdCBuZXh0VGFyZ2V0UG9pbnQgPSBnZXROZXh0UG9pbnQodGFyZ2V0UG9pbnQsIHRhcmdldE91dGVyUmVjdGFuZ2xlLCBoYW5kbGVSZWZQYWlyLnRhcmdldC5kaXJlY3Rpb24pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZVBvaW50LFxuICAgICAgICBuZXh0U291cmNlUG9pbnQsXG4gICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgc291cmNlT3V0ZXJSZWN0YW5nbGUsXG4gICAgICAgIHRhcmdldFBvaW50LFxuICAgICAgICBuZXh0VGFyZ2V0UG9pbnQsXG4gICAgICAgIHRhcmdldFJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0T3V0ZXJSZWN0YW5nbGVcbiAgICB9O1xufTtcbiJdfQ==
|
|
128
|
+
export const collectArrowLineUpdatedRefsByGeometry = (board, element, refs) => {
|
|
129
|
+
const lines = findElements(board, {
|
|
130
|
+
match: (element) => {
|
|
131
|
+
if (PlaitDrawElement.isArrowLine(element)) {
|
|
132
|
+
return element.source.boundId === element.id || element.target.boundId === element.id;
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
},
|
|
136
|
+
recursion: element => true
|
|
137
|
+
});
|
|
138
|
+
if (lines.length) {
|
|
139
|
+
lines.forEach(line => {
|
|
140
|
+
const isSourceBound = line.source.boundId === element.id;
|
|
141
|
+
const handle = isSourceBound ? 'source' : 'target';
|
|
142
|
+
const object = { ...line[handle] };
|
|
143
|
+
const linePoints = getArrowLinePoints(board, line);
|
|
144
|
+
const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
145
|
+
object.connection = getHitConnection(board, point, element);
|
|
146
|
+
const path = PlaitBoard.findPath(board, line);
|
|
147
|
+
const index = refs.findIndex(obj => Path.equals(obj.path, path));
|
|
148
|
+
if (index === -1) {
|
|
149
|
+
refs.push({
|
|
150
|
+
property: {
|
|
151
|
+
[handle]: object
|
|
152
|
+
},
|
|
153
|
+
path
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
refs[index].property = { ...refs[index].property, [handle]: object };
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxVQUFVLEVBQ1YsY0FBYyxFQUNkLGVBQWUsRUFFZixTQUFTLEVBRVQsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixZQUFZLEVBRVosSUFBSSxFQUNQLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQyxZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsa0JBQWtCLEVBR2xCLG1CQUFtQixFQUNuQixjQUFjLEVBR2QsZ0JBQWdCLEVBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXVCLEVBQTBCLEVBQUU7SUFDNUcsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENB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QUFVLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM1RCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNOLFFBQVEsRUFBRTt3QkFDTixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU07cUJBQ25CO29CQUNELElBQUk7aUJBQ1AsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6RSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQb2ludCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIGdldEVsZW1lbnRCeUlkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIERpcmVjdGlvbixcbiAgICBWZWN0b3IsXG4gICAgaGFzVmFsaWRBbmdsZSxcbiAgICByb3RhdGVQb2ludHNCeUVsZW1lbnQsXG4gICAgZmluZEVsZW1lbnRzLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQYXRoXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgZ2V0RGlyZWN0aW9uRmFjdG9yLFxuICAgIHJvdGF0ZVZlY3RvckFudGk5MCxcbiAgICBnZXREaXJlY3Rpb25CeVZlY3RvcixcbiAgICBnZXRPcHBvc2l0ZURpcmVjdGlvbixcbiAgICBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUsXG4gICAgZ2V0U291cmNlQW5kVGFyZ2V0T3V0ZXJSZWN0YW5nbGUsXG4gICAgZ2V0TmV4dFBvaW50LFxuICAgIHJvdGF0ZVZlY3RvclxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQmFzaWNTaGFwZXMsXG4gICAgQXJyb3dMaW5lSGFuZGxlS2V5LFxuICAgIEFycm93TGluZUhhbmRsZVJlZixcbiAgICBBcnJvd0xpbmVIYW5kbGVSZWZQYWlyLFxuICAgIEFycm93TGluZU1hcmtlclR5cGUsXG4gICAgUGxhaXRBcnJvd0xpbmUsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdFNoYXBlRWxlbWVudCxcbiAgICBQbGFpdERyYXdFbGVtZW50XG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBnZXRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi9zaGFwZSc7XG5pbXBvcnQgeyBnZXRTb3VyY2VBbmRUYXJnZXRSZWN0YW5nbGUgfSBmcm9tICcuL2VsYm93JztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGdldEFycm93TGluZVBvaW50cywgZ2V0SGl0Q29ubmVjdGlvbiB9IGZyb20gJy4vYXJyb3ctbGluZS1iYXNpYyc7XG5cbmV4cG9ydCBjb25zdCBnZXRBcnJvd0xpbmVIYW5kbGVSZWZQYWlyID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEFycm93TGluZSk6IEFycm93TGluZUhhbmRsZVJlZlBhaXIgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlQm91bmRFbGVtZW50ID0gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0U2hhcGVFbGVtZW50Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGFyZ2V0Qm91bmRFbGVtZW50ID0gZWxlbWVudC50YXJnZXQuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0U2hhcGVFbGVtZW50Pihib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IHNvdXJjZVBvaW50ID0gc291cmNlQm91bmRFbGVtZW50ID8gZ2V0Q29ubmVjdGlvblBvaW50KHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpIDogZWxlbWVudC5wb2ludHNbMF07XG4gICAgbGV0IHRhcmdldFBvaW50ID0gdGFyZ2V0Qm91bmRFbGVtZW50XG4gICAgICAgID8gZ2V0Q29ubmVjdGlvblBvaW50KHRhcmdldEJvdW5kRWxlbWVudCwgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiEpXG4gICAgICAgIDogZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgbGV0IHNvdXJjZURpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKFt0YXJnZXRQb2ludFswXSAtIHNvdXJjZVBvaW50WzBdLCB0YXJnZXRQb2ludFsxXSAtIHNvdXJjZVBvaW50WzFdXSkgfHwgRGlyZWN0aW9uLnJpZ2h0O1xuICAgIGxldCB0YXJnZXREaXJlY3Rpb24gPSBnZXRPcHBvc2l0ZURpcmVjdGlvbihzb3VyY2VEaXJlY3Rpb24pO1xuICAgIGNvbnN0IHNvdXJjZUZhY3RvciA9IGdldERpcmVjdGlvbkZhY3Rvcihzb3VyY2VEaXJlY3Rpb24pO1xuICAgIGNvbnN0IHRhcmdldEZhY3RvciA9IGdldERpcmVjdGlvbkZhY3Rvcih0YXJnZXREaXJlY3Rpb24pO1xuICAgIGNvbnN0IHNvdXJjZUhhbmRsZVJlZjogQXJyb3dMaW5lSGFuZGxlUmVmID0ge1xuICAgICAgICBrZXk6IEFycm93TGluZUhhbmRsZUtleS5zb3VyY2UsXG4gICAgICAgIHBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiBzb3VyY2VEaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3NvdXJjZUZhY3Rvci54LCBzb3VyY2VGYWN0b3IueV1cbiAgICB9O1xuICAgIGNvbnN0IHRhcmdldEhhbmRsZVJlZjogQXJyb3dMaW5lSGFuZGxlUmVmID0ge1xuICAgICAgICBrZXk6IEFycm93TGluZUhhbmRsZUtleS50YXJnZXQsXG4gICAgICAgIHBvaW50OiB0YXJnZXRQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiB0YXJnZXREaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3RhcmdldEZhY3Rvci54LCB0YXJnZXRGYWN0b3IueV1cbiAgICB9O1xuICAgIGlmIChzb3VyY2VCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbk9mZnNldCA9IFBsYWl0QXJyb3dMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhcbiAgICAgICAgICAgIGVsZW1lbnQgYXMgUGxhaXRBcnJvd0xpbmUsXG4gICAgICAgICAgICBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUsXG4gICAgICAgICAgICBBcnJvd0xpbmVIYW5kbGVLZXkuc291cmNlXG4gICAgICAgIClcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBzdHJva2VXaWR0aDtcbiAgICAgICAgY29uc3Qgc291cmNlVmVjdG9yID0gZ2V0VmVjdG9yQnlDb25uZWN0aW9uKHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYudmVjdG9yID0gc291cmNlVmVjdG9yO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gc291cmNlQm91bmRFbGVtZW50O1xuICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZShzb3VyY2VCb3VuZEVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcihyb3RhdGVWZWN0b3Ioc291cmNlVmVjdG9yLCBzb3VyY2VCb3VuZEVsZW1lbnQuYW5nbGUhKSk7XG4gICAgICAgICAgICBzb3VyY2VEaXJlY3Rpb24gPSBkaXJlY3Rpb24gPyBkaXJlY3Rpb24gOiBzb3VyY2VEaXJlY3Rpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcihzb3VyY2VWZWN0b3IpO1xuICAgICAgICAgICAgc291cmNlRGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogc291cmNlRGlyZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5kaXJlY3Rpb24gPSBzb3VyY2VEaXJlY3Rpb247XG4gICAgICAgIHNvdXJjZVBvaW50ID0gZ2V0Q29ubmVjdGlvblBvaW50KHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEsIHNvdXJjZURpcmVjdGlvbiwgY29ubmVjdGlvbk9mZnNldCk7XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5wb2ludCA9IHJvdGF0ZVBvaW50c0J5RWxlbWVudChzb3VyY2VQb2ludCwgc291cmNlQm91bmRFbGVtZW50KSB8fCBzb3VyY2VQb2ludDtcbiAgICB9XG4gICAgaWYgKHRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRBcnJvd0xpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKFxuICAgICAgICAgICAgZWxlbWVudCBhcyBQbGFpdEFycm93TGluZSxcbiAgICAgICAgICAgIEFycm93TGluZU1hcmtlclR5cGUubm9uZSxcbiAgICAgICAgICAgIEFycm93TGluZUhhbmRsZUtleS50YXJnZXRcbiAgICAgICAgKVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0cm9rZVdpZHRoO1xuICAgICAgICBjb25zdCB0YXJnZXRWZWN0b3IgPSBnZXRWZWN0b3JCeUNvbm5lY3Rpb24odGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISk7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi52ZWN0b3IgPSB0YXJnZXRWZWN0b3I7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi5ib3VuZEVsZW1lbnQgPSB0YXJnZXRCb3VuZEVsZW1lbnQ7XG4gICAgICAgIGlmIChoYXNWYWxpZEFuZ2xlKHRhcmdldEJvdW5kRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHJvdGF0ZVZlY3Rvcih0YXJnZXRWZWN0b3IsIHRhcmdldEJvdW5kRWxlbWVudC5hbmdsZSEpKTtcbiAgICAgICAgICAgIHRhcmdldERpcmVjdGlvbiA9IGRpcmVjdGlvbiA/IGRpcmVjdGlvbiA6IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHRhcmdldFZlY3Rvcik7XG4gICAgICAgICAgICB0YXJnZXREaXJlY3Rpb24gPSBkaXJlY3Rpb24gPyBkaXJlY3Rpb24gOiB0YXJnZXREaXJlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLmRpcmVjdGlvbiA9IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgdGFyZ2V0UG9pbnQgPSBnZXRDb25uZWN0aW9uUG9pbnQodGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISwgdGFyZ2V0RGlyZWN0aW9uLCBjb25uZWN0aW9uT2Zmc2V0KTtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLnBvaW50ID0gcm90YXRlUG9pbnRzQnlFbGVtZW50KHRhcmdldFBvaW50LCB0YXJnZXRCb3VuZEVsZW1lbnQpIHx8IHRhcmdldFBvaW50O1xuICAgIH1cbiAgICByZXR1cm4geyBzb3VyY2U6IHNvdXJjZUhhbmRsZVJlZiwgdGFyZ2V0OiB0YXJnZXRIYW5kbGVSZWYgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uUG9pbnQgPSAoZ2VvbWV0cnk6IFBsYWl0U2hhcGVFbGVtZW50LCBjb25uZWN0aW9uOiBQb2ludCwgZGlyZWN0aW9uPzogRGlyZWN0aW9uLCBkZWx0YT86IG51bWJlcik6IFBvaW50ID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkZhY3Rvci54ICogZGVsdGEsIHBvaW50WzFdICsgZGlyZWN0aW9uRmFjdG9yLnkgKiBkZWx0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmVjdG9yQnlDb25uZWN0aW9uID0gKGJvdW5kRWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsIGNvbm5lY3Rpb246IFBvaW50T2ZSZWN0YW5nbGUpOiBWZWN0b3IgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhib3VuZEVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldEVsZW1lbnRTaGFwZShib3VuZEVsZW1lbnQpO1xuICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZShzaGFwZSk7XG4gICAgbGV0IHZlY3RvcjogVmVjdG9yID0gWzAsIDBdO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5UG9pbnRPZlJlY3RhbmdsZShjb25uZWN0aW9uKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGJvdW5kRWxlbWVudC5zaGFwZSAhPT0gQmFzaWNTaGFwZXMuZWxsaXBzZSkge1xuICAgICAgICBjb25zdCBmYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3IoZGlyZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtmYWN0b3IueCwgZmFjdG9yLnldO1xuICAgIH1cbiAgICBpZiAoZW5naW5lLmdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludCkge1xuICAgICAgICBjb25zdCBlZGdlID0gZW5naW5lLmdldEVkZ2VCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIGNvbm5lY3Rpb24pO1xuICAgICAgICBpZiAoZWRnZSkge1xuICAgICAgICAgICAgY29uc3QgbGluZVZlY3RvciA9IFtlZGdlWzFdWzBdIC0gZWRnZVswXVswXSwgZWRnZVsxXVsxXSAtIGVkZ2VbMF1bMV1dIGFzIFZlY3RvcjtcbiAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3JBbnRpOTAobGluZVZlY3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgbGluZVZlY3RvciA9IGVuZ2luZS5nZXRUYW5nZW50VmVjdG9yQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKGxpbmVWZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiByb3RhdGVWZWN0b3JBbnRpOTAobGluZVZlY3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZlY3Rvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBoYW5kbGVSZWZQYWlyPzogQXJyb3dMaW5lSGFuZGxlUmVmUGFpcikgPT4ge1xuICAgIGhhbmRsZVJlZlBhaXIgPSBoYW5kbGVSZWZQYWlyID8/IGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgc291cmNlUmVjdGFuZ2xlLCB0YXJnZXRSZWN0YW5nbGUgfSA9IGdldFNvdXJjZUFuZFRhcmdldFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaGFuZGxlUmVmUGFpcik7XG4gICAgY29uc3QgeyBzb3VyY2VPdXRlclJlY3RhbmdsZSwgdGFyZ2V0T3V0ZXJSZWN0YW5nbGUgfSA9IGdldFNvdXJjZUFuZFRhcmdldE91dGVyUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICBjb25zdCBzb3VyY2VQb2ludCA9IGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50O1xuICAgIGNvbnN0IHRhcmdldFBvaW50ID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgY29uc3QgbmV4dFNvdXJjZVBvaW50ID0gZ2V0TmV4dFBvaW50KHNvdXJjZVBvaW50LCBzb3VyY2VPdXRlclJlY3RhbmdsZSwgaGFuZGxlUmVmUGFpci5zb3VyY2UuZGlyZWN0aW9uKTtcbiAgICBjb25zdCBuZXh0VGFyZ2V0UG9pbnQgPSBnZXROZXh0UG9pbnQodGFyZ2V0UG9pbnQsIHRhcmdldE91dGVyUmVjdGFuZ2xlLCBoYW5kbGVSZWZQYWlyLnRhcmdldC5kaXJlY3Rpb24pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZVBvaW50LFxuICAgICAgICBuZXh0U291cmNlUG9pbnQsXG4gICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgc291cmNlT3V0ZXJSZWN0YW5nbGUsXG4gICAgICAgIHRhcmdldFBvaW50LFxuICAgICAgICBuZXh0VGFyZ2V0UG9pbnQsXG4gICAgICAgIHRhcmdldFJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0T3V0ZXJSZWN0YW5nbGVcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3RBcnJvd0xpbmVVcGRhdGVkUmVmc0J5R2VvbWV0cnkgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsXG4gICAgcmVmczogeyBwcm9wZXJ0eTogUGFydGlhbDxQbGFpdEFycm93TGluZT47IHBhdGg6IFBhdGggfVtdXG4pID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IGZpbmRFbGVtZW50cyhib2FyZCwge1xuICAgICAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA9PT0gZWxlbWVudC5pZCB8fCBlbGVtZW50LnRhcmdldC5ib3VuZElkID09PSBlbGVtZW50LmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICByZWN1cnNpb246IGVsZW1lbnQgPT4gdHJ1ZVxuICAgIH0pIGFzIFBsYWl0QXJyb3dMaW5lW107XG4gICAgaWYgKGxpbmVzLmxlbmd0aCkge1xuICAgICAgICBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTb3VyY2VCb3VuZCA9IGxpbmUuc291cmNlLmJvdW5kSWQgPT09IGVsZW1lbnQuaWQ7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSBpc1NvdXJjZUJvdW5kID8gJ3NvdXJjZScgOiAndGFyZ2V0JztcbiAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHsgLi4ubGluZVtoYW5kbGVdIH07XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBsaW5lKTtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gaXNTb3VyY2VCb3VuZCA/IGxpbmVQb2ludHNbMF0gOiBsaW5lUG9pbnRzW2xpbmVQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IGdldEhpdENvbm5lY3Rpb24oYm9hcmQsIHBvaW50LCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBsaW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVmcy5maW5kSW5kZXgob2JqID0+IFBhdGguZXF1YWxzKG9iai5wYXRoLCBwYXRoKSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVdOiBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWZzW2luZGV4XS5wcm9wZXJ0eSA9IHsgLi4ucmVmc1tpbmRleF0ucHJvcGVydHksIFtoYW5kbGVdOiBvYmplY3QgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==
|
package/esm2022/utils/common.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import { getElementShape } from './shape';
|
|
|
8
8
|
import { memorizeLatestShape } from './memorize';
|
|
9
9
|
import { isHitEdgeOfShape, isInsideOfShape } from './hit';
|
|
10
10
|
import { getHitConnectorPoint } from './arrow-line';
|
|
11
|
-
import { getNearestPoint, isGeometryIncludeText, isSingleTextGeometry } from './geometry';
|
|
11
|
+
import { getNearestPoint, isGeometryClosed, isGeometryIncludeText, isSingleTextGeometry } from './geometry';
|
|
12
12
|
import { isMultipleTextGeometry } from './multi-text-geometry';
|
|
13
13
|
export const getTextRectangle = (element) => {
|
|
14
14
|
const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
|
|
@@ -60,6 +60,15 @@ export const isDrawElementsIncludeText = (elements) => {
|
|
|
60
60
|
return isDrawElementIncludeText(item);
|
|
61
61
|
});
|
|
62
62
|
};
|
|
63
|
+
export const isDrawElementClosed = (element) => {
|
|
64
|
+
if (PlaitDrawElement.isText(element) || PlaitDrawElement.isArrowLine(element) || PlaitDrawElement.isImage(element)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if (PlaitDrawElement.isGeometry(element)) {
|
|
68
|
+
return isGeometryClosed(element);
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
};
|
|
63
72
|
export const getSnappingShape = (board, point) => {
|
|
64
73
|
let hitElement = getHitShape(board, point);
|
|
65
74
|
if (hitElement) {
|
|
@@ -114,7 +123,7 @@ export const drawBoundReaction = (board, element, roughOptions = { hasMask: true
|
|
|
114
123
|
const maskG = drawShape(board, activeRectangle, shape, {
|
|
115
124
|
stroke: SELECTION_BORDER_COLOR,
|
|
116
125
|
strokeWidth: 0,
|
|
117
|
-
fill: SELECTION_FILL_COLOR,
|
|
126
|
+
fill: isDrawElementClosed(element) ? SELECTION_FILL_COLOR : DefaultDrawStyle.fill,
|
|
118
127
|
fillStyle: 'solid'
|
|
119
128
|
}, drawOptions);
|
|
120
129
|
g.appendChild(maskG);
|
|
@@ -155,4 +164,4 @@ export const getGeometryAlign = (board, element) => {
|
|
|
155
164
|
}
|
|
156
165
|
return Alignment.center;
|
|
157
166
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixVQUFVLEVBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ILE9BQU8sRUFHSCxrQ0FBa0MsRUFHbEMsZ0JBQWdCLEVBSW5CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFB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QUksc0JBQXNCLENBQUMsT0FBOEIsQ0FBQyxFQUFFLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQUksT0FBcUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzNFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUNoRSxDQUFDO1FBQ0YsT0FBTyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLG9CQUFvQixDQUFDLE9BQThCLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE9BQVEsT0FBeUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDdEUsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUM1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIEFuY2VzdG9yLFxuICAgIEJvYXJkVHJhbnNmb3JtcyxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBjcmVhdGVHLFxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24sXG4gICAgZHJhd0NpcmNsZSxcbiAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudCxcbiAgICBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgIFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgIFNOQVBQSU5HX1NUUk9LRV9XSURUSCxcbiAgICBUcmFuc2Zvcm1zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IERlZmF1bHREcmF3U3R5bGUsIExJTkVfSElUX0dFT01FVFJZX0JVRkZFUiwgTElORV9TTkFQUElOR19CVUZGRVIsIFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgRHJhd1NoYXBlcyxcbiAgICBFbmdpbmVFeHRyYURhdGEsXG4gICAgTXVsdGlwbGVUZXh0R2VvbWV0cnlDb21tb25UZXh0S2V5cyxcbiAgICBQbGFpdEJhc2VHZW9tZXRyeSxcbiAgICBQbGFpdENvbW1vbkdlb21ldHJ5LFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LFxuICAgIFBsYWl0U2hhcGVFbGVtZW50XG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBnZXRUZXh0RWRpdG9yc0J5RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgaXNDZWxsSW5jbHVkZVRleHQgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudFNoYXBlIH0gZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgbWVtb3JpemVMYXRlc3RTaGFwZSB9IGZyb20gJy4vbWVtb3JpemUnO1xuaW1wb3J0IHsgaXNIaXRFZGdlT2ZTaGFwZSwgaXNJbnNpZGVPZlNoYXBlIH0gZnJvbSAnLi9oaXQnO1xuaW1wb3J0IHsgZ2V0SGl0Q29ubmVjdG9yUG9pbnQgfSBmcm9tICcuL2Fycm93LWxpbmUnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50LCBpc0dlb21ldHJ5SW5jbHVkZVRleHQsIGlzU2luZ2xlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBpc011bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9tdWx0aS10ZXh0LWdlb21ldHJ5JztcbmltcG9ydCB7IFBsYWl0RHJhd1NoYXBlVGV4dCB9IGZyb20gJy4uL2dlbmVyYXRvcnMvdGV4dC5nZW5lcmF0b3InO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dFJlY3RhbmdsZSA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRHZW9tZXRyeT4oZWxlbWVudDogVCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodCE7XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZWxlbWVudC5zdHJva2VXaWR0aCB8fCBEZWZhdWx0RHJhd1N0eWxlLnN0cm9rZVdpZHRoO1xuICAgIHJldHVybiBzdHJva2VXaWR0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEJhc2VHZW9tZXRyeSB8IFBsYWl0QmFzZVRhYmxlKSA9PiB7XG4gICAgbWVtb3JpemVMYXRlc3RTaGFwZShib2FyZCwgZWxlbWVudC5zaGFwZSk7XG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVBvaW50ZXJUeXBlKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEcmF3RWxlbWVudEluY2x1ZGVUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0RHJhd0VsZW1lbnQpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc0dlb21ldHJ5SW5jbHVkZVRleHQoZWxlbWVudCk7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvcnMgPSBnZXRUZXh0RWRpdG9yc0J5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGVkaXRvcnMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5jZWxscy5zb21lKGNlbGwgPT4gaXNDZWxsSW5jbHVkZVRleHQoY2VsbCkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RyYXdFbGVtZW50c0luY2x1ZGVUZXh0ID0gKGVsZW1lbnRzOiBQbGFpdERyYXdFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHMuc29tZShpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIGlzRHJhd0VsZW1lbnRJbmNsdWRlVGV4dChpdGVtKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTbmFwcGluZ1NoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQpOiBQbGFpdFNoYXBlRWxlbWVudCB8IG51bGwgPT4ge1xuICAgIGxldCBoaXRFbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCB8IG51bGwgPSBnZXRIaXRTaGFwZShib2FyZCwgcG9pbnQpO1xuICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHJlZiA9IGdldFNuYXBwaW5nUmVmKGJvYXJkLCBoaXRFbGVtZW50LCBwb2ludCk7XG4gICAgICAgIGlmIChyZWYuaXNIaXRDb25uZWN0b3IgfHwgcmVmLmlzSGl0RWRnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGhpdEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U25hcHBpbmdSZWYgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCByb3RhdGVkUG9pbnQgPSByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KHBvaW50LCBoaXRFbGVtZW50KSB8fCBwb2ludDtcbiAgICBjb25zdCBjb25uZWN0b3JQb2ludCA9IGdldEhpdENvbm5lY3RvclBvaW50KHJvdGF0ZWRQb2ludCwgaGl0RWxlbWVudCk7XG4gICAgY29uc3QgZWRnZVBvaW50ID0gZ2V0TmVhcmVzdFBvaW50KGhpdEVsZW1lbnQsIHJvdGF0ZWRQb2ludCk7XG4gICAgY29uc3QgaXNIaXRFZGdlID0gaXNIaXRFZGdlT2ZTaGFwZShib2FyZCwgaGl0RWxlbWVudCwgcm90YXRlZFBvaW50LCBMSU5FX1NOQVBQSU5HX0JVRkZFUik7XG4gICAgcmV0dXJuIHsgaXNIaXRFZGdlLCBpc0hpdENvbm5lY3RvcjogISFjb25uZWN0b3JQb2ludCwgY29ubmVjdG9yUG9pbnQsIGVkZ2VQb2ludCB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdFNoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQsIG9mZnNldCA9IExJTkVfSElUX0dFT01FVFJZX0JVRkZFUik6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9PiB7XG4gICAgbGV0IGhpdFNoYXBlOiBQbGFpdFNoYXBlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHRyYXZlcnNlRHJhd1NoYXBlcyhib2FyZCwgKGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChoaXRTaGFwZSA9PT0gbnVsbCAmJiBpc0luc2lkZU9mU2hhcGUoYm9hcmQsIGVsZW1lbnQsIHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQocG9pbnQsIGVsZW1lbnQpIHx8IHBvaW50LCBvZmZzZXQgKiAyKSkge1xuICAgICAgICAgICAgaGl0U2hhcGUgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGhpdFNoYXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRHJhd1NoYXBlcyA9IChib2FyZDogUGxhaXRCb2FyZCwgY2FsbGJhY2s6IChlbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCkgPT4gdm9pZCkgPT4ge1xuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSAmJiBQbGFpdERyYXdFbGVtZW50LmlzU2hhcGVFbGVtZW50KG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldElzUmVjdXJzaW9uRnVuYyhib2FyZCksXG4gICAgICAgIHRydWVcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdTaGFwZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIHNoYXBlOiBEcmF3U2hhcGVzLFxuICAgIHJvdWdoT3B0aW9uczogT3B0aW9ucyxcbiAgICBkcmF3T3B0aW9uczogRW5naW5lRXh0cmFEYXRhXG4pID0+IHtcbiAgICByZXR1cm4gZ2V0RW5naW5lKHNoYXBlKS5kcmF3KGJvYXJkLCBvdXRlclJlY3RhbmdsZSwgcm91Z2hPcHRpb25zLCBkcmF3T3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0JvdW5kUmVhY3Rpb24gPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsXG4gICAgcm91Z2hPcHRpb25zOiB7IGhhc01hc2s6IGJvb2xlYW47IGhhc0Nvbm5lY3RvcjogYm9vbGVhbiB9ID0geyBoYXNNYXNrOiB0cnVlLCBoYXNDb25uZWN0b3I6IHRydWUgfVxuKSA9PiB7XG4gICAgY29uc3QgZyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgU05BUFBJTkdfU1RST0tFX1dJRFRIKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldEVsZW1lbnRTaGFwZShlbGVtZW50KTtcbiAgICBsZXQgZHJhd09wdGlvbnM6IEVuZ2luZUV4dHJhRGF0YSA9IHt9O1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgZHJhd09wdGlvbnMgPSB7IGVsZW1lbnQgfTtcbiAgICB9XG4gICAgY29uc3Qgc3Ryb2tlRyA9IGRyYXdTaGFwZShcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIGFjdGl2ZVJlY3RhbmdsZSxcbiAgICAgICAgc2hhcGUsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBTTkFQUElOR19TVFJPS0VfV0lEVEhcbiAgICAgICAgfSxcbiAgICAgICAgZHJhd09wdGlvbnNcbiAgICApO1xuICAgIGcuYXBwZW5kQ2hpbGQoc3Ryb2tlRyk7XG5cbiAgICBpZiAocm91Z2hPcHRpb25zLmhhc01hc2spIHtcbiAgICAgICAgY29uc3QgbWFza0cgPSBkcmF3U2hhcGUoXG4gICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZSxcbiAgICAgICAgICAgIHNoYXBlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMCxcbiAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkcmF3T3B0aW9uc1xuICAgICAgICApO1xuICAgICAgICBnLmFwcGVuZENoaWxkKG1hc2tHKTtcbiAgICB9XG4gICAgaWYgKHJvdWdoT3B0aW9ucy5oYXNDb25uZWN0b3IpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gZ2V0RW5naW5lKHNoYXBlKS5nZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29ubmVjdG9yUG9pbnRzLmZvckVhY2gocG9pbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHBvaW50LCA4LCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgICAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZy5hcHBlbmRDaGlsZChjaXJjbGVHKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBnO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRLZXkgPSA8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0R2VvbWV0cnk+KGVsZW1lbnQ6IFQsIHRleHQ6IFBsYWl0RHJhd1NoYXBlVGV4dCkgPT4ge1xuICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KChlbGVtZW50IGFzIHVua25vd24pIGFzIFBsYWl0Q29tbW9uR2VvbWV0cnkpKSB7XG4gICAgICAgIHJldHVybiBgJHtlbGVtZW50LmlkfS0ke3RleHQua2V5fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRleHQua2V5O1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHZW9tZXRyeUFsaWduID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5IHwgUGxhaXRCYXNlVGFibGUpID0+IHtcbiAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeShlbGVtZW50IGFzIFBsYWl0Q29tbW9uR2VvbWV0cnkpKSB7XG4gICAgICAgIGNvbnN0IGRyYXdTaGFwZVRleHQgPSAoZWxlbWVudCBhcyBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5KS50ZXh0cy5maW5kKGl0ZW0gPT5cbiAgICAgICAgICAgIGl0ZW0ua2V5LmluY2x1ZGVzKE11bHRpcGxlVGV4dEdlb21ldHJ5Q29tbW9uVGV4dEtleXMuY29udGVudClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRyYXdTaGFwZVRleHQ/LnRleHQuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcjtcbiAgICB9XG4gICAgaWYgKGlzU2luZ2xlVGV4dEdlb21ldHJ5KGVsZW1lbnQgYXMgUGxhaXRDb21tb25HZW9tZXRyeSkpIHtcbiAgICAgICAgcmV0dXJuIChlbGVtZW50IGFzIFBsYWl0R2VvbWV0cnkpLnRleHQ/LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuXG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmaXJzdFRleHRDZWxsID0gZWxlbWVudC5jZWxscy5maW5kKGl0ZW0gPT4gaXRlbS50ZXh0KTtcbiAgICAgICAgcmV0dXJuIGZpcnN0VGV4dENlbGw/LnRleHQ/LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuICAgIHJldHVybiBBbGlnbm1lbnQuY2VudGVyO1xufTtcbiJdfQ==
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixVQUFVLEVBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ILE9BQU8sRUFHSCxrQ0FBa0MsRUFHbEMsZ0JBQWdCLEVBSW5CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RyxPQUFPLEVBQUUsc0JB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QUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxhQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQzFELENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBBbmNlc3RvcixcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRyxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIGRyYXdDaXJjbGUsXG4gICAgZ2V0SXNSZWN1cnNpb25GdW5jLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQsXG4gICAgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICBTTkFQUElOR19TVFJPS0VfV0lEVEgsXG4gICAgVHJhbnNmb3Jtc1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0RHJhd1N0eWxlLCBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIsIExJTkVfU05BUFBJTkdfQlVGRkVSLCBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIERyYXdTaGFwZXMsXG4gICAgRW5naW5lRXh0cmFEYXRhLFxuICAgIE11bHRpcGxlVGV4dEdlb21ldHJ5Q29tbW9uVGV4dEtleXMsXG4gICAgUGxhaXRCYXNlR2VvbWV0cnksXG4gICAgUGxhaXRDb21tb25HZW9tZXRyeSxcbiAgICBQbGFpdERyYXdFbGVtZW50LFxuICAgIFBsYWl0R2VvbWV0cnksXG4gICAgUGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeSxcbiAgICBQbGFpdFNoYXBlRWxlbWVudFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFsaWdubWVudCwgZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGlzQ2VsbEluY2x1ZGVUZXh0IH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldEVsZW1lbnRTaGFwZSB9IGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRCYXNlVGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7IG1lbW9yaXplTGF0ZXN0U2hhcGUgfSBmcm9tICcuL21lbW9yaXplJztcbmltcG9ydCB7IGlzSGl0RWRnZU9mU2hhcGUsIGlzSW5zaWRlT2ZTaGFwZSB9IGZyb20gJy4vaGl0JztcbmltcG9ydCB7IGdldEhpdENvbm5lY3RvclBvaW50IH0gZnJvbSAnLi9hcnJvdy1saW5lJztcbmltcG9ydCB7IGdldE5lYXJlc3RQb2ludCwgaXNHZW9tZXRyeUNsb3NlZCwgaXNHZW9tZXRyeUluY2x1ZGVUZXh0LCBpc1NpbmdsZVRleHRHZW9tZXRyeSB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgaXNNdWx0aXBsZVRleHRHZW9tZXRyeSB9IGZyb20gJy4vbXVsdGktdGV4dC1nZW9tZXRyeSc7XG5pbXBvcnQgeyBQbGFpdERyYXdTaGFwZVRleHQgfSBmcm9tICcuLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRSZWN0YW5nbGUgPSA8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0R2VvbWV0cnk+KGVsZW1lbnQ6IFQpID0+IHtcbiAgICBjb25zdCBlbGVtZW50UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQhO1xuICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudFJlY3RhbmdsZS53aWR0aCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyAoZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgLSBoZWlnaHQpIC8gMlxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGVsZW1lbnQuc3Ryb2tlV2lkdGggfHwgRGVmYXVsdERyYXdTdHlsZS5zdHJva2VXaWR0aDtcbiAgICByZXR1cm4gc3Ryb2tlV2lkdGg7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRCYXNlR2VvbWV0cnkgfCBQbGFpdEJhc2VUYWJsZSkgPT4ge1xuICAgIG1lbW9yaXplTGF0ZXN0U2hhcGUoYm9hcmQsIGVsZW1lbnQuc2hhcGUpO1xuICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRHJhd0VsZW1lbnRJbmNsdWRlVGV4dCA9IChlbGVtZW50OiBQbGFpdERyYXdFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNHZW9tZXRyeUluY2x1ZGVUZXh0KGVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBlZGl0b3JzLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2VsbHMuc29tZShjZWxsID0+IGlzQ2VsbEluY2x1ZGVUZXh0KGNlbGwpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEcmF3RWxlbWVudHNJbmNsdWRlVGV4dCA9IChlbGVtZW50czogUGxhaXREcmF3RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLnNvbWUoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpc0RyYXdFbGVtZW50SW5jbHVkZVRleHQoaXRlbSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEcmF3RWxlbWVudENsb3NlZCA9IChlbGVtZW50OiBQbGFpdERyYXdFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpIHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc0dlb21ldHJ5Q2xvc2VkKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNuYXBwaW5nU2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCk6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9PiB7XG4gICAgbGV0IGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9IGdldEhpdFNoYXBlKGJvYXJkLCBwb2ludCk7XG4gICAgaWYgKGhpdEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcmVmID0gZ2V0U25hcHBpbmdSZWYoYm9hcmQsIGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgaWYgKHJlZi5pc0hpdENvbm5lY3RvciB8fCByZWYuaXNIaXRFZGdlKSB7XG4gICAgICAgICAgICByZXR1cm4gaGl0RWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTbmFwcGluZ1JlZiA9IChib2FyZDogUGxhaXRCb2FyZCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHJvdGF0ZWRQb2ludCA9IHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQocG9pbnQsIGhpdEVsZW1lbnQpIHx8IHBvaW50O1xuICAgIGNvbnN0IGNvbm5lY3RvclBvaW50ID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQocm90YXRlZFBvaW50LCBoaXRFbGVtZW50KTtcbiAgICBjb25zdCBlZGdlUG9pbnQgPSBnZXROZWFyZXN0UG9pbnQoaGl0RWxlbWVudCwgcm90YXRlZFBvaW50KTtcbiAgICBjb25zdCBpc0hpdEVkZ2UgPSBpc0hpdEVkZ2VPZlNoYXBlKGJvYXJkLCBoaXRFbGVtZW50LCByb3RhdGVkUG9pbnQsIExJTkVfU05BUFBJTkdfQlVGRkVSKTtcbiAgICByZXR1cm4geyBpc0hpdEVkZ2UsIGlzSGl0Q29ubmVjdG9yOiAhIWNvbm5lY3RvclBvaW50LCBjb25uZWN0b3JQb2ludCwgZWRnZVBvaW50IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgb2Zmc2V0ID0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSKTogUGxhaXRTaGFwZUVsZW1lbnQgfCBudWxsID0+IHtcbiAgICBsZXQgaGl0U2hhcGU6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgdHJhdmVyc2VEcmF3U2hhcGVzKGJvYXJkLCAoZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGhpdFNoYXBlID09PSBudWxsICYmIGlzSW5zaWRlT2ZTaGFwZShib2FyZCwgZWxlbWVudCwgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudChwb2ludCwgZWxlbWVudCkgfHwgcG9pbnQsIG9mZnNldCAqIDIpKSB7XG4gICAgICAgICAgICBoaXRTaGFwZSA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaGl0U2hhcGU7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VEcmF3U2hhcGVzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBjYWxsYmFjazogKGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50KSA9PiB2b2lkKSA9PiB7XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgIGlmICghUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNTaGFwZUVsZW1lbnQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SXNSZWN1cnNpb25GdW5jKGJvYXJkKSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd1NoYXBlID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIG91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgc2hhcGU6IERyYXdTaGFwZXMsXG4gICAgcm91Z2hPcHRpb25zOiBPcHRpb25zLFxuICAgIGRyYXdPcHRpb25zOiBFbmdpbmVFeHRyYURhdGFcbikgPT4ge1xuICAgIHJldHVybiBnZXRFbmdpbmUoc2hhcGUpLmRyYXcoYm9hcmQsIG91dGVyUmVjdGFuZ2xlLCByb3VnaE9wdGlvbnMsIGRyYXdPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Qm91bmRSZWFjdGlvbiA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCxcbiAgICByb3VnaE9wdGlvbnM6IHsgaGFzTWFzazogYm9vbGVhbjsgaGFzQ29ubmVjdG9yOiBib29sZWFuIH0gPSB7IGhhc01hc2s6IHRydWUsIGhhc0Nvbm5lY3RvcjogdHJ1ZSB9XG4pID0+IHtcbiAgICBjb25zdCBnID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBTTkFQUElOR19TVFJPS0VfV0lEVEgpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0RWxlbWVudFNoYXBlKGVsZW1lbnQpO1xuICAgIGxldCBkcmF3T3B0aW9uczogRW5naW5lRXh0cmFEYXRhID0ge307XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICBkcmF3T3B0aW9ucyA9IHsgZWxlbWVudCB9O1xuICAgIH1cbiAgICBjb25zdCBzdHJva2VHID0gZHJhd1NoYXBlKFxuICAgICAgICBib2FyZCxcbiAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IFNOQVBQSU5HX1NUUk9LRV9XSURUSFxuICAgICAgICB9LFxuICAgICAgICBkcmF3T3B0aW9uc1xuICAgICk7XG4gICAgZy5hcHBlbmRDaGlsZChzdHJva2VHKTtcblxuICAgIGlmIChyb3VnaE9wdGlvbnMuaGFzTWFzaykge1xuICAgICAgICBjb25zdCBtYXNrRyA9IGRyYXdTaGFwZShcbiAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLFxuICAgICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgICAgICAgICAgICAgIGZpbGw6IGlzRHJhd0VsZW1lbnRDbG9zZWQoZWxlbWVudCkgPyBTRUxFQ1RJT05fRklMTF9DT0xPUiA6IERlZmF1bHREcmF3U3R5bGUuZmlsbCxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkcmF3T3B0aW9uc1xuICAgICAgICApO1xuICAgICAgICBnLmFwcGVuZENoaWxkKG1hc2tHKTtcbiAgICB9XG4gICAgaWYgKHJvdWdoT3B0aW9ucy5oYXNDb25uZWN0b3IpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gZ2V0RW5naW5lKHNoYXBlKS5nZXRDb25uZWN0b3JQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29ubmVjdG9yUG9pbnRzLmZvckVhY2gocG9pbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHBvaW50LCA4LCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgICAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZy5hcHBlbmRDaGlsZChjaXJjbGVHKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBnO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRLZXkgPSA8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0R2VvbWV0cnk+KGVsZW1lbnQ6IFQsIHRleHQ6IFBsYWl0RHJhd1NoYXBlVGV4dCkgPT4ge1xuICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KChlbGVtZW50IGFzIHVua25vd24pIGFzIFBsYWl0Q29tbW9uR2VvbWV0cnkpKSB7XG4gICAgICAgIHJldHVybiBgJHtlbGVtZW50LmlkfS0ke3RleHQua2V5fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRleHQua2V5O1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHZW9tZXRyeUFsaWduID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5IHwgUGxhaXRCYXNlVGFibGUpID0+IHtcbiAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeShlbGVtZW50IGFzIFBsYWl0Q29tbW9uR2VvbWV0cnkpKSB7XG4gICAgICAgIGNvbnN0IGRyYXdTaGFwZVRleHQgPSAoZWxlbWVudCBhcyBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5KS50ZXh0cy5maW5kKGl0ZW0gPT5cbiAgICAgICAgICAgIGl0ZW0ua2V5LmluY2x1ZGVzKE11bHRpcGxlVGV4dEdlb21ldHJ5Q29tbW9uVGV4dEtleXMuY29udGVudClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRyYXdTaGFwZVRleHQ/LnRleHQuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcjtcbiAgICB9XG4gICAgaWYgKGlzU2luZ2xlVGV4dEdlb21ldHJ5KGVsZW1lbnQgYXMgUGxhaXRDb21tb25HZW9tZXRyeSkpIHtcbiAgICAgICAgcmV0dXJuIChlbGVtZW50IGFzIFBsYWl0R2VvbWV0cnkpLnRleHQ/LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuXG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmaXJzdFRleHRDZWxsID0gZWxlbWVudC5jZWxscy5maW5kKGl0ZW0gPT4gaXRlbS50ZXh0KTtcbiAgICAgICAgcmV0dXJuIGZpcnN0VGV4dENlbGw/LnRleHQ/LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuICAgIHJldHVybiBBbGlnbm1lbnQuY2VudGVyO1xufTtcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PlaitBoard, PlaitElement, RectangleClient, getSelectedElements, idCreator } from '@plait/core';
|
|
2
2
|
import { BasicShapes, FlowchartSymbols } from '../interfaces/geometry';
|
|
3
|
-
import { DefaultBasicShapeProperty, DefaultBasicShapePropertyMap, DefaultFlowchartPropertyMap, DefaultTextProperty, DefaultUMLPropertyMap, DrawThemeColors, GEOMETRY_WITHOUT_TEXT, ShapeDefaultSpace, getFlowchartPointers, getUMLPointers } from '../constants';
|
|
3
|
+
import { DefaultBasicShapeProperty, DefaultBasicShapePropertyMap, DefaultFlowchartPropertyMap, DefaultTextProperty, DefaultUMLPropertyMap, DrawThemeColors, GEOMETRY_NOT_CLOSED, GEOMETRY_WITHOUT_TEXT, ShapeDefaultSpace, getFlowchartPointers, getUMLPointers } from '../constants';
|
|
4
4
|
import { ActiveGenerator, Alignment, DEFAULT_FONT_FAMILY, RESIZE_HANDLE_DIAMETER, buildText, getFirstTextManage, measureElement } from '@plait/common';
|
|
5
5
|
import { getEngine } from '../engines';
|
|
6
6
|
import { getElementShape } from './shape';
|
|
@@ -240,4 +240,7 @@ export const isSingleTextShape = (shape) => {
|
|
|
240
240
|
export const isSingleTextGeometry = (element) => {
|
|
241
241
|
return PlaitDrawElement.isGeometry(element) && isSingleTextShape(element.shape);
|
|
242
242
|
};
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUyxlQUFlLEVBQWtCLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvSCxPQUFPLEVBQWtCLFdBQVcsRUFBaUIsZ0JBQWdCLEVBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUVsSCxPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUVyQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNqQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFNBQVMsRUFFVCxtQkFBbUIsRUFFbkIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBc0IsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0s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QUFDO0lBQzlFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxlQUFlLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ2xHLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBc0IsRUFBRSxFQUFFO0lBQzVELE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDdkQsT0FBTyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBc0IsRUFBRSxFQUFFO0lBQzNELE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIFRoZW1lQ29sb3JNb2RlLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBpZENyZWF0b3IgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBHZW9tZXRyeVNoYXBlcywgQmFzaWNTaGFwZXMsIFBsYWl0R2VvbWV0cnksIEZsb3djaGFydFN5bWJvbHMsIFVNTFN5bWJvbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQge1xuICAgIERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHksXG4gICAgRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eU1hcCxcbiAgICBEZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHlNYXAsXG4gICAgRGVmYXVsdFRleHRQcm9wZXJ0eSxcbiAgICBEZWZhdWx0VU1MUHJvcGVydHlNYXAsXG4gICAgRHJhd1BvaW50ZXJUeXBlLFxuICAgIERyYXdUaGVtZUNvbG9ycyxcbiAgICBHRU9NRVRSWV9XSVRIT1VUX1RFWFQsXG4gICAgU2hhcGVEZWZhdWx0U3BhY2UsXG4gICAgZ2V0Rmxvd2NoYXJ0UG9pbnRlcnMsXG4gICAgZ2V0VU1MUG9pbnRlcnNcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgQWN0aXZlR2VuZXJhdG9yLFxuICAgIEFsaWdubWVudCxcbiAgICBDdXN0b21UZXh0LFxuICAgIERFRkFVTFRfRk9OVF9GQU1JTFksXG4gICAgUGxhaXRDb21tb25FbGVtZW50UmVmLFxuICAgIFJFU0laRV9IQU5ETEVfRElBTUVURVIsXG4gICAgYnVpbGRUZXh0LFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBtZWFzdXJlRWxlbWVudFxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudFNoYXBlIH0gZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBjcmVhdGVBcnJvd0xpbmVFbGVtZW50IH0gZnJvbSAnLi9hcnJvdy1saW5lL2Fycm93LWxpbmUtYmFzaWMnO1xuaW1wb3J0IHsgQXJyb3dMaW5lTWFya2VyVHlwZSwgQXJyb3dMaW5lU2hhcGUsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0U2hhcGVFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEZWZhdWx0TGluZVN0eWxlIH0gZnJvbSAnLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyIH0gZnJvbSAnLi9tZW1vcml6ZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdTaGFwZVRleHQsIGdldFRleHRNYW5hZ2UgfSBmcm9tICcuLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IGNyZWF0ZVVNTENsYXNzT3JJbnRlcmZhY2VHZW9tZXRyeUVsZW1lbnQgfSBmcm9tICcuL3VtbCc7XG5pbXBvcnQgeyBjcmVhdGVNdWx0aXBsZVRleHRHZW9tZXRyeUVsZW1lbnQsIGlzTXVsdGlwbGVUZXh0R2VvbWV0cnksIGlzTXVsdGlwbGVUZXh0U2hhcGUgfSBmcm9tICcuL211bHRpLXRleHQtZ2VvbWV0cnknO1xuaW1wb3J0IHsgREVGQVVMVF9GT05UX1NJWkUgfSBmcm9tICdAcGxhaXQvdGV4dC1wbHVnaW5zJztcblxuZXhwb3J0IHR5cGUgR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSBQaWNrPFBsYWl0R2VvbWV0cnksICdmaWxsJyB8ICdzdHJva2VDb2xvcicgfCAnc3Ryb2tlV2lkdGgnPjtcblxuZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXMgPSBQYXJ0aWFsPEN1c3RvbVRleHQ+ICYgeyBhbGlnbj86IEFsaWdubWVudDsgdGV4dEhlaWdodD86IG51bWJlciB9O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgaWYgKEdFT01FVFJZX1dJVEhPVVRfVEVYVC5pbmNsdWRlcyhzaGFwZSkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUdlb21ldHJ5RWxlbWVudFdpdGhvdXRUZXh0KHNoYXBlLCBwb2ludHMsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVHZW9tZXRyeUVsZW1lbnRXaXRoVGV4dChzaGFwZSwgcG9pbnRzLCB0ZXh0LCBvcHRpb25zLCB0ZXh0UHJvcGVydGllcyk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdlb21ldHJ5RWxlbWVudFdpdGhUZXh0ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgbGV0IHRleHRPcHRpb25zID0ge307XG4gICAgbGV0IGFsaWdubWVudDogdW5kZWZpbmVkIHwgQWxpZ25tZW50ID0gQWxpZ25tZW50LmNlbnRlcjtcbiAgICBsZXQgdGV4dEhlaWdodCA9IERlZmF1bHRUZXh0UHJvcGVydHkuaGVpZ2h0O1xuICAgIGlmIChzaGFwZSA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICB0ZXh0T3B0aW9ucyA9IHsgYXV0b1NpemU6IHRydWUgfTtcbiAgICAgICAgYWxpZ25tZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0ZXh0UHJvcGVydGllcyA9IHsgLi4udGV4dFByb3BlcnRpZXMgfTtcbiAgICB0ZXh0UHJvcGVydGllcz8uYWxpZ24gJiYgKGFsaWdubWVudCA9IHRleHRQcm9wZXJ0aWVzPy5hbGlnbik7XG4gICAgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQgJiYgKHRleHRIZWlnaHQgPSB0ZXh0UHJvcGVydGllcz8udGV4dEhlaWdodCk7XG4gICAgZGVsZXRlIHRleHRQcm9wZXJ0aWVzPy5hbGlnbjtcbiAgICBkZWxldGUgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdGV4dEhlaWdodCxcbiAgICAgICAgdGV4dDogYnVpbGRUZXh0KHRleHQsIGFsaWdubWVudCwgdGV4dFByb3BlcnRpZXMpLFxuICAgICAgICBwb2ludHMsXG4gICAgICAgIC4uLnRleHRPcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHZW9tZXRyeUVsZW1lbnRXaXRob3V0VGV4dCA9IChcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZXMsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICBvcHRpb25zOiBHZW9tZXRyeVN0eWxlT3B0aW9ucyA9IHt9XG4pOiBQbGFpdEdlb21ldHJ5ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3R2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHNoYXBlOiBHZW9tZXRyeVNoYXBlcywgcm91Z2hPcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZHJhdyhib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIHJvdWdoT3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmVhcmVzdFBvaW50ID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0RWxlbWVudFNoYXBlKGVsZW1lbnQpO1xuICAgIHJldHVybiBnZXRFbmdpbmUoc2hhcGUpLmdldE5lYXJlc3RQb2ludChyZWN0YW5nbGUsIHBvaW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDZW50ZXJQb2ludHNPblBvbHlnb24gPSAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaiA9IGkgPT0gcG9pbnRzLmxlbmd0aCAtIDEgPyAwIDogaSArIDE7XG4gICAgICAgIGNlbnRlclBvaW50LnB1c2goWyhwb2ludHNbaV1bMF0gKyBwb2ludHNbal1bMF0pIC8gMiwgKHBvaW50c1tpXVsxXSArIHBvaW50c1tqXVsxXSkgLyAyXSk7XG4gICAgfVxuICAgIHJldHVybiBjZW50ZXJQb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkgPSAoc3ltYm9sOiBGbG93Y2hhcnRTeW1ib2xzKSA9PiB7XG4gICAgcmV0dXJuIERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eU1hcFtzeW1ib2xdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHkgPSAoc2hhcGU6IEJhc2ljU2hhcGVzKSA9PiB7XG4gICAgcmV0dXJuIERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHlNYXBbc2hhcGVdIHx8IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFVNTFByb3BlcnR5ID0gKHNoYXBlOiBVTUxTeW1ib2xzKSA9PiB7XG4gICAgcmV0dXJuIERlZmF1bHRVTUxQcm9wZXJ0eU1hcFtzaGFwZV07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEZsb3djaGFydCA9IChwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBkZWNpc2lvblByb3BlcnR5ID0gZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5KEZsb3djaGFydFN5bWJvbHMuZGVjaXNpb24pO1xuICAgIGNvbnN0IHByb2Nlc3NQcm9wZXJ0eSA9IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MpO1xuICAgIGNvbnN0IHRlcm1pbmFsUHJvcGVydHkgPSBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCk7XG5cbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aFxuICAgIH07XG5cbiAgICBjb25zdCBsaW5lT3B0aW9ucyA9IHtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRMaW5lU3R5bGUuc3Ryb2tlV2lkdGhcbiAgICB9O1xuICAgIGNvbnN0IHN0YXJ0RWxlbWVudCA9IGNyZWF0ZUdlb21ldHJ5RWxlbWVudChcbiAgICAgICAgRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMudGVybWluYWwsIHBvaW50KSxcbiAgICAgICAgJ+W8gOWniycsXG4gICAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc1BvaW50MTogUG9pbnQgPSBbcG9pbnRbMF0sIHBvaW50WzFdICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyICsgNTUgKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQxID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDEpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBkZWNpc2lvblBvaW50OiBQb2ludCA9IFtwcm9jZXNzUG9pbnQxWzBdLCBwcm9jZXNzUG9pbnQxWzFdICsgcHJvY2Vzc1Byb3BlcnR5LmhlaWdodCAvIDIgKyA1NSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgZGVjaXNpb25FbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy5kZWNpc2lvbiwgZGVjaXNpb25Qb2ludCksXG4gICAgICAgICfliKTmlq0nLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IHByb2Nlc3NQb2ludDI6IFBvaW50ID0gW2RlY2lzaW9uUG9pbnRbMF0gKyBkZWNpc2lvblByb3BlcnR5LndpZHRoIC8gMiArIDc1ICsgcHJvY2Vzc1Byb3BlcnR5LndpZHRoIC8gMiwgZGVjaXNpb25Qb2ludFsxXV07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQyID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDIpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBlbmRQb2ludDogUG9pbnQgPSBbZGVjaXNpb25Qb2ludFswXSwgZGVjaXNpb25Qb2ludFsxXSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMiArIDk1ICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBlbmRFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCwgZW5kUG9pbnQpLFxuICAgICAgICAn57uT5p2fJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBsaW5lMSA9IGNyZWF0ZUFycm93TGluZUVsZW1lbnQoXG4gICAgICAgIEFycm93TGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IEFycm93TGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogWzAuNSwgMV0sIGJvdW5kSWQ6IHN0YXJ0RWxlbWVudC5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogQXJyb3dMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAuNSwgMF0sIGJvdW5kSWQ6IHByb2Nlc3NFbGVtZW50MS5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTIgPSBjcmVhdGVBcnJvd0xpbmVFbGVtZW50KFxuICAgICAgICBBcnJvd0xpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDEuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IEFycm93TGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFswLjUsIDBdLCBib3VuZElkOiBkZWNpc2lvbkVsZW1lbnQuaWQgfSxcbiAgICAgICAgW10sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmUzID0gY3JlYXRlQXJyb3dMaW5lRWxlbWVudChcbiAgICAgICAgQXJyb3dMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogQXJyb3dMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMC41LCAwXSwgYm91bmRJZDogZW5kRWxlbWVudC5pZCB9LFxuICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogYnVpbGRUZXh0KCfmmK8nKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogMC41LFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmU0ID0gY3JlYXRlQXJyb3dMaW5lRWxlbWVudChcbiAgICAgICAgQXJyb3dMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogQXJyb3dMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMSwgMC41XSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMCwgMC41XSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQyLmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+WQpicpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTUgPSBjcmVhdGVBcnJvd0xpbmVFbGVtZW50KFxuICAgICAgICBBcnJvd0xpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDIuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IEFycm93TGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFsxLCAwLjVdLCBib3VuZElkOiBlbmRFbGVtZW50LmlkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICBsaW5lT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gW3N0YXJ0RWxlbWVudCwgcHJvY2Vzc0VsZW1lbnQxLCBkZWNpc2lvbkVsZW1lbnQsIHByb2Nlc3NFbGVtZW50MiwgZW5kRWxlbWVudCwgbGluZTEsIGxpbmUyLCBsaW5lMywgbGluZTQsIGxpbmU1XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdXRvQ29tcGxldGVQb2ludHMgPSAoZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBBdXRvQ29tcGxldGVNYXJnaW4gPSAoMTIgKyBSRVNJWkVfSEFORExFX0RJQU1FVEVSIC8gMikgKiAyO1xuICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQXV0b0NvbXBsZXRlTWFyZ2luKTtcbiAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQgPSAobW92aW5nUG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICByZXR1cm4gcG9pbnRzLmZpbmRJbmRleChwb2ludCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmluZ1JlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbbW92aW5nUG9pbnRdKTtcbiAgICAgICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnRdKTtcbiAgICAgICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBSRVNJWkVfSEFORExFX0RJQU1FVEVSKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChtb3ZpbmdSZWN0YW5nbGUsIHJlY3RhbmdsZSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvciA9ICh0aGVtZTogVGhlbWVDb2xvck1vZGUpID0+IHtcbiAgICByZXR1cm4gRHJhd1RoZW1lQ29sb3JzW3RoZW1lXS5zdHJva2VDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93Y2hhcnREZWZhdWx0RmlsbCA9ICh0aGVtZTogVGhlbWVDb2xvck1vZGUpID0+IHtcbiAgICByZXR1cm4gRHJhd1RoZW1lQ29sb3JzW3RoZW1lXS5maWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRTaGFwZVByb3BlcnR5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50ID0gRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGZvbnRTaXplID0gZm9udFNpemUgPyBOdW1iZXIoZm9udFNpemUpIDogREVGQVVMVF9GT05UX1NJWkU7XG4gICAgY29uc3QgdGV4dFNpemUgPSBtZWFzdXJlRWxlbWVudChidWlsZFRleHQodGV4dCksIHsgZm9udFNpemUsIGZvbnRGYW1pbHk6IERFRkFVTFRfRk9OVF9GQU1JTFkgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRleHRTaXplLndpZHRoICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIsXG4gICAgICAgIGhlaWdodDogdGV4dFNpemUuaGVpZ2h0XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMgPSAocG9pbnRlcjogRHJhd1BvaW50ZXJUeXBlLCBjZW50ZXJQb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGdldERlZmF1bHRHZW9tZXRyeVByb3BlcnR5KHBvaW50ZXIpO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeUNlbnRlclBvaW50KGNlbnRlclBvaW50LCBwcm9wZXJ0eS53aWR0aCwgcHJvcGVydHkuaGVpZ2h0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEdlb21ldHJ5UHJvcGVydHkgPSAocG9pbnRlcjogRHJhd1BvaW50ZXJUeXBlKSA9PiB7XG4gICAgY29uc3QgaXNGbG93Q2hhcnQgPSBnZXRGbG93Y2hhcnRQb2ludGVycygpLmluY2x1ZGVzKHBvaW50ZXIpO1xuICAgIGNvbnN0IGlzVU1MID0gZ2V0VU1MUG9pbnRlcnMoKS5pbmNsdWRlcyhwb2ludGVyKTtcbiAgICBpZiAoaXNGbG93Q2hhcnQpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShwb2ludGVyIGFzIEZsb3djaGFydFN5bWJvbHMpO1xuICAgIH0gZWxzZSBpZiAoaXNVTUwpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRVTUxQcm9wZXJ0eShwb2ludGVyIGFzIFVNTFN5bWJvbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBnZXREZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5KHBvaW50ZXIgYXMgQmFzaWNTaGFwZXMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VGV4dFBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgY2VudGVyUG9pbnQ6IFBvaW50LCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0VGV4dFNoYXBlUHJvcGVydHkoYm9hcmQsIERlZmF1bHRUZXh0UHJvcGVydHkudGV4dCwgZm9udFNpemUpO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeUNlbnRlclBvaW50KGNlbnRlclBvaW50LCBwcm9wZXJ0eS53aWR0aCwgcHJvcGVydHkuaGVpZ2h0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVGV4dEVsZW1lbnQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50ID0gRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LFxuICAgIHRleHRIZWlnaHQ/OiBudW1iZXJcbikgPT4ge1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihCYXNpY1NoYXBlcy50ZXh0KTtcbiAgICB0ZXh0SGVpZ2h0ID0gdGV4dEhlaWdodCA/IHRleHRIZWlnaHQgOiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKS5oZWlnaHQ7XG4gICAgcmV0dXJuIGNyZWF0ZUdlb21ldHJ5RWxlbWVudChCYXNpY1NoYXBlcy50ZXh0LCBwb2ludHMsIHRleHQsIG1lbW9yaXplZExhdGVzdC5nZW9tZXRyeVByb3BlcnRpZXMgYXMgR2VvbWV0cnlTdHlsZU9wdGlvbnMsIHtcbiAgICAgICAgLi4ubWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzLFxuICAgICAgICB0ZXh0SGVpZ2h0XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEdlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCBzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIoc2hhcGUpO1xuICAgIGNvbnN0IHRleHRIZWlnaHQgPSBnZXRUZXh0U2hhcGVQcm9wZXJ0eShib2FyZCwgRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LCBtZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXNbJ2ZvbnQtc2l6ZSddKS5oZWlnaHQ7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNVTUxDbGFzc09ySW50ZXJmYWNlKHsgc2hhcGUgfSkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVNTENsYXNzT3JJbnRlcmZhY2VHZW9tZXRyeUVsZW1lbnQoYm9hcmQsIHNoYXBlLCBwb2ludHMpO1xuICAgIH1cbiAgICBpZiAoaXNNdWx0aXBsZVRleHRTaGFwZShzaGFwZSkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU11bHRpcGxlVGV4dEdlb21ldHJ5RWxlbWVudChzaGFwZSwgcG9pbnRzLCB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgIC4uLihtZW1vcml6ZWRMYXRlc3QuZ2VvbWV0cnlQcm9wZXJ0aWVzIGFzIEdlb21ldHJ5U3R5bGVPcHRpb25zKVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAuLi4obWVtb3JpemVkTGF0ZXN0Lmdlb21ldHJ5UHJvcGVydGllcyBhcyBHZW9tZXRyeVN0eWxlT3B0aW9ucylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IC4uLm1lbW9yaXplZExhdGVzdC50ZXh0UHJvcGVydGllcywgdGV4dEhlaWdodCB9XG4gICAgICAgICk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGVkaXRUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5LCB0ZXh0PzogUGxhaXREcmF3U2hhcGVUZXh0KSA9PiB7XG4gICAgY29uc3QgdGV4dE1hbmFnZSA9IHRleHQgPyBnZXRUZXh0TWFuYWdlKGAke2VsZW1lbnQuaWR9LSR7dGV4dC5rZXl9YCkhIDogZ2V0Rmlyc3RUZXh0TWFuYWdlKGVsZW1lbnQpO1xuICAgIGlmICh0ZXh0TWFuYWdlKSB7XG4gICAgICAgIHRleHRNYW5hZ2UuZWRpdCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBkZWxheSB0byBhdm9pZCBibGlua2luZ1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVyZW5kZXJHZW9tZXRyeUFjdGl2ZShib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXJlbmRlckdlb21ldHJ5QWN0aXZlKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXJlbmRlckdlb21ldHJ5QWN0aXZlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudFJlZiA9IFBsYWl0RWxlbWVudC5nZXRFbGVtZW50UmVmPFBsYWl0Q29tbW9uRWxlbWVudFJlZj4oZWxlbWVudCk7XG4gICAgY29uc3QgYWN0aXZlR2VuZXJhdG9yID0gZWxlbWVudFJlZi5nZXRHZW5lcmF0b3IoQWN0aXZlR2VuZXJhdG9yLmtleSk7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5pbmNsdWRlcyhlbGVtZW50KTtcbiAgICBhY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcoZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCksIHsgc2VsZWN0ZWQgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHZW9tZXRyeUluY2x1ZGVUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICByZXR1cm4gaXNTaW5nbGVUZXh0R2VvbWV0cnkoZWxlbWVudCkgfHwgaXNNdWx0aXBsZVRleHRHZW9tZXRyeShlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NpbmdsZVRleHRTaGFwZSA9IChzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICByZXR1cm4gIUdFT01FVFJZX1dJVEhPVVRfVEVYVC5pbmNsdWRlcyhzaGFwZSkgJiYgIWlzTXVsdGlwbGVUZXh0U2hhcGUoc2hhcGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2luZ2xlVGV4dEdlb21ldHJ5ID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICByZXR1cm4gUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpICYmIGlzU2luZ2xlVGV4dFNoYXBlKGVsZW1lbnQuc2hhcGUpO1xufTtcbiJdfQ==
|
|
243
|
+
export const isGeometryClosed = (element) => {
|
|
244
|
+
return !GEOMETRY_NOT_CLOSED.includes(element.shape);
|
|
245
|
+
};
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUyxlQUFlLEVBQWtCLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvSCxPQUFPLEVBQWtCLFdBQVcsRUFBaUIsZ0JBQWdCLEVBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUVsSCxPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUVyQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDakIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNILGVBQWUsRUFDZixTQUFTLEVBRVQsbUJBQW1CLEVBRW5CLHNCQUFzQixFQUN0QixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RCxPQUFPLEVBQXNCLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3Q0FB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b2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBUaGVtZUNvbG9yTW9kZSwgZ2V0U2VsZWN0ZWRFbGVtZW50cywgaWRDcmVhdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZXMsIEJhc2ljU2hhcGVzLCBQbGFpdEdlb21ldHJ5LCBGbG93Y2hhcnRTeW1ib2xzLCBVTUxTeW1ib2xzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9nZW9tZXRyeSc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHtcbiAgICBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5LFxuICAgIERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHlNYXAsXG4gICAgRGVmYXVsdEZsb3djaGFydFByb3BlcnR5TWFwLFxuICAgIERlZmF1bHRUZXh0UHJvcGVydHksXG4gICAgRGVmYXVsdFVNTFByb3BlcnR5TWFwLFxuICAgIERyYXdQb2ludGVyVHlwZSxcbiAgICBEcmF3VGhlbWVDb2xvcnMsXG4gICAgR0VPTUVUUllfTk9UX0NMT1NFRCxcbiAgICBHRU9NRVRSWV9XSVRIT1VUX1RFWFQsXG4gICAgU2hhcGVEZWZhdWx0U3BhY2UsXG4gICAgZ2V0Rmxvd2NoYXJ0UG9pbnRlcnMsXG4gICAgZ2V0VU1MUG9pbnRlcnNcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgQWN0aXZlR2VuZXJhdG9yLFxuICAgIEFsaWdubWVudCxcbiAgICBDdXN0b21UZXh0LFxuICAgIERFRkFVTFRfRk9OVF9GQU1JTFksXG4gICAgUGxhaXRDb21tb25FbGVtZW50UmVmLFxuICAgIFJFU0laRV9IQU5ETEVfRElBTUVURVIsXG4gICAgYnVpbGRUZXh0LFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBtZWFzdXJlRWxlbWVudFxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudFNoYXBlIH0gZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBjcmVhdGVBcnJvd0xpbmVFbGVtZW50IH0gZnJvbSAnLi9hcnJvdy1saW5lL2Fycm93LWxpbmUtYmFzaWMnO1xuaW1wb3J0IHsgQXJyb3dMaW5lTWFya2VyVHlwZSwgQXJyb3dMaW5lU2hhcGUsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0U2hhcGVFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEZWZhdWx0TGluZVN0eWxlIH0gZnJvbSAnLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyIH0gZnJvbSAnLi9tZW1vcml6ZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdTaGFwZVRleHQsIGdldFRleHRNYW5hZ2UgfSBmcm9tICcuLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IGNyZWF0ZVVNTENsYXNzT3JJbnRlcmZhY2VHZW9tZXRyeUVsZW1lbnQgfSBmcm9tICcuL3VtbCc7XG5pbXBvcnQgeyBjcmVhdGVNdWx0aXBsZVRleHRHZW9tZXRyeUVsZW1lbnQsIGlzTXVsdGlwbGVUZXh0R2VvbWV0cnksIGlzTXVsdGlwbGVUZXh0U2hhcGUgfSBmcm9tICcuL211bHRpLXRleHQtZ2VvbWV0cnknO1xuaW1wb3J0IHsgREVGQVVMVF9GT05UX1NJWkUgfSBmcm9tICdAcGxhaXQvdGV4dC1wbHVnaW5zJztcblxuZXhwb3J0IHR5cGUgR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSBQaWNrPFBsYWl0R2VvbWV0cnksICdmaWxsJyB8ICdzdHJva2VDb2xvcicgfCAnc3Ryb2tlV2lkdGgnPjtcblxuZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXMgPSBQYXJ0aWFsPEN1c3RvbVRleHQ+ICYgeyBhbGlnbj86IEFsaWdubWVudDsgdGV4dEhlaWdodD86IG51bWJlciB9O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgaWYgKEdFT01FVFJZX1dJVEhPVVRfVEVYVC5pbmNsdWRlcyhzaGFwZSkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUdlb21ldHJ5RWxlbWVudFdpdGhvdXRUZXh0KHNoYXBlLCBwb2ludHMsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVHZW9tZXRyeUVsZW1lbnRXaXRoVGV4dChzaGFwZSwgcG9pbnRzLCB0ZXh0LCBvcHRpb25zLCB0ZXh0UHJvcGVydGllcyk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdlb21ldHJ5RWxlbWVudFdpdGhUZXh0ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgbGV0IHRleHRPcHRpb25zID0ge307XG4gICAgbGV0IGFsaWdubWVudDogdW5kZWZpbmVkIHwgQWxpZ25tZW50ID0gQWxpZ25tZW50LmNlbnRlcjtcbiAgICBsZXQgdGV4dEhlaWdodCA9IERlZmF1bHRUZXh0UHJvcGVydHkuaGVpZ2h0O1xuICAgIGlmIChzaGFwZSA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICB0ZXh0T3B0aW9ucyA9IHsgYXV0b1NpemU6IHRydWUgfTtcbiAgICAgICAgYWxpZ25tZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0ZXh0UHJvcGVydGllcyA9IHsgLi4udGV4dFByb3BlcnRpZXMgfTtcbiAgICB0ZXh0UHJvcGVydGllcz8uYWxpZ24gJiYgKGFsaWdubWVudCA9IHRleHRQcm9wZXJ0aWVzPy5hbGlnbik7XG4gICAgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQgJiYgKHRleHRIZWlnaHQgPSB0ZXh0UHJvcGVydGllcz8udGV4dEhlaWdodCk7XG4gICAgZGVsZXRlIHRleHRQcm9wZXJ0aWVzPy5hbGlnbjtcbiAgICBkZWxldGUgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgdGV4dEhlaWdodCxcbiAgICAgICAgdGV4dDogYnVpbGRUZXh0KHRleHQsIGFsaWdubWVudCwgdGV4dFByb3BlcnRpZXMpLFxuICAgICAgICBwb2ludHMsXG4gICAgICAgIC4uLnRleHRPcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHZW9tZXRyeUVsZW1lbnRXaXRob3V0VGV4dCA9IChcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZXMsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICBvcHRpb25zOiBHZW9tZXRyeVN0eWxlT3B0aW9ucyA9IHt9XG4pOiBQbGFpdEdlb21ldHJ5ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3R2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHNoYXBlOiBHZW9tZXRyeVNoYXBlcywgcm91Z2hPcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZHJhdyhib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIHJvdWdoT3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmVhcmVzdFBvaW50ID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0RWxlbWVudFNoYXBlKGVsZW1lbnQpO1xuICAgIHJldHVybiBnZXRFbmdpbmUoc2hhcGUpLmdldE5lYXJlc3RQb2ludChyZWN0YW5nbGUsIHBvaW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDZW50ZXJQb2ludHNPblBvbHlnb24gPSAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaiA9IGkgPT0gcG9pbnRzLmxlbmd0aCAtIDEgPyAwIDogaSArIDE7XG4gICAgICAgIGNlbnRlclBvaW50LnB1c2goWyhwb2ludHNbaV1bMF0gKyBwb2ludHNbal1bMF0pIC8gMiwgKHBvaW50c1tpXVsxXSArIHBvaW50c1tqXVsxXSkgLyAyXSk7XG4gICAgfVxuICAgIHJldHVybiBjZW50ZXJQb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkgPSAoc3ltYm9sOiBGbG93Y2hhcnRTeW1ib2xzKSA9PiB7XG4gICAgcmV0dXJuIERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eU1hcFtzeW1ib2xdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHkgPSAoc2hhcGU6IEJhc2ljU2hhcGVzKSA9PiB7XG4gICAgcmV0dXJuIERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHlNYXBbc2hhcGVdIHx8IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFVNTFByb3BlcnR5ID0gKHNoYXBlOiBVTUxTeW1ib2xzKSA9PiB7XG4gICAgcmV0dXJuIERlZmF1bHRVTUxQcm9wZXJ0eU1hcFtzaGFwZV07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEZsb3djaGFydCA9IChwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBkZWNpc2lvblByb3BlcnR5ID0gZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5KEZsb3djaGFydFN5bWJvbHMuZGVjaXNpb24pO1xuICAgIGNvbnN0IHByb2Nlc3NQcm9wZXJ0eSA9IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MpO1xuICAgIGNvbnN0IHRlcm1pbmFsUHJvcGVydHkgPSBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCk7XG5cbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aFxuICAgIH07XG5cbiAgICBjb25zdCBsaW5lT3B0aW9ucyA9IHtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRMaW5lU3R5bGUuc3Ryb2tlV2lkdGhcbiAgICB9O1xuICAgIGNvbnN0IHN0YXJ0RWxlbWVudCA9IGNyZWF0ZUdlb21ldHJ5RWxlbWVudChcbiAgICAgICAgRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMudGVybWluYWwsIHBvaW50KSxcbiAgICAgICAgJ+W8gOWniycsXG4gICAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc1BvaW50MTogUG9pbnQgPSBbcG9pbnRbMF0sIHBvaW50WzFdICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyICsgNTUgKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQxID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDEpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBkZWNpc2lvblBvaW50OiBQb2ludCA9IFtwcm9jZXNzUG9pbnQxWzBdLCBwcm9jZXNzUG9pbnQxWzFdICsgcHJvY2Vzc1Byb3BlcnR5LmhlaWdodCAvIDIgKyA1NSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgZGVjaXNpb25FbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy5kZWNpc2lvbiwgZGVjaXNpb25Qb2ludCksXG4gICAgICAgICfliKTmlq0nLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IHByb2Nlc3NQb2ludDI6IFBvaW50ID0gW2RlY2lzaW9uUG9pbnRbMF0gKyBkZWNpc2lvblByb3BlcnR5LndpZHRoIC8gMiArIDc1ICsgcHJvY2Vzc1Byb3BlcnR5LndpZHRoIC8gMiwgZGVjaXNpb25Qb2ludFsxXV07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQyID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDIpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBlbmRQb2ludDogUG9pbnQgPSBbZGVjaXNpb25Qb2ludFswXSwgZGVjaXNpb25Qb2ludFsxXSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMiArIDk1ICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBlbmRFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCwgZW5kUG9pbnQpLFxuICAgICAgICAn57uT5p2fJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBsaW5lMSA9IGNyZWF0ZUFycm93TGluZUVsZW1lbnQoXG4gICAgICAgIEFycm93TGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IEFycm93TGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogWzAuNSwgMV0sIGJvdW5kSWQ6IHN0YXJ0RWxlbWVudC5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogQXJyb3dMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAuNSwgMF0sIGJvdW5kSWQ6IHByb2Nlc3NFbGVtZW50MS5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTIgPSBjcmVhdGVBcnJvd0xpbmVFbGVtZW50KFxuICAgICAgICBBcnJvd0xpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDEuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IEFycm93TGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFswLjUsIDBdLCBib3VuZElkOiBkZWNpc2lvbkVsZW1lbnQuaWQgfSxcbiAgICAgICAgW10sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmUzID0gY3JlYXRlQXJyb3dMaW5lRWxlbWVudChcbiAgICAgICAgQXJyb3dMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogQXJyb3dMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMC41LCAwXSwgYm91bmRJZDogZW5kRWxlbWVudC5pZCB9LFxuICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogYnVpbGRUZXh0KCfmmK8nKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogMC41LFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmU0ID0gY3JlYXRlQXJyb3dMaW5lRWxlbWVudChcbiAgICAgICAgQXJyb3dMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogQXJyb3dMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMSwgMC41XSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMCwgMC41XSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQyLmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+WQpicpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTUgPSBjcmVhdGVBcnJvd0xpbmVFbGVtZW50KFxuICAgICAgICBBcnJvd0xpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDIuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IEFycm93TGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFsxLCAwLjVdLCBib3VuZElkOiBlbmRFbGVtZW50LmlkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICBsaW5lT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gW3N0YXJ0RWxlbWVudCwgcHJvY2Vzc0VsZW1lbnQxLCBkZWNpc2lvbkVsZW1lbnQsIHByb2Nlc3NFbGVtZW50MiwgZW5kRWxlbWVudCwgbGluZTEsIGxpbmUyLCBsaW5lMywgbGluZTQsIGxpbmU1XTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdXRvQ29tcGxldGVQb2ludHMgPSAoZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBBdXRvQ29tcGxldGVNYXJnaW4gPSAoMTIgKyBSRVNJWkVfSEFORExFX0RJQU1FVEVSIC8gMikgKiAyO1xuICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQXV0b0NvbXBsZXRlTWFyZ2luKTtcbiAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQgPSAobW92aW5nUG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICByZXR1cm4gcG9pbnRzLmZpbmRJbmRleChwb2ludCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmluZ1JlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbbW92aW5nUG9pbnRdKTtcbiAgICAgICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnRdKTtcbiAgICAgICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBSRVNJWkVfSEFORExFX0RJQU1FVEVSKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChtb3ZpbmdSZWN0YW5nbGUsIHJlY3RhbmdsZSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvciA9ICh0aGVtZTogVGhlbWVDb2xvck1vZGUpID0+IHtcbiAgICByZXR1cm4gRHJhd1RoZW1lQ29sb3JzW3RoZW1lXS5zdHJva2VDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93Y2hhcnREZWZhdWx0RmlsbCA9ICh0aGVtZTogVGhlbWVDb2xvck1vZGUpID0+IHtcbiAgICByZXR1cm4gRHJhd1RoZW1lQ29sb3JzW3RoZW1lXS5maWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRTaGFwZVByb3BlcnR5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50ID0gRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGZvbnRTaXplID0gZm9udFNpemUgPyBOdW1iZXIoZm9udFNpemUpIDogREVGQVVMVF9GT05UX1NJWkU7XG4gICAgY29uc3QgdGV4dFNpemUgPSBtZWFzdXJlRWxlbWVudChidWlsZFRleHQodGV4dCksIHsgZm9udFNpemUsIGZvbnRGYW1pbHk6IERFRkFVTFRfRk9OVF9GQU1JTFkgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRleHRTaXplLndpZHRoICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIsXG4gICAgICAgIGhlaWdodDogdGV4dFNpemUuaGVpZ2h0XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMgPSAocG9pbnRlcjogRHJhd1BvaW50ZXJUeXBlLCBjZW50ZXJQb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGdldERlZmF1bHRHZW9tZXRyeVByb3BlcnR5KHBvaW50ZXIpO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeUNlbnRlclBvaW50KGNlbnRlclBvaW50LCBwcm9wZXJ0eS53aWR0aCwgcHJvcGVydHkuaGVpZ2h0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEdlb21ldHJ5UHJvcGVydHkgPSAocG9pbnRlcjogRHJhd1BvaW50ZXJUeXBlKSA9PiB7XG4gICAgY29uc3QgaXNGbG93Q2hhcnQgPSBnZXRGbG93Y2hhcnRQb2ludGVycygpLmluY2x1ZGVzKHBvaW50ZXIpO1xuICAgIGNvbnN0IGlzVU1MID0gZ2V0VU1MUG9pbnRlcnMoKS5pbmNsdWRlcyhwb2ludGVyKTtcbiAgICBpZiAoaXNGbG93Q2hhcnQpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShwb2ludGVyIGFzIEZsb3djaGFydFN5bWJvbHMpO1xuICAgIH0gZWxzZSBpZiAoaXNVTUwpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRVTUxQcm9wZXJ0eShwb2ludGVyIGFzIFVNTFN5bWJvbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBnZXREZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5KHBvaW50ZXIgYXMgQmFzaWNTaGFwZXMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VGV4dFBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgY2VudGVyUG9pbnQ6IFBvaW50LCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0VGV4dFNoYXBlUHJvcGVydHkoYm9hcmQsIERlZmF1bHRUZXh0UHJvcGVydHkudGV4dCwgZm9udFNpemUpO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeUNlbnRlclBvaW50KGNlbnRlclBvaW50LCBwcm9wZXJ0eS53aWR0aCwgcHJvcGVydHkuaGVpZ2h0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVGV4dEVsZW1lbnQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50ID0gRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LFxuICAgIHRleHRIZWlnaHQ/OiBudW1iZXJcbikgPT4ge1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihCYXNpY1NoYXBlcy50ZXh0KTtcbiAgICB0ZXh0SGVpZ2h0ID0gdGV4dEhlaWdodCA/IHRleHRIZWlnaHQgOiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKS5oZWlnaHQ7XG4gICAgcmV0dXJuIGNyZWF0ZUdlb21ldHJ5RWxlbWVudChCYXNpY1NoYXBlcy50ZXh0LCBwb2ludHMsIHRleHQsIG1lbW9yaXplZExhdGVzdC5nZW9tZXRyeVByb3BlcnRpZXMgYXMgR2VvbWV0cnlTdHlsZU9wdGlvbnMsIHtcbiAgICAgICAgLi4ubWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzLFxuICAgICAgICB0ZXh0SGVpZ2h0XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEdlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCBzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIoc2hhcGUpO1xuICAgIGNvbnN0IHRleHRIZWlnaHQgPSBnZXRUZXh0U2hhcGVQcm9wZXJ0eShib2FyZCwgRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LCBtZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXNbJ2ZvbnQtc2l6ZSddKS5oZWlnaHQ7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNVTUxDbGFzc09ySW50ZXJmYWNlKHsgc2hhcGUgfSkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVNTENsYXNzT3JJbnRlcmZhY2VHZW9tZXRyeUVsZW1lbnQoYm9hcmQsIHNoYXBlLCBwb2ludHMpO1xuICAgIH1cbiAgICBpZiAoaXNNdWx0aXBsZVRleHRTaGFwZShzaGFwZSkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU11bHRpcGxlVGV4dEdlb21ldHJ5RWxlbWVudChzaGFwZSwgcG9pbnRzLCB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgIC4uLihtZW1vcml6ZWRMYXRlc3QuZ2VvbWV0cnlQcm9wZXJ0aWVzIGFzIEdlb21ldHJ5U3R5bGVPcHRpb25zKVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAuLi4obWVtb3JpemVkTGF0ZXN0Lmdlb21ldHJ5UHJvcGVydGllcyBhcyBHZW9tZXRyeVN0eWxlT3B0aW9ucylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IC4uLm1lbW9yaXplZExhdGVzdC50ZXh0UHJvcGVydGllcywgdGV4dEhlaWdodCB9XG4gICAgICAgICk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGVkaXRUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5LCB0ZXh0PzogUGxhaXREcmF3U2hhcGVUZXh0KSA9PiB7XG4gICAgY29uc3QgdGV4dE1hbmFnZSA9IHRleHQgPyBnZXRUZXh0TWFuYWdlKGAke2VsZW1lbnQuaWR9LSR7dGV4dC5rZXl9YCkhIDogZ2V0Rmlyc3RUZXh0TWFuYWdlKGVsZW1lbnQpO1xuICAgIGlmICh0ZXh0TWFuYWdlKSB7XG4gICAgICAgIHRleHRNYW5hZ2UuZWRpdCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBkZWxheSB0byBhdm9pZCBibGlua2luZ1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVyZW5kZXJHZW9tZXRyeUFjdGl2ZShib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXJlbmRlckdlb21ldHJ5QWN0aXZlKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXJlbmRlckdlb21ldHJ5QWN0aXZlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudFJlZiA9IFBsYWl0RWxlbWVudC5nZXRFbGVtZW50UmVmPFBsYWl0Q29tbW9uRWxlbWVudFJlZj4oZWxlbWVudCk7XG4gICAgY29uc3QgYWN0aXZlR2VuZXJhdG9yID0gZWxlbWVudFJlZi5nZXRHZW5lcmF0b3IoQWN0aXZlR2VuZXJhdG9yLmtleSk7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5pbmNsdWRlcyhlbGVtZW50KTtcbiAgICBhY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcoZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCksIHsgc2VsZWN0ZWQgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHZW9tZXRyeUluY2x1ZGVUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICByZXR1cm4gaXNTaW5nbGVUZXh0R2VvbWV0cnkoZWxlbWVudCkgfHwgaXNNdWx0aXBsZVRleHRHZW9tZXRyeShlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NpbmdsZVRleHRTaGFwZSA9IChzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICByZXR1cm4gIUdFT01FVFJZX1dJVEhPVVRfVEVYVC5pbmNsdWRlcyhzaGFwZSkgJiYgIWlzTXVsdGlwbGVUZXh0U2hhcGUoc2hhcGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2luZ2xlVGV4dEdlb21ldHJ5ID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICByZXR1cm4gUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpICYmIGlzU2luZ2xlVGV4dFNoYXBlKGVsZW1lbnQuc2hhcGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzR2VvbWV0cnlDbG9zZWQgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIHJldHVybiAhR0VPTUVUUllfTk9UX0NMT1NFRC5pbmNsdWRlcyhlbGVtZW50LnNoYXBlKTtcbn07XG4iXX0=
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { PlaitDrawElement, StrokeStyle } from '../../interfaces';
|
|
2
2
|
import { DefaultDrawStyle } from '../../constants';
|
|
3
3
|
import { getDrawDefaultStrokeColor, getFlowchartDefaultFill } from '../geometry';
|
|
4
|
-
import { getStrokeWidthByElement } from '../common';
|
|
4
|
+
import { getStrokeWidthByElement, isDrawElementClosed } from '../common';
|
|
5
5
|
export const getStrokeColorByElement = (board, element) => {
|
|
6
6
|
const defaultColor = getDrawDefaultStrokeColor(board.theme.themeColorMode);
|
|
7
7
|
const strokeColor = element.strokeColor || defaultColor;
|
|
8
8
|
return strokeColor;
|
|
9
9
|
};
|
|
10
10
|
export const getFillByElement = (board, element) => {
|
|
11
|
-
const defaultFill = PlaitDrawElement.isFlowchart(element)
|
|
11
|
+
const defaultFill = PlaitDrawElement.isFlowchart(element) && isDrawElementClosed(element)
|
|
12
|
+
? getFlowchartDefaultFill(board.theme.themeColorMode)
|
|
13
|
+
: DefaultDrawStyle.fill;
|
|
12
14
|
const fill = element.fill || defaultFill;
|
|
13
15
|
return fill;
|
|
14
16
|
};
|
|
@@ -17,7 +19,7 @@ export const getLineDashByElement = (element) => {
|
|
|
17
19
|
case StrokeStyle.dashed:
|
|
18
20
|
return [8, 8 + getStrokeWidthByElement(element)];
|
|
19
21
|
case StrokeStyle.dotted:
|
|
20
|
-
return [
|
|
22
|
+
return [2, 4 + getStrokeWidthByElement(element)];
|
|
21
23
|
default:
|
|
22
24
|
return undefined;
|
|
23
25
|
}
|
|
@@ -25,4 +27,4 @@ export const getLineDashByElement = (element) => {
|
|
|
25
27
|
export const getStrokeStyleByElement = (element) => {
|
|
26
28
|
return element.strokeStyle || StrokeStyle.solid;
|
|
27
29
|
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Ryb2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvc3R5bGUvc3Ryb2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDaEYsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FBQztJQUN4RCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sV0FBVyxHQUNiLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxPQUEyQixDQUFDO1FBQ3JGLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUNyRCxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDO0lBQ3pDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQzFELFFBQVEsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLEtBQUssV0FBVyxDQUFDLE1BQU07WUFDbkIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRCxLQUFLLFdBQVcsQ0FBQyxNQUFNO1lBQ25CLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckQ7WUFDSSxPQUFPLFNBQVMsQ0FBQztJQUN6QixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDN0QsT0FBTyxPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUM7QUFDcEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgU3Ryb2tlU3R5bGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlZmF1bHREcmF3U3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvciwgZ2V0Rmxvd2NoYXJ0RGVmYXVsdEZpbGwgfSBmcm9tICcuLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCwgaXNEcmF3RWxlbWVudENsb3NlZCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VDb2xvckJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yID0gZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvcihib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZSk7XG4gICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBlbGVtZW50LnN0cm9rZUNvbG9yIHx8IGRlZmF1bHRDb2xvcjtcbiAgICByZXR1cm4gc3Ryb2tlQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsbEJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEZpbGwgPVxuICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzRmxvd2NoYXJ0KGVsZW1lbnQpICYmIGlzRHJhd0VsZW1lbnRDbG9zZWQoZWxlbWVudCBhcyBQbGFpdERyYXdFbGVtZW50KVxuICAgICAgICAgICAgPyBnZXRGbG93Y2hhcnREZWZhdWx0RmlsbChib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZSlcbiAgICAgICAgICAgIDogRGVmYXVsdERyYXdTdHlsZS5maWxsO1xuICAgIGNvbnN0IGZpbGwgPSBlbGVtZW50LmZpbGwgfHwgZGVmYXVsdEZpbGw7XG4gICAgcmV0dXJuIGZpbGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZURhc2hCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgc3dpdGNoIChlbGVtZW50LnN0cm9rZVN0eWxlKSB7XG4gICAgICAgIGNhc2UgU3Ryb2tlU3R5bGUuZGFzaGVkOlxuICAgICAgICAgICAgcmV0dXJuIFs4LCA4ICsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCldO1xuICAgICAgICBjYXNlIFN0cm9rZVN0eWxlLmRvdHRlZDpcbiAgICAgICAgICAgIHJldHVybiBbMiwgNCArIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpXTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFN0cm9rZVN0eWxlQnlFbGVtZW50ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50LnN0cm9rZVN0eWxlIHx8IFN0cm9rZVN0eWxlLnNvbGlkO1xufTtcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { idCreator, RectangleClient } from '@plait/core';
|
|
2
|
-
import { DefaultSwimlanePropertyMap, SWIMLANE_HEADER_SIZE } from '../constants';
|
|
1
|
+
import { idCreator, PlaitBoard, RectangleClient } from '@plait/core';
|
|
2
|
+
import { DefaultSwimlanePropertyMap, getSwimlanePointers, SWIMLANE_HEADER_SIZE } from '../constants';
|
|
3
3
|
import { PlaitDrawElement, SwimlaneDrawSymbols, SwimlaneSymbols } from '../interfaces';
|
|
4
4
|
import { createCell } from './table';
|
|
5
5
|
export function buildSwimlaneTable(element) {
|
|
@@ -118,4 +118,7 @@ export const adjustSwimlaneShape = (shape) => {
|
|
|
118
118
|
? SwimlaneSymbols.swimlaneHorizontal
|
|
119
119
|
: SwimlaneSymbols.swimlaneVertical;
|
|
120
120
|
};
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9zd2ltbGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQyxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBc0I7SUFDckQsTUFBTSxlQUFlLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLElBQUksZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxlQUFlLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RELElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksR0FBRztvQkFDSCxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNuQixPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNO2lCQUMvQixDQUFDO1lBQ04sQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxHQUFHO29CQUNILEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsR0FBRyxJQUFJ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QztRQUM3RyxDQUFDLENBQUMsZUFBZSxDQUFDLGtCQUFrQjtRQUNwQyxDQUFDLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO0FBQzNDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlkQ3JlYXRvciwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IERlZmF1bHRTd2ltbGFuZVByb3BlcnR5TWFwLCBTV0lNTEFORV9IRUFERVJfU0laRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFN3aW1sYW5lLCBQbGFpdFRhYmxlQ2VsbCwgU3dpbWxhbmVEcmF3U3ltYm9scywgU3dpbWxhbmVTeW1ib2xzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVDZWxsIH0gZnJvbSAnLi90YWJsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN3aW1sYW5lVGFibGUoZWxlbWVudDogUGxhaXRTd2ltbGFuZSkge1xuICAgIGNvbnN0IHN3aW1sYW5lRWxlbWVudCA9IHsgLi4uZWxlbWVudCB9O1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSG9yaXpvbnRhbFN3aW1sYW5lKGVsZW1lbnQpKSB7XG4gICAgICAgIHN3aW1sYW5lRWxlbWVudC5jZWxscyA9IGVsZW1lbnQuY2VsbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwICYmIGVsZW1lbnQuaGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZWxlbWVudC5jZWxsc1swXSxcbiAgICAgICAgICAgICAgICAgICAgcm93c3BhbjogZWxlbWVudC5yb3dzLmxlbmd0aFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS50ZXh0ICYmIGl0ZW0udGV4dEhlaWdodCAmJiAhaXRlbS50ZXh0LmRpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ3ZlcnRpY2FsJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc3dpbWxhbmVFbGVtZW50O1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5oZWFkZXIpIHtcbiAgICAgICAgc3dpbWxhbmVFbGVtZW50LmNlbGxzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQuY2VsbHNbMF0sXG4gICAgICAgICAgICAgICAgY29sc3BhbjogZWxlbWVudC5jb2x1bW5zLmxlbmd0aFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLmVsZW1lbnQuY2VsbHMuc2xpY2UoMSwgZWxlbWVudC5jZWxscy5sZW5ndGgpXG4gICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBzd2ltbGFuZUVsZW1lbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0U3dpbWxhbmVQb2ludHMgPSAocG9pbnRlcjogU3dpbWxhbmVEcmF3U3ltYm9scywgY2VudGVyUG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBEZWZhdWx0U3dpbWxhbmVQcm9wZXJ0eU1hcFtwb2ludGVyXTtcbiAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChjZW50ZXJQb2ludCwgcHJvcGVydHkud2lkdGgsIHByb3BlcnR5LmhlaWdodCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlZmF1bHRTd2ltbGFuZSA9IChzaGFwZTogU3dpbWxhbmVEcmF3U3ltYm9scywgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSkgPT4ge1xuICAgIGNvbnN0IGhlYWRlciA9IGlzU3dpbWxhbmVXaXRoSGVhZGVyKHNoYXBlKTtcbiAgICBjb25zdCBkYXRhU2hhcGUgPSBhZGp1c3RTd2ltbGFuZVNoYXBlKHNoYXBlKTtcbiAgICBjb25zdCB3aWR0aCA9IHBvaW50c1sxXVswXSAtIHBvaW50c1swXVswXTtcbiAgICBjb25zdCBoZWlnaHQgPSBwb2ludHNbMV1bMV0gLSBwb2ludHNbMF1bMV07XG4gICAgY29uc3Qgcm93cyA9IGNyZWF0ZURlZmF1bHRSb3dzT3JDb2x1bW5zKGRhdGFTaGFwZSwgJ3JvdycsIGhlYWRlciwgaGVpZ2h0KTtcbiAgICBjb25zdCBjb2x1bW5zID0gY3JlYXRlRGVmYXVsdFJvd3NPckNvbHVtbnMoZGF0YVNoYXBlLCAnY29sdW1uJywgaGVhZGVyLCB3aWR0aCk7XG4gICAgY29uc3Qgc3dpbWxhbmUgPSB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgdHlwZTogJ3N3aW1sYW5lJyxcbiAgICAgICAgc2hhcGU6IGRhdGFTaGFwZSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICByb3dzLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBoZWFkZXIsXG4gICAgICAgIGNlbGxzOiBjcmVhdGVEZWZhdWx0Q2VsbHMoZGF0YVNoYXBlLCByb3dzLCBjb2x1bW5zLCBoZWFkZXIpXG4gICAgfSBhcyBQbGFpdFN3aW1sYW5lO1xuICAgIHJldHVybiBzd2ltbGFuZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0Um93c09yQ29sdW1ucyA9IChzaGFwZTogU3dpbWxhbmVTeW1ib2xzLCB0eXBlOiAncm93JyB8ICdjb2x1bW4nLCBoZWFkZXI6IGJvb2xlYW4sIHNpemU6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZUl0ZW1zID0gKGNvdW50OiBudW1iZXIpID0+IG5ldyBBcnJheShjb3VudCkuZmlsbCgnJykubWFwKCgpID0+ICh7IGlkOiBpZENyZWF0b3IoKSB9KSk7XG4gICAgbGV0IGRhdGEgPSBjcmVhdGVJdGVtcygzKTtcbiAgICBpZiAoXG4gICAgICAgICh0eXBlID09PSAncm93JyAmJiBzaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWwpIHx8XG4gICAgICAgICh0eXBlID09PSAnY29sdW1uJyAmJiBzaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lSG9yaXpvbnRhbClcbiAgICApIHtcbiAgICAgICAgZGF0YSA9IGhlYWRlciA/IGRhdGEgOiBjcmVhdGVJdGVtcygyKTtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uID0gdHlwZSA9PT0gJ3JvdycgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGxldCBkZWZhdWx0U2l6ZSA9IFNXSU1MQU5FX0hFQURFUl9TSVpFO1xuICAgICAgICBpZiAoc2l6ZSA8IFNXSU1MQU5FX0hFQURFUl9TSVpFICogZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRlZmF1bHRTaXplID0gTWF0aC5taW4oKHNpemUgLyBkYXRhLmxlbmd0aCAvIFNXSU1MQU5FX0hFQURFUl9TSVpFKSAqIFNXSU1MQU5FX0hFQURFUl9TSVpFLCBTV0lNTEFORV9IRUFERVJfU0laRSk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IGRhdGEubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwIHx8IChpbmRleCA9PT0gMSAmJiBoZWFkZXIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgW2RpbWVuc2lvbl06IGRlZmF1bHRTaXplXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0Q2VsbHMgPSAoXG4gICAgc2hhcGU6IFN3aW1sYW5lU3ltYm9scyxcbiAgICByb3dzOiB7IGlkOiBzdHJpbmc7IGhlaWdodD86IG51bWJlciB9W10sXG4gICAgY29sdW1uczogeyBpZDogc3RyaW5nOyB3aWR0aD86IG51bWJlciB9W10sXG4gICAgaGVhZGVyOiBib29sZWFuXG4pID0+IHtcbiAgICBsZXQgaGVhZGVyQ2VsbDogUGxhaXRUYWJsZUNlbGxbXSA9IFtdO1xuICAgIGxldCBzdGFydEluZGV4ID0gMDtcbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGhlYWRlckNlbGwgPSBbY3JlYXRlQ2VsbChyb3dzWzBdLmlkLCBjb2x1bW5zWzBdLmlkLCAnTmV3IFN3aW1sYW5lJyldO1xuICAgICAgICBzdGFydEluZGV4ID0gMTtcbiAgICB9XG4gICAgY29uc3QgY2VsbHMgPSBuZXcgQXJyYXkoNikuZmlsbCgnJykubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPCAzKSB7XG4gICAgICAgICAgICBjb25zdCByb3dJZCA9IHNoYXBlID09PSBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVWZXJ0aWNhbCA/IHJvd3Nbc3RhcnRJbmRleF0uaWQgOiByb3dzW2luZGV4XS5pZDtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbklkID0gc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsID8gY29sdW1uc1tpbmRleF0uaWQgOiBjb2x1bW5zW3N0YXJ0SW5kZXhdLmlkO1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNlbGwocm93SWQsIGNvbHVtbklkLCBoZWFkZXIgPyAnTGFuZScgOiAnTmV3IFN3aW1sYW5lJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93SWQgPSBzaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWwgPyByb3dzW3N0YXJ0SW5kZXggKyAxXS5pZCA6IHJvd3NbaW5kZXggLSAzXS5pZDtcbiAgICAgICAgY29uc3QgY29sdW1uSWQgPSBzaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWwgPyBjb2x1bW5zW2luZGV4IC0gM10uaWQgOiBjb2x1bW5zW3N0YXJ0SW5kZXggKyAxXS5pZDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNlbGwocm93SWQsIGNvbHVtbklkKTtcbiAgICB9KTtcbiAgICByZXR1cm4gWy4uLmhlYWRlckNlbGwsIC4uLmNlbGxzXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTd2ltbGFuZUNvdW50ID0gKHN3aW1sYW5lOiBQbGFpdFN3aW1sYW5lKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNIb3Jpem9udGFsU3dpbWxhbmUoc3dpbWxhbmUpKSB7XG4gICAgICAgIHJldHVybiBzd2ltbGFuZS5yb3dzLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNWZXJ0aWNhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICByZXR1cm4gc3dpbWxhbmUuY29sdW1ucy5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3dpbWxhbmVXaXRoSGVhZGVyID0gKHNoYXBlOiBTd2ltbGFuZURyYXdTeW1ib2xzKSA9PiB7XG4gICAgcmV0dXJuIFtTd2ltbGFuZURyYXdTeW1ib2xzLnN3aW1sYW5lSG9yaXpvbnRhbFdpdGhIZWFkZXIsIFN3aW1sYW5lRHJhd1N5bWJvbHMuc3dpbWxhbmVWZXJ0aWNhbFdpdGhIZWFkZXJdLmluY2x1ZGVzKHNoYXBlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGp1c3RTd2ltbGFuZVNoYXBlID0gKHNoYXBlOiBTd2ltbGFuZURyYXdTeW1ib2xzKTogU3dpbWxhbmVTeW1ib2xzID0+IHtcbiAgICByZXR1cm4gW1N3aW1sYW5lRHJhd1N5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsV2l0aEhlYWRlciwgU3dpbWxhbmVEcmF3U3ltYm9scy5zd2ltbGFuZUhvcml6b250YWxdLmluY2x1ZGVzKHNoYXBlKVxuICAgICAgICA/IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZUhvcml6b250YWxcbiAgICAgICAgOiBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVWZXJ0aWNhbDtcbn07XG4iXX0=
|
|
121
|
+
export const isSwimlanePointers = (board) => {
|
|
122
|
+
return PlaitBoard.isInPointer(board, getSwimlanePointers());
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9zd2ltbGFuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBUyxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUMsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQXNCO0lBQ3JELE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxJQUFJLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakQsZUFBZSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxJQUFJLEdBQUc7b0JBQ0gsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTTtpQkFDL0IsQ0FBQztZQUNOLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksR0FBRztvQkFDSCxHQUFHLElBQUk7b0JBQ1AsSUFB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QUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDN0csQ0FBQyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0I7UUFDcEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZENyZWF0b3IsIFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0U3dpbWxhbmVQcm9wZXJ0eU1hcCwgZ2V0U3dpbWxhbmVQb2ludGVycywgU1dJTUxBTkVfSEVBREVSX1NJWkUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRTd2ltbGFuZSwgUGxhaXRUYWJsZUNlbGwsIFN3aW1sYW5lRHJhd1N5bWJvbHMsIFN3aW1sYW5lU3ltYm9scyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ2VsbCB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTd2ltbGFuZVRhYmxlKGVsZW1lbnQ6IFBsYWl0U3dpbWxhbmUpIHtcbiAgICBjb25zdCBzd2ltbGFuZUVsZW1lbnQgPSB7IC4uLmVsZW1lbnQgfTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0hvcml6b250YWxTd2ltbGFuZShlbGVtZW50KSkge1xuICAgICAgICBzd2ltbGFuZUVsZW1lbnQuY2VsbHMgPSBlbGVtZW50LmNlbGxzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBlbGVtZW50LmhlYWRlcikge1xuICAgICAgICAgICAgICAgIGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQuY2VsbHNbMF0sXG4gICAgICAgICAgICAgICAgICAgIHJvd3NwYW46IGVsZW1lbnQucm93cy5sZW5ndGhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQgJiYgIWl0ZW0udGV4dC5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICd2ZXJ0aWNhbCdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN3aW1sYW5lRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuaGVhZGVyKSB7XG4gICAgICAgIHN3aW1sYW5lRWxlbWVudC5jZWxscyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5lbGVtZW50LmNlbGxzWzBdLFxuICAgICAgICAgICAgICAgIGNvbHNwYW46IGVsZW1lbnQuY29sdW1ucy5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5lbGVtZW50LmNlbGxzLnNsaWNlKDEsIGVsZW1lbnQuY2VsbHMubGVuZ3RoKVxuICAgICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gc3dpbWxhbmVFbGVtZW50O1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFN3aW1sYW5lUG9pbnRzID0gKHBvaW50ZXI6IFN3aW1sYW5lRHJhd1N5bWJvbHMsIGNlbnRlclBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gRGVmYXVsdFN3aW1sYW5lUHJvcGVydHlNYXBbcG9pbnRlcl07XG4gICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRQb2ludHMoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5Q2VudGVyUG9pbnQoY2VudGVyUG9pbnQsIHByb3BlcnR5LndpZHRoLCBwcm9wZXJ0eS5oZWlnaHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0U3dpbWxhbmUgPSAoc2hhcGU6IFN3aW1sYW5lRHJhd1N5bWJvbHMsIHBvaW50czogW1BvaW50LCBQb2ludF0pID0+IHtcbiAgICBjb25zdCBoZWFkZXIgPSBpc1N3aW1sYW5lV2l0aEhlYWRlcihzaGFwZSk7XG4gICAgY29uc3QgZGF0YVNoYXBlID0gYWRqdXN0U3dpbWxhbmVTaGFwZShzaGFwZSk7XG4gICAgY29uc3Qgd2lkdGggPSBwb2ludHNbMV1bMF0gLSBwb2ludHNbMF1bMF07XG4gICAgY29uc3QgaGVpZ2h0ID0gcG9pbnRzWzFdWzFdIC0gcG9pbnRzWzBdWzFdO1xuICAgIGNvbnN0IHJvd3MgPSBjcmVhdGVEZWZhdWx0Um93c09yQ29sdW1ucyhkYXRhU2hhcGUsICdyb3cnLCBoZWFkZXIsIGhlaWdodCk7XG4gICAgY29uc3QgY29sdW1ucyA9IGNyZWF0ZURlZmF1bHRSb3dzT3JDb2x1bW5zKGRhdGFTaGFwZSwgJ2NvbHVtbicsIGhlYWRlciwgd2lkdGgpO1xuICAgIGNvbnN0IHN3aW1sYW5lID0ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHR5cGU6ICdzd2ltbGFuZScsXG4gICAgICAgIHNoYXBlOiBkYXRhU2hhcGUsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgcm93cyxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgaGVhZGVyLFxuICAgICAgICBjZWxsczogY3JlYXRlRGVmYXVsdENlbGxzKGRhdGFTaGFwZSwgcm93cywgY29sdW1ucywgaGVhZGVyKVxuICAgIH0gYXMgUGxhaXRTd2ltbGFuZTtcbiAgICByZXR1cm4gc3dpbWxhbmU7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdFJvd3NPckNvbHVtbnMgPSAoc2hhcGU6IFN3aW1sYW5lU3ltYm9scywgdHlwZTogJ3JvdycgfCAnY29sdW1uJywgaGVhZGVyOiBib29sZWFuLCBzaXplOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjcmVhdGVJdGVtcyA9IChjb3VudDogbnVtYmVyKSA9PiBuZXcgQXJyYXkoY291bnQpLmZpbGwoJycpLm1hcCgoKSA9PiAoeyBpZDogaWRDcmVhdG9yKCkgfSkpO1xuICAgIGxldCBkYXRhID0gY3JlYXRlSXRlbXMoMyk7XG4gICAgaWYgKFxuICAgICAgICAodHlwZSA9PT0gJ3JvdycgJiYgc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsKSB8fFxuICAgICAgICAodHlwZSA9PT0gJ2NvbHVtbicgJiYgc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZUhvcml6b250YWwpXG4gICAgKSB7XG4gICAgICAgIGRhdGEgPSBoZWFkZXIgPyBkYXRhIDogY3JlYXRlSXRlbXMoMik7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHR5cGUgPT09ICdyb3cnID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBsZXQgZGVmYXVsdFNpemUgPSBTV0lNTEFORV9IRUFERVJfU0laRTtcbiAgICAgICAgaWYgKHNpemUgPCBTV0lNTEFORV9IRUFERVJfU0laRSAqIGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBkZWZhdWx0U2l6ZSA9IE1hdGgubWluKChzaXplIC8gZGF0YS5sZW5ndGggLyBTV0lNTEFORV9IRUFERVJfU0laRSkgKiBTV0lNTEFORV9IRUFERVJfU0laRSwgU1dJTUxBTkVfSEVBREVSX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSBkYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCB8fCAoaW5kZXggPT09IDEgJiYgaGVhZGVyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIFtkaW1lbnNpb25dOiBkZWZhdWx0U2l6ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdENlbGxzID0gKFxuICAgIHNoYXBlOiBTd2ltbGFuZVN5bWJvbHMsXG4gICAgcm93czogeyBpZDogc3RyaW5nOyBoZWlnaHQ/OiBudW1iZXIgfVtdLFxuICAgIGNvbHVtbnM6IHsgaWQ6IHN0cmluZzsgd2lkdGg/OiBudW1iZXIgfVtdLFxuICAgIGhlYWRlcjogYm9vbGVhblxuKSA9PiB7XG4gICAgbGV0IGhlYWRlckNlbGw6IFBsYWl0VGFibGVDZWxsW10gPSBbXTtcbiAgICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gICAgaWYgKGhlYWRlcikge1xuICAgICAgICBoZWFkZXJDZWxsID0gW2NyZWF0ZUNlbGwocm93c1swXS5pZCwgY29sdW1uc1swXS5pZCwgJ05ldyBTd2ltbGFuZScpXTtcbiAgICAgICAgc3RhcnRJbmRleCA9IDE7XG4gICAgfVxuICAgIGNvbnN0IGNlbGxzID0gbmV3IEFycmF5KDYpLmZpbGwoJycpLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4IDwgMykge1xuICAgICAgICAgICAgY29uc3Qgcm93SWQgPSBzaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWwgPyByb3dzW3N0YXJ0SW5kZXhdLmlkIDogcm93c1tpbmRleF0uaWQ7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JZCA9IHNoYXBlID09PSBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVWZXJ0aWNhbCA/IGNvbHVtbnNbaW5kZXhdLmlkIDogY29sdW1uc1tzdGFydEluZGV4XS5pZDtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDZWxsKHJvd0lkLCBjb2x1bW5JZCwgaGVhZGVyID8gJ0xhbmUnIDogJ05ldyBTd2ltbGFuZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd0lkID0gc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsID8gcm93c1tzdGFydEluZGV4ICsgMV0uaWQgOiByb3dzW2luZGV4IC0gM10uaWQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkID0gc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsID8gY29sdW1uc1tpbmRleCAtIDNdLmlkIDogY29sdW1uc1tzdGFydEluZGV4ICsgMV0uaWQ7XG4gICAgICAgIHJldHVybiBjcmVhdGVDZWxsKHJvd0lkLCBjb2x1bW5JZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5oZWFkZXJDZWxsLCAuLi5jZWxsc107XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3dpbWxhbmVDb3VudCA9IChzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSkgPT4ge1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSG9yaXpvbnRhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICByZXR1cm4gc3dpbWxhbmUucm93cy5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVydGljYWxTd2ltbGFuZShzd2ltbGFuZSkpIHtcbiAgICAgICAgcmV0dXJuIHN3aW1sYW5lLmNvbHVtbnMubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1N3aW1sYW5lV2l0aEhlYWRlciA9IChzaGFwZTogU3dpbWxhbmVEcmF3U3ltYm9scykgPT4ge1xuICAgIHJldHVybiBbU3dpbWxhbmVEcmF3U3ltYm9scy5zd2ltbGFuZUhvcml6b250YWxXaXRoSGVhZGVyLCBTd2ltbGFuZURyYXdTeW1ib2xzLnN3aW1sYW5lVmVydGljYWxXaXRoSGVhZGVyXS5pbmNsdWRlcyhzaGFwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRqdXN0U3dpbWxhbmVTaGFwZSA9IChzaGFwZTogU3dpbWxhbmVEcmF3U3ltYm9scyk6IFN3aW1sYW5lU3ltYm9scyA9PiB7XG4gICAgcmV0dXJuIFtTd2ltbGFuZURyYXdTeW1ib2xzLnN3aW1sYW5lSG9yaXpvbnRhbFdpdGhIZWFkZXIsIFN3aW1sYW5lRHJhd1N5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsXS5pbmNsdWRlcyhzaGFwZSlcbiAgICAgICAgPyBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsXG4gICAgICAgIDogU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWw7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTd2ltbGFuZVBvaW50ZXJzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGdldFN3aW1sYW5lUG9pbnRlcnMoKSk7XG59O1xuIl19
|