@plait/core 0.51.3 → 0.51.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/board/board.component.d.ts +1 -1
  2. package/esm2022/board/board.component.mjs +5 -5
  3. package/esm2022/core/children/children.component.mjs +5 -5
  4. package/esm2022/core/element/context-change.mjs +1 -1
  5. package/esm2022/core/element/element.component.mjs +5 -5
  6. package/esm2022/core/element/plugin-element.mjs +5 -5
  7. package/esm2022/core/island/island-base.component.mjs +9 -9
  8. package/esm2022/interfaces/board.mjs +1 -1
  9. package/esm2022/interfaces/element.mjs +1 -1
  10. package/esm2022/interfaces/node.mjs +1 -1
  11. package/esm2022/interfaces/operation.mjs +1 -1
  12. package/esm2022/interfaces/path-ref.mjs +1 -1
  13. package/esm2022/interfaces/path.mjs +1 -1
  14. package/esm2022/interfaces/rectangle-client.mjs +1 -1
  15. package/esm2022/interfaces/selection.mjs +1 -1
  16. package/esm2022/plugins/create-board.mjs +1 -1
  17. package/esm2022/plugins/with-board.mjs +1 -1
  18. package/esm2022/plugins/with-group.mjs +1 -1
  19. package/esm2022/plugins/with-hand.mjs +1 -1
  20. package/esm2022/plugins/with-history.mjs +1 -1
  21. package/esm2022/plugins/with-hotkey.mjs +1 -1
  22. package/esm2022/plugins/with-moving.mjs +1 -1
  23. package/esm2022/plugins/with-selection.mjs +1 -1
  24. package/esm2022/plugins/with-viewport.mjs +1 -1
  25. package/esm2022/services/image-context.service.mjs +3 -3
  26. package/esm2022/testing/fake-events/event-objects.mjs +4 -4
  27. package/esm2022/transforms/board.mjs +1 -1
  28. package/esm2022/transforms/general.mjs +1 -1
  29. package/esm2022/transforms/node.mjs +1 -1
  30. package/esm2022/transforms/selection.mjs +1 -1
  31. package/esm2022/utils/angle.mjs +36 -0
  32. package/esm2022/utils/board.mjs +1 -1
  33. package/esm2022/utils/clipboard/clipboard.mjs +1 -1
  34. package/esm2022/utils/clipboard/common.mjs +1 -1
  35. package/esm2022/utils/clipboard/data-transfer.mjs +1 -1
  36. package/esm2022/utils/clipboard/navigator-clipboard.mjs +1 -1
  37. package/esm2022/utils/common.mjs +1 -1
  38. package/esm2022/utils/dom/common.mjs +1 -1
  39. package/esm2022/utils/dom/foreign.mjs +1 -1
  40. package/esm2022/utils/drawing/line.mjs +1 -1
  41. package/esm2022/utils/drawing/rectangle.mjs +1 -1
  42. package/esm2022/utils/element.mjs +17 -5
  43. package/esm2022/utils/group.mjs +1 -1
  44. package/esm2022/utils/history.mjs +1 -1
  45. package/esm2022/utils/hotkeys.mjs +1 -1
  46. package/esm2022/utils/id-creator.mjs +1 -1
  47. package/esm2022/utils/index.mjs +2 -1
  48. package/esm2022/utils/math.mjs +11 -1
  49. package/esm2022/utils/reaction-manager.mjs +1 -1
  50. package/esm2022/utils/selected-element.mjs +1 -1
  51. package/esm2022/utils/selection.mjs +6 -2
  52. package/esm2022/utils/to-image.mjs +1 -1
  53. package/esm2022/utils/touch.mjs +1 -1
  54. package/esm2022/utils/tree.mjs +1 -1
  55. package/esm2022/utils/viewport.mjs +1 -1
  56. package/fesm2022/plait-core.mjs +94 -35
  57. package/fesm2022/plait-core.mjs.map +1 -1
  58. package/package.json +1 -1
  59. package/utils/angle.d.ts +5 -0
  60. package/utils/index.d.ts +1 -0
  61. package/utils/math.d.ts +8 -0
@@ -64,4 +64,4 @@ export const withHotkey = (board) => {
64
64
  };
65
65
  return board;
66
66
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ob3RrZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtaG90a2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFZLFVBQVUsRUFBZ0IsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJN0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVoRCxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sT0FBTyxHQUFJLEtBQTJCLENBQUMsZ0JBQWdCLENBQW9CLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDakYsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDbEMsbUJBQW1CLENBQ2YsS0FBSyxFQUNMLElBQUksQ0FBQyxFQUFFO2dCQUNILElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsT0FBTztpQkFDVjtnQkFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQW9CLENBQUMsQ0FBQztZ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bSAnaXMtaG90a2V5JztcbmltcG9ydCB7IEFuY2VzdG9yLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0UGx1Z2luS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCb2FyZFRyYW5zZm9ybXMsIFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGRlcHRoRmlyc3RSZWN1cnNpb24sIGdldFNlbGVjdGVkRWxlbWVudHMsIGhvdGtleXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFdpdGhQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi93aXRoLXNlbGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCB3aXRoSG90a2V5ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBrZXlEb3duLCBrZXlVcCwgZ2xvYmFsS2V5RG93biB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5rZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiYgb3B0aW9ucy5pc011bHRpcGxlICYmIGlzSG90a2V5KCdtb2QrYScsIGV2ZW50KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCBlbGVtZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICAgICAgICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChub2RlIGFzIFBsYWl0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSB8fCBib2FyZC5pc1JlY3Vyc2lvbihub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAoaG90a2V5cy5pc0RlbGV0ZUJhY2t3YXJkKGV2ZW50KSB8fCBob3RrZXlzLmlzRGVsZXRlRm9yd2FyZChldmVudCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJvYXJkLmRlbGV0ZUZyYWdtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleVVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGtleVVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5nZXRNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpIHx8IFBsYWl0Qm9hcmQuaXNNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2QrPScsICdtb2QrKyddLCB7IGJ5S2V5OiB0cnVlIH0pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVpvb20oYm9hcmQsIGJvYXJkLnZpZXdwb3J0Lnpvb20gKyAwLjEsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2Qrc2hpZnQrPScsICdtb2Qrc2hpZnQrKyddLCB7IGJ5S2V5OiB0cnVlIH0pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLmZpdFZpZXdwb3J0KGJvYXJkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2QrLScsICdtb2Qrc2hpZnQrLSddKShldmVudCkpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVab29tKGJvYXJkLCBib2FyZC52aWV3cG9ydC56b29tIC0gMC4xKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNIb3RrZXkoWydtb2QrMCcsICdtb2Qrc2hpZnQrMCddLCB7IGJ5S2V5OiB0cnVlIH0pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVpvb20oYm9hcmQsIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnbG9iYWxLZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ob3RrZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtaG90a2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFZLFVBQVUsRUFBZ0IsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJN0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVoRCxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sT0FBTyxHQUFJLEtBQTJCLENBQUMsZ0JBQWdCLENBQW9CLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxRQUFRLEdBQW1CLEVBQUUsQ0FBQztZQUNsQyxtQkFBbUIsQ0FDZixLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUU7Z0JBQ0gsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzNCLE9BQU87Z0JBQ1gsQ0FBQztnQkFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLElB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LENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNIb3RrZXkgfSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgQW5jZXN0b3IsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXRQbHVnaW5LZXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvYXJkVHJhbnNmb3JtcywgVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgZ2V0U2VsZWN0ZWRFbGVtZW50cywgaG90a2V5cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0T3B0aW9uc0JvYXJkIH0gZnJvbSAnLi93aXRoLW9wdGlvbnMnO1xuaW1wb3J0IHsgV2l0aFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3dpdGgtc2VsZWN0aW9uJztcblxuZXhwb3J0IGNvbnN0IHdpdGhIb3RrZXkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IGtleURvd24sIGtleVVwLCBnbG9iYWxLZXlEb3duIH0gPSBib2FyZDtcblxuICAgIGJvYXJkLmtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBvcHRpb25zLmlzTXVsdGlwbGUgJiYgaXNIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKG5vZGUgYXMgUGxhaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpIHx8IGJvYXJkLmlzUmVjdXJzaW9uKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuYWRkU2VsZWN0aW9uV2l0aFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmXG4gICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIChob3RrZXlzLmlzRGVsZXRlQmFja3dhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNEZWxldGVGb3J3YXJkKGV2ZW50KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYm9hcmQuZGVsZXRlRnJhZ21lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5VXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAga2V5VXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50SW5Cb2FyZChib2FyZCkgfHwgUGxhaXRCb2FyZC5pc01vdmluZ1BvaW50SW5Cb2FyZChib2FyZCkpIHtcbiAgICAgICAgICAgIGlmIChpc0hvdGtleShbJ21vZCs9JywgJ21vZCsrJ10sIHsgYnlLZXk6IHRydWUgfSkoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlWm9vbShib2FyZCwgYm9hcmQudmlld3BvcnQuem9vbSArIDAuMSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0hvdGtleShbJ21vZCtzaGlmdCs9JywgJ21vZCtzaGlmdCsrJ10sIHsgYnlLZXk6IHRydWUgfSkoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMuZml0Vmlld3BvcnQoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0hvdGtleShbJ21vZCstJywgJ21vZCtzaGlmdCstJ10pKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVpvb20oYm9hcmQsIGJvYXJkLnZpZXdwb3J0Lnpvb20gLSAwLjEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0hvdGtleShbJ21vZCswJywgJ21vZCtzaGlmdCswJ10sIHsgYnlLZXk6IHRydWUgfSkoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlWm9vbShib2FyZCwgMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdsb2JhbEtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
@@ -188,4 +188,4 @@ export function updatePoints(board, targetElements, offsetX, offsetY) {
188
188
  });
189
189
  return currentElements;
190
190
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsV0FBVyxFQUNYLGNBQWMsRUFDZCxPQUFPLEVBQ1AsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFB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QUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEgsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBWSxDQUFDO1FBQy9FLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkUsVUFBVSxDQUFDLE9BQU8sQ0FDZCxLQUFLLEVBQ0w7WUFDSSxNQUFNLEVBQUUsU0FBUztTQUNwQixFQUNELENBQUMsS0FBSyxDQUFDLENBQ1YsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGlzSW5QbGFpdEJvYXJkIH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRIaXRFbGVtZW50QnlQb2ludCwgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IHRocm90dGxlUkFGIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IGNhY2hlTW92aW5nRWxlbWVudHMsIGdldE1vdmluZ0VsZW1lbnRzLCBpc01vdmluZ0VsZW1lbnRzLCByZW1vdmVNb3ZpbmdFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL21vdmluZy1lbGVtZW50JztcbmltcG9ydCB7IE1FUkdJTkcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2hpc3RvcnknO1xuaW1wb3J0IHtcbiAgICBpc1ByZXZlbnRUb3VjaE1vdmUsXG4gICAgcHJldmVudFRvdWNoTW92ZSxcbiAgICBoYW5kbGVUb3VjaFRhcmdldCxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgaG90a2V5cyxcbiAgICBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQWxpZ25SZWFjdGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlYWN0aW9uLW1hbmFnZXInO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBQ1RJVkVfTU9WSU5HX0NMQVNTX05BTUUsIFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMgfSBmcm9tICcuLi90cmFuc2Zvcm1zL3NlbGVjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgZ2xvYmFsUG9pbnRlck1vdmUgfSA9IGJvYXJkO1xuXG4gICAgbGV0IG9mZnNldFggPSAwO1xuICAgIGxldCBvZmZzZXRZID0gMDtcbiAgICBsZXQgaXNQcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBhbGlnbkc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSB8fFxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgfHxcbiAgICAgICAgICAgIGlzUHJldmVudFRvdWNoTW92ZShib2FyZCkgfHxcbiAgICAgICAgICAgICFpc01haW5Qb2ludGVyKGV2ZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IGdldFRhcmdldEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdGFuZ2xlID0gdGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMCAmJiBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCB0YXJnZXRFbGVtZW50cywgZmFsc2UpO1xuICAgICAgICBjb25zdCBpc0luVGFyZ2V0UmVjdGFuZ2xlID0gdGFyZ2V0UmVjdGFuZ2xlICYmIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGFyZ2V0UmVjdGFuZ2xlLCBwb2ludCk7XG4gICAgICAgIGlmIChpc0luVGFyZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IHRhcmdldEVsZW1lbnRzO1xuICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIHBvaW50LCBlbCA9PiBib2FyZC5pc01vdmFibGUoZWwpKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gZ2V0RWxlbWVudHNJbkdyb3VwQnlFbGVtZW50KGJvYXJkLCB0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBhZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50ICYmIGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICBpZiAoIWlzUHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBpc1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uZW5kUG9pbnQsIC4uLnN0YXJ0UG9pbnQpO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGdldE1vdmluZ0VsZW1lbnRzKGJvYXJkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoYm9hcmQsICd3aXRoLW1vdmluZycsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmVFbGVtZW50c1JlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1JlY3RhbmdsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDogYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBhY3RpdmVFbGVtZW50c1JlY3RhbmdsZS55ICsgb2Zmc2V0WVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFjdGlvbk1hbmFnZXIgPSBuZXcgQWxpZ25SZWFjdGlvbihib2FyZCwgYWN0aXZlRWxlbWVudHMsIG5ld1JlY3RhbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IHJlYWN0aW9uTWFuYWdlci5oYW5kbGVBbGlnbigpO1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYIC09IHJlZi5kZWx0YVg7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFkgLT0gcmVmLmRlbHRhWTtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25HID0gcmVmLmc7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduRy5jbGFzc0xpc3QuYWRkKEFDVElWRV9NT1ZJTkdfQ0xBU1NfTkFNRSk7XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChhbGlnbkcpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVUb3VjaFRhcmdldChib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50cyA9IHVwZGF0ZVBvaW50cyhib2FyZCwgYWN0aXZlRWxlbWVudHMsIG9mZnNldFgsIG9mZnNldFkpO1xuICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCdlbGVtZW50LW1vdmluZycpO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZU1vdmluZ0VsZW1lbnRzKGJvYXJkLCBjdXJyZW50RWxlbWVudHMgYXMgUGxhaXRFbGVtZW50W10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBQcmV2ZW50IGNhbnZhcyBzY3JvbGxpbmcgYmVoYXZpb3IgZnJvbSBiZWluZyB0cmlnZ2VyZWQgZHVyaW5nIG1vdmVcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBpblBsYWl0Qm9hcmRFbGVtZW50ID0gaXNJblBsYWl0Qm9hcmQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpO1xuICAgICAgICAgICAgaWYgKCFpblBsYWl0Qm9hcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsTW92ZShib2FyZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlzUHJldmVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNhbmNlbE1vdmUoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbmNlbE1vdmUoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlID0gbnVsbDtcbiAgICAgICAgb2Zmc2V0WCA9IDA7XG4gICAgICAgIG9mZnNldFkgPSAwO1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICBpZiAoaXNNb3ZpbmdFbGVtZW50cyhib2FyZCkpIHtcbiAgICAgICAgICAgIHJlbW92ZU1vdmluZ0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgfVxuICAgICAgICBNRVJHSU5HLnNldChib2FyZCwgZmFsc2UpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKCdlbGVtZW50LW1vdmluZycpO1xuICAgIH1cblxuICAgIHJldHVybiB3aXRoQXJyb3dNb3ZpbmcoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFycm93TW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBrZXlEb3duLCBrZXlVcCB9ID0gYm9hcmQ7XG4gICAgYm9hcmQua2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgKGhvdGtleXMuaXNBcnJvdyhldmVudCkgfHwgaG90a2V5cy5pc0V4dGVuZEFycm93KGV2ZW50KSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBpc1NoaWZ0ID0gZXZlbnQuc2hpZnRLZXkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBbMCwgMF07XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBpc1NoaWZ0ID8gMTAgOiAxO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBob3RrZXlzLmlzTW92ZVVwKGV2ZW50KSB8fCBob3RrZXlzLmlzRXh0ZW5kVXAoZXZlbnQpOiB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFsxXSA9IC1idWZmZXI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGhvdGtleXMuaXNNb3ZlRG93bihldmVudCkgfHwgaG90a2V5cy5pc0V4dGVuZERvd24oZXZlbnQpOiB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFsxXSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgaG90a2V5cy5pc01vdmVCYWNrd2FyZChldmVudCkgfHwgaG90a2V5cy5pc0V4dGVuZEJhY2t3YXJkKGV2ZW50KToge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRbMF0gPSAtYnVmZmVyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBob3RrZXlzLmlzTW92ZUZvcndhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNFeHRlbmRGb3J3YXJkKGV2ZW50KToge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRbMF0gPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gZ2V0VGFyZ2V0RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgdGhyb3R0bGVSQUYoYm9hcmQsICd3aXRoLWFycm93LW1vdmluZycsICgpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb2ludHMoYm9hcmQsIHRhcmdldEVsZW1lbnRzLCBvZmZzZXRbMF0sIG9mZnNldFsxXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBrZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5VXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgTUVSR0lORy5zZXQoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAga2V5VXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgbW92YWJsZUVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGl0ZW0gPT4gYm9hcmQuaXNNb3ZhYmxlKGl0ZW0pKTtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlbGF0ZWRFbGVtZW50cyA9IGJvYXJkLmdldFJlbGF0ZWRGcmFnbWVudChbXSk7XG4gICAgdGFyZ2V0RWxlbWVudHMucHVzaCguLi5yZWxhdGVkRWxlbWVudHMpO1xuICAgIHJldHVybiB0YXJnZXRFbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVBvaW50cyhib2FyZDogUGxhaXRCb2FyZCwgdGFyZ2V0RWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCBvZmZzZXRYOiBudW1iZXIsIG9mZnNldFk6IG51bWJlcikge1xuICAgIGNvbnN0IHZhbGlkRWxlbWVudHMgPSB0YXJnZXRFbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiBib2FyZC5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBlbGVtZW50LmlkKSA+IC0xKTtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSB2YWxpZEVsZW1lbnRzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZWxlbWVudC5wb2ludHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IHBvaW50cy5tYXAocCA9PiBbcFswXSArIG9mZnNldFgsIHBbMV0gKyBvZmZzZXRZXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBib2FyZC5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBlbGVtZW50LmlkKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKFxuICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbaW5kZXhdXG4gICAgICAgICk7XG4gICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFtpbmRleF0pO1xuICAgIH0pO1xuICAgIHJldHVybiBjdXJyZW50RWxlbWVudHM7XG59XG4iXX0=
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsV0FBVyxFQUNYLGNBQWMsRUFDZCxPQUFPLEVBQ1AsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFB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O0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGlzSW5QbGFpdEJvYXJkIH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRIaXRFbGVtZW50QnlQb2ludCwgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IHRocm90dGxlUkFGIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IGNhY2hlTW92aW5nRWxlbWVudHMsIGdldE1vdmluZ0VsZW1lbnRzLCBpc01vdmluZ0VsZW1lbnRzLCByZW1vdmVNb3ZpbmdFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL21vdmluZy1lbGVtZW50JztcbmltcG9ydCB7IE1FUkdJTkcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2hpc3RvcnknO1xuaW1wb3J0IHtcbiAgICBpc1ByZXZlbnRUb3VjaE1vdmUsXG4gICAgcHJldmVudFRvdWNoTW92ZSxcbiAgICBoYW5kbGVUb3VjaFRhcmdldCxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgaG90a2V5cyxcbiAgICBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQWxpZ25SZWFjdGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlYWN0aW9uLW1hbmFnZXInO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBQ1RJVkVfTU9WSU5HX0NMQVNTX05BTUUsIFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMgfSBmcm9tICcuLi90cmFuc2Zvcm1zL3NlbGVjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgZ2xvYmFsUG9pbnRlck1vdmUgfSA9IGJvYXJkO1xuXG4gICAgbGV0IG9mZnNldFggPSAwO1xuICAgIGxldCBvZmZzZXRZID0gMDtcbiAgICBsZXQgaXNQcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBhbGlnbkc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSB8fFxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgfHxcbiAgICAgICAgICAgIGlzUHJldmVudFRvdWNoTW92ZShib2FyZCkgfHxcbiAgICAgICAgICAgICFpc01haW5Qb2ludGVyKGV2ZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IGdldFRhcmdldEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdGFuZ2xlID0gdGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMCAmJiBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCB0YXJnZXRFbGVtZW50cywgZmFsc2UpO1xuICAgICAgICBjb25zdCBpc0luVGFyZ2V0UmVjdGFuZ2xlID0gdGFyZ2V0UmVjdGFuZ2xlICYmIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGFyZ2V0UmVjdGFuZ2xlLCBwb2ludCk7XG4gICAgICAgIGlmIChpc0luVGFyZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IHRhcmdldEVsZW1lbnRzO1xuICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIHBvaW50LCBlbCA9PiBib2FyZC5pc01vdmFibGUoZWwpKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gZ2V0RWxlbWVudHNJbkdyb3VwQnlFbGVtZW50KGJvYXJkLCB0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBhZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50ICYmIGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICBpZiAoIWlzUHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBpc1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uZW5kUG9pbnQsIC4uLnN0YXJ0UG9pbnQpO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGdldE1vdmluZ0VsZW1lbnRzKGJvYXJkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoYm9hcmQsICd3aXRoLW1vdmluZycsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmVFbGVtZW50c1JlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1JlY3RhbmdsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDogYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBhY3RpdmVFbGVtZW50c1JlY3RhbmdsZS55ICsgb2Zmc2V0WVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFjdGlvbk1hbmFnZXIgPSBuZXcgQWxpZ25SZWFjdGlvbihib2FyZCwgYWN0aXZlRWxlbWVudHMsIG5ld1JlY3RhbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IHJlYWN0aW9uTWFuYWdlci5oYW5kbGVBbGlnbigpO1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYIC09IHJlZi5kZWx0YVg7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFkgLT0gcmVmLmRlbHRhWTtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25HID0gcmVmLmc7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduRy5jbGFzc0xpc3QuYWRkKEFDVElWRV9NT1ZJTkdfQ0xBU1NfTkFNRSk7XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChhbGlnbkcpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVUb3VjaFRhcmdldChib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50cyA9IHVwZGF0ZVBvaW50cyhib2FyZCwgYWN0aXZlRWxlbWVudHMsIG9mZnNldFgsIG9mZnNldFkpO1xuICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCdlbGVtZW50LW1vdmluZycpO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZU1vdmluZ0VsZW1lbnRzKGJvYXJkLCBjdXJyZW50RWxlbWVudHMgYXMgUGxhaXRFbGVtZW50W10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBQcmV2ZW50IGNhbnZhcyBzY3JvbGxpbmcgYmVoYXZpb3IgZnJvbSBiZWluZyB0cmlnZ2VyZWQgZHVyaW5nIG1vdmVcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBpblBsYWl0Qm9hcmRFbGVtZW50ID0gaXNJblBsYWl0Qm9hcmQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpO1xuICAgICAgICAgICAgaWYgKCFpblBsYWl0Qm9hcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsTW92ZShib2FyZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlzUHJldmVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNhbmNlbE1vdmUoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbmNlbE1vdmUoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlID0gbnVsbDtcbiAgICAgICAgb2Zmc2V0WCA9IDA7XG4gICAgICAgIG9mZnNldFkgPSAwO1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICBpZiAoaXNNb3ZpbmdFbGVtZW50cyhib2FyZCkpIHtcbiAgICAgICAgICAgIHJlbW92ZU1vdmluZ0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgfVxuICAgICAgICBNRVJHSU5HLnNldChib2FyZCwgZmFsc2UpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKCdlbGVtZW50LW1vdmluZycpO1xuICAgIH1cblxuICAgIHJldHVybiB3aXRoQXJyb3dNb3ZpbmcoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFycm93TW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBrZXlEb3duLCBrZXlVcCB9ID0gYm9hcmQ7XG4gICAgYm9hcmQua2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgKGhvdGtleXMuaXNBcnJvdyhldmVudCkgfHwgaG90a2V5cy5pc0V4dGVuZEFycm93KGV2ZW50KSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBpc1NoaWZ0ID0gZXZlbnQuc2hpZnRLZXkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBbMCwgMF07XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBpc1NoaWZ0ID8gMTAgOiAxO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBob3RrZXlzLmlzTW92ZVVwKGV2ZW50KSB8fCBob3RrZXlzLmlzRXh0ZW5kVXAoZXZlbnQpOiB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFsxXSA9IC1idWZmZXI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGhvdGtleXMuaXNNb3ZlRG93bihldmVudCkgfHwgaG90a2V5cy5pc0V4dGVuZERvd24oZXZlbnQpOiB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFsxXSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgaG90a2V5cy5pc01vdmVCYWNrd2FyZChldmVudCkgfHwgaG90a2V5cy5pc0V4dGVuZEJhY2t3YXJkKGV2ZW50KToge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRbMF0gPSAtYnVmZmVyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBob3RrZXlzLmlzTW92ZUZvcndhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNFeHRlbmRGb3J3YXJkKGV2ZW50KToge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRbMF0gPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gZ2V0VGFyZ2V0RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgdGhyb3R0bGVSQUYoYm9hcmQsICd3aXRoLWFycm93LW1vdmluZycsICgpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb2ludHMoYm9hcmQsIHRhcmdldEVsZW1lbnRzLCBvZmZzZXRbMF0sIG9mZnNldFsxXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBrZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5VXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgTUVSR0lORy5zZXQoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAga2V5VXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgbW92YWJsZUVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGl0ZW0gPT4gYm9hcmQuaXNNb3ZhYmxlKGl0ZW0pKTtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlbGF0ZWRFbGVtZW50cyA9IGJvYXJkLmdldFJlbGF0ZWRGcmFnbWVudChbXSk7XG4gICAgdGFyZ2V0RWxlbWVudHMucHVzaCguLi5yZWxhdGVkRWxlbWVudHMpO1xuICAgIHJldHVybiB0YXJnZXRFbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVBvaW50cyhib2FyZDogUGxhaXRCb2FyZCwgdGFyZ2V0RWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCBvZmZzZXRYOiBudW1iZXIsIG9mZnNldFk6IG51bWJlcikge1xuICAgIGNvbnN0IHZhbGlkRWxlbWVudHMgPSB0YXJnZXRFbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiBib2FyZC5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBlbGVtZW50LmlkKSA+IC0xKTtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSB2YWxpZEVsZW1lbnRzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gZWxlbWVudC5wb2ludHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IHBvaW50cy5tYXAocCA9PiBbcFswXSArIG9mZnNldFgsIHBbMV0gKyBvZmZzZXRZXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBib2FyZC5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBlbGVtZW50LmlkKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKFxuICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbaW5kZXhdXG4gICAgICAgICk7XG4gICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFtpbmRleF0pO1xuICAgIH0pO1xuICAgIHJldHVybiBjdXJyZW50RWxlbWVudHM7XG59XG4iXX0=
@@ -276,4 +276,4 @@ export function withSelection(board) {
276
276
  });
277
277
  return board;
278
278
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUN4QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBNEIsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUNILG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9B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QUM7Z0JBQzNELElBQUksdUJBQXVCLENBQUMsTUFBTSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3RFLElBQ0ksd0JBQXdCO3dCQUN4QixDQUFDLHVCQUF1QixDQUFDLE1BQU0sS0FBSyx3QkFBd0IsQ0FBQyxNQUFNOzRCQUMvRCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUN4Rjt3QkFDRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQzt3QkFDOUIsbUJBQW1CLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZELHdCQUF3QixHQUFHLHVCQUF1QixDQUFDO3FCQUN0RDtpQkFDSjtxQkFBTTtvQkFDSCxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDakM7YUFDSjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEI7U0FDSjtRQUNELFdBQVcsRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVELEtBQTJCLENBQUMsZ0JBQWdCLENBQW9CLGNBQWMsQ0FBQyxhQUFhLEVBQUU7UUFDM0YsVUFBVSxFQUFFLElBQUk7UUFDaEIsZ0JBQWdCLEVBQUUsS0FBSztLQUMxQixDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGlzTWFpblBvaW50ZXIgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdGFuZ2xlLWNsaWVudCc7XG5pbXBvcnQge1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBnZXRIaXRFbGVtZW50QnlQb2ludCxcbiAgICBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uLFxuICAgIGdldEhpdFNlbGVjdGVkRWxlbWVudHMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0R3JvdXAsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7XG4gICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgY3JlYXRlU2VsZWN0aW9uUmVjdGFuZ2xlRyxcbiAgICBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyxcbiAgICBkcmF3UmVjdGFuZ2xlLFxuICAgIGdldEVsZW1lbnRzSW5Hcm91cCxcbiAgICBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQsXG4gICAgZ2V0R3JvdXBCeUVsZW1lbnQsXG4gICAgZ2V0U2VsZWN0ZWRHcm91cHMsXG4gICAgZ2V0VGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgaXNEcmFnZ2luZyxcbiAgICBpc0hhbmRsZVNlbGVjdGlvbixcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbixcbiAgICBwcmV2ZW50VG91Y2hNb3ZlLFxuICAgIHNldFNlbGVjdGlvbk1vdmluZyxcbiAgICB0aHJvdHRsZVJBRixcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCwgUGxhaXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi93aXRoLW9wdGlvbnMnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW5LZXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbi1rZXknO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgUFJFU1NfQU5EX01PVkVfQlVGRkVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGx1Z2luT3B0aW9ucyBleHRlbmRzIFBsYWl0UGx1Z2luT3B0aW9ucyB7XG4gICAgaXNNdWx0aXBsZTogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkU2VsZWN0OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJVcCwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgb25DaGFuZ2UsIGFmdGVyQ2hhbmdlIH0gPSBib2FyZDtcbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2VsZWN0aW9uTW92aW5nRzogU1ZHR0VsZW1lbnQ7XG4gICAgbGV0IHNlbGVjdGlvblJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuICAgIGxldCBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpc1NoaWZ0ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTaGlmdCAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0hpdFRleHQgPSAhIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KCcucGxhaXQtcmljaHRleHQtY29udGFpbmVyJykpO1xuICAgICAgICBpc1RleHRTZWxlY3Rpb24gPSBpc0hpdFRleHQgJiYgUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpO1xuXG4gICAgICAgIC8vIHByZXZlbnQgdGV4dCBmcm9tIGJlaW5nIHNlbGVjdGVkXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSAmJiAhaXNUZXh0U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIHBvaW50KTtcbiAgICAgICAgY29uc3QgaGl0U2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSA/IGdldEhpdFNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIHBvaW50KSA6IFtdO1xuICAgICAgICBjb25zdCBpc0hpdFRhcmdldCA9IGhpdEVsZW1lbnQgfHwgaGl0U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiAhaXNIaXRUYXJnZXQgJiYgb3B0aW9ucy5pc011bHRpcGxlICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QpIHtcbiAgICAgICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHN0YXJ0IHJlY3RhbmdsZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHN0YXJ0ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpc1RleHRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIHByZXZlbnQgdGV4dCBmcm9tIGJlaW5nIHNlbGVjdGVkXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmIHN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBtb3ZlZFRhcmdldCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtzdGFydCwgbW92ZWRUYXJnZXRdKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgaWYgKE1hdGguaHlwb3QocmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUuaGVpZ2h0KSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB8fCBpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVJBRihib2FyZCwgJ3dpdGgtc2VsZWN0aW9uJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHID0gZHJhd1JlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uTW92aW5nRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICAvLyBoYW5kbGUgdGhlIGVuZCBvZiBjbGljayBzZWxlY3RcbiAgICBib2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fCBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcoYm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0geyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHNlbGVjdGlvbik7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzRm9jdXMoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0luQm9hcmQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBOb2RlICYmIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBpc0luRG9jdW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBOb2RlICYmIGRvY3VtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBpc0F0dGFjaGVkRWxlbWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0LmNsb3Nlc3QoYC4ke0FUVEFDSEVEX0VMRU1FTlRfQ0xBU1NfTkFNRX1gKTtcbiAgICAgICAgICAgIC8vIENsZWFyIHNlbGVjdGlvbiB3aGVuIG1vdXNlIGJvYXJkIG91dHNpZGUgYXJlYVxuICAgICAgICAgICAgLy8gVGhlIGZyYW1ld29yayBuZWVkcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYm9hcmQgaXMgZm9jdXNlZCB0aHJvdWdoIHNlbGVjdGlvblxuICAgICAgICAgICAgaWYgKCFpc0luQm9hcmQgJiYgIXN0YXJ0ICYmICFpc0F0dGFjaGVkRWxlbWVudCAmJiBpc0luRG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgICBlbmQgPSBudWxsO1xuICAgICAgICBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2gob3AgPT4ge1xuICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT09ICdyZW1vdmVfbm9kZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG9wLm5vZGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1NoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wb3JhcnlFbGVtZW50cyA9IGdldFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHMgPSB0ZW1wb3JhcnlFbGVtZW50cyA/IHRlbXBvcmFyeUVsZW1lbnRzIDogZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbihib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzTXVsdGlwbGUgJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50c1swXV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzSGl0RWxlbWVudFdpdGhHcm91cCA9IGVsZW1lbnRzLnNvbWUoaXRlbSA9PiBpdGVtLmdyb3VwSWQpO1xuICAgICAgICAgICAgICAgIGlmIChpc1NoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkRWxlbWVudHMgPSBbLi4uZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYm9hcmQuc2VsZWN0aW9uICYmIFNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNIaXRFbGVtZW50V2l0aEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlbmRpbmdFbGVtZW50czogUGxhaXRFbGVtZW50W10gPSBbLi4uZWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBlbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cHMgPSBnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgaGl0RWxlbWVudCwgdHJ1ZSkgYXMgUGxhaXRHcm91cFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZ2V0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGdyb3Vwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHNJbkhpZ2hlc3RHcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdFbGVtZW50cyA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgc2VsZWN0ZWRHcm91cHNbc2VsZWN0ZWRHcm91cHMubGVuZ3RoIC0gMl0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdTZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzSW5Hcm91cCA9IGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAuZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBwYXJ0aWFsbHkgc2VsZWN0ZWQgZWxlbWVudHMgYmVsb25nIHRvIGEgZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHNlbGVjdCB0aG9zZSBlbGVtZW50cyBhbG9uZyB3aXRoIHRoZSBoaXQgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50c0luR3JvdXAubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0VsZW1lbnRzLnB1c2goLi4uc2VsZWN0ZWRFbGVtZW50c0luR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRWxlbWVudHMgPSBlbGVtZW50c0luSGlnaGVzdEdyb3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0VsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNJbkhpZ2hlc3RHcm91cC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5zcGxpY2UobmV3U2VsZWN0ZWRFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaCguLi5wZW5kaW5nRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMuc3BsaWNlKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RWxlbWVudHM6IFBsYWl0RWxlbWVudFtdID0gWy4uLmVsZW1lbnRzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0hpdEVsZW1lbnRXaXRoR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1c2goLi4uZ2V0RWxlbWVudHNJbkdyb3VwQnlFbGVtZW50KGJvYXJkLCBpdGVtKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdTZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5lbGVtZW50c107XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hpdEVsZW1lbnRXaXRoR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbiEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5wdXNoKC4uLmdldEVsZW1lbnRzSW5Hcm91cEJ5RWxlbWVudChib2FyZCwgaXRlbSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBlbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cHMgPSBnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgaGl0RWxlbWVudCwgdHJ1ZSkgYXMgUGxhaXRHcm91cFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZ2V0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGdyb3Vwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIHNlbGVjdGVkR3JvdXBzW3NlbGVjdGVkR3JvdXBzLmxlbmd0aCAtIDJdLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyA9IG5ld0VsZW1lbnRzO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBjcmVhdGVTZWxlY3Rpb25SZWN0YW5nbGVHKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuYWZ0ZXJDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgIWlzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggJiYgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5zb21lKChjLCBpbmRleCkgPT4gYyAhPT0gcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzW2luZGV4XSkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHID0gY3JlYXRlU2VsZWN0aW9uUmVjdGFuZ2xlRyhib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWZ0ZXJDaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUN4QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBNEIsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUNILG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9B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LENBQUM7cUJBQU0sQ0FBQztvQkFDSixtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRCxLQUEyQixDQUFDLGdCQUFnQixDQUFvQixjQUFjLENBQUMsYUFBYSxFQUFFO1FBQzNGLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGdCQUFnQixFQUFFLEtBQUs7S0FDMUIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc01haW5Qb2ludGVyIH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsXG4gICAgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbixcbiAgICBnZXRIaXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50XG59IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50LCBQbGFpdEdyb3VwLCBQbGFpdFBvaW50ZXJUeXBlLCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLCBTRUxFQ1RJT05fRklMTF9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nLFxuICAgIGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcsXG4gICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBnZXRFbGVtZW50c0luR3JvdXAsXG4gICAgZ2V0RWxlbWVudHNJbkdyb3VwQnlFbGVtZW50LFxuICAgIGdldEdyb3VwQnlFbGVtZW50LFxuICAgIGdldFNlbGVjdGVkR3JvdXBzLFxuICAgIGdldFRlbXBvcmFyeUVsZW1lbnRzLFxuICAgIGlzRHJhZ2dpbmcsXG4gICAgaXNIYW5kbGVTZWxlY3Rpb24sXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24sXG4gICAgcHJldmVudFRvdWNoTW92ZSxcbiAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQsIFBsYWl0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0UGx1Z2luS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4ta2V5JztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFBsdWdpbk9wdGlvbnMgZXh0ZW5kcyBQbGFpdFBsdWdpbk9wdGlvbnMge1xuICAgIGlzTXVsdGlwbGU6IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZFNlbGVjdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyVXAsIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAsIG9uQ2hhbmdlLCBhZnRlckNoYW5nZSB9ID0gYm9hcmQ7XG4gICAgbGV0IHN0YXJ0OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBlbmQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNlbGVjdGlvbk1vdmluZ0c6IFNWR0dFbGVtZW50O1xuICAgIGxldCBzZWxlY3Rpb25SZWN0YW5nbGVHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W107XG4gICAgbGV0IGlzU2hpZnQgPSBmYWxzZTtcbiAgICBsZXQgaXNUZXh0U2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICBib2FyZC5wb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNTaGlmdCAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2hpZnQgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNIaXRUZXh0ID0gISEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdCgnLnBsYWl0LXJpY2h0ZXh0LWNvbnRhaW5lcicpKTtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gaXNIaXRUZXh0ICYmIFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKTtcblxuICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgIWlzVGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IGhpdFNlbGVjdGVkRWxlbWVudHMgPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEgPyBnZXRIaXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBwb2ludCkgOiBbXTtcbiAgICAgICAgY29uc3QgaXNIaXRUYXJnZXQgPSBoaXRFbGVtZW50IHx8IGhpdFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMDtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG5cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiYgIWlzSGl0VGFyZ2V0ICYmIG9wdGlvbnMuaXNNdWx0aXBsZSAmJiAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCBldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAvLyBzdGFydCByZWN0YW5nbGUgc2VsZWN0aW9uXG4gICAgICAgICAgICBzdGFydCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNUZXh0U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiBzdGFydCkge1xuICAgICAgICAgICAgY29uc3QgbW92ZWRUYXJnZXQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc3RhcnQsIG1vdmVkVGFyZ2V0XSk7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChNYXRoLmh5cG90KHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLmhlaWdodCkgPiBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfHwgaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgZW5kID0gbW92ZWRUYXJnZXQ7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoYm9hcmQsICd3aXRoLXNlbGVjdGlvbicsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRyA9IGRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlY3RhbmdsZSwge1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvbk1vdmluZ0cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgLy8gaGFuZGxlIHRoZSBlbmQgb2YgY2xpY2sgc2VsZWN0XG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNTZXRTZWxlY3Rpb25Qb2ludGVyID1cbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgfHwgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCk7XG4gICAgICAgIGNvbnN0IGlzU2tpcCA9ICFpc01haW5Qb2ludGVyKGV2ZW50KSB8fCBpc0RyYWdnaW5nKGJvYXJkKSB8fCAhaXNTZXRTZWxlY3Rpb25Qb2ludGVyO1xuICAgICAgICBpZiAoaXNTa2lwKSB7XG4gICAgICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHsgYW5jaG9yOiBwb2ludCwgZm9jdXM6IHBvaW50IH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBzZWxlY3Rpb24pO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBlbGVtZW50IGlmIGluY2x1ZGVcbiAgICAgICAgYm9hcmQub3BlcmF0aW9ucy5mb3JFYWNoKG9wID0+IHtcbiAgICAgICAgICAgIGlmIChvcC50eXBlID09PSAncmVtb3ZlX25vZGUnKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBvcC5ub2RlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gdGVtcG9yYXJ5RWxlbWVudHMgPyB0ZW1wb3JhcnlFbGVtZW50cyA6IGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24oYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hpdEVsZW1lbnRXaXRoR3JvdXAgPSBlbGVtZW50cy5zb21lKGl0ZW0gPT4gaXRlbS5ncm91cElkKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEVsZW1lbnRzID0gWy4uLmdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBTZWxlY3Rpb24uaXNDb2xsYXBzZWQoYm9hcmQuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSGl0RWxlbWVudFdpdGhHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwZW5kaW5nRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdID0gWy4uLmVsZW1lbnRzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZWxlbWVudHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBzID0gZ2V0R3JvdXBCeUVsZW1lbnQoYm9hcmQsIGhpdEVsZW1lbnQsIHRydWUpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IGdldFNlbGVjdGVkR3JvdXBzKGJvYXJkLCBncm91cHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRWxlbWVudHMgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIHNlbGVjdGVkR3JvdXBzW3NlbGVjdGVkR3JvdXBzLmxlbmd0aCAtIDJdLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhoaXRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c0luR3JvdXAgPSBlbGVtZW50c0luSGlnaGVzdEdyb3VwLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gcGFydGlhbGx5IHNlbGVjdGVkIGVsZW1lbnRzIGJlbG9uZyB0byBhIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBzZWxlY3QgdGhvc2UgZWxlbWVudHMgYWxvbmcgd2l0aCB0aGUgaGl0IGVsZW1lbnRzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHNJbkdyb3VwLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdFbGVtZW50cy5wdXNoKC4uLnNlbGVjdGVkRWxlbWVudHNJbkdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0VsZW1lbnRzID0gZWxlbWVudHNJbkhpZ2hlc3RHcm91cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMuc3BsaWNlKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVuZGluZ0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnB1c2goLi4ucGVuZGluZ0VsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnNwbGljZShuZXdTZWxlY3RlZEVsZW1lbnRzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFsuLi5lbGVtZW50c107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNIaXRFbGVtZW50V2l0aEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKC4uLmdldEVsZW1lbnRzSW5Hcm91cEJ5RWxlbWVudChib2FyZCwgaXRlbSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkRWxlbWVudHMgPSBbLi4uZWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIaXRFbGVtZW50V2l0aEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvbGxhcHNlZCA9IFNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24hKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaCguLi5nZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQoYm9hcmQsIGl0ZW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZWxlbWVudHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBzID0gZ2V0R3JvdXBCeUVsZW1lbnQoYm9hcmQsIGhpdEVsZW1lbnQsIHRydWUpIGFzIFBsYWl0R3JvdXBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IGdldFNlbGVjdGVkR3JvdXBzKGJvYXJkLCBncm91cHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzID0gZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBzZWxlY3RlZEdyb3Vwc1tzZWxlY3RlZEdyb3Vwcy5sZW5ndGggLSAyXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzID0gZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBuZXdTZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBuZXdFbGVtZW50cztcbiAgICAgICAgICAgICAgICBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHID0gY3JlYXRlU2VsZWN0aW9uUmVjdGFuZ2xlRyhib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICYmIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRWxlbWVudHMuc29tZSgoYywgaW5kZXgpID0+IGMgIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50c1tpbmRleF0pKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gY3VycmVudFNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwge1xuICAgICAgICBpc011bHRpcGxlOiB0cnVlLFxuICAgICAgICBpc0Rpc2FibGVkU2VsZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
@@ -27,4 +27,4 @@ export function withViewport(board) {
27
27
  };
28
28
  return board;
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12aWV3cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3BsdWdpbnMvd2l0aC12aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBaUI7SUFDMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRTtRQUNELGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUMsRUFDRCxHQUFHLEVBQ0gsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ3BCLENBQUM7SUFFRixLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNsQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7UUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDckYsSUFBSSxrQkFBa0IsRUFBRTtZQUNwQixPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxhQUFhLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsY0FBYyxFQUFFLENBQUM7U0FDcEI7UUFDRCxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJy4uL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBpbml0aWFsaXplVmlld0JveCwgaXNGcm9tU2Nyb2xsaW5nLCBzZXRJc0Zyb21TY3JvbGxpbmcsIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0IH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gYm9hcmQ7XG5cbiAgICBjb25zdCB0aHJvdHRsZVVwZGF0ZSA9IGRlYm91bmNlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld0JveChib2FyZCk7XG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydE9mZnNldChib2FyZCk7XG4gICAgICAgIH0sXG4gICAgICAgIDUwMCxcbiAgICAgICAgeyBsZWFkaW5nOiB0cnVlIH1cbiAgICApO1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0Vmlld3BvcnQgPSBib2FyZC5vcGVyYXRpb25zLnNvbWUob3AgPT4gb3AudHlwZSA9PT0gJ3NldF92aWV3cG9ydCcpO1xuICAgICAgICBjb25zdCBpc09ubHlTZXRTZWxlY3Rpb24gPSBib2FyZC5vcGVyYXRpb25zLmV2ZXJ5KG9wID0+IG9wLnR5cGUgPT09ICdzZXRfc2VsZWN0aW9uJyk7XG4gICAgICAgIGlmIChpc09ubHlTZXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBvbkNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NldFZpZXdwb3J0ICYmIGlzRnJvbVNjcm9sbGluZyhib2FyZCkpIHtcbiAgICAgICAgICAgIHNldElzRnJvbVNjcm9sbGluZyhib2FyZCwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2V0Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVWaWV3Qm94KGJvYXJkKTtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm90dGxlVXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12aWV3cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3BsdWdpbnMvd2l0aC12aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBaUI7SUFDMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRTtRQUNELGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUMsRUFDRCxHQUFHLEVBQ0gsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ3BCLENBQUM7SUFFRixLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNsQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7UUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDckYsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksYUFBYSxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ0osY0FBYyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uJztcbmltcG9ydCB7IGluaXRpYWxpemVWaWV3Qm94LCBpc0Zyb21TY3JvbGxpbmcsIHNldElzRnJvbVNjcm9sbGluZywgdXBkYXRlVmlld3BvcnRPZmZzZXQgfSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBib2FyZDtcblxuICAgIGNvbnN0IHRocm90dGxlVXBkYXRlID0gZGVib3VuY2UoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGluaXRpYWxpemVWaWV3Qm94KGJvYXJkKTtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbiAgICAgICAgfSxcbiAgICAgICAgNTAwLFxuICAgICAgICB7IGxlYWRpbmc6IHRydWUgfVxuICAgICk7XG5cbiAgICBib2FyZC5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgaXNTZXRWaWV3cG9ydCA9IGJvYXJkLm9wZXJhdGlvbnMuc29tZShvcCA9PiBvcC50eXBlID09PSAnc2V0X3ZpZXdwb3J0Jyk7XG4gICAgICAgIGNvbnN0IGlzT25seVNldFNlbGVjdGlvbiA9IGJvYXJkLm9wZXJhdGlvbnMuZXZlcnkob3AgPT4gb3AudHlwZSA9PT0gJ3NldF9zZWxlY3Rpb24nKTtcbiAgICAgICAgaWYgKGlzT25seVNldFNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2V0Vmlld3BvcnQgJiYgaXNGcm9tU2Nyb2xsaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgc2V0SXNGcm9tU2Nyb2xsaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gb25DaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTZXRWaWV3cG9ydCkge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZVZpZXdCb3goYm9hcmQpO1xuICAgICAgICAgICAgdXBkYXRlVmlld3BvcnRPZmZzZXQoYm9hcmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3R0bGVVcGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
@@ -13,10 +13,10 @@ export class PlaitContextService {
13
13
  removeUploadingFile(fileEntry) {
14
14
  this.uploadingFiles = this.uploadingFiles.filter(file => file.url !== fileEntry.url);
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PlaitContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PlaitContextService }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: PlaitContextService, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService, decorators: [{
20
20
  type: Injectable
21
21
  }] });
22
22
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc2VydmljZXMvaW1hZ2UtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFWSxtQkFBYyxHQUFpQixFQUFFLENBQUM7S0FhN0M7SUFYRyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUFxQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekYsQ0FBQzs4R0FiUSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEltYWdlRW50cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBsYWl0Q29udGV4dFNlcnZpY2Uge1xuICAgIHByaXZhdGUgdXBsb2FkaW5nRmlsZXM6IEltYWdlRW50cnlbXSA9IFtdO1xuXG4gICAgZ2V0VXBsb2FkaW5nRmlsZSh1cmw6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRpbmdGaWxlcy5maW5kKGZpbGUgPT4gZmlsZS51cmwgPT09IHVybCk7XG4gICAgfVxuXG4gICAgc2V0VXBsb2FkaW5nRmlsZShmaWxlOiBJbWFnZUVudHJ5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZGluZ0ZpbGVzLnB1c2goZmlsZSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlVXBsb2FkaW5nRmlsZShmaWxlRW50cnk6IEltYWdlRW50cnkpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdGaWxlcyA9IHRoaXMudXBsb2FkaW5nRmlsZXMuZmlsdGVyKGZpbGUgPT4gZmlsZS51cmwgIT09IGZpbGVFbnRyeS51cmwpO1xuICAgIH1cbn1cbiJdfQ==
@@ -22,7 +22,7 @@ export function createMouseEvent(type, clientX = 0, clientY = 0, offsetX = 1, of
22
22
  const event = new MouseEvent(type, {
23
23
  bubbles: true,
24
24
  cancelable: true,
25
- composed: true,
25
+ composed: true, // Required for shadow DOM events.
26
26
  view: window,
27
27
  detail: 0,
28
28
  relatedTarget: null,
@@ -61,7 +61,7 @@ export function createPointerEvent(type, clientX = 0, clientY = 0, offsetX, offs
61
61
  const event = new PointerEvent(type, {
62
62
  bubbles: true,
63
63
  cancelable: true,
64
- composed: true,
64
+ composed: true, // Required for shadow DOM events.
65
65
  view: window,
66
66
  clientX,
67
67
  clientY,
@@ -101,7 +101,7 @@ export function createKeyboardEvent(type, keyCode = 0, key = '', modifiers = {})
101
101
  return new KeyboardEvent(type, {
102
102
  bubbles: true,
103
103
  cancelable: true,
104
- composed: true,
104
+ composed: true, // Required for shadow DOM events.
105
105
  view: window,
106
106
  keyCode: keyCode,
107
107
  key: key,
@@ -129,4 +129,4 @@ export function createModModifierKeys() {
129
129
  const modifiers = IS_MAC ? { meta: true } : { control: true };
130
130
  return modifiers;
131
131
  }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtb2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3Rlc3RpbmcvZmFrZS1ldmVudHMvZXZlbnQtb2JqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckQsOENBQThDO0FBQzlDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVsQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLElBQVksRUFDWixPQUFPLEdBQUcsQ0FBQyxFQUNYLE9BQU8sR0FBRyxDQUFDLEVBQ1gsT0FBTyxHQUFHLENBQUMsRUFDWCxPQUFPLEdBQUcsQ0FBQyxFQUNYLE1BQU0sR0FBRyxDQUFDLEVBQ1YsWUFBMEIsRUFBRTtJQUU1QixnRkFBZ0Y7SUFDaEYsOEVBQThFO0lBQzlFLCtFQUErRTtJQUMvRSxnRUFBZ0U7SUFDaEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUV4QixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsT0FBTyxFQUFFLElBQUk7UUFDYixVQUFVLEVBQUUsSUFBSTtRQUNoQixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxNQUFNO1FBQ1osTUFBTSxFQUFFLENBQUM7UUFDVCxhQUFhLEVBQUUsSUFBSTtRQUNuQixPQUFPO1FBQ1AsT0FBTztRQUNQLE9BQU87UUFDUCxPQUFPO1FBQ1AsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzFCLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRztRQUNyQixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDekIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3ZCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FB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QUUsU0FBUyxDQUFDLE9BQU87S0FDN0IsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUM3RixPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxLQUFZLEVBQUUsWUFBb0IsRUFBRSxLQUFVO0lBQy9FLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUI7SUFDakMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJU19NQUMgfSBmcm9tICcuLi8uLi91dGlscy9kb20vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTW9kaWZpZXJLZXlzIH0gZnJvbSAnLi4vdGVzdC1lbGVtZW50JztcblxuLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcyBmb3IgZXZlbnRzLiAqL1xubGV0IHVuaXF1ZUlkcyA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJyb3dzZXIgTW91c2VFdmVudCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vdXNlRXZlbnQoXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGNsaWVudFggPSAwLFxuICAgIGNsaWVudFkgPSAwLFxuICAgIG9mZnNldFggPSAxLFxuICAgIG9mZnNldFkgPSAxLFxuICAgIGJ1dHRvbiA9IDAsXG4gICAgbW9kaWZpZXJzOiBNb2RpZmllcktleXMgPSB7fVxuKSB7XG4gICAgLy8gTm90ZTogV2UgY2Fubm90IGRldGVybWluZSB0aGUgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGV2ZW50IGJhc2VkIG9uIHRoZSBzY3JlZW5cbiAgICAvLyBiZWNhdXNlIHRoZSBkaW1lbnNpb25zIGFuZCBwb3NpdGlvbiBvZiB0aGUgYnJvd3NlciB3aW5kb3cgYXJlIG5vdCBhdmFpbGFibGVcbiAgICAvLyBUbyBwcm92aWRlIHJlYXNvbmFibGUgYHNjcmVlblhgIGFuZCBgc2NyZWVuWWAgY29vcmRpbmF0ZXMsIHdlIHNpbXBseSB1c2UgdGhlXG4gICAgLy8gY2xpZW50IGNvb3JkaW5hdGVzIGFzIGlmIHRoZSBicm93c2VyIGlzIG9wZW5lZCBpbiBmdWxsc2NyZWVuLlxuICAgIGNvbnN0IHNjcmVlblggPSBjbGllbnRYO1xuICAgIGNvbnN0IHNjcmVlblkgPSBjbGllbnRZO1xuXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLCAvLyBSZXF1aXJlZCBmb3Igc2hhZG93IERPTSBldmVudHMuXG4gICAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgICAgZGV0YWlsOiAwLFxuICAgICAgICByZWxhdGVkVGFyZ2V0OiBudWxsLFxuICAgICAgICBzY3JlZW5YLFxuICAgICAgICBzY3JlZW5ZLFxuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZLFxuICAgICAgICBjdHJsS2V5OiBtb2RpZmllcnMuY29udHJvbCxcbiAgICAgICAgYWx0S2V5OiBtb2RpZmllcnMuYWx0LFxuICAgICAgICBzaGlmdEtleTogbW9kaWZpZXJzLnNoaWZ0LFxuICAgICAgICBtZXRhS2V5OiBtb2RpZmllcnMubWV0YSxcbiAgICAgICAgYnV0dG9uOiBidXR0b24sXG4gICAgICAgIGJ1dHRvbnM6IDFcbiAgICB9KTtcblxuICAgIC8vIFRoZSBgTW91c2VFdmVudGAgY29uc3RydWN0b3IgZG9lc24ndCBhbGxvdyB1cyB0byBwYXNzIHRoZXNlIHByb3BlcnRpZXMgaW50byB0aGUgY29uc3RydWN0b3IuXG4gICAgLy8gT3ZlcnJpZGUgdGhlbSB0byBgMWAsIGJlY2F1c2UgdGhleSdyZSB1c2VkIGZvciBmYWtlIHNjcmVlbiByZWFkZXIgZXZlbnQgZGV0ZWN0aW9uLlxuICAgIGlmIChvZmZzZXRYICE9IG51bGwpIHtcbiAgICAgICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnb2Zmc2V0WCcsIG9mZnNldFgpO1xuICAgIH1cblxuICAgIGlmIChvZmZzZXRZICE9IG51bGwpIHtcbiAgICAgICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnb2Zmc2V0WScsIG9mZnNldFkpO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJvd3NlciBgUG9pbnRlckV2ZW50YCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucy4gUG9pbnRlciBldmVudHNcbiAqIGJ5IGRlZmF1bHQgd2lsbCBhcHBlYXIgYXMgaWYgdGhleSBhcmUgdGhlIHByaW1hcnkgcG9pbnRlciBvZiB0aGVpciB0eXBlLlxuICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMyLyNkb20tcG9pbnRlcmV2ZW50LWlzcHJpbWFyeS5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgaWYgcG9pbnRlciBldmVudHMgZm9yIGEgbXVsdGktdG91Y2ggaW50ZXJhY3Rpb24gYXJlIGNyZWF0ZWQsIHRoZSBub24tcHJpbWFyeVxuICogcG9pbnRlciB0b3VjaGVzIHdvdWxkIG5lZWQgdG8gYmUgcmVwcmVzZW50ZWQgYnkgbm9uLXByaW1hcnkgcG9pbnRlciBldmVudHMuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9pbnRlckV2ZW50KFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjbGllbnRYID0gMCxcbiAgICBjbGllbnRZID0gMCxcbiAgICBvZmZzZXRYPzogbnVtYmVyLFxuICAgIG9mZnNldFk/OiBudW1iZXIsXG4gICAgb3B0aW9uczogUG9pbnRlckV2ZW50SW5pdCA9IHsgaXNQcmltYXJ5OiB0cnVlIH1cbikge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IFBvaW50ZXJFdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLCAvLyBSZXF1aXJlZCBmb3Igc2hhZG93IERPTSBldmVudHMuXG4gICAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WSxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuXG4gICAgaWYgKG9mZnNldFggIT0gbnVsbCkge1xuICAgICAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICdvZmZzZXRYJywgb2Zmc2V0WCk7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldFkgIT0gbnVsbCkge1xuICAgICAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICdvZmZzZXRZJywgb2Zmc2V0WSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBicm93c2VyIFRvdWNoRXZlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIHBvaW50ZXIgY29vcmRpbmF0ZXMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb3VjaEV2ZW50KHR5cGU6IHN0cmluZywgcGFnZVggPSAwLCBwYWdlWSA9IDAsIGNsaWVudFggPSAwLCBjbGllbnRZID0gMCkge1xuICAgIC8vIFdlIGNhbm5vdCB1c2UgdGhlIGBUb3VjaEV2ZW50YCBvciBgVG91Y2hgIGJlY2F1c2UgRmlyZWZveCBhbmQgU2FmYXJpIGxhY2sgc3VwcG9ydC5cbiAgICAvLyBUT0RPOiBTd2l0Y2ggdG8gdGhlIGNvbnN0cnVjdG9yIEFQSSB3aGVuIGl0IGlzIGF2YWlsYWJsZSBmb3IgRmlyZWZveCBhbmQgU2FmYXJpLlxuICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1VJRXZlbnQnKTtcbiAgICBjb25zdCB0b3VjaERldGFpbHMgPSB7IHBhZ2VYLCBwYWdlWSwgY2xpZW50WCwgY2xpZW50WSwgaWRlbnRpZmllcjogdW5pcXVlSWRzKysgfTtcblxuICAgIC8vIFRTMy42IHJlbW92ZXMgdGhlIGluaXRVSUV2ZW50IG1ldGhvZCBhbmQgc3VnZ2VzdHMgcG9ydGluZyB0byBcIm5ldyBVSUV2ZW50KClcIi5cbiAgICAoZXZlbnQgYXMgYW55KS5pbml0VUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB3aW5kb3csIDApO1xuXG4gICAgLy8gTW9zdCBvZiB0aGUgYnJvd3NlcnMgZG9uJ3QgaGF2ZSBhIFwiaW5pdFRvdWNoRXZlbnRcIiBtZXRob2QgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmVcbiAgICAvLyB0aGUgdG91Y2ggZGV0YWlscy5cbiAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICd0b3VjaGVzJywgW3RvdWNoRGV0YWlsc10pO1xuICAgIGRlZmluZVJlYWRvbmx5RXZlbnRQcm9wZXJ0eShldmVudCwgJ3RhcmdldFRvdWNoZXMnLCBbdG91Y2hEZXRhaWxzXSk7XG4gICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnY2hhbmdlZFRvdWNoZXMnLCBbdG91Y2hEZXRhaWxzXSk7XG5cbiAgICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGtleWJvYXJkIGV2ZW50IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgYW5kIG1vZGlmaWVycy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUtleWJvYXJkRXZlbnQodHlwZTogc3RyaW5nLCBrZXlDb2RlOiBudW1iZXIgPSAwLCBrZXk6IHN0cmluZyA9ICcnLCBtb2RpZmllcnM6IE1vZGlmaWVyS2V5cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBLZXlib2FyZEV2ZW50KHR5cGUsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgY29tcG9zZWQ6IHRydWUsIC8vIFJlcXVpcmVkIGZvciBzaGFkb3cgRE9NIGV2ZW50cy5cbiAgICAgICAgdmlldzogd2luZG93LFxuICAgICAgICBrZXlDb2RlOiBrZXlDb2RlLFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgc2hpZnRLZXk6IG1vZGlmaWVycy5zaGlmdCxcbiAgICAgICAgbWV0YUtleTogbW9kaWZpZXJzLm1ldGEsXG4gICAgICAgIGFsdEtleTogbW9kaWZpZXJzLmFsdCxcbiAgICAgICAgY3RybEtleTogbW9kaWZpZXJzLmNvbnRyb2xcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZmFrZSBldmVudCBvYmplY3Qgd2l0aCBhbnkgZGVzaXJlZCBldmVudCB0eXBlLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmFrZUV2ZW50KHR5cGU6IHN0cmluZywgYnViYmxlcyA9IGZhbHNlLCBjYW5jZWxhYmxlID0gdHJ1ZSwgY29tcG9zZWQgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBFdmVudCh0eXBlLCB7IGJ1YmJsZXMsIGNhbmNlbGFibGUsIGNvbXBvc2VkIH0pO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSByZWFkb25seSBwcm9wZXJ0eSBvbiB0aGUgZ2l2ZW4gZXZlbnQgb2JqZWN0LiBSZWFkb25seSBwcm9wZXJ0aWVzIG9uIGFuIGV2ZW50IG9iamVjdFxuICogYXJlIGFsd2F5cyBzZXQgYXMgY29uZmlndXJhYmxlIGFzIHRoYXQgbWF0Y2hlcyBkZWZhdWx0IHJlYWRvbmx5IHByb3BlcnRpZXMgZm9yIERPTSBldmVudCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQ6IEV2ZW50LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgcHJvcGVydHlOYW1lLCB7IGdldDogKCkgPT4gdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZE1vZGlmaWVyS2V5cygpIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBJU19NQUMgPyB7IG1ldGE6IHRydWUgfSA6IHsgY29udHJvbDogdHJ1ZSB9O1xuICAgIHJldHVybiBtb2RpZmllcnM7XG59XG4iXX0=
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtb2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3Rlc3RpbmcvZmFrZS1ldmVudHMvZXZlbnQtb2JqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckQsOENBQThDO0FBQzlDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVsQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLElBQVksRUFDWixPQUFPLEdBQUcsQ0FBQyxFQUNYLE9BQU8sR0FBRyxDQUFDLEVBQ1gsT0FBTyxHQUFHLENBQUMsRUFDWCxPQUFPLEdBQUcsQ0FBQyxFQUNYLE1BQU0sR0FBRyxDQUFDLEVBQ1YsWUFBMEIsRUFBRTtJQUU1QixnRkFBZ0Y7SUFDaEYsOEVBQThFO0lBQzlFLCtFQUErRTtJQUMvRSxnRUFBZ0U7SUFDaEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUV4QixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsT0FBTyxFQUFFLElBQUk7UUFDYixVQUFVLEVBQUUsSUFBSTtRQUNoQixRQUFRLEVBQUUsSUFBSSxFQUFFLGtDQUFrQztRQUNsRCxJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxDQUFDO1FBQ1QsYUFBYSxFQUFFLElBQUk7UUFDbkIsT0FBTztRQUNQLE9BQU87UUFDUCxPQUFPO1FBQ1AsT0FBTztRQUNQLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDckIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLO1FBQ3pCLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN2QixNQUFNLEVBQUUs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QUFLO1FBQ3pCLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN2QixNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDckIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO0tBQzdCLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVksRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDN0YsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsMkJBQTJCLENBQUMsS0FBWSxFQUFFLFlBQW9CLEVBQUUsS0FBVTtJQUMvRSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgSVNfTUFDIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tL2Vudmlyb25tZW50JztcbmltcG9ydCB7IE1vZGlmaWVyS2V5cyB9IGZyb20gJy4uL3Rlc3QtZWxlbWVudCc7XG5cbi8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRHMgZm9yIGV2ZW50cy4gKi9cbmxldCB1bmlxdWVJZHMgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBicm93c2VyIE1vdXNlRXZlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb3VzZUV2ZW50KFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjbGllbnRYID0gMCxcbiAgICBjbGllbnRZID0gMCxcbiAgICBvZmZzZXRYID0gMSxcbiAgICBvZmZzZXRZID0gMSxcbiAgICBidXR0b24gPSAwLFxuICAgIG1vZGlmaWVyczogTW9kaWZpZXJLZXlzID0ge31cbikge1xuICAgIC8vIE5vdGU6IFdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBtb3VzZSBldmVudCBiYXNlZCBvbiB0aGUgc2NyZWVuXG4gICAgLy8gYmVjYXVzZSB0aGUgZGltZW5zaW9ucyBhbmQgcG9zaXRpb24gb2YgdGhlIGJyb3dzZXIgd2luZG93IGFyZSBub3QgYXZhaWxhYmxlXG4gICAgLy8gVG8gcHJvdmlkZSByZWFzb25hYmxlIGBzY3JlZW5YYCBhbmQgYHNjcmVlbllgIGNvb3JkaW5hdGVzLCB3ZSBzaW1wbHkgdXNlIHRoZVxuICAgIC8vIGNsaWVudCBjb29yZGluYXRlcyBhcyBpZiB0aGUgYnJvd3NlciBpcyBvcGVuZWQgaW4gZnVsbHNjcmVlbi5cbiAgICBjb25zdCBzY3JlZW5YID0gY2xpZW50WDtcbiAgICBjb25zdCBzY3JlZW5ZID0gY2xpZW50WTtcblxuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSwgLy8gUmVxdWlyZWQgZm9yIHNoYWRvdyBET00gZXZlbnRzLlxuICAgICAgICB2aWV3OiB3aW5kb3csXG4gICAgICAgIGRldGFpbDogMCxcbiAgICAgICAgcmVsYXRlZFRhcmdldDogbnVsbCxcbiAgICAgICAgc2NyZWVuWCxcbiAgICAgICAgc2NyZWVuWSxcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WSxcbiAgICAgICAgY3RybEtleTogbW9kaWZpZXJzLmNvbnRyb2wsXG4gICAgICAgIGFsdEtleTogbW9kaWZpZXJzLmFsdCxcbiAgICAgICAgc2hpZnRLZXk6IG1vZGlmaWVycy5zaGlmdCxcbiAgICAgICAgbWV0YUtleTogbW9kaWZpZXJzLm1ldGEsXG4gICAgICAgIGJ1dHRvbjogYnV0dG9uLFxuICAgICAgICBidXR0b25zOiAxXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgYE1vdXNlRXZlbnRgIGNvbnN0cnVjdG9yIGRvZXNuJ3QgYWxsb3cgdXMgdG8gcGFzcyB0aGVzZSBwcm9wZXJ0aWVzIGludG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgIC8vIE92ZXJyaWRlIHRoZW0gdG8gYDFgLCBiZWNhdXNlIHRoZXkncmUgdXNlZCBmb3IgZmFrZSBzY3JlZW4gcmVhZGVyIGV2ZW50IGRldGVjdGlvbi5cbiAgICBpZiAob2Zmc2V0WCAhPSBudWxsKSB7XG4gICAgICAgIGRlZmluZVJlYWRvbmx5RXZlbnRQcm9wZXJ0eShldmVudCwgJ29mZnNldFgnLCBvZmZzZXRYKTtcbiAgICB9XG5cbiAgICBpZiAob2Zmc2V0WSAhPSBudWxsKSB7XG4gICAgICAgIGRlZmluZVJlYWRvbmx5RXZlbnRQcm9wZXJ0eShldmVudCwgJ29mZnNldFknLCBvZmZzZXRZKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJyb3dzZXIgYFBvaW50ZXJFdmVudGAgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuIFBvaW50ZXIgZXZlbnRzXG4gKiBieSBkZWZhdWx0IHdpbGwgYXBwZWFyIGFzIGlmIHRoZXkgYXJlIHRoZSBwcmltYXJ5IHBvaW50ZXIgb2YgdGhlaXIgdHlwZS5cbiAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wb2ludGVyZXZlbnRzMi8jZG9tLXBvaW50ZXJldmVudC1pc3ByaW1hcnkuXG4gKlxuICogRm9yIGV4YW1wbGUsIGlmIHBvaW50ZXIgZXZlbnRzIGZvciBhIG11bHRpLXRvdWNoIGludGVyYWN0aW9uIGFyZSBjcmVhdGVkLCB0aGUgbm9uLXByaW1hcnlcbiAqIHBvaW50ZXIgdG91Y2hlcyB3b3VsZCBuZWVkIHRvIGJlIHJlcHJlc2VudGVkIGJ5IG5vbi1wcmltYXJ5IHBvaW50ZXIgZXZlbnRzLlxuICpcbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBvaW50ZXJFdmVudChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgY2xpZW50WCA9IDAsXG4gICAgY2xpZW50WSA9IDAsXG4gICAgb2Zmc2V0WD86IG51bWJlcixcbiAgICBvZmZzZXRZPzogbnVtYmVyLFxuICAgIG9wdGlvbnM6IFBvaW50ZXJFdmVudEluaXQgPSB7IGlzUHJpbWFyeTogdHJ1ZSB9XG4pIHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBQb2ludGVyRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSwgLy8gUmVxdWlyZWQgZm9yIHNoYWRvdyBET00gZXZlbnRzLlxuICAgICAgICB2aWV3OiB3aW5kb3csXG4gICAgICAgIGNsaWVudFgsXG4gICAgICAgIGNsaWVudFksXG4gICAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcblxuICAgIGlmIChvZmZzZXRYICE9IG51bGwpIHtcbiAgICAgICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnb2Zmc2V0WCcsIG9mZnNldFgpO1xuICAgIH1cblxuICAgIGlmIChvZmZzZXRZICE9IG51bGwpIHtcbiAgICAgICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnb2Zmc2V0WScsIG9mZnNldFkpO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJvd3NlciBUb3VjaEV2ZW50IHdpdGggdGhlIHNwZWNpZmllZCBwb2ludGVyIGNvb3JkaW5hdGVzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG91Y2hFdmVudCh0eXBlOiBzdHJpbmcsIHBhZ2VYID0gMCwgcGFnZVkgPSAwLCBjbGllbnRYID0gMCwgY2xpZW50WSA9IDApIHtcbiAgICAvLyBXZSBjYW5ub3QgdXNlIHRoZSBgVG91Y2hFdmVudGAgb3IgYFRvdWNoYCBiZWNhdXNlIEZpcmVmb3ggYW5kIFNhZmFyaSBsYWNrIHN1cHBvcnQuXG4gICAgLy8gVE9ETzogU3dpdGNoIHRvIHRoZSBjb25zdHJ1Y3RvciBBUEkgd2hlbiBpdCBpcyBhdmFpbGFibGUgZm9yIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdVSUV2ZW50Jyk7XG4gICAgY29uc3QgdG91Y2hEZXRhaWxzID0geyBwYWdlWCwgcGFnZVksIGNsaWVudFgsIGNsaWVudFksIGlkZW50aWZpZXI6IHVuaXF1ZUlkcysrIH07XG5cbiAgICAvLyBUUzMuNiByZW1vdmVzIHRoZSBpbml0VUlFdmVudCBtZXRob2QgYW5kIHN1Z2dlc3RzIHBvcnRpbmcgdG8gXCJuZXcgVUlFdmVudCgpXCIuXG4gICAgKGV2ZW50IGFzIGFueSkuaW5pdFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwKTtcblxuICAgIC8vIE1vc3Qgb2YgdGhlIGJyb3dzZXJzIGRvbid0IGhhdmUgYSBcImluaXRUb3VjaEV2ZW50XCIgbWV0aG9kIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lXG4gICAgLy8gdGhlIHRvdWNoIGRldGFpbHMuXG4gICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAndG91Y2hlcycsIFt0b3VjaERldGFpbHNdKTtcbiAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICd0YXJnZXRUb3VjaGVzJywgW3RvdWNoRGV0YWlsc10pO1xuICAgIGRlZmluZVJlYWRvbmx5RXZlbnRQcm9wZXJ0eShldmVudCwgJ2NoYW5nZWRUb3VjaGVzJywgW3RvdWNoRGV0YWlsc10pO1xuXG4gICAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBrZXlib2FyZCBldmVudCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFuZCBtb2RpZmllcnMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXlib2FyZEV2ZW50KHR5cGU6IHN0cmluZywga2V5Q29kZTogbnVtYmVyID0gMCwga2V5OiBzdHJpbmcgPSAnJywgbW9kaWZpZXJzOiBNb2RpZmllcktleXMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLCAvLyBSZXF1aXJlZCBmb3Igc2hhZG93IERPTSBldmVudHMuXG4gICAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgICAga2V5Q29kZToga2V5Q29kZSxcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIHNoaWZ0S2V5OiBtb2RpZmllcnMuc2hpZnQsXG4gICAgICAgIG1ldGFLZXk6IG1vZGlmaWVycy5tZXRhLFxuICAgICAgICBhbHRLZXk6IG1vZGlmaWVycy5hbHQsXG4gICAgICAgIGN0cmxLZXk6IG1vZGlmaWVycy5jb250cm9sXG4gICAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZha2UgZXZlbnQgb2JqZWN0IHdpdGggYW55IGRlc2lyZWQgZXZlbnQgdHlwZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZha2VFdmVudCh0eXBlOiBzdHJpbmcsIGJ1YmJsZXMgPSBmYWxzZSwgY2FuY2VsYWJsZSA9IHRydWUsIGNvbXBvc2VkID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgRXZlbnQodHlwZSwgeyBidWJibGVzLCBjYW5jZWxhYmxlLCBjb21wb3NlZCB9KTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgcmVhZG9ubHkgcHJvcGVydHkgb24gdGhlIGdpdmVuIGV2ZW50IG9iamVjdC4gUmVhZG9ubHkgcHJvcGVydGllcyBvbiBhbiBldmVudCBvYmplY3RcbiAqIGFyZSBhbHdheXMgc2V0IGFzIGNvbmZpZ3VyYWJsZSBhcyB0aGF0IG1hdGNoZXMgZGVmYXVsdCByZWFkb25seSBwcm9wZXJ0aWVzIGZvciBET00gZXZlbnQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50OiBFdmVudCwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsIHByb3BlcnR5TmFtZSwgeyBnZXQ6ICgpID0+IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2RNb2RpZmllcktleXMoKSB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gSVNfTUFDID8geyBtZXRhOiB0cnVlIH0gOiB7IGNvbnRyb2w6IHRydWUgfTtcbiAgICByZXR1cm4gbW9kaWZpZXJzO1xufVxuIl19
@@ -117,4 +117,4 @@ export const BoardTransforms = {
117
117
  updateThemeColor,
118
118
  fitViewportWidth
119
119
  };
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR25DLFNBQVMsY0FBYyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxJQUFhO0lBQ3hFLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSTtRQUNKLFdBQVc7S0FDZCxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFzQyxLQUFpQixFQUFFLE9BQVUsRUFBRSxFQUFFO0lBQzdGLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPO1FBQUUsT0FBTztJQUN0QyxLQUFLLENBQUMsT0FBTyxHQUFH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S0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLElBQW9CO0lBQzdELElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7SUFDMUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLG1CQUFtQixDQUFFLEtBQWlDLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDOUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxXQUFXO0lBQ1gsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixnQkFBZ0I7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lQ29sb3JNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnRlcic7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL21hdGgnO1xuaW1wb3J0IHtcbiAgICBjbGFtcFpvb21MZXZlbCxcbiAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24sXG4gICAgZ2V0Vmlld0JveENlbnRlclBvaW50LFxuICAgIGdldFZpZXdwb3J0T3JpZ2luYXRpb24sXG4gICAgaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyXG59IGZyb20gJy4uL3V0aWxzL3ZpZXdwb3J0JztcbmltcG9ydCB7IEJPQVJEX1RPX0NPTVBPTkVOVCB9IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBzZXRWaWV3cG9ydCB9IGZyb20gJy4vdmlld3BvcnQnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgZ2V0UmVhbFNjcm9sbEJhcldpZHRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5pbXBvcnQgeyBGaXRWaWV3cG9ydE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0JztcblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9yaWdpbmF0aW9uOiBQb2ludCwgem9vbT86IG51bWJlcikge1xuICAgIHpvb20gPSB6b29tID8/IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgc2V0Vmlld3BvcnQoYm9hcmQsIHtcbiAgICAgICAgLi4uYm9hcmQudmlld3BvcnQsXG4gICAgICAgIHpvb20sXG4gICAgICAgIG9yaWdpbmF0aW9uXG4gICAgfSk7XG4gICAgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbn1cblxuY29uc3QgdXBkYXRlUG9pbnRlclR5cGUgPSA8VCBleHRlbmRzIHN0cmluZyA9IFBsYWl0UG9pbnRlclR5cGU+KGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludGVyOiBUKSA9PiB7XG4gICAgaWYgKGJvYXJkLnBvaW50ZXIgPT09IHBvaW50ZXIpIHJldHVybjtcbiAgICBib2FyZC5wb2ludGVyID0gcG9pbnRlcjtcbiAgICBjb25zdCBib2FyZENvbXBvbmVudCA9IEJPQVJEX1RPX0NPTVBPTkVOVC5nZXQoYm9hcmQpO1xuICAgIGJvYXJkQ29tcG9uZW50Py5tYXJrRm9yQ2hlY2soKTtcbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZVpvb20oYm9hcmQ6IFBsYWl0Qm9hcmQsIG5ld1pvb206IG51bWJlciwgaXNDZW50ZXIgPSB0cnVlKSB7XG4gICAgbmV3Wm9vbSA9IGNsYW1wWm9vbUxldmVsKG5ld1pvb20pO1xuXG4gICAgY29uc3QgbW92aW5nUG9pbnQgPSBQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50SW5Cb2FyZChib2FyZCk7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRSZWN0ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgZm9jdXNQb2ludCA9IFtib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLyAyLCBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMl07XG5cbiAgICBpZiAoIWlzQ2VudGVyICYmIG1vdmluZ1BvaW50ICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKG1vdmluZ1BvaW50WzBdLCBtb3ZpbmdQb2ludFsxXSwgbmF0aXZlRWxlbWVudFJlY3QpID09PSAwKSB7XG4gICAgICAgIGZvY3VzUG9pbnQgPSBbbW92aW5nUG9pbnRbMF0gLSBuYXRpdmVFbGVtZW50UmVjdC54LCBtb3ZpbmdQb2ludFsxXSAtIG5hdGl2ZUVsZW1lbnRSZWN0LnldO1xuICAgIH1cblxuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbihib2FyZCk7XG4gICAgY29uc3QgY2VudGVyWCA9IG9yaWdpbmF0aW9uIVswXSArIGZvY3VzUG9pbnRbMF0gLyB6b29tO1xuICAgIGNvbnN0IGNlbnRlclkgPSBvcmlnaW5hdGlvbiFbMV0gKyBmb2N1c1BvaW50WzFdIC8gem9vbTtcbiAgICBjb25zdCBuZXdPcmlnaW5hdGlvbiA9IFtjZW50ZXJYIC0gZm9jdXNQb2ludFswXSAvIG5ld1pvb20sIGNlbnRlclkgLSBmb2N1c1BvaW50WzFdIC8gbmV3Wm9vbV0gYXMgUG9pbnQ7XG4gICAgdXBkYXRlVmlld3BvcnQoYm9hcmQsIG5ld09yaWdpbmF0aW9uLCBuZXdab29tKTtcbn1cblxuZnVuY3Rpb24gZml0Vmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBsZXQgc2Nyb2xsQmFyV2lkdGggPSBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgoYm9hcmQpO1xuXG4gICAgY29uc3QgYm9hcmRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxlbWVudEhvc3RCb3ggPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBib2FyZC5jaGlsZHJlbiwgdHJ1ZSk7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgYXV0b0ZpdFBhZGRpbmcgPSAxNjtcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gYm9hcmRDb250YWluZXJSZWN0LndpZHRoIC0gMiAqIGF1dG9GaXRQYWRkaW5nO1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gYm9hcmRDb250YWluZXJSZWN0LmhlaWdodCAtIDIgKiBhdXRvRml0UGFkZGluZztcblxuICAgIGxldCBuZXdab29tID0gem9vbTtcbiAgICBpZiAodmlld3BvcnRXaWR0aCA8IGVsZW1lbnRIb3N0Qm94LndpZHRoIHx8IHZpZXdwb3J0SGVpZ2h0IDwgZWxlbWVudEhvc3RCb3guaGVpZ2h0KSB7XG4gICAgICAgIG5ld1pvb20gPSBNYXRoLm1pbih2aWV3cG9ydFdpZHRoIC8gZWxlbWVudEhvc3RCb3gud2lkdGgsIHZpZXdwb3J0SGVpZ2h0IC8gZWxlbWVudEhvc3RCb3guaGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdab29tID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBjZW50ZXJQb2ludCA9IGdldFZpZXdCb3hDZW50ZXJQb2ludChib2FyZCk7XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbXG4gICAgICAgIGNlbnRlclBvaW50WzBdIC0gYm9hcmRDb250YWluZXJSZWN0LndpZHRoIC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tLFxuICAgICAgICBjZW50ZXJQb2ludFsxXSAtIGJvYXJkQ29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIHpvb21cbiAgICBdIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbmZ1bmN0aW9uIGZpdFZpZXdwb3J0V2lkdGgoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wdGlvbnM6IEZpdFZpZXdwb3J0T3B0aW9ucykge1xuICAgIGxldCBzY3JvbGxCYXJXaWR0aCA9IGdldFJlYWxTY3JvbGxCYXJXaWR0aChib2FyZCk7XG5cbiAgICBjb25zdCBib2FyZENvbnRhaW5lciA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlID0gYm9hcmRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBsZXQgZmluYWxXaWR0aCA9IDA7XG4gICAgaWYgKG9wdGlvbnMubWF4V2lkdGgpIHtcbiAgICAgICAgZmluYWxXaWR0aCA9IG9wdGlvbnMubWF4V2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmluYWxXaWR0aCA9IGJvYXJkQ29udGFpbmVyUmVjdGFuZ2xlLndpZHRoO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRIb3N0Qm94ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGZpbmFsV2lkdGggLSAyICogb3B0aW9ucy5hdXRvRml0UGFkZGluZztcbiAgICBsZXQgbmV3Wm9vbSA9IDA7XG4gICAgaWYgKGNvbnRlbnRXaWR0aCA8IGVsZW1lbnRIb3N0Qm94LndpZHRoKSB7XG4gICAgICAgIG5ld1pvb20gPSBNYXRoLm1pbihjb250ZW50V2lkdGggLyBlbGVtZW50SG9zdEJveC53aWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgfVxuXG4gICAgbGV0IGZpbmFsSGVpZ2h0ID0gZWxlbWVudEhvc3RCb3guaGVpZ2h0ICogbmV3Wm9vbSArIDIgKiBvcHRpb25zLmF1dG9GaXRQYWRkaW5nO1xuICAgIGlmIChmaW5hbEhlaWdodCA+IG9wdGlvbnMubGltaXRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWwgPSBib2FyZENvbnRhaW5lci5jbG9zZXN0KGAuJHtvcHRpb25zLmNvbnRhaW5lckNsYXNzfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb250YWluZXJFbC5zdHlsZS5oZWlnaHQgPSBgJHtmaW5hbEhlaWdodH1weGA7XG4gICAgICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lcihib2FyZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmluYWxIZWlnaHQgPSBvcHRpb25zLmxpbWl0SGVpZ2h0O1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlclggPSBlbGVtZW50SG9zdEJveC54ICsgZWxlbWVudEhvc3RCb3gud2lkdGggLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSBlbGVtZW50SG9zdEJveC55ICsgZWxlbWVudEhvc3RCb3guaGVpZ2h0IC8gMjtcbiAgICBjb25zdCBuZXdPcmlnaW5hdGlvbiA9IFtcbiAgICAgICAgY2VudGVyWCAtIGZpbmFsV2lkdGggLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIG5ld1pvb20sXG4gICAgICAgIGNlbnRlclkgLSBmaW5hbEhlaWdodCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gbmV3Wm9vbVxuICAgIF0gYXMgUG9pbnQ7XG4gICAgdXBkYXRlVmlld3BvcnQoYm9hcmQsIG5ld09yaWdpbmF0aW9uLCBuZXdab29tKTtcbn1cblxuLyoqXG4gKiBhcHBseSB0aGVtZSB0byBldmVyeSBlbGVtZW50IChyZW1vdmUgZWxlbWVudCBjdXN0b20gcHJvcGVydGllcylcbiAqIGludm9rZSBhcHBseVRoZW1lQ29sb3JcbiAqL1xuZnVuY3Rpb24gdXBkYXRlVGhlbWVDb2xvcihib2FyZDogUGxhaXRCb2FyZCwgbW9kZTogVGhlbWVDb2xvck1vZGUpIHtcbiAgICBtb2RlID0gbW9kZSA/PyBib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZTtcbiAgICBzZXRUaGVtZShib2FyZCwgeyB0aGVtZUNvbG9yTW9kZTogbW9kZSB9KTtcblxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24oKGJvYXJkIGFzIHVua25vd24pIGFzIFBsYWl0RWxlbWVudCwgZWxlbWVudCA9PiB7XG4gICAgICAgIGJvYXJkLmFwcGx5VGhlbWUoZWxlbWVudCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBCb2FyZFRyYW5zZm9ybXMgPSB7XG4gICAgdXBkYXRlUG9pbnRlclR5cGUsXG4gICAgdXBkYXRlVmlld3BvcnQsXG4gICAgZml0Vmlld3BvcnQsXG4gICAgdXBkYXRlWm9vbSxcbiAgICB1cGRhdGVUaGVtZUNvbG9yLFxuICAgIGZpdFZpZXdwb3J0V2lkdGhcbn07XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR25DLFNBQVMsY0FBYyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxJQUFhO0lBQ3hFLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSTtRQUNKLFdBQVc7S0FDZCxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFzQyxLQUFpQixFQUFFLE9BQVUsRUFBRSxFQUFFO0lBQzdGLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPO1FBQUUsT0FBTztJQUN0QyxLQUFLLENBQUMsT0FBTyxHQUFH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LE9BQU8sR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxjQUFjLEdBQUcsQ0FBQyxHQUFHLE9BQU87S0FDNUQsQ0FBQztJQUNYLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsSUFBb0I7SUFDN0QsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUMxQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUMsbUJBQW1CLENBQUUsS0FBaUMsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM5RCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVc7SUFDWCxVQUFVO0lBQ1YsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtDQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVDb2xvck1vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RoZW1lJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9lbGVtZW50JztcbmltcG9ydCB7IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMvbWF0aCc7XG5pbXBvcnQge1xuICAgIGNsYW1wWm9vbUxldmVsLFxuICAgIGNsZWFyVmlld3BvcnRPcmlnaW5hdGlvbixcbiAgICBnZXRWaWV3Qm94Q2VudGVyUG9pbnQsXG4gICAgZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbixcbiAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXJcbn0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgQk9BUkRfVE9fQ09NUE9ORU5UIH0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IHNldFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uLCBnZXRSZWFsU2Nyb2xsQmFyV2lkdGggfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgc2V0VGhlbWUgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IEZpdFZpZXdwb3J0T3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCwgb3JpZ2luYXRpb246IFBvaW50LCB6b29tPzogbnVtYmVyKSB7XG4gICAgem9vbSA9IHpvb20gPz8gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBzZXRWaWV3cG9ydChib2FyZCwge1xuICAgICAgICAuLi5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgem9vbSxcbiAgICAgICAgb3JpZ2luYXRpb25cbiAgICB9KTtcbiAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xufVxuXG5jb25zdCB1cGRhdGVQb2ludGVyVHlwZSA9IDxUIGV4dGVuZHMgc3RyaW5nID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFQpID0+IHtcbiAgICBpZiAoYm9hcmQucG9pbnRlciA9PT0gcG9pbnRlcikgcmV0dXJuO1xuICAgIGJvYXJkLnBvaW50ZXIgPSBwb2ludGVyO1xuICAgIGNvbnN0IGJvYXJkQ29tcG9uZW50ID0gQk9BUkRfVE9fQ09NUE9ORU5ULmdldChib2FyZCk7XG4gICAgYm9hcmRDb21wb25lbnQ/Lm1hcmtGb3JDaGVjaygpO1xufTtcblxuZnVuY3Rpb24gdXBkYXRlWm9vbShib2FyZDogUGxhaXRCb2FyZCwgbmV3Wm9vbTogbnVtYmVyLCBpc0NlbnRlciA9IHRydWUpIHtcbiAgICBuZXdab29tID0gY2xhbXBab29tTGV2ZWwobmV3Wm9vbSk7XG5cbiAgICBjb25zdCBtb3ZpbmdQb2ludCA9IFBsYWl0Qm9hcmQuZ2V0TW92aW5nUG9pbnRJbkJvYXJkKGJvYXJkKTtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCk7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudFJlY3QgPSBuYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxldCBmb2N1c1BvaW50ID0gW2JvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAvIDIsIGJvYXJkQ29udGFpbmVyUmVjdC5oZWlnaHQgLyAyXTtcblxuICAgIGlmICghaXNDZW50ZXIgJiYgbW92aW5nUG9pbnQgJiYgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUobW92aW5nUG9pbnRbMF0sIG1vdmluZ1BvaW50WzFdLCBuYXRpdmVFbGVtZW50UmVjdCkgPT09IDApIHtcbiAgICAgICAgZm9jdXNQb2ludCA9IFttb3ZpbmdQb2ludFswXSAtIG5hdGl2ZUVsZW1lbnRSZWN0LngsIG1vdmluZ1BvaW50WzFdIC0gbmF0aXZlRWxlbWVudFJlY3QueV07XG4gICAgfVxuXG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3Qgb3JpZ2luYXRpb24gPSBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbiAgICBjb25zdCBjZW50ZXJYID0gb3JpZ2luYXRpb24hWzBdICsgZm9jdXNQb2ludFswXSAvIHpvb207XG4gICAgY29uc3QgY2VudGVyWSA9IG9yaWdpbmF0aW9uIVsxXSArIGZvY3VzUG9pbnRbMV0gLyB6b29tO1xuICAgIGNvbnN0IG5ld09yaWdpbmF0aW9uID0gW2NlbnRlclggLSBmb2N1c1BvaW50WzBdIC8gbmV3Wm9vbSwgY2VudGVyWSAtIGZvY3VzUG9pbnRbMV0gLyBuZXdab29tXSBhcyBQb2ludDtcbiAgICB1cGRhdGVWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG5mdW5jdGlvbiBmaXRWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGxldCBzY3JvbGxCYXJXaWR0aCA9IGdldFJlYWxTY3JvbGxCYXJXaWR0aChib2FyZCk7XG5cbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbGVtZW50SG9zdEJveCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBhdXRvRml0UGFkZGluZyA9IDE2O1xuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSBib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLSAyICogYXV0b0ZpdFBhZGRpbmc7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC0gMiAqIGF1dG9GaXRQYWRkaW5nO1xuXG4gICAgbGV0IG5ld1pvb20gPSB6b29tO1xuICAgIGlmICh2aWV3cG9ydFdpZHRoIDwgZWxlbWVudEhvc3RCb3gud2lkdGggfHwgdmlld3BvcnRIZWlnaHQgPCBlbGVtZW50SG9zdEJveC5oZWlnaHQpIHtcbiAgICAgICAgbmV3Wm9vbSA9IE1hdGgubWluKHZpZXdwb3J0V2lkdGggLyBlbGVtZW50SG9zdEJveC53aWR0aCwgdmlld3BvcnRIZWlnaHQgLyBlbGVtZW50SG9zdEJveC5oZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1pvb20gPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlclBvaW50ID0gZ2V0Vmlld0JveENlbnRlclBvaW50KGJvYXJkKTtcbiAgICBjb25zdCBuZXdPcmlnaW5hdGlvbiA9IFtcbiAgICAgICAgY2VudGVyUG9pbnRbMF0gLSBib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIHpvb20sXG4gICAgICAgIGNlbnRlclBvaW50WzFdIC0gYm9hcmRDb250YWluZXJSZWN0LmhlaWdodCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gem9vbVxuICAgIF0gYXMgUG9pbnQ7XG4gICAgdXBkYXRlVmlld3BvcnQoYm9hcmQsIG5ld09yaWdpbmF0aW9uLCBuZXdab29tKTtcbn1cblxuZnVuY3Rpb24gZml0Vmlld3BvcnRXaWR0aChib2FyZDogUGxhaXRCb2FyZCwgb3B0aW9uczogRml0Vmlld3BvcnRPcHRpb25zKSB7XG4gICAgbGV0IHNjcm9sbEJhcldpZHRoID0gZ2V0UmVhbFNjcm9sbEJhcldpZHRoKGJvYXJkKTtcblxuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCk7XG4gICAgY29uc3QgYm9hcmRDb250YWluZXJSZWN0YW5nbGUgPSBib2FyZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGxldCBmaW5hbFdpZHRoID0gMDtcbiAgICBpZiAob3B0aW9ucy5tYXhXaWR0aCkge1xuICAgICAgICBmaW5hbFdpZHRoID0gb3B0aW9ucy5tYXhXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaW5hbFdpZHRoID0gYm9hcmRDb250YWluZXJSZWN0YW5nbGUud2lkdGg7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudEhvc3RCb3ggPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBib2FyZC5jaGlsZHJlbiwgdHJ1ZSk7XG4gICAgY29uc3QgY29udGVudFdpZHRoID0gZmluYWxXaWR0aCAtIDIgKiBvcHRpb25zLmF1dG9GaXRQYWRkaW5nO1xuICAgIGxldCBuZXdab29tID0gMDtcbiAgICBpZiAoY29udGVudFdpZHRoIDwgZWxlbWVudEhvc3RCb3gud2lkdGgpIHtcbiAgICAgICAgbmV3Wm9vbSA9IE1hdGgubWluKGNvbnRlbnRXaWR0aCAvIGVsZW1lbnRIb3N0Qm94LndpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdab29tID0gMTtcbiAgICB9XG5cbiAgICBsZXQgZmluYWxIZWlnaHQgPSBlbGVtZW50SG9zdEJveC5oZWlnaHQgKiBuZXdab29tICsgMiAqIG9wdGlvbnMuYXV0b0ZpdFBhZGRpbmc7XG4gICAgaWYgKGZpbmFsSGVpZ2h0ID4gb3B0aW9ucy5saW1pdEhlaWdodCkge1xuICAgICAgICBjb25zdCBjb250YWluZXJFbCA9IGJvYXJkQ29udGFpbmVyLmNsb3Nlc3QoYC4ke29wdGlvbnMuY29udGFpbmVyQ2xhc3N9YCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnRhaW5lckVsLnN0eWxlLmhlaWdodCA9IGAke2ZpbmFsSGVpZ2h0fXB4YDtcbiAgICAgICAgaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaW5hbEhlaWdodCA9IG9wdGlvbnMubGltaXRIZWlnaHQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2VudGVyWCA9IGVsZW1lbnRIb3N0Qm94LnggKyBlbGVtZW50SG9zdEJveC53aWR0aCAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9IGVsZW1lbnRIb3N0Qm94LnkgKyBlbGVtZW50SG9zdEJveC5oZWlnaHQgLyAyO1xuICAgIGNvbnN0IG5ld09yaWdpbmF0aW9uID0gW1xuICAgICAgICBjZW50ZXJYIC0gZmluYWxXaWR0aCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gbmV3Wm9vbSxcbiAgICAgICAgY2VudGVyWSAtIGZpbmFsSGVpZ2h0IC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyBuZXdab29tXG4gICAgXSBhcyBQb2ludDtcbiAgICB1cGRhdGVWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG4vKipcbiAqIGFwcGx5IHRoZW1lIHRvIGV2ZXJ5IGVsZW1lbnQgKHJlbW92ZSBlbGVtZW50IGN1c3RvbSBwcm9wZXJ0aWVzKVxuICogaW52b2tlIGFwcGx5VGhlbWVDb2xvclxuICovXG5mdW5jdGlvbiB1cGRhdGVUaGVtZUNvbG9yKGJvYXJkOiBQbGFpdEJvYXJkLCBtb2RlOiBUaGVtZUNvbG9yTW9kZSkge1xuICAgIG1vZGUgPSBtb2RlID8/IGJvYXJkLnRoZW1lLnRoZW1lQ29sb3JNb2RlO1xuICAgIHNldFRoZW1lKGJvYXJkLCB7IHRoZW1lQ29sb3JNb2RlOiBtb2RlIH0pO1xuXG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbigoYm9hcmQgYXMgdW5rbm93bikgYXMgUGxhaXRFbGVtZW50LCBlbGVtZW50ID0+IHtcbiAgICAgICAgYm9hcmQuYXBwbHlUaGVtZShlbGVtZW50KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IEJvYXJkVHJhbnNmb3JtcyA9IHtcbiAgICB1cGRhdGVQb2ludGVyVHlwZSxcbiAgICB1cGRhdGVWaWV3cG9ydCxcbiAgICBmaXRWaWV3cG9ydCxcbiAgICB1cGRhdGVab29tLFxuICAgIHVwZGF0ZVRoZW1lQ29sb3IsXG4gICAgZml0Vmlld3BvcnRXaWR0aFxufTtcbiJdfQ==
@@ -143,4 +143,4 @@ export const GeneralTransforms = {
143
143
  }
144
144
  }
145
145
  };
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3RyYW5zZm9ybXMvZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFPMUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFNBQTJCLEVBQUUsUUFBa0IsRUFBRSxLQUFpQixFQUFFLEVBQWtCLEVBQUUsRUFBRTtJQUMvSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFDYixLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXBDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDcEQsTUFBTSxJQUFJLEtBQUssQ0FDWCxvREFBb0QsSUFBSSx3REFBd0QsQ0FDbkgsQ0FBQzthQUNMO1lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNO1NBQ1Q7UUFDRCxLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDcEIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNwRCxNQUFNLElBQUksS0FBSyxDQUNYLG9EQUFvRCxJQUFJLHdEQUF3RCxDQUNuSCxDQUFDO2FBQ0w7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTTtTQUNUO1FBQ0QsS0FBSyxXQUFXLENBQUMsQ0FBQztZQUNkLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBRTdCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksa0JBQWtCLE9BQU8sNkNBQTZDLENBQUMsQ0FBQzthQUN0SDtZQUVELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXBDLG1FQUFtRTtZQUNuRSw4REFBOEQ7WUFDOUQsb0VBQW9FO1lBQ3BFLDZEQUE2RDtZQUM3RCxxRUFBcUU7WUFDckUsNkJBQTZCO1lBQzdCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFhLENBQUM7WUFDMUUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFL0MsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5QyxNQUFNO1NBQ1Q7UUFDRCxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBQ2IsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBRS9DLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQzthQUM5RDtZQUVELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXhDLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFO2dCQUM3QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRWpDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtvQkFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDcEI7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDckI7YUFDSjtZQUVELGdGQUFnRjtZQUNoRixLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNwQjthQUNKO1lBRUQsTUFBTTtTQUNUO1FBQ0QsS0FBSyxjQUFjLENBQUMsQ0FBQztZQUNqQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzdCLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDdkIsUUFBUSxHQUFHLGFBQWEsQ0FBQzthQUM1QjtpQkFBTTtnQkFDSCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFO3dCQUNyQyxNQUFNLElBQUksS0FBSyxDQUNYLGtFQUFrRSxJQUFJLENBQUMsU0FBUyxDQUM1RSxhQUFhLENBQ2hCLHFDQUFxQyxDQUN6QyxDQUFDO3FCQUNMO29CQUNELFFBQVEsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7aUJBQ25DO2dCQUVELEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFO29CQUM3QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRWpDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTt3QkFDZixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDeEI7eUJBQU07d0JBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDekI7aUJBQ0o7YUFDSjtZQUNELE1BQU07U0FDVDtRQUNELEtBQUssZUFBZSxDQUFDLENBQUM7WUFDbEIsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUM3QixJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7Z0JBQ3ZCLFNBQVMsR0FBRyxhQUFhLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO29CQUNwQixTQUFTLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDaEM7cUJBQU07b0JBQ0gsU0FBUyxHQUFHLGFBQWEsQ0FBQztpQkFDN0I7YUFDSjtZQUNELE1BQU07U0FDVDtRQUNELEtBQUssV0FBVyxDQUFDLENBQUM7WUFDZCxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzdCLEtBQUssR0FBRyxhQUEyQixDQUFDO1lBQ3BDLE1BQU07U0FDVDtLQUNKO0lBQ0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXNCO0lBQ2hEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLEtBQWlCLEVBQUUsRUFBa0I7UUFDM0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBELElBQUk7WUFDQSxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzFCLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzVCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3ZCO2dCQUFTO1lBQ04sS0FBSyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTdDLElBQUksU0FBUyxFQUFFO2dCQUNYLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxXQUFXLENBQUMsU0FBUyxDQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUM1RjtpQkFBTTtnQkFDSCxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUMxQjtZQUVELEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxXQUFXLENBQUMsUUFBUSxDQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUNwRixLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDN0Q7SUFDTCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0T3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgY3JlYXRlRHJhZnQsIGZpbmlzaERyYWZ0LCBpc0RyYWZ0IH0gZnJvbSAnaW1tZXInO1xuaW1wb3J0IHsgVmlld3BvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0JztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IEFuY2VzdG9yLCBQbGFpdE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGF0aCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGF0aCc7XG5pbXBvcnQgeyBQbGFpdFRoZW1lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhbFRyYW5zZm9ybXMge1xuICAgIHRyYW5zZm9ybTogKGJvYXJkOiBQbGFpdEJvYXJkLCBvcDogUGxhaXRPcGVyYXRpb24pID0+IHZvaWQ7XG59XG5cbmNvbnN0IGFwcGx5VG9EcmFmdCA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsLCB2aWV3cG9ydDogVmlld3BvcnQsIHRoZW1lOiBQbGFpdFRoZW1lLCBvcDogUGxhaXRPcGVyYXRpb24pID0+IHtcbiAgICBzd2l0Y2ggKG9wLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnaW5zZXJ0X25vZGUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGgsIG5vZGUgfSA9IG9wO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLnBhcmVudChib2FyZCwgcGF0aCk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4gfHwgaW5kZXggPiBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgQ2Fubm90IGFwcGx5IGFuIFwiaW5zZXJ0X25vZGVcIiBvcGVyYXRpb24gYXQgcGF0aCBbJHtwYXRofV0gYmVjYXVzZSB0aGUgZGVzdGluYXRpb24gaXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBub2RlLmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAwLCBub2RlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3JlbW92ZV9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoIH0gPSBvcDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuIHx8IGluZGV4ID4gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYENhbm5vdCBhcHBseSBhbiBcImluc2VydF9ub2RlXCIgb3BlcmF0aW9uIGF0IHBhdGggWyR7cGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgbm9kZS5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbW92ZV9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBuZXdQYXRoIH0gPSBvcDtcblxuICAgICAgICAgICAgaWYgKFBhdGguaXNBbmNlc3RvcihwYXRoLCBuZXdQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IG1vdmUgYSBwYXRoIFske3BhdGh9XSB0byBuZXcgcGF0aCBbJHtuZXdQYXRofV0gYmVjYXVzZSB0aGUgZGVzdGluYXRpb24gaXMgaW5zaWRlIGl0c2VsZi5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLnBhcmVudChib2FyZCwgcGF0aCk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgLy8gVGhpcyBpcyB0cmlja3ksIGJ1dCBzaW5jZSB0aGUgYHBhdGhgIGFuZCBgbmV3UGF0aGAgYm90aCByZWZlciB0b1xuICAgICAgICAgICAgLy8gdGhlIHNhbWUgc25hcHNob3QgaW4gdGltZSwgdGhlcmUncyBhIG1pc21hdGNoLiBBZnRlciBlaXRoZXJcbiAgICAgICAgICAgIC8vIHJlbW92aW5nIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiwgdGhlIHNlY29uZCBzdGVwJ3MgcGF0aCBjYW4gYmUgb3V0XG4gICAgICAgICAgICAvLyBvZiBkYXRlLiBTbyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgb3AubmV3UGF0aGAgZGlyZWN0bHksIHdlXG4gICAgICAgICAgICAvLyB0cmFuc2Zvcm0gYG9wLnBhdGhgIHRvIGFzY2VydGFpbiB3aGF0IHRoZSBgbmV3UGF0aGAgd291bGQgYmUgYWZ0ZXJcbiAgICAgICAgICAgIC8vIHRoZSBvcGVyYXRpb24gd2FzIGFwcGxpZWQuXG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4/LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICBjb25zdCB0cnVlUGF0aCA9IFBhdGgudHJhbnNmb3JtKHBhdGgsIG9wKSE7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnBhcmVudCh0cnVlUGF0aCkpIGFzIEFuY2VzdG9yO1xuICAgICAgICAgICAgY29uc3QgbmV3SW5kZXggPSB0cnVlUGF0aFt0cnVlUGF0aC5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgbmV3UGFyZW50LmNoaWxkcmVuPy5zcGxpY2UobmV3SW5kZXgsIDAsIG5vZGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X25vZGUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGgsIHByb3BlcnRpZXMsIG5ld1Byb3BlcnRpZXMgfSA9IG9wO1xuXG4gICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgcHJvcGVydGllcyBvbiB0aGUgcm9vdCBub2RlIWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBub2RlID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ld1Byb3BlcnRpZXNba2V5XTtcblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlW2tleV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRlZmluZWQsIGJ1dCBhcmUgbm93IG1pc3NpbmcsIG11c3QgYmUgZGVsZXRlZFxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGlmICghbmV3UHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzZXRfdmlld3BvcnQnOiB7XG4gICAgICAgICAgICBjb25zdCB7IG5ld1Byb3BlcnRpZXMgfSA9IG9wO1xuICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnRpZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0ID0gbmV3UHJvcGVydGllcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXdwb3J0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFWaWV3cG9ydC5pc1ZpZXdwb3J0KG5ld1Byb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYENhbm5vdCBhcHBseSBhbiBpbmNvbXBsZXRlIFwic2V0X3ZpZXdwb3J0XCIgb3BlcmF0aW9uIHByb3BlcnRpZXMgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9IHdoZW4gdGhlcmUgaXMgbm8gY3VycmVudCB2aWV3cG9ydC5gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0ID0geyAuLi5uZXdQcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ld1Byb3BlcnRpZXNba2V5XTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZpZXdwb3J0W2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzZXRfc2VsZWN0aW9uJzoge1xuICAgICAgICAgICAgY29uc3QgeyBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBuZXdQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IG9wLm5ld1Byb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gbmV3UHJvcGVydGllcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzZXRfdGhlbWUnOiB7XG4gICAgICAgICAgICBjb25zdCB7IG5ld1Byb3BlcnRpZXMgfSA9IG9wO1xuICAgICAgICAgICAgdGhlbWUgPSBuZXdQcm9wZXJ0aWVzIGFzIFBsYWl0VGhlbWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBzZWxlY3Rpb24sIHZpZXdwb3J0LCB0aGVtZSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IEdlbmVyYWxUcmFuc2Zvcm1zOiBHZW5lcmFsVHJhbnNmb3JtcyA9IHtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGJvYXJkIGJ5IGFuIG9wZXJhdGlvbi5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wOiBQbGFpdE9wZXJhdGlvbik6IHZvaWQge1xuICAgICAgICBib2FyZC5jaGlsZHJlbiA9IGNyZWF0ZURyYWZ0KGJvYXJkLmNoaWxkcmVuKTtcbiAgICAgICAgbGV0IHZpZXdwb3J0ID0gYm9hcmQudmlld3BvcnQgJiYgY3JlYXRlRHJhZnQoYm9hcmQudmlld3BvcnQpO1xuICAgICAgICBsZXQgc2VsZWN0aW9uID0gYm9hcmQuc2VsZWN0aW9uICYmIGNyZWF0ZURyYWZ0KGJvYXJkLnNlbGVjdGlvbik7XG4gICAgICAgIGxldCB0aGVtZSA9IGJvYXJkLnRoZW1lICYmIGNyZWF0ZURyYWZ0KGJvYXJkLnRoZW1lKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBhcHBseVRvRHJhZnQoYm9hcmQsIHNlbGVjdGlvbiwgdmlld3BvcnQsIHRoZW1lLCBvcCk7XG4gICAgICAgICAgICB2aWV3cG9ydCA9IHN0YXRlLnZpZXdwb3J0O1xuICAgICAgICAgICAgc2VsZWN0aW9uID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgICAgICAgICAgdGhlbWUgPSBzdGF0ZS50aGVtZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGJvYXJkLmNoaWxkcmVuID0gZmluaXNoRHJhZnQoYm9hcmQuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgYm9hcmQuc2VsZWN0aW9uID0gaXNEcmFmdChzZWxlY3Rpb24pID8gKGZpbmlzaERyYWZ0KHNlbGVjdGlvbikgYXMgU2VsZWN0aW9uKSA6IHNlbGVjdGlvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYm9hcmQuc2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYm9hcmQudmlld3BvcnQgPSBpc0RyYWZ0KHZpZXdwb3J0KSA/IChmaW5pc2hEcmFmdCh2aWV3cG9ydCkgYXMgVmlld3BvcnQpIDogdmlld3BvcnQ7XG4gICAgICAgICAgICBib2FyZC50aGVtZSA9IGlzRHJhZnQodGhlbWUpID8gZmluaXNoRHJhZnQodGhlbWUpIDogdGhlbWU7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3RyYW5zZm9ybXMvZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFPMUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFNBQTJCLEVBQUUsUUFBa0IsRUFBRSxLQUFpQixFQUFFLEVBQWtCLEVBQUUsRUFBRTtJQUMvSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxJQUFJLEtBQUssQ0FDWCxvREFBb0QsSUFBSSx3REFBd0QsQ0FDbkgsQ0FBQztZQUNOLENBQUM7WUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE1BQU07UUFDVixDQUFDO1FBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDcEIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sSUFBSSxLQUFLLENBQ1gsb0RBQW9ELElBQUksd0RBQXdELENBQ25ILENBQUM7WUFDTixDQUFDO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU07UUFDVixDQUFDO1FBQ0QsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFFN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLGtCQUFrQixPQUFPLDZDQUE2QyxDQUFDLENBQUM7WUFDdkgsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXBDLG1FQUFtRTtZQUNuRSw4REFBOEQ7WUFDOUQsb0VBQW9FO1lBQ3BFLDZEQUE2RDtZQUM3RCxxRUFBcUU7WUFDckUsNkJBQTZCO1lBQzdCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFhLENBQUM7WUFDMUUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFL0MsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5QyxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNkLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUUvQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFeEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVqQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDaEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQztZQUVELGdGQUFnRjtZQUNoRixLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsQ0FBQztZQUNMLENBQUM7WUFFRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzdCLElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QixRQUFRLEdBQUcsYUFBYSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzt3QkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FDWCxrRUFBa0UsSUFBSSxDQUFDLFNBQVMsQ0FDNUUsYUFBYSxDQUNoQixxQ0FBcUMsQ0FDekMsQ0FBQztvQkFDTixDQUFDO29CQUNELFFBQVEsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQ3BDLENBQUM7Z0JBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVqQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDaEIsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUMxQixDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTTtRQUNWLENBQUM7UUFDRCxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDbkIsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUM3QixJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDeEIsU0FBUyxHQUFHLGFBQWEsQ0FBQztZQUM5QixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3JCLFNBQVMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNqQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osU0FBUyxHQUFHLGFBQWEsQ0FBQztnQkFDOUIsQ0FBQztZQUNMLENBQUM7WUFDRCxNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNmLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDN0IsS0FBSyxHQUFHLGFBQTJCLENBQUM7WUFDcEMsTUFBTTtRQUNWLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXNCO0lBQ2hEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLEtBQWlCLEVBQUUsRUFBa0I7UUFDM0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEUsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDMUIsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1AsS0FBSyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTdDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ1osS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLFdBQVcsQ0FBQyxTQUFTLENBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMzQixDQUFDO1lBRUQsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFFLFdBQVcsQ0FBQyxRQUFRLENBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3BGLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5RCxDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdE9wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3BlcmF0aW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGNyZWF0ZURyYWZ0LCBmaW5pc2hEcmFmdCwgaXNEcmFmdCB9IGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydCc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BhdGgnO1xuaW1wb3J0IHsgUGxhaXRUaGVtZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGhlbWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYWxUcmFuc2Zvcm1zIHtcbiAgICB0cmFuc2Zvcm06IChib2FyZDogUGxhaXRCb2FyZCwgb3A6IFBsYWl0T3BlcmF0aW9uKSA9PiB2b2lkO1xufVxuXG5jb25zdCBhcHBseVRvRHJhZnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCwgdmlld3BvcnQ6IFZpZXdwb3J0LCB0aGVtZTogUGxhaXRUaGVtZSwgb3A6IFBsYWl0T3BlcmF0aW9uKSA9PiB7XG4gICAgc3dpdGNoIChvcC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBub2RlIH0gPSBvcDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuIHx8IGluZGV4ID4gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYENhbm5vdCBhcHBseSBhbiBcImluc2VydF9ub2RlXCIgb3BlcmF0aW9uIGF0IHBhdGggWyR7cGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgbm9kZS5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwgbm9kZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZW1vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gb3A7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUucGFyZW50KGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbiB8fCBpbmRleCA+IHBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDYW5ub3QgYXBwbHkgYW4gXCJpbnNlcnRfbm9kZVwiIG9wZXJhdGlvbiBhdCBwYXRoIFske3BhdGh9XSBiZWNhdXNlIHRoZSBkZXN0aW5hdGlvbiBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIG5vZGUuYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCwgbmV3UGF0aCB9ID0gb3A7XG5cbiAgICAgICAgICAgIGlmIChQYXRoLmlzQW5jZXN0b3IocGF0aCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBtb3ZlIGEgcGF0aCBbJHtwYXRofV0gdG8gbmV3IHBhdGggWyR7bmV3UGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIGluc2lkZSBpdHNlbGYuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdHJpY2t5LCBidXQgc2luY2UgdGhlIGBwYXRoYCBhbmQgYG5ld1BhdGhgIGJvdGggcmVmZXIgdG9cbiAgICAgICAgICAgIC8vIHRoZSBzYW1lIHNuYXBzaG90IGluIHRpbWUsIHRoZXJlJ3MgYSBtaXNtYXRjaC4gQWZ0ZXIgZWl0aGVyXG4gICAgICAgICAgICAvLyByZW1vdmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb24sIHRoZSBzZWNvbmQgc3RlcCdzIHBhdGggY2FuIGJlIG91dFxuICAgICAgICAgICAgLy8gb2YgZGF0ZS4gU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgYG9wLm5ld1BhdGhgIGRpcmVjdGx5LCB3ZVxuICAgICAgICAgICAgLy8gdHJhbnNmb3JtIGBvcC5wYXRoYCB0byBhc2NlcnRhaW4gd2hhdCB0aGUgYG5ld1BhdGhgIHdvdWxkIGJlIGFmdGVyXG4gICAgICAgICAgICAvLyB0aGUgb3BlcmF0aW9uIHdhcyBhcHBsaWVkLlxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuPy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgY29uc3QgdHJ1ZVBhdGggPSBQYXRoLnRyYW5zZm9ybShwYXRoLCBvcCkhO1xuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wYXJlbnQodHJ1ZVBhdGgpKSBhcyBBbmNlc3RvcjtcbiAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdHJ1ZVBhdGhbdHJ1ZVBhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIG5ld1BhcmVudC5jaGlsZHJlbj8uc3BsaWNlKG5ld0luZGV4LCAwLCBub2RlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3NldF9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBwcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcblxuICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IHByb3BlcnRpZXMgb24gdGhlIHJvb3Qgbm9kZSFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLCBidXQgYXJlIG5vdyBtaXNzaW5nLCBtdXN0IGJlIGRlbGV0ZWRcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3ZpZXdwb3J0Jzoge1xuICAgICAgICAgICAgY29uc3QgeyBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IG5ld1Byb3BlcnRpZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVmlld3BvcnQuaXNWaWV3cG9ydChuZXdQcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDYW5ub3QgYXBwbHkgYW4gaW5jb21wbGV0ZSBcInNldF92aWV3cG9ydFwiIG9wZXJhdGlvbiBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSB3aGVuIHRoZXJlIGlzIG5vIGN1cnJlbnQgdmlld3BvcnQuYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IHsgLi4ubmV3UHJvcGVydGllcyB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3cG9ydFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3NlbGVjdGlvbic6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV3UHJvcGVydGllcyB9ID0gb3A7XG4gICAgICAgICAgICBpZiAobmV3UHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gbmV3UHJvcGVydGllcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBvcC5uZXdQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IG5ld1Byb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3RoZW1lJzoge1xuICAgICAgICAgICAgY29uc3QgeyBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcbiAgICAgICAgICAgIHRoZW1lID0gbmV3UHJvcGVydGllcyBhcyBQbGFpdFRoZW1lO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgc2VsZWN0aW9uLCB2aWV3cG9ydCwgdGhlbWUgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBHZW5lcmFsVHJhbnNmb3JtczogR2VuZXJhbFRyYW5zZm9ybXMgPSB7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBib2FyZCBieSBhbiBvcGVyYXRpb24uXG4gICAgICovXG4gICAgdHJhbnNmb3JtKGJvYXJkOiBQbGFpdEJvYXJkLCBvcDogUGxhaXRPcGVyYXRpb24pOiB2b2lkIHtcbiAgICAgICAgYm9hcmQuY2hpbGRyZW4gPSBjcmVhdGVEcmFmdChib2FyZC5jaGlsZHJlbik7XG4gICAgICAgIGxldCB2aWV3cG9ydCA9IGJvYXJkLnZpZXdwb3J0ICYmIGNyZWF0ZURyYWZ0KGJvYXJkLnZpZXdwb3J0KTtcbiAgICAgICAgbGV0IHNlbGVjdGlvbiA9IGJvYXJkLnNlbGVjdGlvbiAmJiBjcmVhdGVEcmFmdChib2FyZC5zZWxlY3Rpb24pO1xuICAgICAgICBsZXQgdGhlbWUgPSBib2FyZC50aGVtZSAmJiBjcmVhdGVEcmFmdChib2FyZC50aGVtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gYXBwbHlUb0RyYWZ0KGJvYXJkLCBzZWxlY3Rpb24sIHZpZXdwb3J0LCB0aGVtZSwgb3ApO1xuICAgICAgICAgICAgdmlld3BvcnQgPSBzdGF0ZS52aWV3cG9ydDtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICAgICAgICAgIHRoZW1lID0gc3RhdGUudGhlbWU7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBib2FyZC5jaGlsZHJlbiA9IGZpbmlzaERyYWZ0KGJvYXJkLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbiA9IGlzRHJhZnQoc2VsZWN0aW9uKSA/IChmaW5pc2hEcmFmdChzZWxlY3Rpb24pIGFzIFNlbGVjdGlvbikgOiBzZWxlY3Rpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJvYXJkLnZpZXdwb3J0ID0gaXNEcmFmdCh2aWV3cG9ydCkgPyAoZmluaXNoRHJhZnQodmlld3BvcnQpIGFzIFZpZXdwb3J0KSA6IHZpZXdwb3J0O1xuICAgICAgICAgICAgYm9hcmQudGhlbWUgPSBpc0RyYWZ0KHRoZW1lKSA/IGZpbmlzaERyYWZ0KHRoZW1lKSA6IHRoZW1lO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==