@worktile/gantt 18.1.0-next.0 → 18.1.0-next.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.
@@ -1,5 +1,4 @@
1
1
  import { OnInit, OnDestroy, NgZone, ElementRef } from '@angular/core';
2
- import { GanttDatePoint } from '../../../class/date-point';
3
2
  import { GanttUpper } from '../../../gantt-upper';
4
3
  import { GanttViewType } from './../../../class/view-type';
5
4
  import * as i0 from "@angular/core";
@@ -16,7 +15,6 @@ export declare class GanttCalendarGridComponent implements OnInit, OnDestroy {
16
15
  constructor(ganttUpper: GanttUpper, ngZone: NgZone, elementRef: ElementRef<HTMLElement>);
17
16
  setTodayPoint(): void;
18
17
  ngOnInit(): void;
19
- trackBy(point: GanttDatePoint, index: number): string | number;
20
18
  ngOnDestroy(): void;
21
19
  static ɵfac: i0.ɵɵFactoryDeclaration<GanttCalendarGridComponent, never>;
22
20
  static ɵcmp: i0.ɵɵComponentDeclaration<GanttCalendarGridComponent, "gantt-calendar-grid", never, {}, {}, never, never, true, never>;
@@ -1,5 +1,4 @@
1
1
  import { OnInit, NgZone, ElementRef } from '@angular/core';
2
- import { GanttDatePoint } from '../../../class/date-point';
3
2
  import { GanttUpper } from '../../../gantt-upper';
4
3
  import { GanttViewType } from '../../../class';
5
4
  import * as i0 from "@angular/core";
@@ -15,7 +14,6 @@ export declare class GanttCalendarHeaderComponent implements OnInit {
15
14
  constructor(ganttUpper: GanttUpper, ngZone: NgZone, elementRef: ElementRef<HTMLElement>);
16
15
  ngOnInit(): void;
17
16
  setTodayPoint(): void;
18
- trackBy(point: GanttDatePoint, index: number): string | number;
19
17
  static ɵfac: i0.ɵɵFactoryDeclaration<GanttCalendarHeaderComponent, never>;
20
18
  static ɵcmp: i0.ɵɵComponentDeclaration<GanttCalendarHeaderComponent, "gantt-calendar-header", never, {}, {}, never, never, true, never>;
21
19
  }
@@ -1,7 +1,7 @@
1
1
  import { TemplateRef, EventEmitter, OnInit, NgZone } from '@angular/core';
2
2
  import { GanttGroupInternal, GanttItemInternal, GanttBarClickEvent, GanttLineClickEvent } from '../../class';
3
3
  import { GanttUpper } from '../../gantt-upper';
4
- import { NgxGanttRootComponent } from 'ngx-gantt';
4
+ import { NgxGanttRootComponent } from './../../root.component';
5
5
  import { GanttDomService } from '../../gantt-dom.service';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class GanttMainComponent implements OnInit {
@@ -7,7 +7,13 @@ export declare class NgxGanttToolbarComponent {
7
7
  template: TemplateRef<any>;
8
8
  ganttItemClass: boolean;
9
9
  get top(): string;
10
- views: any;
10
+ views: Record<GanttViewType, {
11
+ label: string;
12
+ dateFormats: {
13
+ primary?: string;
14
+ secondary?: string;
15
+ };
16
+ }>;
11
17
  constructor(ganttUpper: GanttUpper);
12
18
  selectView(view: GanttViewType): void;
13
19
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxGanttToolbarComponent, never>;
@@ -5,7 +5,6 @@ import { isNumber } from '../../../utils/helpers';
5
5
  import { GANTT_UPPER_TOKEN } from '../../../gantt-upper';
6
6
  import { GanttViewType } from './../../../class/view-type';
7
7
  import { todayBorderRadius } from '../../../gantt.styles';
8
- import { NgIf, NgFor } from '@angular/common';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "../../../gantt-upper";
11
10
  const mainHeight = 5000;
@@ -47,19 +46,16 @@ export class GanttCalendarGridComponent {
47
46
  });
48
47
  });
49
48
  }
50
- trackBy(point, index) {
51
- return point.text || index;
52
- }
53
49
  ngOnDestroy() {
54
50
  this.unsubscribe$.next();
55
51
  this.unsubscribe$.complete();
56
52
  }
57
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarGridComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GanttCalendarGridComponent, isStandalone: true, selector: "gantt-calendar-grid", host: { properties: { "class": "this.className" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n </g>\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: GanttCalendarGridComponent, isStandalone: true, selector: "gantt-calendar-grid", host: { properties: { "class": "this.className" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n @if (ganttUpper.showTodayLine) {\n <span class=\"today-line\"> </span>\n }\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n @if (view.showTimeline) {\n <g>\n @for (point of view.secondaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.cellWidth\"\n [attr.x2]=\"($index + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n }\n </g>\n }\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n </g>\n</svg>\n" }); }
59
55
  }
60
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarGridComponent, decorators: [{
61
57
  type: Component,
62
- args: [{ selector: 'gantt-calendar-grid', standalone: true, imports: [NgIf, NgFor], template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n </g>\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n" }]
58
+ args: [{ selector: 'gantt-calendar-grid', standalone: true, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n @if (ganttUpper.showTodayLine) {\n <span class=\"today-line\"> </span>\n }\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n @if (view.showTimeline) {\n <g>\n @for (point of view.secondaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.cellWidth\"\n [attr.x2]=\"($index + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n }\n </g>\n }\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n </g>\n</svg>\n" }]
63
59
  }], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
64
60
  type: Inject,
65
61
  args: [GANTT_UPPER_TOKEN]
@@ -67,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
67
63
  type: HostBinding,
68
64
  args: ['class']
69
65
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9jYWxlbmRhci9ncmlkL2NhbGVuZGFyLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvZ3JpZC9jYWxlbmRhci1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUErQyxNQUFNLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFFaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUU5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFReEIsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFXRCxZQUNzQyxVQUFzQixFQUNoRCxNQUFjLEVBQ2QsVUFBbUM7UUFGVCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQWJ2QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFM0MsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUV4QixzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUV0QyxjQUFTLEdBQUcsYUFBYSxDQUFDO1FBRUosY0FBUyxHQUFHLG9DQUFvQyxDQUFDO0lBTXBFLENBQUM7SUFFSixhQUFhO1FBQ1QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUN4SCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFFbEcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNkLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUM7WUFDM0MsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7aUJBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNsQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFxQixFQUFFLEtBQWE7UUFDeEMsT0FBTyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzhHQXJEUSwwQkFBMEIsa0JBZXZCLGlCQUFpQjtrR0FmcEIsMEJBQTBCLG9JQ3BCdkMsbytCQTRCQSw0Q0RWYyxJQUFJLDZGQUFFLEtBQUs7OzJGQUVaLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDSSxxQkFBcUIsY0FFbkIsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQzs7MEJBaUJqQixNQUFNOzJCQUFDLGlCQUFpQjt1RkFIUCxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBOZ1pvbmUsIEluamVjdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHREYXRlUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9jbGFzcy9kYXRlLXBvaW50JztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4vLi4vLi4vLi4vY2xhc3Mvdmlldy10eXBlJztcbmltcG9ydCB7IHRvZGF5Qm9yZGVyUmFkaXVzIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuY29uc3QgbWFpbkhlaWdodCA9IDUwMDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtY2FsZW5kYXItZ3JpZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nRm9yXVxufSlcbmV4cG9ydCBjbGFzcyBHYW50dENhbGVuZGFyR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBnZXQgdmlldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2FudHRVcHBlci52aWV3O1xuICAgIH1cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBtYWluSGVpZ2h0ID0gbWFpbkhlaWdodDtcblxuICAgIHRvZGF5Qm9yZGVyUmFkaXVzID0gdG9kYXlCb3JkZXJSYWRpdXM7XG5cbiAgICB2aWV3VHlwZXMgPSBHYW50dFZpZXdUeXBlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZSA9IGBnYW50dC1jYWxlbmRhciBnYW50dC1jYWxlbmRhci1ncmlkYDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge31cblxuICAgIHNldFRvZGF5UG9pbnQoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnZpZXcuZ2V0VG9kYXlYUG9pbnQoKTtcbiAgICAgICAgY29uc3QgdG9kYXlFbGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2RheS1saW5lJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgICAgICAgIGxpbmUuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xuICAgICAgICAgICAgICAgIGxpbmUuc3R5bGUudG9wID0gYDBweGA7XG4gICAgICAgICAgICAgICAgbGluZS5zdHlsZS5ib3R0b20gPSBgJHstbWFpbkhlaWdodH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2RheUVsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG1lcmdlKHRoaXMuZ2FudHRVcHBlci52aWV3Q2hhbmdlLCB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUb2RheVBvaW50KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkocG9pbnQ6IEdhbnR0RGF0ZVBvaW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBwb2ludC50ZXh0IHx8IGluZGV4O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWNhbGVuZGFyLXRvZGF5LW92ZXJsYXlcIiBbc3R5bGUud2lkdGgucHhdPVwidmlldy53aWR0aFwiPlxuICA8c3BhbiBjbGFzcz1cInRvZGF5LWxpbmVcIiAqbmdJZj1cImdhbnR0VXBwZXIuc2hvd1RvZGF5TGluZVwiPiA8L3NwYW4+XG48L2Rpdj5cblxuPHN2ZyBjbGFzcz1cImdhbnR0LWNhbGVuZGFyLWdyaWQtbWFpblwiIFthdHRyLndpZHRoXT1cInZpZXcud2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiZ2FudHRVcHBlci5zdHlsZXMuaGVhZGVySGVpZ2h0IC0gMVwiPlxuICA8Zz5cbiAgICA8ZyAqbmdJZj1cInZpZXcuc2hvd1RpbWVsaW5lXCI+XG4gICAgICA8bGluZVxuICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5zZWNvbmRhcnlEYXRlUG9pbnRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgW2F0dHIueDFdPVwiKGkgKyAxKSAqIHZpZXcuY2VsbFdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKGkgKyAxKSAqIHZpZXcuY2VsbFdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cIm1haW5IZWlnaHRcIlxuICAgICAgICBjbGFzcz1cInNlY29uZGFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgPC9nPlxuICAgIDxnPlxuICAgICAgPGxpbmVcbiAgICAgICAgKm5nRm9yPVwibGV0IHBvaW50IG9mIHZpZXcucHJpbWFyeURhdGVQb2ludHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICBbYXR0ci54MV09XCIoaSArIDEpICogdmlldy5wcmltYXJ5V2lkdGhcIlxuICAgICAgICBbYXR0ci54Ml09XCIoaSArIDEpICogdmlldy5wcmltYXJ5V2lkdGhcIlxuICAgICAgICBbYXR0ci55MV09XCIwXCJcbiAgICAgICAgW2F0dHIueTJdPVwibWFpbkhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwicHJpbWFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgPC9nPlxuICA8L2c+XG48L3N2Zz5cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9jYWxlbmRhci9ncmlkL2NhbGVuZGFyLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvZ3JpZC9jYWxlbmRhci1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUErQyxNQUFNLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFFMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBT3hCLE1BQU0sT0FBTywwQkFBMEI7SUFDbkMsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBV0QsWUFDc0MsVUFBc0IsRUFDaEQsTUFBYyxFQUNkLFVBQW1DO1FBRlQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFidkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTNDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFFeEIsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFFdEMsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUVKLGNBQVMsR0FBRyxvQ0FBb0MsQ0FBQztJQU1wRSxDQUFDO0lBRUosYUFBYTtRQUNULE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDeEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBRWxHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQzNDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2lCQUN6RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDbEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBakRRLDBCQUEwQixrQkFldkIsaUJBQWlCO2tHQWZwQiwwQkFBMEIsb0lDakJ2QyxzK0JBa0NBOzsyRkRqQmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQixjQUVuQixJQUFJOzswQkFpQlgsTUFBTTsyQkFBQyxpQkFBaUI7dUZBSFAsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgTmdab25lLCBJbmplY3QsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4vLi4vLi4vLi4vY2xhc3Mvdmlldy10eXBlJztcbmltcG9ydCB7IHRvZGF5Qm9yZGVyUmFkaXVzIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQuc3R5bGVzJztcblxuY29uc3QgbWFpbkhlaWdodCA9IDUwMDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtY2FsZW5kYXItZ3JpZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRDYWxlbmRhckdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgZ2V0IHZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbnR0VXBwZXIudmlldztcbiAgICB9XG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgbWFpbkhlaWdodCA9IG1haW5IZWlnaHQ7XG5cbiAgICB0b2RheUJvcmRlclJhZGl1cyA9IHRvZGF5Qm9yZGVyUmFkaXVzO1xuXG4gICAgdmlld1R5cGVzID0gR2FudHRWaWV3VHlwZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSBgZ2FudHQtY2FsZW5kYXIgZ2FudHQtY2FsZW5kYXItZ3JpZGA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICBzZXRUb2RheVBvaW50KCkge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy52aWV3LmdldFRvZGF5WFBvaW50KCk7XG4gICAgICAgIGNvbnN0IHRvZGF5RWxlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtY2FsZW5kYXItdG9kYXktb3ZlcmxheScpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndG9kYXktbGluZScpWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmIChpc051bWJlcih4KSkge1xuICAgICAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLnRvcCA9IGAwcHhgO1xuICAgICAgICAgICAgICAgIGxpbmUuc3R5bGUuYm90dG9tID0gYCR7LW1haW5IZWlnaHR9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9kYXlFbGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBtZXJnZSh0aGlzLmdhbnR0VXBwZXIudmlld0NoYW5nZSwgdGhpcy5nYW50dFVwcGVyLnZpZXcuc3RhcnQkKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VG9kYXlQb2ludCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5XCIgW3N0eWxlLndpZHRoLnB4XT1cInZpZXcud2lkdGhcIj5cbiAgQGlmIChnYW50dFVwcGVyLnNob3dUb2RheUxpbmUpIHtcbiAgPHNwYW4gY2xhc3M9XCJ0b2RheS1saW5lXCI+IDwvc3Bhbj5cbiAgfVxuPC9kaXY+XG5cbjxzdmcgY2xhc3M9XCJnYW50dC1jYWxlbmRhci1ncmlkLW1haW5cIiBbYXR0ci53aWR0aF09XCJ2aWV3LndpZHRoXCIgW2F0dHIuaGVpZ2h0XT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodCAtIDFcIj5cbiAgPGc+XG4gICAgQGlmICh2aWV3LnNob3dUaW1lbGluZSkge1xuICAgIDxnPlxuICAgICAgQGZvciAocG9pbnQgb2Ygdmlldy5zZWNvbmRhcnlEYXRlUG9pbnRzOyB0cmFjayBwb2ludC54KSB7XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIoJGluZGV4ICsgMSkgKiB2aWV3LmNlbGxXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIigkaW5kZXggKyAxKSAqIHZpZXcuY2VsbFdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cIm1haW5IZWlnaHRcIlxuICAgICAgICBjbGFzcz1cInNlY29uZGFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICB9XG4gICAgPC9nPlxuICAgIH1cbiAgICA8Zz5cbiAgICAgIEBmb3IgKHBvaW50IG9mIHZpZXcucHJpbWFyeURhdGVQb2ludHM7IHRyYWNrIHBvaW50LngpIHtcbiAgICAgIDxsaW5lXG4gICAgICAgIFthdHRyLngxXT1cIigkaW5kZXggKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKCRpbmRleCArIDEpICogdmlldy5wcmltYXJ5V2lkdGhcIlxuICAgICAgICBbYXR0ci55MV09XCIwXCJcbiAgICAgICAgW2F0dHIueTJdPVwibWFpbkhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwicHJpbWFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICB9XG4gICAgPC9nPlxuICA8L2c+XG48L3N2Zz5cbiJdfQ==
@@ -6,7 +6,7 @@ import { take, takeUntil } from 'rxjs/operators';
6
6
  import { Subject, merge } from 'rxjs';
7
7
  import { GanttDate } from '../../../utils/date';
8
8
  import { isNumber } from '../../../utils/helpers';
9
- import { NgFor, NgStyle } from '@angular/common';
9
+ import { NgStyle } from '@angular/common';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "../../../gantt-upper";
12
12
  export class GanttCalendarHeaderComponent {
@@ -51,15 +51,12 @@ export class GanttCalendarHeaderComponent {
51
51
  todayEle.style.display = 'none';
52
52
  }
53
53
  }
54
- trackBy(point, index) {
55
- return point.text || index;
56
- }
57
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarHeaderComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GanttCalendarHeaderComponent, isStandalone: true, selector: "gantt-calendar-header", host: { properties: { "class": "this.className", "style.height": "this.height" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: GanttCalendarHeaderComponent, isStandalone: true, selector: "gantt-calendar-header", host: { properties: { "class": "this.className", "style.height": "this.height" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n } @for (point of view.secondaryDatePoints; track point.x) {\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n }\n\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
59
56
  }
60
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarHeaderComponent, decorators: [{
61
58
  type: Component,
62
- args: [{ selector: 'gantt-calendar-header', standalone: true, imports: [NgFor, NgStyle], template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n" }]
59
+ args: [{ selector: 'gantt-calendar-header', standalone: true, imports: [NgStyle], template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n } @for (point of view.secondaryDatePoints; track point.x) {\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n }\n\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n" }]
63
60
  }], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
64
61
  type: Inject,
65
62
  args: [GANTT_UPPER_TOKEN]
@@ -70,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
70
67
  type: HostBinding,
71
68
  args: ['style.height']
72
69
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL2hlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFRakQsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFRRCxJQUNJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQ3NDLFVBQXNCLEVBQ2hELE1BQWMsRUFDZCxVQUFtQztRQUZULGVBQVUsR0FBVixVQUFVLENBQVk7UUFDaEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBZHZDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVyQyxjQUFTLEdBQUcsYUFBYSxDQUFDO1FBRUosY0FBUyxHQUFHLHNDQUFzQyxDQUFDO0lBV3RFLENBQUM7SUFFSixRQUFRO1FBQ0osU0FBUztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7aUJBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNsQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEtBQUssYUFBYSxDQUFDLEdBQUc7b0JBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdFLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUN4SCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFFbEcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNkLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxXQUFXLElBQUksQ0FBQztnQkFDMUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXFCLEVBQUUsS0FBYTtRQUN4QyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO0lBQy9CLENBQUM7OEdBcERRLDRCQUE0QixrQkFpQnpCLGlCQUFpQjtrR0FqQnBCLDRCQUE0QixxS0NqQnpDLDJtREFtREEsNENEcENjLEtBQUssbUhBQUUsT0FBTzs7MkZBRWYsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNJLHVCQUF1QixjQUVyQixJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDOzswQkFtQnBCLE1BQU07MkJBQUMsaUJBQWlCO3VGQVJQLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFHaEIsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIEluamVjdCwgTmdab25lLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dERhdGVQb2ludCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzL2RhdGUtcG9pbnQnO1xuaW1wb3J0IHsgdG9kYXlIZWlnaHQsIHRvZGF5V2lkdGggfSBmcm9tICcuLi8uLi8uLi9nYW50dC5zdHlsZXMnO1xuaW1wb3J0IHsgR0FOVFRfVVBQRVJfVE9LRU4sIEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi8uLi9nYW50dC11cHBlcic7XG5pbXBvcnQgeyBHYW50dFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3MnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdhbnR0RGF0ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IE5nRm9yLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nRm9yLCBOZ1N0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBHYW50dENhbGVuZGFySGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBnZXQgdmlldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2FudHRVcHBlci52aWV3O1xuICAgIH1cblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHZpZXdUeXBlcyA9IEdhbnR0Vmlld1R5cGU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gYGdhbnR0LWNhbGVuZGFyIGdhbnR0LWNhbGVuZGFyLWhlYWRlcmA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXG4gICAgZ2V0IGhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2FudHRVcHBlci5zdHlsZXMuaGVhZGVySGVpZ2h0ICsgJ3B4JztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8g5aS06YOo5pel5pyf5a6a5L2NXG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG1lcmdlKHRoaXMuZ2FudHRVcHBlci52aWV3Q2hhbmdlLCB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2FudHRVcHBlci52aWV3VHlwZSA9PT0gR2FudHRWaWV3VHlwZS5kYXkpIHRoaXMuc2V0VG9kYXlQb2ludCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRUb2RheVBvaW50KCkge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy52aWV3LmdldFRvZGF5WFBvaW50KCk7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IEdhbnR0RGF0ZSgpLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgdG9kYXlFbGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2RheS1yZWN0JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBpZiAocmVjdCkge1xuICAgICAgICAgICAgICAgIHJlY3Quc3R5bGUubGVmdCA9IGAke3ggLSB0b2RheVdpZHRoIC8gMn1weGA7XG4gICAgICAgICAgICAgICAgcmVjdC5zdHlsZS50b3AgPSBgJHt0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodCAtIHRvZGF5SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICByZWN0LmlubmVySFRNTCA9IHRvZGF5LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2RheUVsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhY2tCeShwb2ludDogR2FudHREYXRlUG9pbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHBvaW50LnRleHQgfHwgaW5kZXg7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWNhbGVuZGFyLXRvZGF5LW92ZXJsYXlcIiBbc3R5bGUud2lkdGgucHhdPVwidmlldy53aWR0aFwiPlxuICA8c3BhbiBjbGFzcz1cInRvZGF5LXJlY3RcIiBbaGlkZGVuXT1cImdhbnR0VXBwZXIudmlld1R5cGUgIT09IHZpZXdUeXBlcy5kYXlcIj4gPC9zcGFuPlxuPC9kaXY+XG48c3ZnIFthdHRyLndpZHRoXT1cInZpZXcud2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiZ2FudHRVcHBlci5zdHlsZXMuaGVhZGVySGVpZ2h0XCI+XG4gIDxnPlxuICAgIDx0ZXh0XG4gICAgICBjbGFzcz1cInByaW1hcnktdGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJwb2ludC5zdHlsZVwiXG4gICAgICBbY2xhc3MudG9kYXldPVwicG9pbnQuYWRkaXRpb25zPy5pc1RvZGF5XCJcbiAgICAgIFtjbGFzcy53ZWVrZW5kXT1cInBvaW50LmFkZGl0aW9ucz8uaXNXZWVrZW5kXCJcbiAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2aWV3LnByaW1hcnlEYXRlUG9pbnRzOyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgIFthdHRyLnhdPVwicG9pbnQueFwiXG4gICAgICBbYXR0ci55XT1cInBvaW50LnlcIlxuICAgID5cbiAgICAgIHt7IHBvaW50LnRleHQgfX1cbiAgICA8L3RleHQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5zZWNvbmRhcnlEYXRlUG9pbnRzOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8dGV4dFxuICAgICAgICBjbGFzcz1cInNlY29uZGFyeS10ZXh0XCJcbiAgICAgICAgW25nU3R5bGVdPVwicG9pbnQuc3R5bGVcIlxuICAgICAgICBbY2xhc3MudG9kYXldPVwicG9pbnQuYWRkaXRpb25zPy5pc1RvZGF5XCJcbiAgICAgICAgW2NsYXNzLndlZWtlbmRdPVwicG9pbnQuYWRkaXRpb25zPy5pc1dlZWtlbmRcIlxuICAgICAgICBbYXR0ci54XT1cInBvaW50LnhcIlxuICAgICAgICBbYXR0ci55XT1cInBvaW50LnlcIlxuICAgICAgPlxuICAgICAgICB7eyBwb2ludC50ZXh0IH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Zz5cbiAgICAgIDxsaW5lXG4gICAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2aWV3LnByaW1hcnlEYXRlUG9pbnRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgW2F0dHIueDFdPVwiKGkgKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKGkgKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwicHJpbWFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgPC9nPlxuXG4gICAgPGc+XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgW2F0dHIueDJdPVwidmlldy53aWR0aFwiXG4gICAgICAgIFthdHRyLnkxXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIFthdHRyLnkyXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWxpbmVcIlxuICAgICAgPjwvbGluZT5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL2hlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVExQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3JDLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQVFELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRUQsWUFDc0MsVUFBc0IsRUFDaEQsTUFBYyxFQUNkLFVBQW1DO1FBRlQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFkdkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXJDLGNBQVMsR0FBRyxhQUFhLENBQUM7UUFFSixjQUFTLEdBQUcsc0NBQXNDLENBQUM7SUFXdEUsQ0FBQztJQUVKLFFBQVE7UUFDSixTQUFTO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2xDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUMsR0FBRztvQkFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQ3hILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUVsRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLFdBQVcsSUFBSSxDQUFDO2dCQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7OEdBaERRLDRCQUE0QixrQkFpQnpCLGlCQUFpQjtrR0FqQnBCLDRCQUE0QixxS0NoQnpDLGlpREFvREEsNENEdENjLE9BQU87OzJGQUVSLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDSSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDOzswQkFtQmIsTUFBTTsyQkFBQyxpQkFBaUI7dUZBUlAsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUdoQixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0QmluZGluZywgSW5qZWN0LCBOZ1pvbmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvZGF5SGVpZ2h0LCB0b2RheVdpZHRoIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHYW50dERhdGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kYXRlJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nU3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0Q2FsZW5kYXJIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGdldCB2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYW50dFVwcGVyLnZpZXc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgdmlld1R5cGVzID0gR2FudHRWaWV3VHlwZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSBgZ2FudHQtY2FsZW5kYXIgZ2FudHQtY2FsZW5kYXItaGVhZGVyYDtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgICBnZXQgaGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5oZWFkZXJIZWlnaHQgKyAncHgnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyDlpLTpg6jml6XmnJ/lrprkvY1cbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgbWVyZ2UodGhpcy5nYW50dFVwcGVyLnZpZXdDaGFuZ2UsIHRoaXMuZ2FudHRVcHBlci52aWV3LnN0YXJ0JClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nYW50dFVwcGVyLnZpZXdUeXBlID09PSBHYW50dFZpZXdUeXBlLmRheSkgdGhpcy5zZXRUb2RheVBvaW50KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRvZGF5UG9pbnQoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnZpZXcuZ2V0VG9kYXlYUG9pbnQoKTtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgR2FudHREYXRlKCkuZ2V0RGF0ZSgpO1xuICAgICAgICBjb25zdCB0b2RheUVsZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNhbGVuZGFyLXRvZGF5LW92ZXJsYXknKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RvZGF5LXJlY3QnKVswXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNOdW1iZXIoeCkpIHtcbiAgICAgICAgICAgIGlmIChyZWN0KSB7XG4gICAgICAgICAgICAgICAgcmVjdC5zdHlsZS5sZWZ0ID0gYCR7eCAtIHRvZGF5V2lkdGggLyAyfXB4YDtcbiAgICAgICAgICAgICAgICByZWN0LnN0eWxlLnRvcCA9IGAke3RoaXMuZ2FudHRVcHBlci5zdHlsZXMuaGVhZGVySGVpZ2h0IC0gdG9kYXlIZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIHJlY3QuaW5uZXJIVE1MID0gdG9kYXkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZGF5RWxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtY2FsZW5kYXItdG9kYXktb3ZlcmxheVwiIFtzdHlsZS53aWR0aC5weF09XCJ2aWV3LndpZHRoXCI+XG4gIDxzcGFuIGNsYXNzPVwidG9kYXktcmVjdFwiIFtoaWRkZW5dPVwiZ2FudHRVcHBlci52aWV3VHlwZSAhPT0gdmlld1R5cGVzLmRheVwiPiA8L3NwYW4+XG48L2Rpdj5cbjxzdmcgW2F0dHIud2lkdGhdPVwidmlldy53aWR0aFwiIFthdHRyLmhlaWdodF09XCJnYW50dFVwcGVyLnN0eWxlcy5oZWFkZXJIZWlnaHRcIj5cbiAgPGc+XG4gICAgQGZvciAocG9pbnQgb2Ygdmlldy5wcmltYXJ5RGF0ZVBvaW50czsgdHJhY2sgcG9pbnQueCkge1xuICAgIDx0ZXh0XG4gICAgICBjbGFzcz1cInByaW1hcnktdGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJwb2ludC5zdHlsZVwiXG4gICAgICBbY2xhc3MudG9kYXldPVwicG9pbnQuYWRkaXRpb25zPy5pc1RvZGF5XCJcbiAgICAgIFtjbGFzcy53ZWVrZW5kXT1cInBvaW50LmFkZGl0aW9ucz8uaXNXZWVrZW5kXCJcbiAgICAgIFthdHRyLnhdPVwicG9pbnQueFwiXG4gICAgICBbYXR0ci55XT1cInBvaW50LnlcIlxuICAgID5cbiAgICAgIHt7IHBvaW50LnRleHQgfX1cbiAgICA8L3RleHQ+XG4gICAgfSBAZm9yIChwb2ludCBvZiB2aWV3LnNlY29uZGFyeURhdGVQb2ludHM7IHRyYWNrIHBvaW50LngpIHtcbiAgICA8dGV4dFxuICAgICAgY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJwb2ludC5zdHlsZVwiXG4gICAgICBbY2xhc3MudG9kYXldPVwicG9pbnQuYWRkaXRpb25zPy5pc1RvZGF5XCJcbiAgICAgIFtjbGFzcy53ZWVrZW5kXT1cInBvaW50LmFkZGl0aW9ucz8uaXNXZWVrZW5kXCJcbiAgICAgIFthdHRyLnhdPVwicG9pbnQueFwiXG4gICAgICBbYXR0ci55XT1cInBvaW50LnlcIlxuICAgID5cbiAgICAgIHt7IHBvaW50LnRleHQgfX1cbiAgICA8L3RleHQ+XG4gICAgfVxuXG4gICAgPGc+XG4gICAgICBAZm9yIChwb2ludCBvZiB2aWV3LnByaW1hcnlEYXRlUG9pbnRzOyB0cmFjayBwb2ludC54KSB7XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIoJGluZGV4ICsgMSkgKiB2aWV3LnByaW1hcnlXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIigkaW5kZXggKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwicHJpbWFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICB9XG4gICAgPC9nPlxuXG4gICAgPGc+XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgW2F0dHIueDJdPVwidmlldy53aWR0aFwiXG4gICAgICAgIFthdHRyLnkxXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIFthdHRyLnkyXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWxpbmVcIlxuICAgICAgPjwvbGluZT5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuIl19
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
91
91
  type: HostBinding,
92
92
  args: ['class.gantt-main-container']
93
93
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtbWFpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9tYWluL2dhbnR0LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUFFLFlBQVksRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFFeEksT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFxQnJFLE1BQU0sT0FBTyxrQkFBa0I7SUEyQjNCLFlBQThDLFVBQXNCLEVBQVMsR0FBb0IsRUFBWSxNQUFjO1FBQTdFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFpQjtRQUFZLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSakgsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBRWxELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUVuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUV6RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFbUYsQ0FBQztJQUUvSCxRQUFRO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEM7UUFDL0QsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRU8sV0FBVztRQUNmLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDckYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBdUIsRUFBRSxJQUFzQjtRQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQXJEUSxrQkFBa0Isa0JBMkJQLGlCQUFpQjtrR0EzQjVCLGtCQUFrQiwwZkNqQy9CLHcrRkErREEsNENENUNRLG1CQUFtQiwrR0FDbkIsS0FBSyxtSEFDTCxJQUFJLDZGQUNKLE9BQU8sb0ZBQ1AsZ0JBQWdCLG9KQUNoQixzQkFBc0Isd0VBQ3RCLG9CQUFvQiwyRkFDcEIseUJBQXlCLCtHQUN6QixvQkFBb0Isb0RBQ3BCLGtCQUFrQixrREFDbEIscUJBQXFCLDBEQUNyQixrQkFBa0I7OzJGQUdiLGtCQUFrQjtrQkFuQjlCLFNBQVM7K0JBQ0ksWUFBWSxjQUVWLElBQUksV0FDUDt3QkFDTCxtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0wsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3FCQUNyQjs7MEJBNkJZLE1BQU07MkJBQUMsaUJBQWlCOzRGQTFCNUIsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsU0FBUztzQkFBbEIsTUFBTTtnQkFFb0MsY0FBYztzQkFBeEQsV0FBVzt1QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dEdyb3VwSW50ZXJuYWwsIEdhbnR0SXRlbUludGVybmFsLCBHYW50dEJhckNsaWNrRXZlbnQsIEdhbnR0TGluZUNsaWNrRXZlbnQgfSBmcm9tICcuLi8uLi9jbGFzcyc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IElzR2FudHRSYW5nZUl0ZW1QaXBlLCBJc0dhbnR0QmFySXRlbVBpcGUsIElzR2FudHRDdXN0b21JdGVtUGlwZSB9IGZyb20gJy4uLy4uL2dhbnR0LnBpcGUnO1xuaW1wb3J0IHsgTmd4R2FudHRCYXNlbGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2VsaW5lL2Jhc2VsaW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dEJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Jhci9iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEdhbnR0UmFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi9yYW5nZS9yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR2FudHRMaW5rc0NvbXBvbmVudCB9IGZyb20gJy4uL2xpbmtzL2xpbmtzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFJvb3RDb21wb25lbnQgfSBmcm9tICduZ3gtZ2FudHQnO1xuaW1wb3J0IHsgR2FudHRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dERvbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9nYW50dC1kb20uc2VydmljZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1tYWluJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2FudHQtbWFpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEdhbnR0TGlua3NDb21wb25lbnQsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBOZ3hHYW50dFJhbmdlQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dEJhckNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRCYXNlbGluZUNvbXBvbmVudCxcbiAgICAgICAgSXNHYW50dFJhbmdlSXRlbVBpcGUsXG4gICAgICAgIElzR2FudHRCYXJJdGVtUGlwZSxcbiAgICAgICAgSXNHYW50dEN1c3RvbUl0ZW1QaXBlLFxuICAgICAgICBHYW50dEljb25Db21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0TWFpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgdmlld3BvcnRJdGVtczogKEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKVtdO1xuXG4gICAgQElucHV0KCkgZmxhdEl0ZW1zOiAoR2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWwpW107XG5cbiAgICBASW5wdXQoKSBncm91cEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgYmFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSByYW5nZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgYmFzZWxpbmVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGdhbnR0Um9vdDogTmd4R2FudHRSb290Q29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgcXVpY2tUaW1lRm9jdXM6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LW1haW4tY29udGFpbmVyJykgZ2FudHRNYWluQ2xhc3MgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsIHB1YmxpYyBkb206IEdhbnR0RG9tU2VydmljZSwgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9uU3RhYmxlJCA9IHRoaXMubmdab25lLmlzU3RhYmxlID8gZnJvbShQcm9taXNlLnJlc29sdmUoKSkgOiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBvblN0YWJsZSQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBSZXNpemUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBSZXNpemUoKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZG9tLmdldFJlc2l6ZSgpLCB0aGlzLmRvbS5nZXRSZXNpemVCeUVsZW1lbnQodGhpcy5kb20ubWFpbkNvbnRhaW5lcildKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tLnNldFZpc2libGVSYW5nZVgoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHF1aWNrVGltZShpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCwgdHlwZTogJ2xlZnQnIHwgJ3JpZ2h0Jykge1xuICAgICAgICBjb25zdCBkYXRlID0gdHlwZSA9PT0gJ2xlZnQnID8gaXRlbS5zdGFydCB8fCBpdGVtLmVuZCA6IGl0ZW0uZW5kIHx8IGl0ZW0uc3RhcnQ7XG4gICAgICAgIHRoaXMuZ2FudHRSb290LnNjcm9sbFRvRGF0ZShkYXRlKTtcbiAgICB9XG59XG4iLCI8Z2FudHQtbGlua3Mtb3ZlcmxheSBbZmxhdEl0ZW1zXT1cImZsYXRJdGVtc1wiIChsaW5lQ2xpY2spPVwibGluZUNsaWNrLmVtaXQoJGV2ZW50KVwiPjwvZ2FudHQtbGlua3Mtb3ZlcmxheT5cbjxkaXYgY2xhc3M9XCJnYW50dC1tYWluLWdyb3Vwc1wiIFtzdHlsZS53aWR0aC5weF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB2aWV3cG9ydEl0ZW1zOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgPGRpdiBjbGFzcz1cImdhbnR0LWdyb3VwXCIgW3N0eWxlLmhlaWdodC5weF09XCJnYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0XCIgW25nQ2xhc3NdPVwiZGF0YS5jbGFzc1wiICpuZ0lmPVwiZGF0YS5pdGVtc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSGVhZGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBncm91cDogZGF0YSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiFkYXRhLml0ZW1zXCJcbiAgICAgIGNsYXNzPVwiZ2FudHQtaXRlbVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgICAgW2NsYXNzLmdhbnR0LW1haW4taXRlbS1hY3RpdmVdPVwiZ2FudHRVcHBlci5pc1NlbGVjdGVkKGRhdGEuaWQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS50eXBlIHwgaXNHYW50dEN1c3RvbUl0ZW1cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgaXRlbTogZGF0YS5vcmlnaW4sXG4gICAgICAgICAgICByZWZzOiBkYXRhLnJlZnMsXG4gICAgICAgICAgICBiYXNlbGluZTogZ2FudHRVcHBlci5iYXNlbGluZUl0ZW1zTWFwW2RhdGEuaWRdPy5vcmlnaW4sXG4gICAgICAgICAgICBiYXNlbGluZVJlZnM6IGdhbnR0VXBwZXIuYmFzZWxpbmVJdGVtc01hcFtkYXRhLmlkXT8ucmVmc1xuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRhLnR5cGUgfCBpc0dhbnR0UmFuZ2VJdGVtKSB8fCAoZGF0YS50eXBlIHwgaXNHYW50dEJhckl0ZW0pXCI+XG4gICAgICAgIDxnYW50dC1yYW5nZSAqbmdJZj1cImRhdGEudHlwZSB8IGlzR2FudHRSYW5nZUl0ZW1cIiBbdGVtcGxhdGVdPVwicmFuZ2VUZW1wbGF0ZVwiIFtpdGVtXT1cImRhdGFcIj48L2dhbnR0LXJhbmdlPlxuICAgICAgICA8Z2FudHQtYmFyICpuZ0lmPVwiZGF0YS50eXBlIHwgaXNHYW50dEJhckl0ZW1cIiBbaXRlbV09XCJkYXRhXCIgW3RlbXBsYXRlXT1cImJhclRlbXBsYXRlXCIgKGJhckNsaWNrKT1cImJhckNsaWNrLmVtaXQoJGV2ZW50KVwiPjwvZ2FudHQtYmFyPlxuICAgICAgICA8Z2FudHQtYmFzZWxpbmVcbiAgICAgICAgICAqbmdJZj1cImdhbnR0VXBwZXIuYmFzZWxpbmVJdGVtc01hcFtkYXRhLmlkXVwiXG4gICAgICAgICAgW2Jhc2VsaW5lSXRlbV09XCJnYW50dFVwcGVyLmJhc2VsaW5lSXRlbXNNYXBbZGF0YS5pZF1cIlxuICAgICAgICAgIFt0ZW1wbGF0ZV09XCJiYXNlbGluZVRlbXBsYXRlXCJcbiAgICAgICAgPjwvZ2FudHQtYmFzZWxpbmU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuQGlmIChxdWlja1RpbWVGb2N1cykge1xuPGRpdiBjbGFzcz1cImdhbnR0LXF1aWNrLXRpbWUtZm9jdXMtY29udGFpbmVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImdhbnR0VXBwZXIudmlldy53aWR0aFwiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtcXVpY2stdGltZS1mb2N1c1wiIFtzdHlsZS53aWR0aC5weF09XCJkb20udmlzaWJsZVJhbmdlWCgpLm1heCAtIGRvbS52aXNpYmxlUmFuZ2VYKCkubWluXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB2aWV3cG9ydEl0ZW1zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtcXVpY2stdGltZS1mb2N1cy1pdGVtXCIgW3N0eWxlLmhlaWdodC5weF09XCJnYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgIEBpZiAoKGRhdGEucmVmcy54IDwgZG9tLnZpc2libGVSYW5nZVgoKS5taW4gKSAmJiBkYXRhLnJlZnMud2lkdGggKSB7XG4gICAgICAgICAgPGEgY2xhc3M9XCJnYW50dC1xdWljay10aW1lLWZvY3VzLWl0ZW0tYXJyb3cgbGluay1zZWNvbmRhcnlcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cInF1aWNrVGltZShkYXRhLm9yaWdpbiwgJ2xlZnQnKVwiPlxuICAgICAgICAgICAgPGdhbnR0LWljb24gaWNvbk5hbWU9XCJhcnJvdy1sZWZ0XCI+PC9nYW50dC1pY29uPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICBAaWYoKGRhdGEucmVmcy54ICsgZGF0YS5yZWZzLndpZHRoID4gZG9tLnZpc2libGVSYW5nZVgoKS5tYXgpICYmIGRhdGEucmVmcy53aWR0aCkge1xuICAgICAgICAgIDxhIGNsYXNzPVwiZ2FudHQtcXVpY2stdGltZS1mb2N1cy1pdGVtLWFycm93IGxpbmstc2Vjb25kYXJ5XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJxdWlja1RpbWUoZGF0YS5vcmlnaW4sICdyaWdodCcpXCI+XG4gICAgICAgICAgICA8Z2FudHQtaWNvbiBpY29uTmFtZT1cImFycm93LXJpZ2h0XCI+PC9nYW50dC1pY29uPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtbWFpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9tYWluL2dhbnR0LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUFFLFlBQVksRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFFeEksT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFxQnJFLE1BQU0sT0FBTyxrQkFBa0I7SUEyQjNCLFlBQThDLFVBQXNCLEVBQVMsR0FBb0IsRUFBWSxN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O2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsU0FBUztzQkFBbEIsTUFBTTtnQkFFb0MsY0FBYztzQkFBeEQsV0FBVzt1QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dEdyb3VwSW50ZXJuYWwsIEdhbnR0SXRlbUludGVybmFsLCBHYW50dEJhckNsaWNrRXZlbnQsIEdhbnR0TGluZUNsaWNrRXZlbnQgfSBmcm9tICcuLi8uLi9jbGFzcyc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IElzR2FudHRSYW5nZUl0ZW1QaXBlLCBJc0dhbnR0QmFySXRlbVBpcGUsIElzR2FudHRDdXN0b21JdGVtUGlwZSB9IGZyb20gJy4uLy4uL2dhbnR0LnBpcGUnO1xuaW1wb3J0IHsgTmd4R2FudHRCYXNlbGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2VsaW5lL2Jhc2VsaW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dEJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Jhci9iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEdhbnR0UmFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi9yYW5nZS9yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR2FudHRMaW5rc0NvbXBvbmVudCB9IGZyb20gJy4uL2xpbmtzL2xpbmtzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFJvb3RDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uL3Jvb3QuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2FudHREb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2FudHQtZG9tLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZnJvbSwgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtbWFpbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LW1haW4uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBHYW50dExpbmtzQ29tcG9uZW50LFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmd4R2FudHRSYW5nZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRCYXJDb21wb25lbnQsXG4gICAgICAgIE5neEdhbnR0QmFzZWxpbmVDb21wb25lbnQsXG4gICAgICAgIElzR2FudHRSYW5nZUl0ZW1QaXBlLFxuICAgICAgICBJc0dhbnR0QmFySXRlbVBpcGUsXG4gICAgICAgIElzR2FudHRDdXN0b21JdGVtUGlwZSxcbiAgICAgICAgR2FudHRJY29uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBHYW50dE1haW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHZpZXdwb3J0SXRlbXM6IChHYW50dEdyb3VwSW50ZXJuYWwgfCBHYW50dEl0ZW1JbnRlcm5hbClbXTtcblxuICAgIEBJbnB1dCgpIGZsYXRJdGVtczogKEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKVtdO1xuXG4gICAgQElucHV0KCkgZ3JvdXBIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgcmFuZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGJhc2VsaW5lVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBnYW50dFJvb3Q6IE5neEdhbnR0Um9vdENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHF1aWNrVGltZUZvY3VzOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dEJhckNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgbGluZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmVDbGlja0V2ZW50PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1tYWluLWNvbnRhaW5lcicpIGdhbnR0TWFpbkNsYXNzID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBnYW50dFVwcGVyOiBHYW50dFVwcGVyLCBwdWJsaWMgZG9tOiBHYW50dERvbVNlcnZpY2UsIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvblN0YWJsZSQgPSB0aGlzLm5nWm9uZS5pc1N0YWJsZSA/IGZyb20oUHJvbWlzZS5yZXNvbHZlKCkpIDogdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgb25TdGFibGUkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwUmVzaXplKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBHYW50dEdyb3VwSW50ZXJuYWwgfCBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICByZXR1cm4gaXRlbS5pZCB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwUmVzaXplKCkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmRvbS5nZXRSZXNpemUoKSwgdGhpcy5kb20uZ2V0UmVzaXplQnlFbGVtZW50KHRoaXMuZG9tLm1haW5Db250YWluZXIpXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbS5zZXRWaXNpYmxlUmFuZ2VYKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBxdWlja1RpbWUoaXRlbTogR2FudHRJdGVtSW50ZXJuYWwsIHR5cGU6ICdsZWZ0JyB8ICdyaWdodCcpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHR5cGUgPT09ICdsZWZ0JyA/IGl0ZW0uc3RhcnQgfHwgaXRlbS5lbmQgOiBpdGVtLmVuZCB8fCBpdGVtLnN0YXJ0O1xuICAgICAgICB0aGlzLmdhbnR0Um9vdC5zY3JvbGxUb0RhdGUoZGF0ZSk7XG4gICAgfVxufVxuIiwiPGdhbnR0LWxpbmtzLW92ZXJsYXkgW2ZsYXRJdGVtc109XCJmbGF0SXRlbXNcIiAobGluZUNsaWNrKT1cImxpbmVDbGljay5lbWl0KCRldmVudClcIj48L2dhbnR0LWxpbmtzLW92ZXJsYXk+XG48ZGl2IGNsYXNzPVwiZ2FudHQtbWFpbi1ncm91cHNcIiBbc3R5bGUud2lkdGgucHhdPVwiZ2FudHRVcHBlci52aWV3LndpZHRoXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygdmlld3BvcnRJdGVtczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxkaXYgY2xhc3M9XCJnYW50dC1ncm91cFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodFwiIFtuZ0NsYXNzXT1cImRhdGEuY2xhc3NcIiAqbmdJZj1cImRhdGEuaXRlbXNcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cEhlYWRlclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ3JvdXA6IGRhdGEgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZGF0YS5pdGVtc1wiXG4gICAgICBjbGFzcz1cImdhbnR0LWl0ZW1cIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJnYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5nYW50dC1tYWluLWl0ZW0tYWN0aXZlXT1cImdhbnR0VXBwZXIuaXNTZWxlY3RlZChkYXRhLmlkKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEudHlwZSB8IGlzR2FudHRDdXN0b21JdGVtXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgIGl0ZW06IGRhdGEub3JpZ2luLFxuICAgICAgICAgICAgcmVmczogZGF0YS5yZWZzLFxuICAgICAgICAgICAgYmFzZWxpbmU6IGdhbnR0VXBwZXIuYmFzZWxpbmVJdGVtc01hcFtkYXRhLmlkXT8ub3JpZ2luLFxuICAgICAgICAgICAgYmFzZWxpbmVSZWZzOiBnYW50dFVwcGVyLmJhc2VsaW5lSXRlbXNNYXBbZGF0YS5pZF0/LnJlZnNcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0YS50eXBlIHwgaXNHYW50dFJhbmdlSXRlbSkgfHwgKGRhdGEudHlwZSB8IGlzR2FudHRCYXJJdGVtKVwiPlxuICAgICAgICA8Z2FudHQtcmFuZ2UgKm5nSWY9XCJkYXRhLnR5cGUgfCBpc0dhbnR0UmFuZ2VJdGVtXCIgW3RlbXBsYXRlXT1cInJhbmdlVGVtcGxhdGVcIiBbaXRlbV09XCJkYXRhXCI+PC9nYW50dC1yYW5nZT5cbiAgICAgICAgPGdhbnR0LWJhciAqbmdJZj1cImRhdGEudHlwZSB8IGlzR2FudHRCYXJJdGVtXCIgW2l0ZW1dPVwiZGF0YVwiIFt0ZW1wbGF0ZV09XCJiYXJUZW1wbGF0ZVwiIChiYXJDbGljayk9XCJiYXJDbGljay5lbWl0KCRldmVudClcIj48L2dhbnR0LWJhcj5cbiAgICAgICAgPGdhbnR0LWJhc2VsaW5lXG4gICAgICAgICAgKm5nSWY9XCJnYW50dFVwcGVyLmJhc2VsaW5lSXRlbXNNYXBbZGF0YS5pZF1cIlxuICAgICAgICAgIFtiYXNlbGluZUl0ZW1dPVwiZ2FudHRVcHBlci5iYXNlbGluZUl0ZW1zTWFwW2RhdGEuaWRdXCJcbiAgICAgICAgICBbdGVtcGxhdGVdPVwiYmFzZWxpbmVUZW1wbGF0ZVwiXG4gICAgICAgID48L2dhbnR0LWJhc2VsaW5lPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbkBpZiAocXVpY2tUaW1lRm9jdXMpIHtcbjxkaXYgY2xhc3M9XCJnYW50dC1xdWljay10aW1lLWZvY3VzLWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aC5weF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIj5cbiAgPGRpdiBjbGFzcz1cImdhbnR0LXF1aWNrLXRpbWUtZm9jdXNcIiBbc3R5bGUud2lkdGgucHhdPVwiZG9tLnZpc2libGVSYW5nZVgoKS5tYXggLSBkb20udmlzaWJsZVJhbmdlWCgpLm1pblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygdmlld3BvcnRJdGVtczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXF1aWNrLXRpbWUtZm9jdXMtaXRlbVwiIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICBAaWYgKChkYXRhLnJlZnMueCA8IGRvbS52aXNpYmxlUmFuZ2VYKCkubWluICkgJiYgZGF0YS5yZWZzLndpZHRoICkge1xuICAgICAgICAgIDxhIGNsYXNzPVwiZ2FudHQtcXVpY2stdGltZS1mb2N1cy1pdGVtLWFycm93IGxpbmstc2Vjb25kYXJ5XCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJxdWlja1RpbWUoZGF0YS5vcmlnaW4sICdsZWZ0JylcIj5cbiAgICAgICAgICAgIDxnYW50dC1pY29uIGljb25OYW1lPVwiYXJyb3ctbGVmdFwiPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgQGlmKChkYXRhLnJlZnMueCArIGRhdGEucmVmcy53aWR0aCA+IGRvbS52aXNpYmxlUmFuZ2VYKCkubWF4KSAmJiBkYXRhLnJlZnMud2lkdGgpIHtcbiAgICAgICAgICA8YSBjbGFzcz1cImdhbnR0LXF1aWNrLXRpbWUtZm9jdXMtaXRlbS1hcnJvdyBsaW5rLXNlY29uZGFyeVwiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwicXVpY2tUaW1lKGRhdGEub3JpZ2luLCAncmlnaHQnKVwiPlxuICAgICAgICAgICAgPGdhbnR0LWljb24gaWNvbk5hbWU9XCJhcnJvdy1yaWdodFwiPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbn1cbiJdfQ==
@@ -3,7 +3,7 @@ import { from, Subject } from 'rxjs';
3
3
  import { takeUntil, take, skip } from 'rxjs/operators';
4
4
  import { GanttViewType, GanttGroupInternal, GanttItemInternal } from './class';
5
5
  import { createViewFactory } from './views/factory';
6
- import { GanttDate } from './utils/date';
6
+ import { GanttDate, getUnixTime } from './utils/date';
7
7
  import { uniqBy, flatten, recursiveItems, getFlatItems, keyBy } from './utils/helpers';
8
8
  import { GanttConfigService } from './gantt.config';
9
9
  import { SelectionModel } from '@angular/cdk/collections';
@@ -156,11 +156,11 @@ export class GanttUpper {
156
156
  if (!this.start || !this.end) {
157
157
  this.originItems.forEach((item) => {
158
158
  if (item.start && !this.start) {
159
- const itemStart = item.start instanceof Date ? item.start.getTime() / 1000 : item.start;
159
+ const itemStart = item.start instanceof Date ? getUnixTime(item.start) : item.start;
160
160
  start = start ? Math.min(start, itemStart) : itemStart;
161
161
  }
162
162
  if (item.end && !this.end) {
163
- const itemEnd = item.start instanceof Date ? item.start.getTime() / 1000 : item.start;
163
+ const itemEnd = item.start instanceof Date ? getUnixTime(item.start) : item.start;
164
164
  end = end ? Math.max(end, itemEnd) : itemEnd;
165
165
  }
166
166
  });
@@ -399,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
399
399
  args: ['class.gantt']
400
400
  }] } });
401
401
  export const GANTT_UPPER_TOKEN = new InjectionToken('GANTT_UPPER_TOKEN');
402
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtdXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFFWixXQUFXLEVBSVgsY0FBYyxFQUNkLFNBQVMsRUFJVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUdILGFBQWEsRUFHYixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBSXBCLE1BQU0sU0FBUyxDQUFDO0FBRWpCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBYyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQXVELE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQXFCLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBSWhGLE1BQU0sT0FBZ0IsVUFBVTtJQThCNUIsSUFBYSxXQUFXLENBQUMsT0FBeUI7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sTUFB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bUI7c0JBQWpFLFlBQVk7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFRixlQUFlO3NCQUF6RCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBNENiLFVBQVU7c0JBQXJDLFdBQVc7dUJBQUMsYUFBYTs7QUFtUjlCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFhLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIElucHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgTmdab25lLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25DaGFuZ2VzLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFrZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgR2FudHRJdGVtLFxuICAgIEdhbnR0R3JvdXAsXG4gICAgR2FudHRWaWV3VHlwZSxcbiAgICBHYW50dExvYWRPblNjcm9sbEV2ZW50LFxuICAgIEdhbnR0RHJhZ0V2ZW50LFxuICAgIEdhbnR0R3JvdXBJbnRlcm5hbCxcbiAgICBHYW50dEl0ZW1JbnRlcm5hbCxcbiAgICBHYW50dEJhckNsaWNrRXZlbnQsXG4gICAgR2FudHRMaW5rRHJhZ0V2ZW50LFxuICAgIEdhbnR0VG9vbGJhck9wdGlvbnNcbn0gZnJvbSAnLi9jbGFzcyc7XG5pbXBvcnQgeyBHYW50dFZpZXcsIEdhbnR0Vmlld09wdGlvbnMgfSBmcm9tICcuL3ZpZXdzL3ZpZXcnO1xuaW1wb3J0IHsgY3JlYXRlVmlld0ZhY3RvcnkgfSBmcm9tICcuL3ZpZXdzL2ZhY3RvcnknO1xuaW1wb3J0IHsgR2FudHREYXRlIH0gZnJvbSAnLi91dGlscy9kYXRlJztcbmltcG9ydCB7IHVuaXFCeSwgZmxhdHRlbiwgcmVjdXJzaXZlSXRlbXMsIGdldEZsYXRJdGVtcywgRGljdGlvbmFyeSwga2V5QnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBHYW50dENvbmZpZ1NlcnZpY2UsIEdhbnR0R2xvYmFsQ29uZmlnLCBHYW50dFN0eWxlT3B0aW9ucywgZGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZ2FudHQuY29uZmlnJztcbmltcG9ydCB7IEdhbnR0TGlua09wdGlvbnMgfSBmcm9tICcuL2NsYXNzL2xpbmsnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgR2FudHRCYXNlbGluZUl0ZW0sIEdhbnR0QmFzZWxpbmVJdGVtSW50ZXJuYWwgfSBmcm9tICcuL2NsYXNzL2Jhc2VsaW5lJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2dhbnR0LXRhYmxlLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdhbnR0VXBwZXIgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnaXRlbXMnKSBvcmlnaW5JdGVtczogR2FudHRJdGVtW10gPSBbXTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdncm91cHMnKSBvcmlnaW5Hcm91cHM6IEdhbnR0R3JvdXBbXSA9IFtdO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2Jhc2VsaW5lSXRlbXMnKSBvcmlnaW5CYXNlbGluZUl0ZW1zOiBHYW50dEJhc2VsaW5lSXRlbVtdID0gW107XG5cbiAgICBASW5wdXQoKSB2aWV3VHlwZTogR2FudHRWaWV3VHlwZSA9IEdhbnR0Vmlld1R5cGUubW9udGg7XG5cbiAgICBASW5wdXQoKSBzdGFydDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZW5kOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBzaG93VG9kYXlMaW5lID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlczogR2FudHRTdHlsZU9wdGlvbnM7XG5cbiAgICBASW5wdXQoKSBzaG93VG9vbGJhciA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdG9vbGJhck9wdGlvbnM6IEdhbnR0VG9vbGJhck9wdGlvbnMgPSB7XG4gICAgICAgIHZpZXdUeXBlczogW0dhbnR0Vmlld1R5cGUuZGF5LCBHYW50dFZpZXdUeXBlLm1vbnRoLCBHYW50dFZpZXdUeXBlLnllYXJdXG4gICAgfTtcblxuICAgIEBJbnB1dCgpIHZpZXdPcHRpb25zOiBHYW50dFZpZXdPcHRpb25zID0ge307XG5cbiAgICBASW5wdXQoKSBzZXQgbGlua09wdGlvbnMob3B0aW9uczogR2FudHRMaW5rT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9saW5rT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IGxpbmtPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5saW5rT3B0aW9ucywgdGhpcy5fbGlua09wdGlvbnMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGRpc2FibGVkTG9hZE9uU2Nyb2xsOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0YWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IHRoaXMuaW5pdFNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsPy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG11bHRpcGxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHF1aWNrVGltZUZvY3VzID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgbG9hZE9uU2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExvYWRPblNjcm9sbEV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGRyYWdTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dERyYWdFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBkcmFnTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0RHJhZ0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGRyYWdFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHREcmFnRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSB2aWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dFZpZXc+KCk7XG5cbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dEl0ZW1JbnRlcm5hbCB8IEdhbnR0R3JvdXBJbnRlcm5hbD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2JhcicsIHsgc3RhdGljOiB0cnVlIH0pIGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgncmFuZ2UnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYW5nZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgnaXRlbScsIHsgc3RhdGljOiB0cnVlIH0pIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2Jhc2VsaW5lJywgeyBzdGF0aWM6IHRydWUgfSkgYmFzZWxpbmVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwJywgeyBzdGF0aWM6IHRydWUgfSkgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwSGVhZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZ3JvdXBIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgY29uZmlnU2VydmljZSA9IGluamVjdChHYW50dENvbmZpZ1NlcnZpY2UpO1xuXG4gICAgcHVibGljIGxpbmthYmxlOiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbXB1dGVBbGxSZWZzID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsaW5rRHJhZ0VuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmtEcmFnRXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgdmlldzogR2FudHRWaWV3O1xuXG4gICAgcHVibGljIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdID0gW107XG5cbiAgICBwdWJsaWMgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHVibGljIGJhc2VsaW5lSXRlbXM6IEdhbnR0QmFzZWxpbmVJdGVtSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHVibGljIGJhc2VsaW5lSXRlbXNNYXA6IERpY3Rpb25hcnk8R2FudHRCYXNlbGluZUl0ZW1JbnRlcm5hbD4gPSB7fTtcblxuICAgIC8vIHB1YmxpYyB2aWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dFZpZXc+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHVibGljIGRyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lcjtcblxuICAgIHB1YmxpYyB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+O1xuXG4gICAgcHVibGljIHRhYmxlPzogTmd4R2FudHRUYWJsZUNvbXBvbmVudDtcblxuICAgIHByaXZhdGUgZ3JvdXBzTWFwOiB7IFtrZXk6IHN0cmluZ106IEdhbnR0R3JvdXBJbnRlcm5hbCB9O1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0YWJsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2xpbmtPcHRpb25zOiBHYW50dExpbmtPcHRpb25zO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dCcpIGdhbnR0Q2xhc3MgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSwgLy8gQEluamVjdChHQU5UVF9HTE9CQUxfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBHYW50dEdsb2JhbENvbmZpZ1xuICAgICAgICBwcm90ZWN0ZWQgY29uZmlnOiBHYW50dEdsb2JhbENvbmZpZ1xuICAgICkge31cblxuICAgIHByaXZhdGUgY3JlYXRlVmlldygpIHtcbiAgICAgICAgY29uc3Qgdmlld0RhdGUgPSB0aGlzLmdldFZpZXdEYXRlKCk7XG5cbiAgICAgICAgdGhpcy5zdHlsZXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN0eWxlT3B0aW9ucywgdGhpcy5zdHlsZXMpO1xuICAgICAgICB0aGlzLnZpZXdPcHRpb25zLmRhdGVGb3JtYXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmRhdGVGb3JtYXQsIHRoaXMudmlld09wdGlvbnMuZGF0ZUZvcm1hdCk7XG4gICAgICAgIHRoaXMudmlld09wdGlvbnMuc3R5bGVPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdHlsZU9wdGlvbnMsIHRoaXMudmlld09wdGlvbnMuc3R5bGVPcHRpb25zKTtcbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucy5kYXRlRGlzcGxheUZvcm1hdHMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Vmlld3NMb2NhbGUoKVt0aGlzLnZpZXdUeXBlXT8uZGF0ZUZvcm1hdHM7XG4gICAgICAgIHRoaXMudmlldyA9IGNyZWF0ZVZpZXdGYWN0b3J5KHRoaXMudmlld1R5cGUsIHZpZXdEYXRlLnN0YXJ0LCB2aWV3RGF0ZS5lbmQsIHRoaXMudmlld09wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBHcm91cHMoKSB7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlZElkcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmV4cGFuZGVkID09PSBmYWxzZSkubWFwKChncm91cCkgPT4gZ3JvdXAuaWQpO1xuICAgICAgICB0aGlzLmdyb3Vwc01hcCA9IHt9O1xuICAgICAgICB0aGlzLmdyb3VwcyA9IFtdO1xuICAgICAgICB0aGlzLm9yaWdpbkdyb3Vwcy5mb3JFYWNoKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdhbnR0R3JvdXBJbnRlcm5hbChvcmlnaW4pO1xuICAgICAgICAgICAgZ3JvdXAuZXhwYW5kZWQgPSAhY29sbGFwc2VkSWRzLmluY2x1ZGVzKGdyb3VwLmlkKTtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzTWFwW2dyb3VwLmlkXSA9IGdyb3VwO1xuICAgICAgICAgICAgdGhpcy5ncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBJdGVtcygpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5JdGVtcyA9IHVuaXFCeSh0aGlzLm9yaWdpbkl0ZW1zLCAnaWQnKTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5JdGVtcy5mb3JFYWNoKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBzTWFwW29yaWdpbi5ncm91cF9pZF07XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgR2FudHRJdGVtSW50ZXJuYWwob3JpZ2luLCAwLCB0aGlzLnZpZXcpO1xuICAgICAgICAgICAgICAgICAgICBncm91cC5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5JdGVtcy5mb3JFYWNoKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gbmV3IEdhbnR0SXRlbUludGVybmFsKG9yaWdpbiwgMCwgdGhpcy52aWV3KTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBCYXNlbGluZUl0ZW1zKCkge1xuICAgICAgICB0aGlzLm9yaWdpbkJhc2VsaW5lSXRlbXMgPSB1bmlxQnkodGhpcy5vcmlnaW5CYXNlbGluZUl0ZW1zLCAnaWQnKTtcbiAgICAgICAgdGhpcy5iYXNlbGluZUl0ZW1zID0gW107XG5cbiAgICAgICAgdGhpcy5vcmlnaW5CYXNlbGluZUl0ZW1zLmZvckVhY2goKG9yaWdpbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBHYW50dEJhc2VsaW5lSXRlbUludGVybmFsKG9yaWdpbik7XG4gICAgICAgICAgICB0aGlzLmJhc2VsaW5lSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5iYXNlbGluZUl0ZW1zTWFwID0ga2V5QnkodGhpcy5iYXNlbGluZUl0ZW1zLCAnaWQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXhwYW5kZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5JdGVtcyA9IHVuaXFCeSh0aGlzLm9yaWdpbkl0ZW1zLCAnaWQnKTtcbiAgICAgICAgbGV0IGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdID0gW107XG4gICAgICAgIGNvbnN0IGZsYXRPcmlnaW5JdGVtcyA9IGdldEZsYXRJdGVtcyh0aGlzLm9yaWdpbkl0ZW1zKTtcblxuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbXMgPSBmbGF0dGVuKHRoaXMuZ3JvdXBzLm1hcCgoZ3JvdXApID0+IHJlY3Vyc2l2ZUl0ZW1zKGdyb3VwLml0ZW1zKSkpO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLm9yaWdpbi5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW0gPSBmbGF0T3JpZ2luSXRlbXMuZmluZCgob3JpZ2luSXRlbSkgPT4gb3JpZ2luSXRlbS5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0l0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0l0ZW0uZXhwYW5kZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3SXRlbS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Vmlld0RhdGUoKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMuc3RhcnQ7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLmVuZDtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXJ0IHx8ICF0aGlzLmVuZCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5JdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uc3RhcnQgJiYgIXRoaXMuc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVN0YXJ0ID0gaXRlbS5zdGFydCBpbnN0YW5jZW9mIERhdGUgPyBpdGVtLnN0YXJ0LmdldFRpbWUoKSAvIDEwMDAgOiBpdGVtLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHN0YXJ0ID8gTWF0aC5taW4oc3RhcnQsIGl0ZW1TdGFydCkgOiBpdGVtU3RhcnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmVuZCAmJiAhdGhpcy5lbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUVuZCA9IGl0ZW0uc3RhcnQgaW5zdGFuY2VvZiBEYXRlID8gaXRlbS5zdGFydC5nZXRUaW1lKCkgLyAxMDAwIDogaXRlbS5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kID8gTWF0aC5tYXgoZW5kLCBpdGVtRW5kKSA6IGl0ZW1FbmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IEdhbnR0RGF0ZShzdGFydCksXG4gICAgICAgICAgICAgICAgaXNDdXN0b206IHRoaXMuc3RhcnQgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmQ6IHtcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgR2FudHREYXRlKGVuZCksXG4gICAgICAgICAgICAgICAgaXNDdXN0b206IHRoaXMuZW5kID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29tcHV0ZVJlZnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXB1dGVBbGxSZWZzKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwSXRlbXMgPSByZWN1cnNpdmVJdGVtcyhncm91cC5pdGVtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlSXRlbXNSZWZzKC4uLmdyb3VwSXRlbXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5jb21wdXRlSXRlbXNSZWZzKC4uLml0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICByZXR1cm4gbmV3IFNlbGVjdGlvbk1vZGVsKHRoaXMubXVsdGlwbGUsIFtdKTtcbiAgICB9XG5cbiAgICBleHBhbmRHcm91cHMoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgIGdyb3VwLnNldEV4cGFuZChleHBhbmRlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4cGFuZENoYW5nZS5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlVmlldygpO1xuICAgICAgICB0aGlzLnNldHVwR3JvdXBzKCk7XG4gICAgICAgIHRoaXMuc2V0dXBJdGVtcygpO1xuICAgICAgICB0aGlzLmNvbXB1dGVSZWZzKCk7XG4gICAgICAgIHRoaXMuc2V0dXBCYXNlbGluZUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi50aGlzLmJhc2VsaW5lSXRlbXMpO1xuICAgICAgICB0aGlzLmluaXRTZWxlY3Rpb25Nb2RlbCgpO1xuICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlID0gZmFsc2U7XG5cbiAgICAgICAgLy8gTm90ZTogdGhlIHpvbmUgbWF5IGJlIG5vb3BlZCB0aHJvdWdoIGBCb290c3RyYXBPcHRpb25zYCB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlIHJvb3QgbW9kdWxlLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIHRoZSBgb25TdGFibGVgIHdpbGwgbmV2ZXIgZW1pdCBhbnkgdmFsdWUuXG4gICAgICAgIGNvbnN0IG9uU3RhYmxlJCA9IHRoaXMubmdab25lLmlzU3RhYmxlID8gZnJvbShQcm9taXNlLnJlc29sdmUoKSkgOiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpO1xuICAgICAgICAvLyBOb3JtYWxseSB0aGlzIGlzbid0IGluIHRoZSB6b25lLCBidXQgaXQgY2FuIGNhdXNlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGZvciBhcHBzXG4gICAgICAgIC8vIHVzaW5nIGB6b25lLXBhdGNoLXJ4anNgIGJlY2F1c2UgaXQnbGwgdHJpZ2dlciBhIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpdCB1bnN1YnNjcmliZXMuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3RhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWRMb2FkT25TY3JvbGwgPSB0aGlzLmRpc2FibGVkTG9hZE9uU2Nyb2xsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnU3RhcnRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZExvYWRPblNjcm9sbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0ZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ01vdmVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnRW5kZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRMb2FkT25TY3JvbGwgPSBkaXNhYmxlZExvYWRPblNjcm9sbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnRW5kZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy52aWV3LnN0YXJ0JC5waXBlKHNraXAoMSksIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVSZWZzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy52aWV3VHlwZSAmJiBjaGFuZ2VzLnZpZXdUeXBlLmN1cnJlbnRWYWx1ZSAmJiBjaGFuZ2VzLnZpZXdUeXBlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy52aWV3VHlwZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VWaWV3KGNoYW5nZXMudmlld1R5cGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLnZpZXdPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VWaWV3KHRoaXMudmlld1R5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZXMub3JpZ2luSXRlbXMgfHwgY2hhbmdlcy5vcmlnaW5Hcm91cHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwRXhwYW5kZWRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBHcm91cHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVSZWZzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLm9yaWdpbkJhc2VsaW5lSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwQmFzZWxpbmVJdGVtcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi50aGlzLmJhc2VsaW5lSXRlbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjb21wdXRlSXRlbXNSZWZzKC4uLml0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdIHwgR2FudHRCYXNlbGluZUl0ZW1JbnRlcm5hbFtdKSB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0udXBkYXRlUmVmcyh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0uc3RhcnQgJiYgaXRlbS5lbmQgPyB0aGlzLnZpZXcuZ2V0RGF0ZVJhbmdlV2lkdGgoaXRlbS5zdGFydCwgaXRlbS5lbmQpIDogMCxcbiAgICAgICAgICAgICAgICB4OiBpdGVtLnN0YXJ0ID8gdGhpcy52aWV3LmdldFhQb2ludEJ5RGF0ZShpdGVtLnN0YXJ0KSA6IDAsXG4gICAgICAgICAgICAgICAgeTogKHRoaXMuc3R5bGVzLmxpbmVIZWlnaHQgLSB0aGlzLnN0eWxlcy5iYXJIZWlnaHQpIC8gMiAtIDFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cblxuICAgIGRldGVjdENoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvLyBwdWJsaWMgZnVuY3Rpb25zXG5cbiAgICBleHBhbmRHcm91cChncm91cDogR2FudHRHcm91cEludGVybmFsKSB7XG4gICAgICAgIGdyb3VwLnNldEV4cGFuZCghZ3JvdXAuZXhwYW5kZWQpO1xuICAgICAgICB0aGlzLmV4cGFuZENoYW5nZS5lbWl0KGdyb3VwKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGV4cGFuZEFsbCgpIHtcbiAgICAgICAgdGhpcy5leHBhbmRHcm91cHModHJ1ZSk7XG4gICAgfVxuXG4gICAgY29sbGFwc2VBbGwoKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kR3JvdXBzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXRHYW50dEl0ZW0oaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRHYW50dEl0ZW1zKFtpZF0pWzBdIHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0R2FudHRJdGVtcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGxldCBpdGVtczogR2FudHRJdGVtSW50ZXJuYWxbXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbXMgPSBmbGF0dGVuKHRoaXMuZ3JvdXBzLm1hcCgoZ3JvdXApID0+IHJlY3Vyc2l2ZUl0ZW1zKGdyb3VwLml0ZW1zKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGlkcy5pbmNsdWRlcyhpdGVtLmlkKSk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChpZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKGlkKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VWaWV3KHR5cGU6IEdhbnR0Vmlld1R5cGUpIHtcbiAgICAgICAgdGhpcy52aWV3VHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuY3JlYXRlVmlldygpO1xuICAgICAgICB0aGlzLnNldHVwR3JvdXBzKCk7XG4gICAgICAgIHRoaXMuc2V0dXBJdGVtcygpO1xuICAgICAgICB0aGlzLmNvbXB1dGVSZWZzKCk7XG4gICAgICAgIHRoaXMuc2V0dXBCYXNlbGluZUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi50aGlzLmJhc2VsaW5lSXRlbXMpO1xuICAgICAgICB0aGlzLnZpZXdDaGFuZ2UuZW1pdCh0aGlzLnZpZXcpO1xuICAgIH1cblxuICAgIHJlcmVuZGVyVmlldygpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VWaWV3KHRoaXMudmlld1R5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEdBTlRUX1VQUEVSX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEdhbnR0VXBwZXI+KCdHQU5UVF9VUFBFUl9UT0tFTicpO1xuIl19
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtdXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFFWixXQUFXLEVBSVgsY0FBYyxFQUNkLFNBQVMsRUFJVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUdILGFBQWEsRUFHYixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBSXBCLE1BQU0sU0FBUyxDQUFDO0FBRWpCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQWMsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkcsT0FBTyxFQUFFLGtCQUFrQixFQUF1RCxNQUFNLGdCQUFnQixDQUFDO0FBRXpHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFxQix5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUloRixNQUFNLE9BQWdCLFVBQVU7SUE4QjVCLElBQWEsV0FBVyxDQUFDLE9BQXlCO1FBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFD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WUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVGLGVBQWU7c0JBQXpELFlBQVk7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE0Q2IsVUFBVTtzQkFBckMsV0FBVzt1QkFBQyxhQUFhOztBQW1SOUIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWEsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW5wdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBOZ1pvbmUsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCB0YWtlLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBHYW50dEl0ZW0sXG4gICAgR2FudHRHcm91cCxcbiAgICBHYW50dFZpZXdUeXBlLFxuICAgIEdhbnR0TG9hZE9uU2Nyb2xsRXZlbnQsXG4gICAgR2FudHREcmFnRXZlbnQsXG4gICAgR2FudHRHcm91cEludGVybmFsLFxuICAgIEdhbnR0SXRlbUludGVybmFsLFxuICAgIEdhbnR0QmFyQ2xpY2tFdmVudCxcbiAgICBHYW50dExpbmtEcmFnRXZlbnQsXG4gICAgR2FudHRUb29sYmFyT3B0aW9uc1xufSBmcm9tICcuL2NsYXNzJztcbmltcG9ydCB7IEdhbnR0VmlldywgR2FudHRWaWV3T3B0aW9ucyB9IGZyb20gJy4vdmlld3Mvdmlldyc7XG5pbXBvcnQgeyBjcmVhdGVWaWV3RmFjdG9yeSB9IGZyb20gJy4vdmlld3MvZmFjdG9yeSc7XG5pbXBvcnQgeyBHYW50dERhdGUsIGdldFVuaXhUaW1lIH0gZnJvbSAnLi91dGlscy9kYXRlJztcbmltcG9ydCB7IHVuaXFCeSwgZmxhdHRlbiwgcmVjdXJzaXZlSXRlbXMsIGdldEZsYXRJdGVtcywgRGljdGlvbmFyeSwga2V5QnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBHYW50dENvbmZpZ1NlcnZpY2UsIEdhbnR0R2xvYmFsQ29uZmlnLCBHYW50dFN0eWxlT3B0aW9ucywgZGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZ2FudHQuY29uZmlnJztcbmltcG9ydCB7IEdhbnR0TGlua09wdGlvbnMgfSBmcm9tICcuL2NsYXNzL2xpbmsnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgR2FudHRCYXNlbGluZUl0ZW0sIEdhbnR0QmFzZWxpbmVJdGVtSW50ZXJuYWwgfSBmcm9tICcuL2NsYXNzL2Jhc2VsaW5lJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2dhbnR0LXRhYmxlLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdhbnR0VXBwZXIgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnaXRlbXMnKSBvcmlnaW5JdGVtczogR2FudHRJdGVtW10gPSBbXTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdncm91cHMnKSBvcmlnaW5Hcm91cHM6IEdhbnR0R3JvdXBbXSA9IFtdO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2Jhc2VsaW5lSXRlbXMnKSBvcmlnaW5CYXNlbGluZUl0ZW1zOiBHYW50dEJhc2VsaW5lSXRlbVtdID0gW107XG5cbiAgICBASW5wdXQoKSB2aWV3VHlwZTogR2FudHRWaWV3VHlwZSA9IEdhbnR0Vmlld1R5cGUubW9udGg7XG5cbiAgICBASW5wdXQoKSBzdGFydDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZW5kOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBzaG93VG9kYXlMaW5lID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlczogR2FudHRTdHlsZU9wdGlvbnM7XG5cbiAgICBASW5wdXQoKSBzaG93VG9vbGJhciA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdG9vbGJhck9wdGlvbnM6IEdhbnR0VG9vbGJhck9wdGlvbnMgPSB7XG4gICAgICAgIHZpZXdUeXBlczogW0dhbnR0Vmlld1R5cGUuZGF5LCBHYW50dFZpZXdUeXBlLm1vbnRoLCBHYW50dFZpZXdUeXBlLnllYXJdXG4gICAgfTtcblxuICAgIEBJbnB1dCgpIHZpZXdPcHRpb25zOiBHYW50dFZpZXdPcHRpb25zID0ge307XG5cbiAgICBASW5wdXQoKSBzZXQgbGlua09wdGlvbnMob3B0aW9uczogR2FudHRMaW5rT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9saW5rT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IGxpbmtPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5saW5rT3B0aW9ucywgdGhpcy5fbGlua09wdGlvbnMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGRpc2FibGVkTG9hZE9uU2Nyb2xsOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0YWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IHRoaXMuaW5pdFNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsPy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG11bHRpcGxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHF1aWNrVGltZUZvY3VzID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgbG9hZE9uU2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExvYWRPblNjcm9sbEV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGRyYWdTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dERyYWdFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBkcmFnTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0RHJhZ0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGRyYWdFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHREcmFnRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSB2aWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dFZpZXc+KCk7XG5cbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dEl0ZW1JbnRlcm5hbCB8IEdhbnR0R3JvdXBJbnRlcm5hbD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2JhcicsIHsgc3RhdGljOiB0cnVlIH0pIGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgncmFuZ2UnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYW5nZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgnaXRlbScsIHsgc3RhdGljOiB0cnVlIH0pIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2Jhc2VsaW5lJywgeyBzdGF0aWM6IHRydWUgfSkgYmFzZWxpbmVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwJywgeyBzdGF0aWM6IHRydWUgfSkgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwSGVhZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZ3JvdXBIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgY29uZmlnU2VydmljZSA9IGluamVjdChHYW50dENvbmZpZ1NlcnZpY2UpO1xuXG4gICAgcHVibGljIGxpbmthYmxlOiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbXB1dGVBbGxSZWZzID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsaW5rRHJhZ0VuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmtEcmFnRXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgdmlldzogR2FudHRWaWV3O1xuXG4gICAgcHVibGljIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdID0gW107XG5cbiAgICBwdWJsaWMgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHVibGljIGJhc2VsaW5lSXRlbXM6IEdhbnR0QmFzZWxpbmVJdGVtSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHVibGljIGJhc2VsaW5lSXRlbXNNYXA6IERpY3Rpb25hcnk8R2FudHRCYXNlbGluZUl0ZW1JbnRlcm5hbD4gPSB7fTtcblxuICAgIC8vIHB1YmxpYyB2aWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dFZpZXc+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHVibGljIGRyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lcjtcblxuICAgIHB1YmxpYyB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxzdHJpbmc+O1xuXG4gICAgcHVibGljIHRhYmxlPzogTmd4R2FudHRUYWJsZUNvbXBvbmVudDtcblxuICAgIHByaXZhdGUgZ3JvdXBzTWFwOiB7IFtrZXk6IHN0cmluZ106IEdhbnR0R3JvdXBJbnRlcm5hbCB9O1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0YWJsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2xpbmtPcHRpb25zOiBHYW50dExpbmtPcHRpb25zO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dCcpIGdhbnR0Q2xhc3MgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSwgLy8gQEluamVjdChHQU5UVF9HTE9CQUxfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBHYW50dEdsb2JhbENvbmZpZ1xuICAgICAgICBwcm90ZWN0ZWQgY29uZmlnOiBHYW50dEdsb2JhbENvbmZpZ1xuICAgICkge31cblxuICAgIHByaXZhdGUgY3JlYXRlVmlldygpIHtcbiAgICAgICAgY29uc3Qgdmlld0RhdGUgPSB0aGlzLmdldFZpZXdEYXRlKCk7XG5cbiAgICAgICAgdGhpcy5zdHlsZXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN0eWxlT3B0aW9ucywgdGhpcy5zdHlsZXMpO1xuICAgICAgICB0aGlzLnZpZXdPcHRpb25zLmRhdGVGb3JtYXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmRhdGVGb3JtYXQsIHRoaXMudmlld09wdGlvbnMuZGF0ZUZvcm1hdCk7XG4gICAgICAgIHRoaXMudmlld09wdGlvbnMuc3R5bGVPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdHlsZU9wdGlvbnMsIHRoaXMudmlld09wdGlvbnMuc3R5bGVPcHRpb25zKTtcbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucy5kYXRlRGlzcGxheUZvcm1hdHMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Vmlld3NMb2NhbGUoKVt0aGlzLnZpZXdUeXBlXT8uZGF0ZUZvcm1hdHM7XG4gICAgICAgIHRoaXMudmlldyA9IGNyZWF0ZVZpZXdGYWN0b3J5KHRoaXMudmlld1R5cGUsIHZpZXdEYXRlLnN0YXJ0LCB2aWV3RGF0ZS5lbmQsIHRoaXMudmlld09wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBHcm91cHMoKSB7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlZElkcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmV4cGFuZGVkID09PSBmYWxzZSkubWFwKChncm91cCkgPT4gZ3JvdXAuaWQpO1xuICAgICAgICB0aGlzLmdyb3Vwc01hcCA9IHt9O1xuICAgICAgICB0aGlzLmdyb3VwcyA9IFtdO1xuICAgICAgICB0aGlzLm9yaWdpbkdyb3Vwcy5mb3JFYWNoKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEdhbnR0R3JvdXBJbnRlcm5hbChvcmlnaW4pO1xuICAgICAgICAgICAgZ3JvdXAuZXhwYW5kZWQgPSAhY29sbGFwc2VkSWRzLmluY2x1ZGVzKGdyb3VwLmlkKTtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzTWFwW2dyb3VwLmlkXSA9IGdyb3VwO1xuICAgICAgICAgICAgdGhpcy5ncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBJdGVtcygpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5JdGVtcyA9IHVuaXFCeSh0aGlzLm9yaWdpbkl0ZW1zLCAnaWQnKTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5JdGVtcy5mb3JFYWNoKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBzTWFwW29yaWdpbi5ncm91cF9pZF07XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgR2FudHRJdGVtSW50ZXJuYWwob3JpZ2luLCAwLCB0aGlzLnZpZXcpO1xuICAgICAgICAgICAgICAgICAgICBncm91cC5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5JdGVtcy5mb3JFYWNoKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gbmV3IEdhbnR0SXRlbUludGVybmFsKG9yaWdpbiwgMCwgdGhpcy52aWV3KTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBCYXNlbGluZUl0ZW1zKCkge1xuICAgICAgICB0aGlzLm9yaWdpbkJhc2VsaW5lSXRlbXMgPSB1bmlxQnkodGhpcy5vcmlnaW5CYXNlbGluZUl0ZW1zLCAnaWQnKTtcbiAgICAgICAgdGhpcy5iYXNlbGluZUl0ZW1zID0gW107XG5cbiAgICAgICAgdGhpcy5vcmlnaW5CYXNlbGluZUl0ZW1zLmZvckVhY2goKG9yaWdpbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBHYW50dEJhc2VsaW5lSXRlbUludGVybmFsKG9yaWdpbik7XG4gICAgICAgICAgICB0aGlzLmJhc2VsaW5lSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5iYXNlbGluZUl0ZW1zTWFwID0ga2V5QnkodGhpcy5iYXNlbGluZUl0ZW1zLCAnaWQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXhwYW5kZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5JdGVtcyA9IHVuaXFCeSh0aGlzLm9yaWdpbkl0ZW1zLCAnaWQnKTtcbiAgICAgICAgbGV0IGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdID0gW107XG4gICAgICAgIGNvbnN0IGZsYXRPcmlnaW5JdGVtcyA9IGdldEZsYXRJdGVtcyh0aGlzLm9yaWdpbkl0ZW1zKTtcblxuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbXMgPSBmbGF0dGVuKHRoaXMuZ3JvdXBzLm1hcCgoZ3JvdXApID0+IHJlY3Vyc2l2ZUl0ZW1zKGdyb3VwLml0ZW1zKSkpO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLm9yaWdpbi5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW0gPSBmbGF0T3JpZ2luSXRlbXMuZmluZCgob3JpZ2luSXRlbSkgPT4gb3JpZ2luSXRlbS5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0l0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0l0ZW0uZXhwYW5kZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3SXRlbS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Vmlld0RhdGUoKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMuc3RhcnQ7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLmVuZDtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXJ0IHx8ICF0aGlzLmVuZCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5JdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uc3RhcnQgJiYgIXRoaXMuc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVN0YXJ0ID0gaXRlbS5zdGFydCBpbnN0YW5jZW9mIERhdGUgPyBnZXRVbml4VGltZShpdGVtLnN0YXJ0KSA6IGl0ZW0uc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnQgPyBNYXRoLm1pbihzdGFydCwgaXRlbVN0YXJ0KSA6IGl0ZW1TdGFydDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZW5kICYmICF0aGlzLmVuZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtRW5kID0gaXRlbS5zdGFydCBpbnN0YW5jZW9mIERhdGUgPyBnZXRVbml4VGltZShpdGVtLnN0YXJ0KSA6IGl0ZW0uc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGVuZCA9IGVuZCA/IE1hdGgubWF4KGVuZCwgaXRlbUVuZCkgOiBpdGVtRW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgIGRhdGU6IG5ldyBHYW50dERhdGUoc3RhcnQpLFxuICAgICAgICAgICAgICAgIGlzQ3VzdG9tOiB0aGlzLnN0YXJ0ID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IEdhbnR0RGF0ZShlbmQpLFxuICAgICAgICAgICAgICAgIGlzQ3VzdG9tOiB0aGlzLmVuZCA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbXB1dGVSZWZzKCkge1xuICAgICAgICBpZiAodGhpcy5jb21wdXRlQWxsUmVmcykge1xuICAgICAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cEl0ZW1zID0gcmVjdXJzaXZlSXRlbXMoZ3JvdXAuaXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi5ncm91cEl0ZW1zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi5pdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZWxlY3Rpb25Nb2RlbCh0aGlzLm11bHRpcGxlLCBbXSk7XG4gICAgfVxuXG4gICAgZXhwYW5kR3JvdXBzKGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICBncm91cC5zZXRFeHBhbmQoZXhwYW5kZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgdGhpcy5zZXR1cEdyb3VwcygpO1xuICAgICAgICB0aGlzLnNldHVwSXRlbXMoKTtcbiAgICAgICAgdGhpcy5jb21wdXRlUmVmcygpO1xuICAgICAgICB0aGlzLnNldHVwQmFzZWxpbmVJdGVtcygpO1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtc1JlZnMoLi4udGhpcy5iYXNlbGluZUl0ZW1zKTtcbiAgICAgICAgdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgdGhpcy5maXJzdENoYW5nZSA9IGZhbHNlO1xuXG4gICAgICAgIC8vIE5vdGU6IHRoZSB6b25lIG1heSBiZSBub29wZWQgdGhyb3VnaCBgQm9vdHN0cmFwT3B0aW9uc2Agd2hlbiBib290c3RyYXBwaW5nIHRoZSByb290IG1vZHVsZS4gVGhpcyBtZWFuc1xuICAgICAgICAvLyB0aGUgYG9uU3RhYmxlYCB3aWxsIG5ldmVyIGVtaXQgYW55IHZhbHVlLlxuICAgICAgICBjb25zdCBvblN0YWJsZSQgPSB0aGlzLm5nWm9uZS5pc1N0YWJsZSA/IGZyb20oUHJvbWlzZS5yZXNvbHZlKCkpIDogdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKTtcbiAgICAgICAgLy8gTm9ybWFsbHkgdGhpcyBpc24ndCBpbiB0aGUgem9uZSwgYnV0IGl0IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBmb3IgYXBwc1xuICAgICAgICAvLyB1c2luZyBgem9uZS1wYXRjaC1yeGpzYCBiZWNhdXNlIGl0J2xsIHRyaWdnZXIgYSBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gaXQgdW5zdWJzY3JpYmVzLlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBvblN0YWJsZSQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkTG9hZE9uU2Nyb2xsID0gdGhpcy5kaXNhYmxlZExvYWRPblNjcm9sbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ1N0YXJ0ZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRMb2FkT25TY3JvbGwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdNb3ZlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnTW92ZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkTG9hZE9uU2Nyb2xsID0gZGlzYWJsZWRMb2FkT25TY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0VuZGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmlldy5zdGFydCQucGlwZShza2lwKDEpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wdXRlUmVmcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMudmlld1R5cGUgJiYgY2hhbmdlcy52aWV3VHlwZS5jdXJyZW50VmFsdWUgJiYgY2hhbmdlcy52aWV3VHlwZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMudmlld1R5cGUucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlldyhjaGFuZ2VzLnZpZXdUeXBlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy52aWV3T3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlldyh0aGlzLnZpZXdUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLm9yaWdpbkl0ZW1zIHx8IGNoYW5nZXMub3JpZ2luR3JvdXBzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEV4cGFuZGVkU3RhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwR3JvdXBzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlUmVmcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5vcmlnaW5CYXNlbGluZUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEJhc2VsaW5lSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVJdGVtc1JlZnMoLi4udGhpcy5iYXNlbGluZUl0ZW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgY29tcHV0ZUl0ZW1zUmVmcyguLi5pdGVtczogR2FudHRJdGVtSW50ZXJuYWxbXSB8IEdhbnR0QmFzZWxpbmVJdGVtSW50ZXJuYWxbXSkge1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLnVwZGF0ZVJlZnMoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBpdGVtLnN0YXJ0ICYmIGl0ZW0uZW5kID8gdGhpcy52aWV3LmdldERhdGVSYW5nZVdpZHRoKGl0ZW0uc3RhcnQsIGl0ZW0uZW5kKSA6IDAsXG4gICAgICAgICAgICAgICAgeDogaXRlbS5zdGFydCA/IHRoaXMudmlldy5nZXRYUG9pbnRCeURhdGUoaXRlbS5zdGFydCkgOiAwLFxuICAgICAgICAgICAgICAgIHk6ICh0aGlzLnN0eWxlcy5saW5lSGVpZ2h0IC0gdGhpcy5zdHlsZXMuYmFySGVpZ2h0KSAvIDIgLSAxXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBHYW50dEdyb3VwSW50ZXJuYWwgfCBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICByZXR1cm4gaXRlbS5pZCB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBkZXRlY3RDaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLy8gcHVibGljIGZ1bmN0aW9uc1xuXG4gICAgZXhwYW5kR3JvdXAoZ3JvdXA6IEdhbnR0R3JvdXBJbnRlcm5hbCkge1xuICAgICAgICBncm91cC5zZXRFeHBhbmQoIWdyb3VwLmV4cGFuZGVkKTtcbiAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdChncm91cCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBleHBhbmRBbGwoKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kR3JvdXBzKHRydWUpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlQWxsKCkge1xuICAgICAgICB0aGlzLmV4cGFuZEdyb3VwcyhmYWxzZSk7XG4gICAgfVxuXG4gICAgZ2V0R2FudHRJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0R2FudHRJdGVtcyhbaWRdKVswXSB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldEdhbnR0SXRlbXMoaWRzOiBzdHJpbmdbXSkge1xuICAgICAgICBsZXQgaXRlbXM6IEdhbnR0SXRlbUludGVybmFsW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1zID0gZmxhdHRlbih0aGlzLmdyb3Vwcy5tYXAoKGdyb3VwKSA9PiByZWN1cnNpdmVJdGVtcyhncm91cC5pdGVtcykpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpZHMuaW5jbHVkZXMoaXRlbS5pZCkpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQoaWQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChpZCk7XG4gICAgfVxuXG4gICAgY2hhbmdlVmlldyh0eXBlOiBHYW50dFZpZXdUeXBlKSB7XG4gICAgICAgIHRoaXMudmlld1R5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgdGhpcy5zZXR1cEdyb3VwcygpO1xuICAgICAgICB0aGlzLnNldHVwSXRlbXMoKTtcbiAgICAgICAgdGhpcy5jb21wdXRlUmVmcygpO1xuICAgICAgICB0aGlzLnNldHVwQmFzZWxpbmVJdGVtcygpO1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtc1JlZnMoLi4udGhpcy5iYXNlbGluZUl0ZW1zKTtcbiAgICAgICAgdGhpcy52aWV3Q2hhbmdlLmVtaXQodGhpcy52aWV3KTtcbiAgICB9XG5cbiAgICByZXJlbmRlclZpZXcoKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlVmlldyh0aGlzLnZpZXdUeXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBHQU5UVF9VUFBFUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxHYW50dFVwcGVyPignR0FOVFRfVVBQRVJfVE9LRU4nKTtcbiJdfQ==
@@ -4,6 +4,7 @@ import { Injectable } from '@angular/core';
4
4
  import { GANTT_I18N_LOCALE_TOKEN, GanttI18nLocale } from './i18n/i18n';
5
5
  import zhHans from './i18n/locales/zh-hans';
6
6
  import zhHant from './i18n/locales/zh-hant';
7
+ import { setDefaultTimeZone } from './utils/date';
7
8
  import * as i0 from "@angular/core";
8
9
  export const defaultConfig = {
9
10
  locale: GanttI18nLocale.zhHans,
@@ -39,6 +40,12 @@ export class GanttConfigService {
39
40
  ['zh-cn']: zhHans,
40
41
  ['zh-tw']: zhHant
41
42
  });
43
+ if (this.config.dateOptions?.timeZone) {
44
+ setDefaultTimeZone(this.config.dateOptions.timeZone);
45
+ }
46
+ }
47
+ setLocale(locale) {
48
+ this.config.locale = locale;
42
49
  }
43
50
  getLocaleConfig() {
44
51
  return this.i18nLocales[this.config.locale] ?? this.i18nLocales[this.config.locale.toLowerCase()] ?? zhHans;
@@ -46,7 +53,7 @@ export class GanttConfigService {
46
53
  getViewsLocale() {
47
54
  return this.getLocaleConfig().views;
48
55
  }
49
- getDateLocal() {
56
+ getDateLocale() {
50
57
  return this.config.dateOptions?.locale ?? this.getLocaleConfig().dateLocale;
51
58
  }
52
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttConfigService, deps: [{ token: GANTT_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -59,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
59
66
  type: Inject,
60
67
  args: [GANTT_GLOBAL_CONFIG]
61
68
  }] }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFvQixhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXlCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RixPQUFPLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQzs7QUFzQzVDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBc0I7SUFDNUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxNQUFNO0lBQzlCLFdBQVcsRUFBRTtRQUNULGVBQWUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDbkMsU0FBUyxFQUFFLEtBQUs7UUFDaEIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7S0FDcEM7SUFDRCxZQUFZLEVBQUU7UUFDVixZQUFZLEVBQUUsRUFBRTtRQUNoQixVQUFVLEVBQUUsRUFBRTtRQUNkLFNBQVMsRUFBRSxFQUFFO0tBQ2hCO0lBQ0QsV0FBVyxFQUFFO1FBQ1QsWUFBWSxFQUFFLENBQUM7S0FDbEI7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQW9CLHFCQUFxQixDQUFDLENBQUM7QUFHaEcsTUFBTSxPQUFPLGtCQUFrQjtJQUszQixZQUF5QyxZQUErQjtRQUNwRSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNWLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDaEYsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUN0RixXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQ25GLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUM7U0FDdEYsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsTUFBTSxDQUNyRCxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRTtZQUNyQixNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLG1CQUFtQjtZQUMzRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLEVBQ0Q7WUFDSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU07WUFDakIsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO1NBQ3VDLENBQy9ELENBQUM7SUFDTixDQUFDO0lBRU8sZUFBZTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ2hILENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNoRixDQUFDOzhHQXJDUSxrQkFBa0Isa0JBS1AsbUJBQW1CO2tIQUw5QixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTWpCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhbGUgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBHYW50dExpbmtMaW5lVHlwZSwgR2FudHRMaW5rT3B0aW9ucywgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHQU5UVF9JMThOX0xPQ0FMRV9UT0tFTiwgR2FudHRJMThuTG9jYWxlQ29uZmlnLCBHYW50dEkxOG5Mb2NhbGUgfSBmcm9tICcuL2kxOG4vaTE4bic7XG5pbXBvcnQgemhIYW5zIGZyb20gJy4vaTE4bi9sb2NhbGVzL3poLWhhbnMnO1xuaW1wb3J0IHpoSGFudCBmcm9tICcuL2kxOG4vbG9jYWxlcy96aC1oYW50JztcblxuZXhwb3J0IGludGVyZmFjZSBHYW50dERhdGVGb3JtYXQge1xuICAgIGhvdXI/OiBzdHJpbmc7XG4gICAgZGF5Pzogc3RyaW5nO1xuICAgIHdlZWs/OiBzdHJpbmc7XG4gICAgbW9udGg/OiBzdHJpbmc7XG4gICAgcXVhcnRlcj86IHN0cmluZztcbiAgICB5ZWFyPzogc3RyaW5nO1xuICAgIHllYXJNb250aD86IHN0cmluZztcbiAgICB5ZWFyUXVhcnRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYW50dERhdGVPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBkYXRlT3B0aW9ucyBpcyBkZXByZWNhdGVkLCB1c2UgaTE4biBsb2NhbGUgc2V0dGluZyBpbnN0ZWFkXG4gICAgICogaHR0cDovL2dhbnR0Lm5nbmljZS5jb20vZ3VpZGVzL2NvbmZpZ3VyYXRpb24vaTE4blxuICAgICAqL1xuICAgIGxvY2FsZT86IExvY2FsZTtcbiAgICB0aW1lWm9uZT86IHN0cmluZztcbiAgICB3ZWVrU3RhcnRzT24/OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbnR0U3R5bGVPcHRpb25zIHtcbiAgICBoZWFkZXJIZWlnaHQ/OiBudW1iZXI7XG4gICAgbGluZUhlaWdodD86IG51bWJlcjtcbiAgICBiYXJIZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FudHRHbG9iYWxDb25maWcge1xuICAgIGxvY2FsZT86IEdhbnR0STE4bkxvY2FsZSB8IHN0cmluZztcbiAgICAvKiogQGRlcHJlY2F0ZWQgZGF0ZUZvcm1hdCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgY29uZmlndXJlIHRocm91Z2ggaTE4bi4gaHR0cDovL2dhbnR0Lm5nbmljZS5jb20vZ3VpZGVzL2NvbmZpZ3VyYXRpb24vaTE4biAqL1xuICAgIGRhdGVGb3JtYXQ/OiBHYW50dERhdGVGb3JtYXQ7XG4gICAgZGF0ZU9wdGlvbnM/OiBHYW50dERhdGVPcHRpb25zO1xuICAgIGxpbmtPcHRpb25zPzogR2FudHRMaW5rT3B0aW9ucztcbiAgICBzdHlsZU9wdGlvbnM/OiBHYW50dFN0eWxlT3B0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWc6IEdhbnR0R2xvYmFsQ29uZmlnID0ge1xuICAgIGxvY2FsZTogR2FudHRJMThuTG9jYWxlLnpoSGFucyxcbiAgICBsaW5rT3B0aW9uczoge1xuICAgICAgICBkZXBlbmRlbmN5VHlwZXM6IFtHYW50dExpbmtUeXBlLmZzXSxcbiAgICAgICAgc2hvd0Fycm93OiBmYWxzZSxcbiAgICAgICAgbGluZVR5cGU6IEdhbnR0TGlua0xpbmVUeXBlLmN1cnZlXG4gICAgfSxcbiAgICBzdHlsZU9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVySGVpZ2h0OiA0NCxcbiAgICAgICAgbGluZUhlaWdodDogNDQsXG4gICAgICAgIGJhckhlaWdodDogMjJcbiAgICB9LFxuICAgIGRhdGVPcHRpb25zOiB7XG4gICAgICAgIHdlZWtTdGFydHNPbjogMVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHQU5UVF9HTE9CQUxfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEdhbnR0R2xvYmFsQ29uZmlnPignR0FOVFRfR0xPQkFMX0NPTkZJRycpO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEdhbnR0Q29uZmlnU2VydmljZSB7XG4gICAgcHVibGljIGNvbmZpZzogR2FudHRHbG9iYWxDb25maWc7XG5cbiAgICBwcml2YXRlIGkxOG5Mb2NhbGVzOiBSZWNvcmQ8R2FudHRJMThuTG9jYWxlLCBHYW50dEkxOG5Mb2NhbGVDb25maWc+O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChHQU5UVF9HTE9CQUxfQ09ORklHKSBnbG9iYWxDb25maWc6IEdhbnR0R2xvYmFsQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsZUlkID0gZ2xvYmFsQ29uZmlnLmxvY2FsZSB8fCBkZWZhdWx0Q29uZmlnLmxvY2FsZTtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUlkLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENvbmZpZy5kYXRlRm9ybWF0LCBnbG9iYWxDb25maWcuZGF0ZUZvcm1hdCksXG4gICAgICAgICAgICBzdHlsZU9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcuc3R5bGVPcHRpb25zLCBnbG9iYWxDb25maWcuc3R5bGVPcHRpb25zKSxcbiAgICAgICAgICAgIGxpbmtPcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnLmxpbmtPcHRpb25zLCBnbG9iYWxDb25maWcubGlua09wdGlvbnMpLFxuICAgICAgICAgICAgZGF0ZU9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcuZGF0ZU9wdGlvbnMsIGdsb2JhbENvbmZpZy5kYXRlT3B0aW9ucylcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmkxOG5Mb2NhbGVzID0gaW5qZWN0KEdBTlRUX0kxOE5fTE9DQUxFX1RPS0VOKS5yZWR1Y2UoXG4gICAgICAgICAgICAocmVzdWx0LCBsb2NhbGVDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbG9jYWxlQ29uZmlnLmlkXSA9IGxvY2FsZUNvbmZpZzsgLy8g6L+Z6YeM5L2/55SoIGBpZGAg5L2c5Li6IGtleVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFsnemgtY24nXTogemhIYW5zLFxuICAgICAgICAgICAgICAgIFsnemgtdHcnXTogemhIYW50XG4gICAgICAgICAgICB9IGFzIFJlY29yZDxHYW50dEkxOG5Mb2NhbGUgfCBzdHJpbmcsIEdhbnR0STE4bkxvY2FsZUNvbmZpZz5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaTE4bkxvY2FsZXNbdGhpcy5jb25maWcubG9jYWxlXSA/PyB0aGlzLmkxOG5Mb2NhbGVzW3RoaXMuY29uZmlnLmxvY2FsZS50b0xvd2VyQ2FzZSgpXSA/PyB6aEhhbnM7XG4gICAgfVxuXG4gICAgZ2V0Vmlld3NMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsZUNvbmZpZygpLnZpZXdzO1xuICAgIH1cblxuICAgIGdldERhdGVMb2NhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmRhdGVPcHRpb25zPy5sb2NhbGUgPz8gdGhpcy5nZXRMb2NhbGVDb25maWcoKS5kYXRlTG9jYWxlO1xuICAgIH1cbn1cbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFvQixhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXlCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RixPQUFPLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBc0NsRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXNCO0lBQzVDLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTtJQUM5QixXQUFXLEVBQUU7UUFDVCxlQUFlLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ25DLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLO0tBQ3BDO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsWUFBWSxFQUFFLEVBQUU7UUFDaEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxTQUFTLEVBQUUsRUFBRTtLQUNoQjtJQUNELFdBQVcsRUFBRTtRQUNULFlBQVksRUFBRSxDQUFDO0tBQ2xCO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFvQixxQkFBcUIsQ0FBQyxDQUFDO0FBR2hHLE1BQU0sT0FBTyxrQkFBa0I7SUFLM0IsWUFBeUMsWUFBK0I7UUFDcEUsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQzdELElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDVixNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQ2hGLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFDdEYsV0FBVyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQztZQUNuRixXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDO1NBQ3RGLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxtQkFBbUI7WUFDM0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxFQUNEO1lBQ0ksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO1lBQ2pCLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTTtTQUN1QyxDQUMvRCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNwQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRU8sZUFBZTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ2hILENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUNoRixDQUFDOzhHQTdDUSxrQkFBa0Isa0JBS1AsbUJBQW1CO2tIQUw5QixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTWpCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhbGUgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBHYW50dExpbmtMaW5lVHlwZSwgR2FudHRMaW5rT3B0aW9ucywgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHQU5UVF9JMThOX0xPQ0FMRV9UT0tFTiwgR2FudHRJMThuTG9jYWxlQ29uZmlnLCBHYW50dEkxOG5Mb2NhbGUgfSBmcm9tICcuL2kxOG4vaTE4bic7XG5pbXBvcnQgemhIYW5zIGZyb20gJy4vaTE4bi9sb2NhbGVzL3poLWhhbnMnO1xuaW1wb3J0IHpoSGFudCBmcm9tICcuL2kxOG4vbG9jYWxlcy96aC1oYW50JztcbmltcG9ydCB7IHNldERlZmF1bHRUaW1lWm9uZSB9IGZyb20gJy4vdXRpbHMvZGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FudHREYXRlRm9ybWF0IHtcbiAgICBob3VyPzogc3RyaW5nO1xuICAgIGRheT86IHN0cmluZztcbiAgICB3ZWVrPzogc3RyaW5nO1xuICAgIG1vbnRoPzogc3RyaW5nO1xuICAgIHF1YXJ0ZXI/OiBzdHJpbmc7XG4gICAgeWVhcj86IHN0cmluZztcbiAgICB5ZWFyTW9udGg/OiBzdHJpbmc7XG4gICAgeWVhclF1YXJ0ZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FudHREYXRlT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgZGF0ZU9wdGlvbnMgaXMgZGVwcmVjYXRlZCwgdXNlIGkxOG4gbG9jYWxlIHNldHRpbmcgaW5zdGVhZFxuICAgICAqIGh0dHA6Ly9nYW50dC5uZ25pY2UuY29tL2d1aWRlcy9jb25maWd1cmF0aW9uL2kxOG5cbiAgICAgKi9cbiAgICBsb2NhbGU/OiBMb2NhbGU7XG4gICAgdGltZVpvbmU/OiBzdHJpbmc7XG4gICAgd2Vla1N0YXJ0c09uPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYW50dFN0eWxlT3B0aW9ucyB7XG4gICAgaGVhZGVySGVpZ2h0PzogbnVtYmVyO1xuICAgIGxpbmVIZWlnaHQ/OiBudW1iZXI7XG4gICAgYmFySGVpZ2h0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbnR0R2xvYmFsQ29uZmlnIHtcbiAgICBsb2NhbGU/OiBHYW50dEkxOG5Mb2NhbGUgfCBzdHJpbmc7XG4gICAgLyoqIEBkZXByZWNhdGVkIGRhdGVGb3JtYXQgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIGNvbmZpZ3VyZSB0aHJvdWdoIGkxOG4uIGh0dHA6Ly9nYW50dC5uZ25pY2UuY29tL2d1aWRlcy9jb25maWd1cmF0aW9uL2kxOG4gKi9cbiAgICBkYXRlRm9ybWF0PzogR2FudHREYXRlRm9ybWF0O1xuICAgIGRhdGVPcHRpb25zPzogR2FudHREYXRlT3B0aW9ucztcbiAgICBsaW5rT3B0aW9ucz86IEdhbnR0TGlua09wdGlvbnM7XG4gICAgc3R5bGVPcHRpb25zPzogR2FudHRTdHlsZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29uZmlnOiBHYW50dEdsb2JhbENvbmZpZyA9IHtcbiAgICBsb2NhbGU6IEdhbnR0STE4bkxvY2FsZS56aEhhbnMsXG4gICAgbGlua09wdGlvbnM6IHtcbiAgICAgICAgZGVwZW5kZW5jeVR5cGVzOiBbR2FudHRMaW5rVHlwZS5mc10sXG4gICAgICAgIHNob3dBcnJvdzogZmFsc2UsXG4gICAgICAgIGxpbmVUeXBlOiBHYW50dExpbmtMaW5lVHlwZS5jdXJ2ZVxuICAgIH0sXG4gICAgc3R5bGVPcHRpb25zOiB7XG4gICAgICAgIGhlYWRlckhlaWdodDogNDQsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDQ0LFxuICAgICAgICBiYXJIZWlnaHQ6IDIyXG4gICAgfSxcbiAgICBkYXRlT3B0aW9uczoge1xuICAgICAgICB3ZWVrU3RhcnRzT246IDFcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR0FOVFRfR0xPQkFMX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxHYW50dEdsb2JhbENvbmZpZz4oJ0dBTlRUX0dMT0JBTF9DT05GSUcnKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBHYW50dENvbmZpZ1NlcnZpY2Uge1xuICAgIHB1YmxpYyBjb25maWc6IEdhbnR0R2xvYmFsQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSBpMThuTG9jYWxlczogUmVjb3JkPEdhbnR0STE4bkxvY2FsZSwgR2FudHRJMThuTG9jYWxlQ29uZmlnPjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoR0FOVFRfR0xPQkFMX0NPTkZJRykgZ2xvYmFsQ29uZmlnOiBHYW50dEdsb2JhbENvbmZpZykge1xuICAgICAgICBjb25zdCBsb2NhbGVJZCA9IGdsb2JhbENvbmZpZy5sb2NhbGUgfHwgZGVmYXVsdENvbmZpZy5sb2NhbGU7XG4gICAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVJZCxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcuZGF0ZUZvcm1hdCwgZ2xvYmFsQ29uZmlnLmRhdGVGb3JtYXQpLFxuICAgICAgICAgICAgc3R5bGVPcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnLnN0eWxlT3B0aW9ucywgZ2xvYmFsQ29uZmlnLnN0eWxlT3B0aW9ucyksXG4gICAgICAgICAgICBsaW5rT3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENvbmZpZy5saW5rT3B0aW9ucywgZ2xvYmFsQ29uZmlnLmxpbmtPcHRpb25zKSxcbiAgICAgICAgICAgIGRhdGVPcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnLmRhdGVPcHRpb25zLCBnbG9iYWxDb25maWcuZGF0ZU9wdGlvbnMpXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5pMThuTG9jYWxlcyA9IGluamVjdChHQU5UVF9JMThOX0xPQ0FMRV9UT0tFTikucmVkdWNlKFxuICAgICAgICAgICAgKHJlc3VsdCwgbG9jYWxlQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2xvY2FsZUNvbmZpZy5pZF0gPSBsb2NhbGVDb25maWc7IC8vIOi/memHjOS9v+eUqCBgaWRgIOS9nOS4uiBrZXlcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbJ3poLWNuJ106IHpoSGFucyxcbiAgICAgICAgICAgICAgICBbJ3poLXR3J106IHpoSGFudFxuICAgICAgICAgICAgfSBhcyBSZWNvcmQ8R2FudHRJMThuTG9jYWxlIHwgc3RyaW5nLCBHYW50dEkxOG5Mb2NhbGVDb25maWc+XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRhdGVPcHRpb25zPy50aW1lWm9uZSkge1xuICAgICAgICAgICAgc2V0RGVmYXVsdFRpbWVab25lKHRoaXMuY29uZmlnLmRhdGVPcHRpb25zLnRpbWVab25lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb2NhbGVDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmkxOG5Mb2NhbGVzW3RoaXMuY29uZmlnLmxvY2FsZV0gPz8gdGhpcy5pMThuTG9jYWxlc1t0aGlzLmNvbmZpZy5sb2NhbGUudG9Mb3dlckNhc2UoKV0gPz8gemhIYW5zO1xuICAgIH1cblxuICAgIGdldFZpZXdzTG9jYWxlKCk6IEdhbnR0STE4bkxvY2FsZUNvbmZpZ1sndmlld3MnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsZUNvbmZpZygpLnZpZXdzO1xuICAgIH1cblxuICAgIGdldERhdGVMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5kYXRlT3B0aW9ucz8ubG9jYWxlID8/IHRoaXMuZ2V0TG9jYWxlQ29uZmlnKCkuZGF0ZUxvY2FsZTtcbiAgICB9XG59XG4iXX0=