@worktile/gantt 12.2.0-next.1 → 12.2.2

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 (73) hide show
  1. package/bundles/worktile-gantt.umd.js +581 -508
  2. package/bundles/worktile-gantt.umd.js.map +1 -1
  3. package/class/event.d.ts +2 -0
  4. package/class/index.d.ts +1 -0
  5. package/class/item.d.ts +1 -1
  6. package/class/link.d.ts +12 -7
  7. package/components/bar/bar-drag.d.ts +4 -2
  8. package/components/bar/bar.component.d.ts +4 -4
  9. package/components/calendar/calendar.component.d.ts +3 -5
  10. package/components/drag-backdrop/drag-backdrop.component.d.ts +1 -5
  11. package/components/icon/icon.component.d.ts +2 -4
  12. package/components/links/{paths → lines}/curve.d.ts +2 -3
  13. package/components/links/lines/factory.d.ts +5 -0
  14. package/components/links/{paths/path.d.ts → lines/line.d.ts} +1 -4
  15. package/components/links/{paths/line.d.ts → lines/straight.d.ts} +2 -2
  16. package/components/links/links.component.d.ts +2 -2
  17. package/components/main/gantt-main.component.d.ts +2 -3
  18. package/components/range/range.component.d.ts +2 -5
  19. package/components/table/gantt-table.component.d.ts +2 -3
  20. package/esm2015/class/event.js +1 -1
  21. package/esm2015/class/index.js +2 -1
  22. package/esm2015/class/item.js +4 -3
  23. package/esm2015/class/link.js +6 -6
  24. package/esm2015/components/bar/bar-drag.js +56 -26
  25. package/esm2015/components/bar/bar.component.js +22 -15
  26. package/esm2015/components/calendar/calendar.component.js +18 -13
  27. package/esm2015/components/drag-backdrop/drag-backdrop.component.js +10 -14
  28. package/esm2015/components/icon/icon.component.js +4 -6
  29. package/esm2015/components/links/lines/curve.js +96 -0
  30. package/esm2015/components/links/lines/factory.js +14 -0
  31. package/esm2015/components/links/lines/line.js +24 -0
  32. package/esm2015/components/links/lines/straight.js +58 -0
  33. package/esm2015/components/links/links.component.js +31 -17
  34. package/esm2015/components/main/gantt-main.component.js +4 -5
  35. package/esm2015/components/range/range.component.js +4 -13
  36. package/esm2015/components/table/gantt-table.component.js +10 -6
  37. package/esm2015/gantt-dom.service.js +41 -27
  38. package/esm2015/gantt-drag-container.js +57 -40
  39. package/esm2015/gantt-item-upper.js +7 -7
  40. package/esm2015/gantt-print.service.js +53 -50
  41. package/esm2015/gantt-upper.js +37 -20
  42. package/esm2015/gantt.component.js +25 -28
  43. package/esm2015/gantt.config.js +3 -3
  44. package/esm2015/gantt.module.js +4 -4
  45. package/esm2015/gantt.pipe.js +9 -9
  46. package/esm2015/root.component.js +43 -31
  47. package/esm2015/table/gantt-column.component.js +4 -5
  48. package/esm2015/table/gantt-table.component.js +5 -6
  49. package/esm2015/utils/passive-listeners.js +30 -0
  50. package/esm2015/utils/set-style-with-vendor-prefix.js +15 -0
  51. package/esm2015/views/day.js +1 -1
  52. package/fesm2015/worktile-gantt.js +492 -386
  53. package/fesm2015/worktile-gantt.js.map +1 -1
  54. package/gantt-dom.service.d.ts +11 -4
  55. package/gantt-drag-container.d.ts +20 -8
  56. package/gantt-item-upper.d.ts +5 -5
  57. package/gantt-print.service.d.ts +1 -1
  58. package/gantt-upper.d.ts +10 -8
  59. package/gantt.component.d.ts +3 -7
  60. package/gantt.config.d.ts +2 -2
  61. package/main.bundle.scss +34 -3
  62. package/package.json +1 -1
  63. package/root.component.d.ts +5 -3
  64. package/table/gantt-column.component.d.ts +2 -3
  65. package/table/gantt-table.component.d.ts +2 -4
  66. package/utils/passive-listeners.d.ts +13 -0
  67. package/utils/set-style-with-vendor-prefix.d.ts +12 -0
  68. package/README.md +0 -24
  69. package/components/links/paths/factory.d.ts +0 -5
  70. package/esm2015/components/links/paths/curve.js +0 -118
  71. package/esm2015/components/links/paths/factory.js +0 -14
  72. package/esm2015/components/links/paths/line.js +0 -59
  73. package/esm2015/components/links/paths/path.js +0 -31
@@ -1,59 +0,0 @@
1
- import { GanttLinkPath } from './path';
2
- import { GanttLinkType } from '../../../class/link';
3
- export class GanttLinkPathLine extends GanttLinkPath {
4
- constructor() {
5
- super();
6
- this.pathControl = 20;
7
- }
8
- generateSSPath(source, target) {
9
- const x1 = source.before.x;
10
- const y1 = source.before.y;
11
- const x4 = target.before.x;
12
- const y4 = target.before.y;
13
- const control = this.pathControl;
14
- const centerY = (y1 + y4) / 2;
15
- return `M ${x1} ${y1}
16
- L ${x4 > x1 ? x1 - control : x4 - control} ${y1}
17
- L ${x4 > x1 ? x1 - control : x4 - control} ${y4}
18
- L ${x4} ${y4}`;
19
- }
20
- generateFFPath(source, target) {
21
- const x1 = source.after.x;
22
- const y1 = source.after.y;
23
- const x4 = target.after.x;
24
- const y4 = target.after.y;
25
- const control = this.pathControl;
26
- return `M ${x1} ${y1}
27
- L ${x4 > x1 ? x4 + control : x1 + control} ${y1}
28
- L ${x4 > x1 ? x4 + control : x1 + control} ${y4}
29
- L ${x4} ${y4}`;
30
- }
31
- generateFSAndSFPath(source, target, type) {
32
- let x1 = source.after.x;
33
- let y1 = source.after.y;
34
- let x4 = target.before.x;
35
- let y4 = target.before.y;
36
- const control = this.pathControl;
37
- if (type === GanttLinkType.sf) {
38
- x1 = target.after.x;
39
- y1 = target.after.y;
40
- x4 = source.before.x;
41
- y4 = source.before.y;
42
- }
43
- if (x4 - x1 >= 40) {
44
- return `M ${x1} ${y1}
45
- L ${x1 + control} ${y1}
46
- L ${x1 + control} ${y4}
47
- L ${x4} ${y4}`;
48
- }
49
- else {
50
- return `M ${x1} ${y1}
51
- L ${x1 + control} ${y1}
52
- L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}
53
- L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}
54
- L ${x4 - control} ${y4}
55
- L ${x4} ${y4}`;
56
- }
57
- }
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2xpbmtzL3BhdGhzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBR2hEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFISixnQkFBVyxHQUFHLEVBQUUsQ0FBQztJQUl6QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXFCLEVBQUUsTUFBcUI7UUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNBLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRTs0QkFDM0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFOzRCQUMzQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQ3ZELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFakMsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNBLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRTs0QkFDM0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFOzRCQUMzQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQXFCLEVBQUUsTUFBcUIsRUFBRSxJQUFvQjtRQUNsRixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRWpDLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwQixFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDckIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNmLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDSixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUU7NEJBQ2xCLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRTs0QkFDbEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1NBQzlCO2FBQU07WUFDSCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQ0osRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFOzRCQUNsQixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPOzRCQUNyRCxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPOzRCQUNyRCxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUU7NEJBQ2xCLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgR2FudHRMaW5rUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5pbXBvcnQgeyBHYW50dExpbmtJdGVtLCBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3MvbGluayc7XG5cbmV4cG9ydCBjbGFzcyBHYW50dExpbmtQYXRoTGluZSBleHRlbmRzIEdhbnR0TGlua1BhdGgge1xuICAgIHByaXZhdGUgcGF0aENvbnRyb2wgPSAyMDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGdlbmVyYXRlU1NQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtKSB7XG4gICAgICAgIGNvbnN0IHgxID0gc291cmNlLmJlZm9yZS54O1xuICAgICAgICBjb25zdCB5MSA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgIGNvbnN0IHk0ID0gdGFyZ2V0LmJlZm9yZS55O1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5wYXRoQ29udHJvbDtcbiAgICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHk0KSAvIDI7XG5cbiAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgPiB4MSA/IHgxIC0gY29udHJvbCA6IHg0IC0gY29udHJvbH0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NCA+IHgxID8geDEgLSBjb250cm9sIDogeDQgLSBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVGRlBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pIHtcbiAgICAgICAgY29uc3QgeDEgPSBzb3VyY2UuYWZ0ZXIueDtcbiAgICAgICAgY29uc3QgeTEgPSBzb3VyY2UuYWZ0ZXIueTtcbiAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYWZ0ZXIueDtcbiAgICAgICAgY29uc3QgeTQgPSB0YXJnZXQuYWZ0ZXIueTtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMucGF0aENvbnRyb2w7XG5cbiAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgPiB4MSA/IHg0ICsgY29udHJvbCA6IHgxICsgY29udHJvbH0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NCA+IHgxID8geDQgKyBjb250cm9sIDogeDEgKyBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVGU0FuZFNGUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSwgdHlwZT86IEdhbnR0TGlua1R5cGUpIHtcbiAgICAgICAgbGV0IHgxID0gc291cmNlLmFmdGVyLng7XG4gICAgICAgIGxldCB5MSA9IHNvdXJjZS5hZnRlci55O1xuICAgICAgICBsZXQgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgIGxldCB5NCA9IHRhcmdldC5iZWZvcmUueTtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMucGF0aENvbnRyb2w7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IEdhbnR0TGlua1R5cGUuc2YpIHtcbiAgICAgICAgICAgIHgxID0gdGFyZ2V0LmFmdGVyLng7XG4gICAgICAgICAgICB5MSA9IHRhcmdldC5hZnRlci55O1xuICAgICAgICAgICAgeDQgPSBzb3VyY2UuYmVmb3JlLng7XG4gICAgICAgICAgICB5NCA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh4NCAtIHgxID49IDQwKSB7XG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MSArIGNvbnRyb2x9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDEgKyBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MSArIGNvbnRyb2x9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDEgKyBjb250cm9sfSAke3k0ID4geTEgPyB5MSArIGNvbnRyb2wgOiB5MSAtIGNvbnRyb2x9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgLSBjb250cm9sfSAke3k0ID4geTEgPyB5MSArIGNvbnRyb2wgOiB5MSAtIGNvbnRyb2x9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDQgLSBjb250cm9sfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { GanttLinkType } from '../../../class/link';
3
- import * as i0 from "@angular/core";
4
- export class GanttLinkPath {
5
- constructor() { }
6
- generatePath(source, target, type) {
7
- if (source.before && source.after && target.before && target.after) {
8
- let path = '';
9
- switch (type) {
10
- case GanttLinkType.ss:
11
- path = this.generateSSPath(source, target);
12
- break;
13
- case GanttLinkType.ff:
14
- path = this.generateFFPath(source, target);
15
- break;
16
- case GanttLinkType.sf:
17
- path = this.generateFSAndSFPath(source, target, type);
18
- break;
19
- default:
20
- path = this.generateFSAndSFPath(source, target);
21
- }
22
- return path;
23
- }
24
- }
25
- }
26
- GanttLinkPath.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinkPath, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
- GanttLinkPath.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinkPath });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinkPath, decorators: [{
29
- type: Injectable
30
- }], ctorParameters: function () { return []; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2xpbmtzL3BhdGhzL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUduRSxNQUFNLE9BQWdCLGFBQWE7SUFDL0IsZ0JBQWUsQ0FBQztJQVFoQixZQUFZLENBQUMsTUFBcUIsRUFBRSxNQUFxQixFQUFFLElBQW1CO1FBQzFFLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNoRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFFZCxRQUFRLElBQUksRUFBRTtnQkFDVixLQUFLLGFBQWEsQ0FBQyxFQUFFO29CQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhLENBQUMsRUFBRTtvQkFDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzQyxNQUFNO2dCQUVWLEtBQUssYUFBYSxDQUFDLEVBQUU7b0JBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDdEQsTUFBTTtnQkFDVjtvQkFDSSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN2RDtZQUVELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDOzswR0E5QmlCLGFBQWE7OEdBQWIsYUFBYTsyRkFBYixhQUFhO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRMaW5rSXRlbSwgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzL2xpbmsnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2FudHRMaW5rUGF0aCB7XG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgYWJzdHJhY3QgZ2VuZXJhdGVTU1BhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pOiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBnZW5lcmF0ZUZGUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSk6IHN0cmluZztcblxuICAgIGFic3RyYWN0IGdlbmVyYXRlRlNBbmRTRlBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0sIHR5cGU/OiBHYW50dExpbmtUeXBlKTogc3RyaW5nO1xuXG4gICAgZ2VuZXJhdGVQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtLCB0eXBlOiBHYW50dExpbmtUeXBlKSB7XG4gICAgICAgIGlmIChzb3VyY2UuYmVmb3JlICYmIHNvdXJjZS5hZnRlciAmJiB0YXJnZXQuYmVmb3JlICYmIHRhcmdldC5hZnRlcikge1xuICAgICAgICAgICAgbGV0IHBhdGggPSAnJztcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBHYW50dExpbmtUeXBlLnNzOlxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gdGhpcy5nZW5lcmF0ZVNTUGF0aChzb3VyY2UsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgR2FudHRMaW5rVHlwZS5mZjpcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHRoaXMuZ2VuZXJhdGVGRlBhdGgoc291cmNlLCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgR2FudHRMaW5rVHlwZS5zZjpcbiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHRoaXMuZ2VuZXJhdGVGU0FuZFNGUGF0aChzb3VyY2UsIHRhcmdldCwgdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSB0aGlzLmdlbmVyYXRlRlNBbmRTRlBhdGgoc291cmNlLCB0YXJnZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==