@firestitch/system 18.0.29 → 18.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/modules/query-logs/components/explain/explain.component.d.ts +2 -2
- package/app/modules/query-logs/components/query-log/query-log.component.d.ts +2 -3
- package/app/modules/query-logs/components/query-logs/query-logs.component.d.ts +1 -3
- package/app/modules/system/components/api-log/api-log.component.d.ts +1 -3
- package/app/modules/system/components/api-logs/api-logs.component.d.ts +1 -3
- package/app/modules/system/components/cron/cron.component.d.ts +1 -1
- package/app/modules/system/components/cron-log/cron-log.component.d.ts +1 -2
- package/app/modules/system/components/cron-next-run/cron-next-run.component.d.ts +2 -3
- package/app/modules/system/components/crons/crons.component.d.ts +1 -1
- package/app/modules/system/components/dashboard/dashboard.component.d.ts +3 -5
- package/app/modules/system/components/info/info.component.d.ts +1 -1
- package/app/modules/system/components/process/process.component.d.ts +3 -12
- package/app/modules/system/components/processes/processes.component.d.ts +1 -6
- package/app/modules/system/components/server-logs/components/server-log/server-log.component.d.ts +0 -1
- package/app/modules/system/components/server-logs/server-logs.component.d.ts +1 -4
- package/app/modules/system/components/settings/settings.component.d.ts +2 -6
- package/app/modules/system/components/upgrade-logs/upgrade-logs.component.d.ts +1 -1
- package/app/modules/system/data/cron.data.d.ts +0 -2
- package/app/modules/system/data/process.data.d.ts +1 -2
- package/app/modules/system/fs-system.module.d.ts +40 -40
- package/app/modules/system/pipes/key-name-value.pipe.d.ts +1 -1
- package/esm2022/app/modules/query-logs/components/explain/explain.component.mjs +27 -18
- package/esm2022/app/modules/query-logs/components/index.mjs +1 -1
- package/esm2022/app/modules/query-logs/components/query-log/query-log.component.mjs +44 -25
- package/esm2022/app/modules/query-logs/components/query-logs/query-logs.component.mjs +19 -16
- package/esm2022/app/modules/system/components/api-log/api-log.component.mjs +20 -23
- package/esm2022/app/modules/system/components/api-log/index.mjs +1 -1
- package/esm2022/app/modules/system/components/api-logs/api-logs.component.mjs +18 -16
- package/esm2022/app/modules/system/components/api-logs/index.mjs +1 -1
- package/esm2022/app/modules/system/components/cron/cron.component.mjs +31 -13
- package/esm2022/app/modules/system/components/cron/index.mjs +1 -1
- package/esm2022/app/modules/system/components/cron-log/cron-log.component.mjs +30 -20
- package/esm2022/app/modules/system/components/cron-log/index.mjs +1 -1
- package/esm2022/app/modules/system/components/cron-logs/cron-logs.component.mjs +3 -3
- package/esm2022/app/modules/system/components/cron-next-run/cron-next-run.component.mjs +13 -16
- package/esm2022/app/modules/system/components/crons/crons.component.mjs +17 -10
- package/esm2022/app/modules/system/components/crons/index.mjs +1 -1
- package/esm2022/app/modules/system/components/dashboard/dashboard.component.mjs +30 -24
- package/esm2022/app/modules/system/components/dashboard/index.mjs +1 -1
- package/esm2022/app/modules/system/components/info/index.mjs +1 -1
- package/esm2022/app/modules/system/components/info/info.component.mjs +3 -3
- package/esm2022/app/modules/system/components/process/index.mjs +1 -1
- package/esm2022/app/modules/system/components/process/process.component.mjs +38 -36
- package/esm2022/app/modules/system/components/processes/index.mjs +1 -1
- package/esm2022/app/modules/system/components/processes/processes.component.mjs +13 -23
- package/esm2022/app/modules/system/components/server-logs/components/server-log/server-log.component.mjs +7 -13
- package/esm2022/app/modules/system/components/server-logs/index.mjs +1 -1
- package/esm2022/app/modules/system/components/server-logs/server-logs.component.mjs +17 -17
- package/esm2022/app/modules/system/components/settings/index.mjs +1 -1
- package/esm2022/app/modules/system/components/settings/settings.component.mjs +49 -33
- package/esm2022/app/modules/system/components/upgrade-logs/index.mjs +1 -1
- package/esm2022/app/modules/system/components/upgrade-logs/upgrade-logs.component.mjs +7 -6
- package/esm2022/app/modules/system/consts/api-log-states.const.mjs +1 -1
- package/esm2022/app/modules/system/consts/process-states.const.mjs +1 -1
- package/esm2022/app/modules/system/consts/setting-interface-types.const.mjs +1 -1
- package/esm2022/app/modules/system/data/cron.data.mjs +5 -9
- package/esm2022/app/modules/system/data/process.data.mjs +5 -9
- package/esm2022/app/modules/system/enums/api-log-state.enum.mjs +1 -1
- package/esm2022/app/modules/system/enums/index.mjs +1 -1
- package/esm2022/app/modules/system/enums/process-state.enum.mjs +1 -1
- package/esm2022/app/modules/system/enums/setting-interface-type.enum.mjs +1 -1
- package/esm2022/app/modules/system/fs-system.module.mjs +37 -26
- package/esm2022/app/modules/system/helpers/index-name-value.mjs +1 -1
- package/esm2022/app/modules/system/injectors/system-config.injector.mjs +1 -1
- package/esm2022/app/modules/system/interfaces/dashboard-action.mjs +1 -1
- package/esm2022/app/modules/system/interfaces/process-action.mjs +1 -1
- package/esm2022/app/modules/system/interfaces/system-config.mjs +1 -1
- package/esm2022/app/modules/system/pipes/key-name-value.pipe.mjs +3 -2
- package/esm2022/public_api.mjs +1 -2
- package/fesm2022/firestitch-system.mjs +416 -438
- package/fesm2022/firestitch-system.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/app/modules/query-logs/query-logs.module.d.ts +0 -23
- package/esm2022/app/modules/query-logs/query-logs.module.mjs +0 -83
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';
|
|
2
2
|
import { Subject, timer } from 'rxjs';
|
|
3
3
|
import { takeUntil, tap } from 'rxjs/operators';
|
|
4
4
|
import { addDays, addHours, addMinutes, differenceInSeconds, getDaysInMonth, subSeconds } from 'date-fns';
|
|
5
|
+
import { FsDateModule } from '@firestitch/date';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@
|
|
7
|
-
import * as i2 from "@firestitch/date";
|
|
7
|
+
import * as i1 from "@firestitch/date";
|
|
8
8
|
export class CronNextRunComponent {
|
|
9
|
-
_cdRef;
|
|
9
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
10
10
|
cron;
|
|
11
11
|
duration;
|
|
12
12
|
_destroy$ = new Subject();
|
|
13
|
-
constructor(_cdRef) {
|
|
14
|
-
this._cdRef = _cdRef;
|
|
15
|
-
}
|
|
16
13
|
ngOnInit() {
|
|
17
14
|
this.update();
|
|
18
15
|
}
|
|
@@ -29,10 +26,10 @@ export class CronNextRunComponent {
|
|
|
29
26
|
next = addHours(next, nextHours);
|
|
30
27
|
next = addDays(next, nextDays);
|
|
31
28
|
next = subSeconds(next, next.getSeconds());
|
|
32
|
-
this.duration = differenceInSeconds(next, now);
|
|
29
|
+
this.duration = Math.max(0, differenceInSeconds(next, now));
|
|
33
30
|
}
|
|
34
31
|
else {
|
|
35
|
-
this.duration = 60 - now.getSeconds();
|
|
32
|
+
this.duration = Math.max(0, 60 - now.getSeconds());
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
35
|
update() {
|
|
@@ -62,7 +59,7 @@ export class CronNextRunComponent {
|
|
|
62
59
|
return (minutes[i + 1] ? minutes[i + 1] - now.getUTCMinutes() : (60 - now.getUTCMinutes() + minutes[i]));
|
|
63
60
|
}
|
|
64
61
|
}
|
|
65
|
-
return minutes[0] - now.
|
|
62
|
+
return minutes[0] - now.getUTCMinutes();
|
|
66
63
|
}
|
|
67
64
|
return 0;
|
|
68
65
|
}
|
|
@@ -86,17 +83,17 @@ export class CronNextRunComponent {
|
|
|
86
83
|
return (days[i + 1] ? days[i + 1] : getDaysInMonth(now)) - now.getDate();
|
|
87
84
|
}
|
|
88
85
|
}
|
|
89
|
-
return days[0] -
|
|
86
|
+
return days[0] - now.getDate();
|
|
90
87
|
}
|
|
91
88
|
return 0;
|
|
92
89
|
}
|
|
93
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronNextRunComponent, deps: [
|
|
94
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
90
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronNextRunComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CronNextRunComponent, isStandalone: true, selector: "app-next-run", inputs: { cron: "cron" }, ngImport: i0, template: "@if (duration > 60) {\n {{ duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true, maxOutputs: 2 } }}\n} @else {\n {{ duration }}s\n}\n<ng-template #seconds>\n {{ duration }}s\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i1.FsDateDurationPipe, name: "fsDateDuration" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
95
92
|
}
|
|
96
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronNextRunComponent, decorators: [{
|
|
97
94
|
type: Component,
|
|
98
|
-
args: [{ selector: 'app-next-run', changeDetection: ChangeDetectionStrategy.OnPush, template: "
|
|
99
|
-
}],
|
|
95
|
+
args: [{ selector: 'app-next-run', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FsDateModule], template: "@if (duration > 60) {\n {{ duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true, maxOutputs: 2 } }}\n} @else {\n {{ duration }}s\n}\n<ng-template #seconds>\n {{ duration }}s\n</ng-template>" }]
|
|
96
|
+
}], propDecorators: { cron: [{
|
|
100
97
|
type: Input
|
|
101
98
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3Jvbi1uZXh0LXJ1bi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9uLW5leHQtcnVuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQzdELE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFTMUcsTUFBTSxPQUFPLG9CQUFvQjtJQVVyQjtJQVJNLElBQUksQ0FBQztJQUVkLFFBQVEsQ0FBQztJQUVSLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBR2xDLFlBQ1UsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFDaEMsQ0FBQztJQUdHLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhDLElBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDakMsQ0FBQztZQUNELElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDckMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFFM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7YUFDWCxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1lBRW5CLElBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDO1lBRUQsSUFBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBRUgsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxlQUFlLENBQUMsR0FBUztRQUMvQixNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDeEQsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsS0FBSSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzRyxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVM7UUFDN0IsTUFBTSxLQUFLLEdBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLEtBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxJQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakcsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLFlBQVksQ0FBQyxHQUFTO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUN4QyxJQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN6QyxJQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0UsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzt1R0EvR1Usb0JBQW9COzJGQUFwQixvQkFBb0IsOEVDakJqQywrT0FLYzs7MkZEWUQsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTtzRkFJL0IsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYWRkRGF5cywgYWRkSG91cnMsIGFkZE1pbnV0ZXMsIGRpZmZlcmVuY2VJblNlY29uZHMsIGdldERheXNJbk1vbnRoLCBzdWJTZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uZXh0LXJ1bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ3Jvbk5leHRSdW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGNyb247XG5cbiAgcHVibGljIGR1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVEdXJhdGlvbigpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG5leHRNaW51dGVzID0gdGhpcy5fZ2V0TmV4dE1pbnV0ZXMobm93KTtcbiAgICBjb25zdCBuZXh0SG91cnMgPSB0aGlzLl9nZXROZXh0SG91cnMobm93KTtcbiAgICBjb25zdCBuZXh0RGF5cyA9IHRoaXMuX2dldE5leHREYXlzKG5vdyk7XG5cbiAgICBpZihcbiAgICAgIHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmhvdXJzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXMubGVuZ3RoIFxuICAgICkge1xuICAgICAgbGV0IG5leHQgPSBuZXcgRGF0ZSgpO1xuICAgICAgbmV4dCA9IGFkZE1pbnV0ZXMobmV4dCwgbmV4dE1pbnV0ZXMpO1xuICAgICAgbmV4dCA9IGFkZEhvdXJzKG5leHQsIG5leHRIb3Vycyk7XG4gICAgICBuZXh0ID0gYWRkRGF5cyhuZXh0LCBuZXh0RGF5cyk7XG4gICAgICBuZXh0ID0gc3ViU2Vjb25kcyhuZXh0LCBuZXh0LmdldFNlY29uZHMoKSk7XG5cbiAgICAgIHRoaXMuZHVyYXRpb24gPSBkaWZmZXJlbmNlSW5TZWNvbmRzKG5leHQsIG5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHVyYXRpb24gPSA2MCAtIG5vdy5nZXRTZWNvbmRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZUR1cmF0aW9uKCk7XG4gICAgdGltZXIoMCwgMTAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZHVyYXRpb24gLT0gMTsgICAgXG5cbiAgICAgICAgICBpZih0aGlzLmR1cmF0aW9uICUgNjAgPT09IDAgfHwgdGhpcy5kdXJhdGlvbiA8ICg2MCAqIDUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZih0aGlzLmR1cmF0aW9uIDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlRHVyYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0TWludXRlcyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBtaW51dGVzOiBudW1iZXJbXSA9IHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzO1xuICAgIGlmKG1pbnV0ZXMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBtaW51dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmKG5vdy5nZXRVVENNaW51dGVzKCkgPj0gbWludXRlc1tpXSkge1xuICAgICAgICAgIHJldHVybiAobWludXRlc1tpICsgMV0gPyBtaW51dGVzW2kgKyAxXSAtIG5vdy5nZXRVVENNaW51dGVzKCkgOiAoNjAgLSBub3cuZ2V0VVRDTWludXRlcygpICsgbWludXRlc1tpXSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtaW51dGVzWzBdIC0gbm93LmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHRIb3Vycyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBob3VyczogbnVtYmVyW10gPSB0aGlzLmNyb24uY3JvblNldHRpbmcuaG91cnM7XG4gICAgaWYoaG91cnMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBob3Vycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZihub3cuZ2V0VVRDSG91cnMoKSA+PSBob3Vyc1tpXSkge1xuICAgICAgICAgIHJldHVybiAoaG91cnNbaSArIDFdID8gaG91cnNbaSArIDFdIC0gbm93LmdldFVUQ0hvdXJzKCkgOiAoMjQgLSBub3cuZ2V0VVRDSG91cnMoKSArIGhvdXJzW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhvdXJzWzBdIC0gbm93LmdldFVUQ0hvdXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0RGF5cyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBkYXlzID0gdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXM7XG4gICAgaWYoZGF5cy5sZW5ndGgpIHtcbiAgICAgIGZvcihsZXQgaSA9IGRheXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYobm93LmdldERhdGUoKSA+PSBkYXlzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIChkYXlzW2kgKyAxXSA/IGRheXNbaSArIDFdIDogZ2V0RGF5c0luTW9udGgobm93KSkgLSBub3cuZ2V0RGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXlzWzBdIC0gZ2V0RGF5c0luTW9udGgobm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImR1cmF0aW9uID4gNjA7IGVsc2Ugc2Vjb25kc1wiPlxuICB7eyBkdXJhdGlvbiB8IGZzRGF0ZUR1cmF0aW9uOiB7IGhvdXJzOiB0cnVlLCBzZWNvbmRzOiB0cnVlLCBtaW51dGVzOiB0cnVlLCBkYXlzOiB0cnVlLCBtYXhPdXRwdXRzOiAyIH0gfX1cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNzZWNvbmRzPlxuICB7eyBkdXJhdGlvbiB9fXNcbjwvbmctdGVtcGxhdGU+Il19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3Jvbi1uZXh0LXJ1bi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9uLW5leHQtcnVuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4SCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBV2hELE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRzNCLElBQUksQ0FBQztJQUVkLFFBQVEsQ0FBQztJQUVSLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRzNCLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENB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QUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDeEMsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekMsSUFBRyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNFLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7dUdBNUdVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLGtHQ2xCakMsZ09BT2MseUREU0EsWUFBWTs7MkZBRWIsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBTVQsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYWRkRGF5cywgYWRkSG91cnMsIGFkZE1pbnV0ZXMsIGRpZmZlcmVuY2VJblNlY29uZHMsIGdldERheXNJbk1vbnRoLCBzdWJTZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgRnNEYXRlTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGF0ZSc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtbmV4dC1ydW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRnNEYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3Jvbk5leHRSdW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXG4gIEBJbnB1dCgpIHB1YmxpYyBjcm9uO1xuXG4gIHB1YmxpYyBkdXJhdGlvbjtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVEdXJhdGlvbigpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG5leHRNaW51dGVzID0gdGhpcy5fZ2V0TmV4dE1pbnV0ZXMobm93KTtcbiAgICBjb25zdCBuZXh0SG91cnMgPSB0aGlzLl9nZXROZXh0SG91cnMobm93KTtcbiAgICBjb25zdCBuZXh0RGF5cyA9IHRoaXMuX2dldE5leHREYXlzKG5vdyk7XG5cbiAgICBpZihcbiAgICAgIHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmhvdXJzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXMubGVuZ3RoIFxuICAgICkge1xuICAgICAgbGV0IG5leHQgPSBuZXcgRGF0ZSgpO1xuICAgICAgbmV4dCA9IGFkZE1pbnV0ZXMobmV4dCwgbmV4dE1pbnV0ZXMpO1xuICAgICAgbmV4dCA9IGFkZEhvdXJzKG5leHQsIG5leHRIb3Vycyk7XG4gICAgICBuZXh0ID0gYWRkRGF5cyhuZXh0LCBuZXh0RGF5cyk7XG4gICAgICBuZXh0ID0gc3ViU2Vjb25kcyhuZXh0LCBuZXh0LmdldFNlY29uZHMoKSk7XG5cbiAgICAgIHRoaXMuZHVyYXRpb24gPSBNYXRoLm1heCgwLCBkaWZmZXJlbmNlSW5TZWNvbmRzKG5leHQsIG5vdykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmR1cmF0aW9uID0gTWF0aC5tYXgoMCwgNjAgLSBub3cuZ2V0U2Vjb25kcygpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKCkge1xuICAgIHRoaXMuY2FsY3VsYXRlRHVyYXRpb24oKTtcbiAgICB0aW1lcigwLCAxMDAwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kdXJhdGlvbiAtPSAxOyAgICBcblxuICAgICAgICAgIGlmKHRoaXMuZHVyYXRpb24gJSA2MCA9PT0gMCB8fCB0aGlzLmR1cmF0aW9uIDwgKDYwICogNSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmKHRoaXMuZHVyYXRpb24gPD0gMCkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVEdXJhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHRNaW51dGVzKG5vdzogRGF0ZSkge1xuICAgIGNvbnN0IG1pbnV0ZXM6IG51bWJlcltdID0gdGhpcy5jcm9uLmNyb25TZXR0aW5nLm1pbnV0ZXM7XG4gICAgaWYobWludXRlcy5sZW5ndGgpIHtcbiAgICAgIGZvcihsZXQgaSA9IG1pbnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYobm93LmdldFVUQ01pbnV0ZXMoKSA+PSBtaW51dGVzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIChtaW51dGVzW2kgKyAxXSA/IG1pbnV0ZXNbaSArIDFdIC0gbm93LmdldFVUQ01pbnV0ZXMoKSA6ICg2MCAtIG5vdy5nZXRVVENNaW51dGVzKCkgKyBtaW51dGVzW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1pbnV0ZXNbMF0gLSBub3cuZ2V0VVRDTWludXRlcygpO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TmV4dEhvdXJzKG5vdzogRGF0ZSkge1xuICAgIGNvbnN0IGhvdXJzOiBudW1iZXJbXSA9IHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5ob3VycztcbiAgICBpZihob3Vycy5sZW5ndGgpIHtcbiAgICAgIGZvcihsZXQgaSA9IGhvdXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmKG5vdy5nZXRVVENIb3VycygpID49IGhvdXJzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIChob3Vyc1tpICsgMV0gPyBob3Vyc1tpICsgMV0gLSBub3cuZ2V0VVRDSG91cnMoKSA6ICgyNCAtIG5vdy5nZXRVVENIb3VycygpICsgaG91cnNbaV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaG91cnNbMF0gLSBub3cuZ2V0VVRDSG91cnMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHREYXlzKG5vdzogRGF0ZSkge1xuICAgIGNvbnN0IGRheXMgPSB0aGlzLmNyb24uY3JvblNldHRpbmcuZGF5cztcbiAgICBpZihkYXlzLmxlbmd0aCkge1xuICAgICAgZm9yKGxldCBpID0gZGF5cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZihub3cuZ2V0RGF0ZSgpID49IGRheXNbaV0pIHtcbiAgICAgICAgICByZXR1cm4gKGRheXNbaSArIDFdID8gZGF5c1tpICsgMV0gOiBnZXREYXlzSW5Nb250aChub3cpKSAtIG5vdy5nZXREYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRheXNbMF0gLSBub3cuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG59XG4iLCJAaWYgKGR1cmF0aW9uID4gNjApIHtcbiAge3sgZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjogeyBob3VyczogdHJ1ZSwgc2Vjb25kczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgZGF5czogdHJ1ZSwgbWF4T3V0cHV0czogMiB9IH19XG59IEBlbHNlIHtcbiAge3sgZHVyYXRpb24gfX1zXG59XG48bmctdGVtcGxhdGUgI3NlY29uZHM+XG4gIHt7IGR1cmF0aW9uIH19c1xuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, inject, ViewChild } from '@angular/core';
|
|
2
2
|
import { MatDialog } from '@angular/material/dialog';
|
|
3
3
|
import { FsApi, RequestMethod, StreamEventData } from '@firestitch/api';
|
|
4
|
-
import { parse } from '@firestitch/date';
|
|
4
|
+
import { parse, FsDateModule } from '@firestitch/date';
|
|
5
5
|
import { ItemType } from '@firestitch/filter';
|
|
6
|
-
import { FsListComponent } from '@firestitch/list';
|
|
6
|
+
import { FsListComponent, FsListModule } from '@firestitch/list';
|
|
7
7
|
import { FsMessage } from '@firestitch/message';
|
|
8
8
|
import { FsProcess } from '@firestitch/process';
|
|
9
9
|
import { FsPrompt } from '@firestitch/prompt';
|
|
@@ -16,12 +16,13 @@ import { CronData } from '../../data/cron.data';
|
|
|
16
16
|
import { CronState } from '../../enums';
|
|
17
17
|
import { indexNameValue } from '../../helpers/index-name-value';
|
|
18
18
|
import { CronComponent } from '../cron/cron.component';
|
|
19
|
+
import { FsPopoverModule } from '@firestitch/popover';
|
|
20
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
21
|
+
import { CronNextRunComponent } from '../cron-next-run/cron-next-run.component';
|
|
19
22
|
import * as i0 from "@angular/core";
|
|
20
|
-
import * as i1 from "@
|
|
21
|
-
import * as i2 from "@firestitch/
|
|
22
|
-
import * as i3 from "@firestitch/
|
|
23
|
-
import * as i4 from "@firestitch/popover";
|
|
24
|
-
import * as i5 from "../cron-next-run/cron-next-run.component";
|
|
23
|
+
import * as i1 from "@firestitch/list";
|
|
24
|
+
import * as i2 from "@firestitch/popover";
|
|
25
|
+
import * as i3 from "@firestitch/date";
|
|
25
26
|
export class CronsComponent {
|
|
26
27
|
list;
|
|
27
28
|
config = null;
|
|
@@ -268,13 +269,19 @@ export class CronsComponent {
|
|
|
268
269
|
}
|
|
269
270
|
}
|
|
270
271
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
271
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
272
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CronsComponent, isStandalone: true, selector: "fs-system-crons", viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>\n Name\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n <a (click)=\"open(row)\">\n {{ row.name }}\n </a>\n <small>\n {{ row.cronSetting?.description }}\n </small>\n </ng-template>\n </fs-list-column>\n <fs-list-column align=\"center\">\n <ng-template fs-list-header>\n Status\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n @if (row.host || row.processId) {\n <fs-popover\n [maxWidth]=\"null\"\n [template]=\"statusPopover\"\n [indication]=\"true\"\n size=\"small\">\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\n </fs-popover>\n <ng-template #statusPopover>\n @if (row.host) {\n <div>\n Host: {{ row.host }}\n </div>\n }\n @if (row.processId) {\n <div>\n Process ID: {{ row.processId }}\n </div>\n }\n @if (row.processState) {\n <div>\n Process State: {{ CronProcessStates[row.processState] }}\n </div>\n }\n </ng-template>\n } @else {\n {{ CronStates[row.state] }}\n }\n <ng-template #status>\n {{ CronStates[row.state] }}\n </ng-template>\n @if (row.state === CronState.Running) {\n <div class=\"small\">\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Frequency\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.cronSetting?.summary }}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Last Ran\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n @if (row.duration===null) {\n Never\n } @else {\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n @if (row.duration) {\n <div\n class=\"small\"\n >\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n }\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Next Run\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n @if (row.state !== CronState.Disabled) {\n <app-next-run [cron]=\"row\"></app-next-run>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Timeout\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.cronSetting.timeout }}h\n </ng-template>\n </fs-list-column>\n</fs-list>", styles: [""], dependencies: [{ kind: "ngmodule", type: FsListModule }, { kind: "component", type: i1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customizable", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: i1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i1.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { kind: "ngmodule", type: FsPopoverModule }, { kind: "component", type: i2.FsPopoverComponent, selector: "fs-popover" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i3.FsDateDurationPipe, name: "fsDateDuration" }, { kind: "component", type: i3.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { kind: "component", type: CronNextRunComponent, selector: "app-next-run", inputs: ["cron"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
272
273
|
}
|
|
273
274
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronsComponent, decorators: [{
|
|
274
275
|
type: Component,
|
|
275
|
-
args: [{ selector: 'fs-system-crons', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
276
|
+
args: [{ selector: 'fs-system-crons', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
277
|
+
FsListModule,
|
|
278
|
+
FsPopoverModule,
|
|
279
|
+
NgTemplateOutlet,
|
|
280
|
+
FsDateModule,
|
|
281
|
+
CronNextRunComponent,
|
|
282
|
+
], template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>\n Name\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n <a (click)=\"open(row)\">\n {{ row.name }}\n </a>\n <small>\n {{ row.cronSetting?.description }}\n </small>\n </ng-template>\n </fs-list-column>\n <fs-list-column align=\"center\">\n <ng-template fs-list-header>\n Status\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n @if (row.host || row.processId) {\n <fs-popover\n [maxWidth]=\"null\"\n [template]=\"statusPopover\"\n [indication]=\"true\"\n size=\"small\">\n <ng-container *ngTemplateOutlet=\"status\"></ng-container>\n </fs-popover>\n <ng-template #statusPopover>\n @if (row.host) {\n <div>\n Host: {{ row.host }}\n </div>\n }\n @if (row.processId) {\n <div>\n Process ID: {{ row.processId }}\n </div>\n }\n @if (row.processState) {\n <div>\n Process State: {{ CronProcessStates[row.processState] }}\n </div>\n }\n </ng-template>\n } @else {\n {{ CronStates[row.state] }}\n }\n <ng-template #status>\n {{ CronStates[row.state] }}\n </ng-template>\n @if (row.state === CronState.Running) {\n <div class=\"small\">\n Duration: {{ row.runningDuration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Frequency\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.cronSetting?.summary }}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Last Ran\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n @if (row.duration===null) {\n Never\n } @else {\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n @if (row.duration) {\n <div\n class=\"small\"\n >\n Duration: {{ row.duration | fsDateDuration: { hours: true, minutes: true, seconds: true } }}\n </div>\n }\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Next Run\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n @if (row.state !== CronState.Disabled) {\n <app-next-run [cron]=\"row\"></app-next-run>\n }\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>\n Timeout\n </ng-template>\n <ng-template\n fs-list-cell\n let-row=\"row\">\n {{ row.cronSetting.timeout }}h\n </ng-template>\n </fs-list-column>\n</fs-list>" }]
|
|
276
283
|
}], propDecorators: { list: [{
|
|
277
284
|
type: ViewChild,
|
|
278
285
|
args: [FsListComponent, { static: true }]
|
|
279
286
|
}] } });
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBd0IsZUFBZSxFQUFnQixNQUFNLGtCQUFrQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5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UTt3QkFDZCxLQUFLLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFLENBQUMsTUFBNEIsRUFBRSxFQUFFO29CQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQzt5QkFDbEQsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDM0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDTixDQUFDO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO3VHQS9TVSxjQUFjOzJGQUFkLGNBQWMsNkZBRWQsZUFBZSw4RENqQzVCLHExRkFpR1U7OzJGRGxFRyxjQUFjO2tCQU4xQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQUlNLElBQUk7c0JBQXhELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0FwaSwgUmVxdWVzdE1ldGhvZCwgU3RyZWFtRXZlbnREYXRhIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGF0ZSc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBGc0xpc3RBY3Rpb25TZWxlY3RlZCwgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNQcm9jZXNzIH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvY2Vzcyc7XG5pbXBvcnQgeyBGc1Byb21wdCB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb21wdCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25BY3Rpb25UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5TZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQgeyBDcm9uUHJvY2Vzc1N0YXRlcywgQ3JvblN0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBDcm9uRGF0YSB9IGZyb20gJy4uLy4uL2RhdGEvY3Jvbi5kYXRhJztcbmltcG9ydCB7IENyb25TdGF0ZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcbmltcG9ydCB7IENyb25Db21wb25lbnQgfSBmcm9tICcuLi9jcm9uL2Nyb24uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1zeXN0ZW0tY3JvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcm9ucy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ3JvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZChGc0xpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBsaXN0OiBGc0xpc3RDb21wb25lbnQ7XG5cbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnID0gbnVsbDtcbiAgcHVibGljIENyb25TdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShDcm9uU3RhdGVzKTtcbiAgcHVibGljIENyb25Qcm9jZXNzU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoQ3JvblByb2Nlc3NTdGF0ZXMpO1xuICBwdWJsaWMgQ3JvblN0YXRlID0gQ3JvblN0YXRlO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfY3JvbkRhdGEgPSBpbmplY3QoQ3JvbkRhdGEpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIHByaXZhdGUgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIF9wcm9tcHQgPSBpbmplY3QoRnNQcm9tcHQpO1xuICBwcml2YXRlIF9wcm9jZXNzID0gaW5qZWN0KEZzUHJvY2Vzcyk7XG4gIHByaXZhdGUgX2FwaSA9IGluamVjdChGc0FwaSk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbmZpZ0xpc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKGNyb24pIHtcbiAgICB0aGlzLl9kaWFsb2cub3BlbihDcm9uQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNyb24sXG4gICAgICAgIGNyb25BY3Rpb25zOiB0aGlzLmdldENyb25BY3Rpb25zKCksXG4gICAgICB9LFxuICAgICAgd2lkdGg6ICc4NSUnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldENyb25BY3Rpb25zKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZShkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdRdWV1ZWQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ1F1ZXVlJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ydW4oZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ1J1bicsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5JZGxlIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlKGRhdGEpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0VuYWJsZWQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ0VuYWJsZScsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5EaXNhYmxlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlKGRhdGEpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Rpc2FibGVkIGNyb24nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdEaXNhYmxlJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtJyxcbiAgICAgICAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIGtpbGwgdGhlIGNyb24/JyxcbiAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMua2lsbChkYXRhKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdLaWxsZWQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ0tpbGwnLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuUnVubmluZztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtJyxcbiAgICAgICAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHJlc2V0IHRoZSBjcm9uPycsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuYWJsZShkYXRhKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdSZXNldCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnUmVzZXQnLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuS2lsbGluZyB8fCBcbiAgICAgICAgICBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuUnVubmluZyB8fCBcbiAgICAgICAgICBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkIHx8IFxuICAgICAgICAgIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5RdWV1ZWQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG4gIFxuICBwdWJsaWMgZW5hYmxlKGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JvbkRhdGEuZW5hYmxlKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoZGF0YSkge1xuICAgIHJldHVybiB0aGlzLl9jcm9uRGF0YS5kaXNhYmxlKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGtpbGwgKGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JvbkRhdGEua2lsbChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBxdWV1ZShkYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nyb25EYXRhLnF1ZXVlKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHJ1bihjcm9uKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7ICBcbiAgICAgIGNvbnN0IHByb2Nlc3MgPSB0aGlzLl9wcm9jZXNzXG4gICAgICAgIC5ydW4oYFJ1biAke2Nyb24ubmFtZX1gLCB0aGlzLl9hcGlcbiAgICAgICAgICAuc3RyZWFtKFxuICAgICAgICAgICAgUmVxdWVzdE1ldGhvZC5Qb3N0LCBgc3lzdGVtL2Nyb25zLyR7Y3Jvbi5pZH0vcnVuYClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgU3RyZWFtRXZlbnREYXRhKSxcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50Py5kYXRhO1xuICAgICAgICAgICAgfSksICAgXG4gICAgICAgICAgICBmaWx0ZXIoKGRhdGEpID0+ICEhZGF0YSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICB0aW1lcigxMDAwLCA1MDAwKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBwcm9jZXNzLmZhaWxlZCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBwcm9jZXNzLmNvbXBsZXRlZCQgIFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHByb2Nlc3MuY2FuY2VsbGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZENyb25zID0gKHF1ZXJ5KSA9PiB7XG4gICAgcXVlcnkudGltZXpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG5cbiAgICByZXR1cm4gdGhpcy5fY3JvbkRhdGEuZ2V0cyhxdWVyeSwgeyBrZXk6ICdjcm9ucycgfSk7XG4gIH07XG5cbiAgcHVibGljIGJ1bGsgPSAoYWN0aW9uLCBjcm9ucykgPT4ge1xuICAgIGNvbnN0IHByb2Nlc3NlcyA9IGNyb25zXG4gICAgICAubWFwKChjcm9uKSA9PiB7XG4gICAgICAgIHJldHVybiBjcm9uLnByb2Nlc3M7XG4gICAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLl9jcm9uRGF0YS5idWxrKGFjdGlvbiwgcHJvY2Vzc2VzKTtcbiAgfTtcblxuICBwcml2YXRlIF9jb25maWdMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgcGFnaW5nOiBmYWxzZSxcbiAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXG4gICAgICAgICAgbmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb3dBY3Rpb25zOiB0aGlzLmdldENyb25BY3Rpb25zKClcbiAgICAgICAgLm1hcCgocm93QWN0aW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJvd0FjdGlvbixcbiAgICAgICAgICAgIGNsaWNrOiAoY3JvbikgPT4ge1xuICAgICAgICAgICAgICByb3dBY3Rpb25cbiAgICAgICAgICAgICAgICAuYWN0aW9uKGNyb24pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICBmZXRjaDogKHF1ZXJ5KSA9PiB7XG4gICAgICAgIHF1ZXJ5ID0geyBcbiAgICAgICAgICAuLi5xdWVyeSxcbiAgICAgICAgICB0aW1lem9uZTogSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRDcm9ucyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoY3JvbnMpID0+ICh7XG4gICAgICAgICAgICAgIGRhdGE6IGNyb25zXG4gICAgICAgICAgICAgICAgLm1hcCgoY3JvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY3JvbixcbiAgICAgICAgICAgICAgICAgICAgcnVubmluZ0R1cmF0aW9uOiBkaWZmZXJlbmNlSW5TZWNvbmRzKHBhcnNlKGNyb24uY3JlYXRlRGF0ZSksIG5ldyBEYXRlKCkpLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYodGhpcy5idWxrKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24gPSB7XG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdkaXNhYmxlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRGlzYWJsZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdlbmFibGUnLFxuICAgICAgICAgICAgbGFiZWw6ICdFbmFibGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvblNlbGVjdGVkOiAoYWN0aW9uOiBGc0xpc3RBY3Rpb25TZWxlY3RlZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJ1bGsoYWN0aW9uLmFjdGlvbi5uYW1lLCBhY3Rpb24uc2VsZWN0ZWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdBcHBsaWVkIENoYW5nZXMnKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGZzLWxpc3QgW2NvbmZpZ109XCJjb25maWdcIj5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5cbiAgICAgIE5hbWVcbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBmcy1saXN0LWNlbGxcbiAgICAgICAgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGEgKGNsaWNrKT1cIm9wZW4ocm93KVwiPlxuICAgICAgICB7eyByb3cubmFtZSB9fVxuICAgICAgPC9hPlxuICAgICAgPGRpdiAqbmdJZj1cInJvdy5jcm9uU2V0dGluZ1wiPlxuICAgICAgICA8c21hbGw+XG4gICAgICAgICAge3sgcm93LmNyb25TZXR0aW5nLnN1bW1hcnkgfX1cbiAgICAgICAgPC9zbWFsbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiBhbGlnbj1cImNlbnRlclwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5cbiAgICAgIFN0YXR1c1xuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGZzLWxpc3QtY2VsbFxuICAgICAgICBsZXQtcm93PVwicm93XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93Lmhvc3QgfHwgcm93LnByb2Nlc3NJZDsgZWxzZSBzdGF0dXNcIj5cbiAgICAgICAgPGZzLXBvcG92ZXJcbiAgICAgICAgICAgIFttYXhXaWR0aF09XCJudWxsXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJzdGF0dXNQb3BvdmVyXCJcbiAgICAgICAgICAgIFtpbmRpY2F0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZzLXBvcG92ZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhdHVzUG9wb3Zlcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93Lmhvc3RcIj5cbiAgICAgICAgICAgIEhvc3Q6IHt7IHJvdy5ob3N0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJvdy5wcm9jZXNzSWRcIj5cbiAgICAgICAgICAgIFByb2Nlc3MgSUQ6IHt7IHJvdy5wcm9jZXNzSWQgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LnByb2Nlc3NTdGF0ZVwiPlxuICAgICAgICAgICAgUHJvY2VzcyBTdGF0ZToge3sgQ3JvblByb2Nlc3NTdGF0ZXNbcm93LnByb2Nlc3NTdGF0ZV0gfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNzdGF0dXM+XG4gICAgICAgIHt7IENyb25TdGF0ZXNbcm93LnN0YXRlXSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPlxuICAgICAgICAgIER1cmF0aW9uOiB7eyByb3cucnVubmluZ0R1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHsgaG91cnM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIHNlY29uZHM6IHRydWUgfSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+XG4gICAgICBMYXN0IFJhblxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGZzLWxpc3QtY2VsbFxuICAgICAgICBsZXQtcm93PVwicm93XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmR1cmF0aW9uPT09bnVsbDsgZWxzZSBsYXN0UmFuXCI+XG4gICAgICAgIE5ldmVyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbGFzdFJhbj5cbiAgICAgICAgPGZzLWRhdGUtYWdvIFtkYXRlXT1cInJvdy5jcmVhdGVEYXRlXCI+PC9mcy1kYXRlLWFnbz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzbWFsbFwiXG4gICAgICAgICAgICAqbmdJZj1cInJvdy5kdXJhdGlvblwiPlxuICAgICAgICAgIER1cmF0aW9uOiB7eyByb3cuZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjogeyBob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZSB9IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPlxuICAgICAgTmV4dCBSdW5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBmcy1saXN0LWNlbGxcbiAgICAgICAgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5zdGF0ZSAhPT0gQ3JvblN0YXRlLkRpc2FibGVkXCI+XG4gICAgICAgIDxhcHAtbmV4dC1ydW4gW2Nyb25dPVwicm93XCI+PC9hcHAtbmV4dC1ydW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPlxuICAgICAgVGltZW91dFxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGZzLWxpc3QtY2VsbFxuICAgICAgICBsZXQtcm93PVwicm93XCI+XG4gICAgICB7eyByb3cuY3JvblNldHRpbmcudGltZW91dCB9fWhcbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuPC9mcy1saXN0PiJdfQ==
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3N5c3RlbS9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQXdCLGVBQWUsRUFBZ0IsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxN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QUFFO29CQUNQO3dCQUNFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO3dCQUNoQyxJQUFJLEVBQUUsU0FBUzt3QkFDZixLQUFLLEVBQUUsU0FBUztxQkFDakI7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU07d0JBQ2hDLElBQUksRUFBRSxRQUFRO3dCQUNkLEtBQUssRUFBRSxRQUFRO3FCQUNoQjtpQkFDRjtnQkFDRCxjQUFjLEVBQUUsQ0FBQyxNQUE0QixFQUFFLEVBQUU7b0JBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO3lCQUNsRCxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMzQyxDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUNOLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7dUdBL1NVLGNBQWM7MkZBQWQsY0FBYyxpSEFFZCxlQUFlLDhEQzVDNUIsbzlGQWtIVSx5REQvRUYsWUFBWSx3bkJBQ1osZUFBZSwyR0FDZixnQkFBZ0IsbUpBQ2hCLFlBQVksK1BBQ1osb0JBQW9COzsyRkFHZixjQUFjO2tCQWQxQixTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLG9CQUFvQjtxQkFDdkI7OEJBSWtELElBQUk7c0JBQXhELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0FwaSwgUmVxdWVzdE1ldGhvZCwgU3RyZWFtRXZlbnREYXRhIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcbmltcG9ydCB7IHBhcnNlLCBGc0RhdGVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlJztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IEZzTGlzdEFjdGlvblNlbGVjdGVkLCBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZywgRnNMaXN0TW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGlzdCc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzUHJvY2VzcyB9IGZyb20gJ0BmaXJlc3RpdGNoL3Byb2Nlc3MnO1xuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQWN0aW9uVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgZGlmZmVyZW5jZUluU2Vjb25kcyB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgQ3JvblByb2Nlc3NTdGF0ZXMsIENyb25TdGF0ZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgQ3JvbkRhdGEgfSBmcm9tICcuLi8uLi9kYXRhL2Nyb24uZGF0YSc7XG5pbXBvcnQgeyBDcm9uU3RhdGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XG5pbXBvcnQgeyBDcm9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3Jvbi9jcm9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc1BvcG92ZXJNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9wb3BvdmVyJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ3Jvbk5leHRSdW5Db21wb25lbnQgfSBmcm9tICcuLi9jcm9uLW5leHQtcnVuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1jcm9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nyb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jcm9ucy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGc0xpc3RNb2R1bGUsXG4gICAgICAgIEZzUG9wb3Zlck1vZHVsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgRnNEYXRlTW9kdWxlLFxuICAgICAgICBDcm9uTmV4dFJ1bkNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDcm9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcblxuICBwdWJsaWMgY29uZmlnOiBGc0xpc3RDb25maWcgPSBudWxsO1xuICBwdWJsaWMgQ3JvblN0YXRlcyA9IGluZGV4TmFtZVZhbHVlKENyb25TdGF0ZXMpO1xuICBwdWJsaWMgQ3JvblByb2Nlc3NTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShDcm9uUHJvY2Vzc1N0YXRlcyk7XG4gIHB1YmxpYyBDcm9uU3RhdGUgPSBDcm9uU3RhdGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9jcm9uRGF0YSA9IGluamVjdChDcm9uRGF0YSk7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoRnNNZXNzYWdlKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX3Byb21wdCA9IGluamVjdChGc1Byb21wdCk7XG4gIHByaXZhdGUgX3Byb2Nlc3MgPSBpbmplY3QoRnNQcm9jZXNzKTtcbiAgcHJpdmF0ZSBfYXBpID0gaW5qZWN0KEZzQXBpKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnTGlzdCgpO1xuICB9XG5cbiAgcHVibGljIG9wZW4oY3Jvbikge1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENyb25Db21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY3JvbixcbiAgICAgICAgY3JvbkFjdGlvbnM6IHRoaXMuZ2V0Q3JvbkFjdGlvbnMoKSxcbiAgICAgIH0sXG4gICAgICB3aWR0aDogJzg1JScsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JvbkFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnF1ZXVlKGRhdGEpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1F1ZXVlZCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnUXVldWUnLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJ1bihkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnUnVuJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbmFibGUoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnRW5hYmxlZCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkRpc2FibGVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGUoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnRGlzYWJsZWQgY3JvbicpO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogJ0Rpc2FibGUnLFxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8ga2lsbCB0aGUgY3Jvbj8nLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5raWxsKGRhdGEpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0tpbGxlZCBjcm9uJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiAnS2lsbCcsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHQuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcmVzZXQgdGhlIGNyb24/JyxcbiAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlKGRhdGEpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2V0IGNyb24nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6ICdSZXNldCcsXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5LaWxsaW5nIHx8IFxuICAgICAgICAgIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nIHx8IFxuICAgICAgICAgIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQgfHwgXG4gICAgICAgICAgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLlF1ZXVlZDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbiAgXG4gIHB1YmxpYyBlbmFibGUoZGF0YSkge1xuICAgIHJldHVybiB0aGlzLl9jcm9uRGF0YS5lbmFibGUoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZShkYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nyb25EYXRhLmRpc2FibGUoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMga2lsbCAoZGF0YSkge1xuICAgIHJldHVybiB0aGlzLl9jcm9uRGF0YS5raWxsKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHF1ZXVlKGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JvbkRhdGEucXVldWUoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgcnVuKGNyb24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHsgIFxuICAgICAgY29uc3QgcHJvY2VzcyA9IHRoaXMuX3Byb2Nlc3NcbiAgICAgICAgLnJ1bihgUnVuICR7Y3Jvbi5uYW1lfWAsIHRoaXMuX2FwaVxuICAgICAgICAgIC5zdHJlYW0oXG4gICAgICAgICAgICBSZXF1ZXN0TWV0aG9kLlBvc3QsIGBzeXN0ZW0vY3JvbnMvJHtjcm9uLmlkfS9ydW5gKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBTdHJlYW1FdmVudERhdGEpLFxuICAgICAgICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ/LmRhdGE7XG4gICAgICAgICAgICB9KSwgICBcbiAgICAgICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgIHRpbWVyKDEwMDAsIDUwMDApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHByb2Nlc3MuZmFpbGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHByb2Nlc3MuY29tcGxldGVkJCAgXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgcHJvY2Vzcy5jYW5jZWxsZWQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkQ3JvbnMgPSAocXVlcnkpID0+IHtcbiAgICBxdWVyeS50aW1lem9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcblxuICAgIHJldHVybiB0aGlzLl9jcm9uRGF0YS5nZXRzKHF1ZXJ5LCB7IGtleTogJ2Nyb25zJyB9KTtcbiAgfTtcblxuICBwdWJsaWMgYnVsayA9IChhY3Rpb24sIGNyb25zKSA9PiB7XG4gICAgY29uc3QgcHJvY2Vzc2VzID0gY3JvbnNcbiAgICAgIC5tYXAoKGNyb24pID0+IHtcbiAgICAgICAgcmV0dXJuIGNyb24ucHJvY2VzcztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Nyb25EYXRhLmJ1bGsoYWN0aW9uLCBwcm9jZXNzZXMpO1xuICB9O1xuXG4gIHByaXZhdGUgX2NvbmZpZ0xpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBwYWdpbmc6IGZhbHNlLFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXG4gICAgICAgICAgbGFiZWw6ICdTZWFyY2gnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMuZ2V0Q3JvbkFjdGlvbnMoKVxuICAgICAgICAubWFwKChyb3dBY3Rpb24pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucm93QWN0aW9uLFxuICAgICAgICAgICAgY2xpY2s6IChjcm9uKSA9PiB7XG4gICAgICAgICAgICAgIHJvd0FjdGlvblxuICAgICAgICAgICAgICAgIC5hY3Rpb24oY3JvbilcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcXVlcnkgPSB7IFxuICAgICAgICAgIC4uLnF1ZXJ5LFxuICAgICAgICAgIHRpbWV6b25lOiBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZENyb25zKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChjcm9ucykgPT4gKHtcbiAgICAgICAgICAgICAgZGF0YTogY3JvbnNcbiAgICAgICAgICAgICAgICAubWFwKChjcm9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jcm9uLFxuICAgICAgICAgICAgICAgICAgICBydW5uaW5nRHVyYXRpb246IGRpZmZlcmVuY2VJblNlY29uZHMocGFyc2UoY3Jvbi5jcmVhdGVEYXRlKSwgbmV3IERhdGUoKSksXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZih0aGlzLmJ1bGspIHtcbiAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGlvbiA9IHtcbiAgICAgICAgc2VsZWN0QWxsOiBmYWxzZSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxuICAgICAgICAgICAgbmFtZTogJ2Rpc2FibGUnLFxuICAgICAgICAgICAgbGFiZWw6ICdEaXNhYmxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxuICAgICAgICAgICAgbmFtZTogJ2VuYWJsZScsXG4gICAgICAgICAgICBsYWJlbDogJ0VuYWJsZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYWN0aW9uU2VsZWN0ZWQ6IChhY3Rpb246IEZzTGlzdEFjdGlvblNlbGVjdGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYnVsayhhY3Rpb24uYWN0aW9uLm5hbWUsIGFjdGlvbi5zZWxlY3RlZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0FwcGxpZWQgQ2hhbmdlcycpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZnMtbGlzdCBbY29uZmlnXT1cImNvbmZpZ1wiPlxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPlxuICAgICAgTmFtZVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBmcy1saXN0LWNlbGxcbiAgICAgIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxhIChjbGljayk9XCJvcGVuKHJvdylcIj5cbiAgICAgICAge3sgcm93Lm5hbWUgfX1cbiAgICAgIDwvYT5cbiAgICAgIDxzbWFsbD5cbiAgICAgICAge3sgcm93LmNyb25TZXR0aW5nPy5kZXNjcmlwdGlvbiB9fVxuICAgICAgPC9zbWFsbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gYWxpZ249XCJjZW50ZXJcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+XG4gICAgICBTdGF0dXNcbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgZnMtbGlzdC1jZWxsXG4gICAgICBsZXQtcm93PVwicm93XCI+XG4gICAgICBAaWYgKHJvdy5ob3N0IHx8IHJvdy5wcm9jZXNzSWQpIHtcbiAgICAgICAgPGZzLXBvcG92ZXJcbiAgICAgICAgICBbbWF4V2lkdGhdPVwibnVsbFwiXG4gICAgICAgICAgW3RlbXBsYXRlXT1cInN0YXR1c1BvcG92ZXJcIlxuICAgICAgICAgIFtpbmRpY2F0aW9uXT1cInRydWVcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mcy1wb3BvdmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3N0YXR1c1BvcG92ZXI+XG4gICAgICAgICAgQGlmIChyb3cuaG9zdCkge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgSG9zdDoge3sgcm93Lmhvc3QgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHJvdy5wcm9jZXNzSWQpIHtcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIFByb2Nlc3MgSUQ6IHt7IHJvdy5wcm9jZXNzSWQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHJvdy5wcm9jZXNzU3RhdGUpIHtcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIFByb2Nlc3MgU3RhdGU6IHt7IENyb25Qcm9jZXNzU3RhdGVzW3Jvdy5wcm9jZXNzU3RhdGVdIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgQ3JvblN0YXRlc1tyb3cuc3RhdGVdIH19XG4gICAgICB9XG4gICAgICA8bmctdGVtcGxhdGUgI3N0YXR1cz5cbiAgICAgICAge3sgQ3JvblN0YXRlc1tyb3cuc3RhdGVdIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgQGlmIChyb3cuc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPlxuICAgICAgICAgIER1cmF0aW9uOiB7eyByb3cucnVubmluZ0R1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHsgaG91cnM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIHNlY29uZHM6IHRydWUgfSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPlxuICAgICAgRnJlcXVlbmN5XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIGZzLWxpc3QtY2VsbFxuICAgICAgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3sgcm93LmNyb25TZXR0aW5nPy5zdW1tYXJ5IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5cbiAgICAgIExhc3QgUmFuXG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIGZzLWxpc3QtY2VsbFxuICAgICAgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgQGlmIChyb3cuZHVyYXRpb249PT1udWxsKSB7XG4gICAgICAgIE5ldmVyXG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGZzLWRhdGUtYWdvIFtkYXRlXT1cInJvdy5jcmVhdGVEYXRlXCI+PC9mcy1kYXRlLWFnbz5cbiAgICAgICAgQGlmIChyb3cuZHVyYXRpb24pIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIER1cmF0aW9uOiB7eyByb3cuZHVyYXRpb24gfCBmc0RhdGVEdXJhdGlvbjogeyBob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZSB9IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtaGVhZGVyPlxuICAgICAgTmV4dCBSdW5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgZnMtbGlzdC1jZWxsXG4gICAgICBsZXQtcm93PVwicm93XCI+XG4gICAgICBAaWYgKHJvdy5zdGF0ZSAhPT0gQ3JvblN0YXRlLkRpc2FibGVkKSB7XG4gICAgICAgIDxhcHAtbmV4dC1ydW4gW2Nyb25dPVwicm93XCI+PC9hcHAtbmV4dC1ydW4+XG4gICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5cbiAgICAgIFRpbWVvdXRcbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgZnMtbGlzdC1jZWxsXG4gICAgICBsZXQtcm93PVwicm93XCI+XG4gICAgICB7eyByb3cuY3JvblNldHRpbmcudGltZW91dCB9fWhcbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuPC9mcy1saXN0PiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './crons.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3JvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JvbnMuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';
|
|
2
2
|
import { FsBuildService } from '@firestitch/build';
|
|
3
3
|
import { FsMessage } from '@firestitch/message';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { takeUntil } from 'rxjs/operators';
|
|
6
6
|
import { differenceInMinutes } from 'date-fns';
|
|
7
|
+
import { FsSkeletonModule } from '@firestitch/skeleton';
|
|
8
|
+
import { FsLabelModule } from '@firestitch/label';
|
|
9
|
+
import { NgClass } from '@angular/common';
|
|
10
|
+
import { MatIcon } from '@angular/material/icon';
|
|
11
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
12
|
+
import { MatButton } from '@angular/material/button';
|
|
13
|
+
import { FsMenuModule } from '@firestitch/menu';
|
|
14
|
+
import { FsDateModule } from '@firestitch/date';
|
|
7
15
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@firestitch/
|
|
9
|
-
import * as i2 from "@firestitch/
|
|
10
|
-
import * as i3 from "@
|
|
11
|
-
import * as i4 from "@
|
|
12
|
-
import * as i5 from "@angular/material/tooltip";
|
|
13
|
-
import * as i6 from "@angular/material/icon";
|
|
14
|
-
import * as i7 from "@firestitch/skeleton";
|
|
15
|
-
import * as i8 from "@firestitch/label";
|
|
16
|
-
import * as i9 from "@firestitch/menu";
|
|
17
|
-
import * as i10 from "@firestitch/date";
|
|
16
|
+
import * as i1 from "@firestitch/skeleton";
|
|
17
|
+
import * as i2 from "@firestitch/label";
|
|
18
|
+
import * as i3 from "@firestitch/menu";
|
|
19
|
+
import * as i4 from "@firestitch/date";
|
|
18
20
|
export class DashboardComponent {
|
|
19
|
-
_message;
|
|
20
|
-
_cdRef;
|
|
21
|
-
_buildService;
|
|
21
|
+
_message = inject(FsMessage);
|
|
22
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
23
|
+
_buildService = inject(FsBuildService);
|
|
22
24
|
init;
|
|
23
25
|
upgrade;
|
|
24
26
|
load;
|
|
@@ -28,11 +30,6 @@ export class DashboardComponent {
|
|
|
28
30
|
build;
|
|
29
31
|
menuActions = [];
|
|
30
32
|
_destroy$ = new Subject();
|
|
31
|
-
constructor(_message, _cdRef, _buildService) {
|
|
32
|
-
this._message = _message;
|
|
33
|
-
this._cdRef = _cdRef;
|
|
34
|
-
this._buildService = _buildService;
|
|
35
|
-
}
|
|
36
33
|
ngOnInit() {
|
|
37
34
|
this._load();
|
|
38
35
|
this.buttonActions = this.actions.filter((item) => {
|
|
@@ -78,13 +75,22 @@ export class DashboardComponent {
|
|
|
78
75
|
this._cdRef.markForCheck();
|
|
79
76
|
});
|
|
80
77
|
}
|
|
81
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DashboardComponent, deps: [
|
|
82
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
78
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: DashboardComponent, isStandalone: true, selector: "fs-system-dashboard", inputs: { init: "init", upgrade: "upgrade", load: "load", actions: "actions" }, ngImport: i0, template: "<div *fsSkeleton=\"dashboard\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <div>\n <h2>\n Server\n </h2>\n <fs-label-field>\n <fs-label>\n Date/Time\n </fs-label>\n {{ dashboard.serverTime | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Timezone\n </fs-label>\n {{ dashboard.serverTimezone }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Hostname\n </fs-label>\n {{ dashboard.serverHostname }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Directory\n </fs-label>\n {{ dashboard.appDirectory }}\n </fs-label-field>\n </div>\n <div>\n <h2>\n System\n </h2>\n <fs-label-field>\n <fs-label>\n Mode\n </fs-label>\n {{ dashboard.appMode }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Notification Recipients\n </fs-label>\n {{ dashboard.notifyRecipients.join(', ') }}\n </fs-label-field>\n </div>\n <div>\n <h2>\n Database\n </h2>\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ dashboard.databaseName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Date/Time\n </fs-label>\n {{ dashboard.databaseTime | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Timezone\n </fs-label>\n {{ dashboard.databaseTimezone }}\n </fs-label-field>\n </div>\n @if (build || dashboard.upgrades.length) {\n <div>\n @if (build) {\n <h2>\n Build\n </h2>\n <fs-label-field>\n <fs-label>\n Version\n </fs-label>\n {{ build.version || 'Unknown' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{ (build.date | fsDateFormat: 'date-time') || 'Unknown' }}\n </fs-label-field>\n }\n @if (dashboard.upgrades.length) {\n <fs-label-field>\n <fs-label>\n Pending Upgrades\n </fs-label>\n <span\n class=\"attention\"\n [ngClass]=\"{ 'needs-attention': !!dashboard.upgrades.length }\">\n {{ dashboard.upgrades.length }}\n <mat-icon\n [matTooltip]=\"dashboard.upgrades.join('\\n')\"\n matTooltipClass=\"tooltip-pending-upgrades\">\n warning\n </mat-icon>\n </span>\n </fs-label-field>\n }\n </div>\n }\n <div>\n <h2>\n Cron\n </h2>\n <fs-label-field>\n <fs-label>\n Last Ran\n </fs-label>\n <span\n class=\"attention\"\n [ngClass]=\"{ 'needs-attention': dashboard.cronRanAttention }\">\n @if (!dashboard.cronRan) {\n <span>\n Never\n </span>\n }\n @if (dashboard.cronRan) {\n <span>\n {{ dashboard.cronRan | fsDateFormat: 'date-time' }}\n </span>\n }\n <mat-icon>\n warning\n </mat-icon>\n </span>\n </fs-label-field>\n </div>\n </div>\n <div>\n <div class=\"actions\">\n <button\n mat-stroked-button\n (click)=\"upgradeClick()\">\n Run Upgrades\n </button>\n <button\n mat-stroked-button\n (click)=\"initClick()\">\n Init System\n </button>\n @for (action of buttonActions; track action) {\n <button\n mat-stroked-button\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </button>\n }\n @if (menuActions.length) {\n <fs-menu buttonClass=\"mat-stroked-button menu-button\">\n @for (action of menuActions; track action) {\n <ng-template\n fs-menu-item\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </ng-template>\n }\n </fs-menu>\n }\n </div>\n </div>\n</div>", styles: [":host ::ng-deep .menu-button{box-shadow:none}h2{margin-top:0}.actions{display:flex;align-items:center;flex-wrap:wrap}.actions button,.actions fs-menu{margin-bottom:10px;margin-right:5px}table td{padding:3px}.attention{display:flex;align-items:center}.attention mat-icon{display:none;margin-left:2px}.attention.needs-attention{color:#c00}.attention.needs-attention mat-icon{display:inline}::ng-deep .tooltip-pending-upgrades{white-space:pre-line}@media (max-width: 1000px){:host ::ng-deep .menu-button{width:100%;border-radius:4px}}\n"], dependencies: [{ kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "ngmodule", type: FsLabelModule }, { kind: "component", type: i2.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["appearance", "showOutline", "disabled", "focused", "hoverable", "padless"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "ngmodule", type: FsDateModule }, { kind: "pipe", type: i4.FsDateFormatPipe, name: "fsDateFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
83
80
|
}
|
|
84
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
85
82
|
type: Component,
|
|
86
|
-
args: [{ selector: 'fs-system-dashboard', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
87
|
-
|
|
83
|
+
args: [{ selector: 'fs-system-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
84
|
+
FsSkeletonModule,
|
|
85
|
+
FsLabelModule,
|
|
86
|
+
NgClass,
|
|
87
|
+
MatIcon,
|
|
88
|
+
MatTooltip,
|
|
89
|
+
MatButton,
|
|
90
|
+
FsMenuModule,
|
|
91
|
+
FsDateModule,
|
|
92
|
+
], template: "<div *fsSkeleton=\"dashboard\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <div>\n <h2>\n Server\n </h2>\n <fs-label-field>\n <fs-label>\n Date/Time\n </fs-label>\n {{ dashboard.serverTime | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Timezone\n </fs-label>\n {{ dashboard.serverTimezone }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Hostname\n </fs-label>\n {{ dashboard.serverHostname }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Directory\n </fs-label>\n {{ dashboard.appDirectory }}\n </fs-label-field>\n </div>\n <div>\n <h2>\n System\n </h2>\n <fs-label-field>\n <fs-label>\n Mode\n </fs-label>\n {{ dashboard.appMode }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Notification Recipients\n </fs-label>\n {{ dashboard.notifyRecipients.join(', ') }}\n </fs-label-field>\n </div>\n <div>\n <h2>\n Database\n </h2>\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ dashboard.databaseName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Date/Time\n </fs-label>\n {{ dashboard.databaseTime | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Timezone\n </fs-label>\n {{ dashboard.databaseTimezone }}\n </fs-label-field>\n </div>\n @if (build || dashboard.upgrades.length) {\n <div>\n @if (build) {\n <h2>\n Build\n </h2>\n <fs-label-field>\n <fs-label>\n Version\n </fs-label>\n {{ build.version || 'Unknown' }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n {{ (build.date | fsDateFormat: 'date-time') || 'Unknown' }}\n </fs-label-field>\n }\n @if (dashboard.upgrades.length) {\n <fs-label-field>\n <fs-label>\n Pending Upgrades\n </fs-label>\n <span\n class=\"attention\"\n [ngClass]=\"{ 'needs-attention': !!dashboard.upgrades.length }\">\n {{ dashboard.upgrades.length }}\n <mat-icon\n [matTooltip]=\"dashboard.upgrades.join('\\n')\"\n matTooltipClass=\"tooltip-pending-upgrades\">\n warning\n </mat-icon>\n </span>\n </fs-label-field>\n }\n </div>\n }\n <div>\n <h2>\n Cron\n </h2>\n <fs-label-field>\n <fs-label>\n Last Ran\n </fs-label>\n <span\n class=\"attention\"\n [ngClass]=\"{ 'needs-attention': dashboard.cronRanAttention }\">\n @if (!dashboard.cronRan) {\n <span>\n Never\n </span>\n }\n @if (dashboard.cronRan) {\n <span>\n {{ dashboard.cronRan | fsDateFormat: 'date-time' }}\n </span>\n }\n <mat-icon>\n warning\n </mat-icon>\n </span>\n </fs-label-field>\n </div>\n </div>\n <div>\n <div class=\"actions\">\n <button\n mat-stroked-button\n (click)=\"upgradeClick()\">\n Run Upgrades\n </button>\n <button\n mat-stroked-button\n (click)=\"initClick()\">\n Init System\n </button>\n @for (action of buttonActions; track action) {\n <button\n mat-stroked-button\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </button>\n }\n @if (menuActions.length) {\n <fs-menu buttonClass=\"mat-stroked-button menu-button\">\n @for (action of menuActions; track action) {\n <ng-template\n fs-menu-item\n (click)=\"actionClick(action)\">\n {{ action.label }}\n </ng-template>\n }\n </fs-menu>\n }\n </div>\n </div>\n</div>", styles: [":host ::ng-deep .menu-button{box-shadow:none}h2{margin-top:0}.actions{display:flex;align-items:center;flex-wrap:wrap}.actions button,.actions fs-menu{margin-bottom:10px;margin-right:5px}table td{padding:3px}.attention{display:flex;align-items:center}.attention mat-icon{display:none;margin-left:2px}.attention.needs-attention{color:#c00}.attention.needs-attention mat-icon{display:inline}::ng-deep .tooltip-pending-upgrades{white-space:pre-line}@media (max-width: 1000px){:host ::ng-deep .menu-button{width:100%;border-radius:4px}}\n"] }]
|
|
93
|
+
}], propDecorators: { init: [{
|
|
88
94
|
type: Input
|
|
89
95
|
}], upgrade: [{
|
|
90
96
|
type: Input
|
|
@@ -93,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
93
99
|
}], actions: [{
|
|
94
100
|
type: Input
|
|
95
101
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVoSCxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVy9DLE1BQU0sT0FBTyxrQkFBa0I7SUFlbkI7SUFDQTtJQUNBO0lBZk0sSUFBSSxDQUFZO0lBQ2hCLE9BQU8sQ0FBWTtJQUNuQixJQUFJLENBQVk7SUFFaEIsT0FBTyxHQUFzQixFQUFFLENBQUM7SUFFekMsU0FBUyxDQUFDO0lBQ1YsYUFBYSxHQUFzQixFQUFFLENBQUM7SUFDdEMsS0FBSyxDQUFZO0lBQ2pCLFdBQVcsR0FBc0IsRUFBRSxDQUFDO0lBRW5DLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFlBQ1UsUUFBbUIsRUFDbkIsTUFBeUIsRUFDekIsYUFBNkI7UUFGN0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7SUFDbkMsQ0FBQztJQUVFLFFBQVE7UUFDYixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07YUFDdEIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXLENBQUMsTUFBTTtRQUN2QixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsSUFBSSxFQUFFO2FBQ1IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ1gsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sS0FBSztRQUNYLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDUixTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU87Z0JBQ25ELG1CQUFtQixDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3VHQXhFVSxrQkFBa0I7MkZBQWxCLGtCQUFrQiwySUNuQi9CLHduSUErSk07OzJGRDVJTyxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07MklBSS9CLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJ1aWxkRGF0YSwgRnNCdWlsZFNlcnZpY2UgfSBmcm9tICdAZmlyZXN0aXRjaC9idWlsZCc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBkaWZmZXJlbmNlSW5NaW51dGVzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb24gfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvZGFzaGJvYXJkLWFjdGlvbic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtc3lzdGVtLWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgaW5pdDogKCkgPT4gYW55O1xuICBASW5wdXQoKSBwdWJsaWMgdXBncmFkZTogKCkgPT4gYW55O1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZDogKCkgPT4gYW55O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25zOiBEYXNoYm9hcmRBY3Rpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBkYXNoYm9hcmQ7XG4gIHB1YmxpYyBidXR0b25BY3Rpb25zOiBEYXNoYm9hcmRBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgYnVpbGQ6IEJ1aWxkRGF0YTtcbiAgcHVibGljIG1lbnVBY3Rpb25zOiBEYXNoYm9hcmRBY3Rpb25bXSA9IFtdO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9idWlsZFNlcnZpY2U6IEZzQnVpbGRTZXJ2aWNlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9sb2FkKCk7XG4gICAgdGhpcy5idXR0b25BY3Rpb25zID0gdGhpcy5hY3Rpb25zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuICFpdGVtLm1lbnU7IFxuICAgIH0pO1xuICAgIHRoaXMubWVudUFjdGlvbnMgPSB0aGlzLmFjdGlvbnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gaXRlbS5tZW51OyBcbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGQgPSB0aGlzLl9idWlsZFNlcnZpY2UuYnVpbGQ7XG4gICAgdGhpcy5fYnVpbGRTZXJ2aWNlLmJ1aWxkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChidWlsZDogQnVpbGREYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuYnVpbGQgPSBidWlsZDtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uQ2xpY2soYWN0aW9uKSB7XG4gICAgYWN0aW9uLmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdENsaWNrKCkge1xuICAgIHRoaXMuaW5pdCgpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdTdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgdGhlIHN5c3RlbScpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBncmFkZUNsaWNrKCkge1xuICAgIHRoaXMudXBncmFkZSgpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fbG9hZCgpO1xuICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1N1Y2Nlc3NmdWxseSB1cGdyYWRlZCB0aGUgc3lzdGVtJyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWQoKSB7XG4gICAgdGhpcy5sb2FkKClcbiAgICAgIC5zdWJzY3JpYmUoKGRhc2hib2FyZCkgPT4ge1xuICAgICAgICB0aGlzLmRhc2hib2FyZCA9IGRhc2hib2FyZDtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQuY3JvblJhbkF0dGVudGlvbiA9ICFkYXNoYm9hcmQuY3JvblJhbiB8fFxuICAgICAgICAgZGlmZmVyZW5jZUluTWludXRlcyhuZXcgRGF0ZSgpLCBuZXcgRGF0ZShkYXNoYm9hcmQuY3JvblJhbikpID4gMTU7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgKmZzU2tlbGV0b249XCJkYXNoYm9hcmRcIj5cbiAgPGRpdiBjbGFzcz1cImZzLXJvdy5nYXAtbGcud3JhcC5hbGlnbi1zdGFydFwiPlxuICAgIDxkaXY+XG4gICAgICA8aDI+XG4gICAgICAgIFNlcnZlclxuICAgICAgPC9oMj5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIERhdGUvVGltZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBkYXNoYm9hcmQuc2VydmVyVGltZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZScgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBUaW1lem9uZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBkYXNoYm9hcmQuc2VydmVyVGltZXpvbmUgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBIb3N0bmFtZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBkYXNoYm9hcmQuc2VydmVySG9zdG5hbWUgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBEaXJlY3RvcnlcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLmFwcERpcmVjdG9yeSB9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGgyPlxuICAgICAgICBTeXN0ZW1cbiAgICAgIDwvaDI+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBNb2RlXG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIHt7IGRhc2hib2FyZC5hcHBNb2RlIH19XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgTm90aWZpY2F0aW9uIFJlY2lwaWVudHNcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLm5vdGlmeVJlY2lwaWVudHMuam9pbignLCAnKSB9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGgyPlxuICAgICAgICBEYXRhYmFzZVxuICAgICAgPC9oMj5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIE5hbWVcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLmRhdGFiYXNlTmFtZSB9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIERhdGUvVGltZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBkYXNoYm9hcmQuZGF0YWJhc2VUaW1lIHwgZnNEYXRlRm9ybWF0OiAnZGF0ZS10aW1lJyB9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIFRpbWV6b25lXG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIHt7IGRhc2hib2FyZC5kYXRhYmFzZVRpbWV6b25lIH19XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJidWlsZCB8fCBkYXNoYm9hcmQudXBncmFkZXMubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnVpbGRcIj5cbiAgICAgICAgPGgyPlxuICAgICAgICAgIEJ1aWxkXG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBWZXJzaW9uXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBidWlsZC52ZXJzaW9uIHx8ICdVbmtub3duJyB9fVxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgRGF0ZVxuICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAge3sgKGJ1aWxkLmRhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnKSB8fCAnVW5rbm93bicgfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwiZGFzaGJvYXJkLnVwZ3JhZGVzLmxlbmd0aFwiPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgUGVuZGluZyBVcGdyYWRlc1xuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJhdHRlbnRpb25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnbmVlZHMtYXR0ZW50aW9uJzogISFkYXNoYm9hcmQudXBncmFkZXMubGVuZ3RoIH1cIj5cbiAgICAgICAgICB7eyBkYXNoYm9hcmQudXBncmFkZXMubGVuZ3RoIH19XG4gICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImRhc2hib2FyZC51cGdyYWRlcy5qb2luKCdcXG4nKVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXAtcGVuZGluZy11cGdyYWRlc1wiPlxuICAgICAgICAgICAgd2FybmluZ1xuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxoMj5cbiAgICAgICAgQ3JvblxuICAgICAgPC9oMj5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIExhc3QgUmFuXG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImF0dGVudGlvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICduZWVkcy1hdHRlbnRpb24nOiBkYXNoYm9hcmQuY3JvblJhbkF0dGVudGlvbiB9XCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGFzaGJvYXJkLmNyb25SYW5cIj5cbiAgICAgICAgICAgIE5ldmVyXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGFzaGJvYXJkLmNyb25SYW5cIj5cbiAgICAgICAgICAgIHt7IGRhc2hib2FyZC5jcm9uUmFuIHwgZnNEYXRlRm9ybWF0OiAnZGF0ZS10aW1lJyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwidXBncmFkZUNsaWNrKClcIj5cbiAgICAgICAgUnVuIFVwZ3JhZGVzXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiaW5pdENsaWNrKClcIj5cbiAgICAgICAgSW5pdCBTeXN0ZW1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYnV0dG9uQWN0aW9uc1wiXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkNsaWNrKGFjdGlvbilcIj5cbiAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51QWN0aW9ucy5sZW5ndGhcIj5cbiAgICAgICAgPGZzLW1lbnUgYnV0dG9uQ2xhc3M9XCJtYXQtc3Ryb2tlZC1idXR0b24gbWVudS1idXR0b25cIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soYWN0aW9uKVwiPlxuICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1tZW51PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFhLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVks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QWtCLCtKQ3RDL0Isc3dJQXlLTSw4a0JEN0lFLGdCQUFnQixpS0FDaEIsYUFBYSxnUkFDYixPQUFPLG9GQUNQLE9BQU8sMklBQ1AsVUFBVSxpUkFDVixTQUFTLGdMQUNULFlBQVksaVNBQ1osWUFBWTs7MkZBR1Asa0JBQWtCO2tCQWpCOUIsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixZQUFZO3FCQUNmOzhCQVFhLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnVpbGREYXRhLCBGc0J1aWxkU2VydmljZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2J1aWxkJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGRpZmZlcmVuY2VJbk1pbnV0ZXMgfSBmcm9tICdkYXRlLWZucyc7XG5cbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbiB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9kYXNoYm9hcmQtYWN0aW9uJztcbmltcG9ydCB7IEZzU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9za2VsZXRvbic7XG5pbXBvcnQgeyBGc0xhYmVsTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGFiZWwnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRnNNZW51TW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVudSc7XG5pbXBvcnQgeyBGc0RhdGVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1kYXNoYm9hcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgICAgICBGc0xhYmVsTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBNYXRJY29uLFxuICAgICAgICBNYXRUb29sdGlwLFxuICAgICAgICBNYXRCdXR0b24sXG4gICAgICAgIEZzTWVudU1vZHVsZSxcbiAgICAgICAgRnNEYXRlTW9kdWxlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX2J1aWxkU2VydmljZSA9IGluamVjdChGc0J1aWxkU2VydmljZSk7XG5cblxuICBASW5wdXQoKSBwdWJsaWMgaW5pdDogKCkgPT4gYW55O1xuICBASW5wdXQoKSBwdWJsaWMgdXBncmFkZTogKCkgPT4gYW55O1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZDogKCkgPT4gYW55O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25zOiBEYXNoYm9hcmRBY3Rpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBkYXNoYm9hcmQ7XG4gIHB1YmxpYyBidXR0b25BY3Rpb25zOiBEYXNoYm9hcmRBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgYnVpbGQ6IEJ1aWxkRGF0YTtcbiAgcHVibGljIG1lbnVBY3Rpb25zOiBEYXNoYm9hcmRBY3Rpb25bXSA9IFtdO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fbG9hZCgpO1xuICAgIHRoaXMuYnV0dG9uQWN0aW9ucyA9IHRoaXMuYWN0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiAhaXRlbS5tZW51OyBcbiAgICB9KTtcbiAgICB0aGlzLm1lbnVBY3Rpb25zID0gdGhpcy5hY3Rpb25zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0ubWVudTsgXG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1aWxkID0gdGhpcy5fYnVpbGRTZXJ2aWNlLmJ1aWxkO1xuICAgIHRoaXMuX2J1aWxkU2VydmljZS5idWlsZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYnVpbGQ6IEJ1aWxkRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmJ1aWxkID0gYnVpbGQ7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbkNsaWNrKGFjdGlvbikge1xuICAgIGFjdGlvbi5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIGluaXRDbGljaygpIHtcbiAgICB0aGlzLmluaXQoKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIHRoZSBzeXN0ZW0nKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZ3JhZGVDbGljaygpIHtcbiAgICB0aGlzLnVwZ3JhZGUoKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2xvYWQoKTtcbiAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdTdWNjZXNzZnVsbHkgdXBncmFkZWQgdGhlIHN5c3RlbScpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIHRoaXMubG9hZCgpXG4gICAgICAuc3Vic2NyaWJlKChkYXNoYm9hcmQpID0+IHtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQgPSBkYXNoYm9hcmQ7XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLmNyb25SYW5BdHRlbnRpb24gPSAhZGFzaGJvYXJkLmNyb25SYW4gfHxcbiAgICAgICAgIGRpZmZlcmVuY2VJbk1pbnV0ZXMobmV3IERhdGUoKSwgbmV3IERhdGUoZGFzaGJvYXJkLmNyb25SYW4pKSA+IDE1O1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2ICpmc1NrZWxldG9uPVwiZGFzaGJvYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJmcy1yb3cuZ2FwLWxnLndyYXAuYWxpZ24tc3RhcnRcIj5cbiAgICA8ZGl2PlxuICAgICAgPGgyPlxuICAgICAgICBTZXJ2ZXJcbiAgICAgIDwvaDI+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBEYXRlL1RpbWVcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLnNlcnZlclRpbWUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgVGltZXpvbmVcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLnNlcnZlclRpbWV6b25lIH19XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgSG9zdG5hbWVcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLnNlcnZlckhvc3RuYW1lIH19XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgRGlyZWN0b3J5XG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIHt7IGRhc2hib2FyZC5hcHBEaXJlY3RvcnkgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxoMj5cbiAgICAgICAgU3lzdGVtXG4gICAgICA8L2gyPlxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgTW9kZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBkYXNoYm9hcmQuYXBwTW9kZSB9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIE5vdGlmaWNhdGlvbiBSZWNpcGllbnRzXG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIHt7IGRhc2hib2FyZC5ub3RpZnlSZWNpcGllbnRzLmpvaW4oJywgJykgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxoMj5cbiAgICAgICAgRGF0YWJhc2VcbiAgICAgIDwvaDI+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBOYW1lXG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIHt7IGRhc2hib2FyZC5kYXRhYmFzZU5hbWUgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBEYXRlL1RpbWVcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3sgZGFzaGJvYXJkLmRhdGFiYXNlVGltZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZScgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBUaW1lem9uZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBkYXNoYm9hcmQuZGF0YWJhc2VUaW1lem9uZSB9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGJ1aWxkIHx8IGRhc2hib2FyZC51cGdyYWRlcy5sZW5ndGgpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIEBpZiAoYnVpbGQpIHtcbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICBCdWlsZFxuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgICBWZXJzaW9uXG4gICAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgICAge3sgYnVpbGQudmVyc2lvbiB8fCAnVW5rbm93bicgfX1cbiAgICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgICAgRGF0ZVxuICAgICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICAgIHt7IChidWlsZC5kYXRlIHwgZnNEYXRlRm9ybWF0OiAnZGF0ZS10aW1lJykgfHwgJ1Vua25vd24nIH19XG4gICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGRhc2hib2FyZC51cGdyYWRlcy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICAgIFBlbmRpbmcgVXBncmFkZXNcbiAgICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImF0dGVudGlvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ25lZWRzLWF0dGVudGlvbic6ICEhZGFzaGJvYXJkLnVwZ3JhZGVzLmxlbmd0aCB9XCI+XG4gICAgICAgICAgICAgIHt7IGRhc2hib2FyZC51cGdyYWRlcy5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZGFzaGJvYXJkLnVwZ3JhZGVzLmpvaW4oJ1xcbicpXCJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwLXBlbmRpbmctdXBncmFkZXNcIj5cbiAgICAgICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXY+XG4gICAgICA8aDI+XG4gICAgICAgIENyb25cbiAgICAgIDwvaDI+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICBMYXN0IFJhblxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYXR0ZW50aW9uXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICduZWVkcy1hdHRlbnRpb24nOiBkYXNoYm9hcmQuY3JvblJhbkF0dGVudGlvbiB9XCI+XG4gICAgICAgICAgQGlmICghZGFzaGJvYXJkLmNyb25SYW4pIHtcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICBOZXZlclxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGRhc2hib2FyZC5jcm9uUmFuKSB7XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgZGFzaGJvYXJkLmNyb25SYW4gfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIHdhcm5pbmdcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInVwZ3JhZGVDbGljaygpXCI+XG4gICAgICAgIFJ1biBVcGdyYWRlc1xuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiaW5pdENsaWNrKClcIj5cbiAgICAgICAgSW5pdCBTeXN0ZW1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgQGZvciAoYWN0aW9uIG9mIGJ1dHRvbkFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkNsaWNrKGFjdGlvbilcIj5cbiAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKG1lbnVBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICA8ZnMtbWVudSBidXR0b25DbGFzcz1cIm1hdC1zdHJva2VkLWJ1dHRvbiBtZW51LWJ1dHRvblwiPlxuICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBtZW51QWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25DbGljayhhY3Rpb24pXCI+XG4gICAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZnMtbWVudT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './dashboard.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvZGFzaGJvYXJkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Rhc2hib2FyZC5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './info.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvaW5mby9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbmZvLmNvbXBvbmVudCc7XG4iXX0=
|