@valtimo/dossier 12.3.1 → 12.4.1
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/esm2022/lib/components/dossier-assign-user/dossier-assign-user.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +149 -24
- package/esm2022/lib/components/dossier-detail/tab/formio/formio.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.mjs +104 -0
- package/esm2022/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.mjs +34 -15
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +3 -3
- package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +1 -1
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +21 -6
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +3 -3
- package/esm2022/lib/constants/dossier-detail-layout.constants.mjs +13 -0
- package/esm2022/lib/constants/index.mjs +2 -1
- package/esm2022/lib/dossier-routing.module.mjs +3 -1
- package/esm2022/lib/dossier.module.mjs +12 -4
- package/esm2022/lib/models/dossier-detail-layout.model.mjs +2 -0
- package/esm2022/lib/models/index.mjs +2 -1
- package/esm2022/lib/models/tabs.model.mjs +13 -23
- package/esm2022/lib/services/dossier-detail-layout.service.mjs +93 -0
- package/esm2022/lib/services/dossier-tab.service.mjs +2 -2
- package/esm2022/lib/services/index.mjs +2 -1
- package/esm2022/public_api.mjs +2 -1
- package/fesm2022/valtimo-dossier.mjs +445 -105
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +44 -13
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.d.ts +38 -0
- package/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.d.ts.map +1 -0
- package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts +17 -4
- package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts.map +1 -1
- package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +4 -3
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/dossier-detail-layout.constants.d.ts +10 -0
- package/lib/constants/dossier-detail-layout.constants.d.ts.map +1 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/dossier-routing.module.d.ts.map +1 -1
- package/lib/dossier.module.d.ts +3 -1
- package/lib/dossier.module.d.ts.map +1 -1
- package/lib/models/dossier-detail-layout.model.d.ts +18 -0
- package/lib/models/dossier-detail-layout.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/tabs.model.d.ts +2 -2
- package/lib/models/tabs.model.d.ts.map +1 -1
- package/lib/services/dossier-detail-layout.service.d.ts +29 -0
- package/lib/services/dossier-detail-layout.service.d.ts.map +1 -0
- package/lib/services/dossier-tab.service.d.ts.map +1 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/public_api.d.ts +1 -0
- package/public_api.d.ts.map +1 -1
package/esm2022/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.mjs
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, signal, } from '@angular/core';
|
|
18
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
19
|
+
import { AssignUserToTaskComponent, CAN_ASSIGN_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, TaskDetailContentComponent, TaskDetailIntermediateSaveComponent, } from '@valtimo/task';
|
|
20
|
+
import { ButtonModule, IconModule } from 'carbon-components-angular';
|
|
21
|
+
import { BehaviorSubject, switchMap } from 'rxjs';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@valtimo/config";
|
|
24
|
+
import * as i2 from "@valtimo/components";
|
|
25
|
+
import * as i3 from "@valtimo/access-control";
|
|
26
|
+
import * as i4 from "@ngx-translate/core";
|
|
27
|
+
import * as i5 from "@angular/common";
|
|
28
|
+
import * as i6 from "carbon-components-angular";
|
|
29
|
+
export class DossierDetailsTaskDetailComponent {
|
|
30
|
+
set task(value) {
|
|
31
|
+
if (!value)
|
|
32
|
+
return;
|
|
33
|
+
this.task$.next(value);
|
|
34
|
+
this.pageValue.set({
|
|
35
|
+
title: value?.name,
|
|
36
|
+
subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.created}`,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
constructor(configService, pageHeaderService, permissionService, translateService) {
|
|
40
|
+
this.configService = configService;
|
|
41
|
+
this.pageHeaderService = pageHeaderService;
|
|
42
|
+
this.permissionService = permissionService;
|
|
43
|
+
this.translateService = translateService;
|
|
44
|
+
this.closeEvent = new EventEmitter();
|
|
45
|
+
this.assignmentOfTaskChanged = new EventEmitter();
|
|
46
|
+
this.activeChange = new EventEmitter();
|
|
47
|
+
this.formSubmit = new EventEmitter();
|
|
48
|
+
this.compactMode$ = this.pageHeaderService.compactMode$;
|
|
49
|
+
this.task$ = new BehaviorSubject(null);
|
|
50
|
+
this.canAssignUserToTask$ = this.task$.pipe(switchMap((task) => this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {
|
|
51
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
52
|
+
identifier: task?.id ?? '',
|
|
53
|
+
})));
|
|
54
|
+
this.intermediateSaveValue$ = new BehaviorSubject(null);
|
|
55
|
+
this.pageValue = signal({
|
|
56
|
+
title: '',
|
|
57
|
+
subtitle: '',
|
|
58
|
+
});
|
|
59
|
+
this.enableIntermediateSave = false;
|
|
60
|
+
this.enableIntermediateSave = !!this.configService.featureToggles?.enableIntermediateSave;
|
|
61
|
+
}
|
|
62
|
+
ngOnDestroy() {
|
|
63
|
+
this.closeEvent.emit();
|
|
64
|
+
}
|
|
65
|
+
onClose() {
|
|
66
|
+
this.closeEvent.emit();
|
|
67
|
+
this.onActiveChangeEvent(false);
|
|
68
|
+
}
|
|
69
|
+
onCurrentIntermediateSaveEvent(value) {
|
|
70
|
+
this.intermediateSaveValue$.next(value);
|
|
71
|
+
this.onActiveChangeEvent(false);
|
|
72
|
+
}
|
|
73
|
+
onActiveChangeEvent(activeChange) {
|
|
74
|
+
this.activeChange.emit(activeChange);
|
|
75
|
+
}
|
|
76
|
+
onFormSubmitEvent() {
|
|
77
|
+
this.formSubmit.emit();
|
|
78
|
+
}
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailsTaskDetailComponent, deps: [{ token: i1.ConfigService }, { token: i2.PageHeaderService }, { token: i3.PermissionService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierDetailsTaskDetailComponent, isStandalone: true, selector: "valtimo-dossier-detail-task-detail", inputs: { task: "task" }, outputs: { closeEvent: "closeEvent", assignmentOfTaskChanged: "assignmentOfTaskChanged", activeChange: "activeChange", formSubmit: "formSubmit" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n } as obs\"\n class=\"valtimo-dossier-detail-task-detail\"\n>\n <section class=\"valtimo-dossier-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave\"\n [task]=\"obs.task\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-dossier-detail-task-detail__body\"\n [class.valtimo-dossier-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-dossier-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <valtimo-assign-user-to-task\n *ngIf=\"obs.task && obs.canAssignUserToTask\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n ></valtimo-assign-user-to-task>\n </div>\n\n <valtimo-task-detail-content\n [task]=\"task$ | async\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-dossier-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-dossier-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-dossier-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-dossier-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-dossier-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-dossier-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:1}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: TaskDetailContentComponent, selector: "valtimo-task-detail-content", inputs: ["task"], outputs: ["closeModalEvent", "formSubmit", "activeChange"] }, { kind: "component", type: TaskDetailIntermediateSaveComponent, selector: "valtimo-task-detail-intermediate-save", inputs: ["task"], outputs: ["currentIntermediateSaveEvent", "showModalEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: AssignUserToTaskComponent, selector: "valtimo-assign-user-to-task", inputs: ["taskId", "assigneeId"], outputs: ["assignmentOfTaskChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailsTaskDetailComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{ selector: 'valtimo-dossier-detail-task-detail', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
85
|
+
CommonModule,
|
|
86
|
+
TranslateModule,
|
|
87
|
+
TaskDetailContentComponent,
|
|
88
|
+
TaskDetailIntermediateSaveComponent,
|
|
89
|
+
ButtonModule,
|
|
90
|
+
IconModule,
|
|
91
|
+
AssignUserToTaskComponent,
|
|
92
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n } as obs\"\n class=\"valtimo-dossier-detail-task-detail\"\n>\n <section class=\"valtimo-dossier-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave\"\n [task]=\"obs.task\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-dossier-detail-task-detail__body\"\n [class.valtimo-dossier-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-dossier-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <valtimo-assign-user-to-task\n *ngIf=\"obs.task && obs.canAssignUserToTask\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n ></valtimo-assign-user-to-task>\n </div>\n\n <valtimo-task-detail-content\n [task]=\"task$ | async\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-dossier-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-dossier-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-dossier-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-dossier-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-dossier-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-dossier-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:1}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
93
|
+
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.PageHeaderService }, { type: i3.PermissionService }, { type: i4.TranslateService }], propDecorators: { task: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], closeEvent: [{
|
|
96
|
+
type: Output
|
|
97
|
+
}], assignmentOfTaskChanged: [{
|
|
98
|
+
type: Output
|
|
99
|
+
}], activeChange: [{
|
|
100
|
+
type: Output
|
|
101
|
+
}], formSubmit: [{
|
|
102
|
+
type: Output
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsL2Rvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBS3RFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEVBRTFCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsbUNBQW1DLEdBQ3BDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFDLGVBQWUsRUFBYyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBa0I1RCxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLElBQW9CLElBQUksQ0FBQyxLQUFpQztRQUN4RCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsSUFBSSxDQUFDLEtBQUssQ0FB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ZiwwQkFBMEI7d0JBQzFCLG1DQUFtQzt3QkFDbkMsWUFBWTt3QkFDWixVQUFVO3dCQUNWLHlCQUF5QjtxQkFDMUI7aUxBR21CLElBQUk7c0JBQXZCLEtBQUs7Z0JBU29CLFVBQVU7c0JBQW5DLE1BQU07Z0JBQ21CLHVCQUF1QjtzQkFBaEQsTUFBTTtnQkFDbUIsWUFBWTtzQkFBckMsTUFBTTtnQkFDbUIsVUFBVTtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtQYWdlSGVhZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1Byb2Nlc3NJbnN0YW5jZVRhc2t9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuaW1wb3J0IHtcbiAgQXNzaWduVXNlclRvVGFza0NvbXBvbmVudCxcbiAgQ0FOX0FTU0lHTl9UQVNLX1BFUk1JU1NJT04sXG4gIEludGVybWVkaWF0ZVN1Ym1pc3Npb24sXG4gIFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG4gIFRhc2tEZXRhaWxDb250ZW50Q29tcG9uZW50LFxuICBUYXNrRGV0YWlsSW50ZXJtZWRpYXRlU2F2ZUNvbXBvbmVudCxcbn0gZnJvbSAnQHZhbHRpbW8vdGFzayc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZSwgSWNvbk1vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBUYXNrRGV0YWlsQ29udGVudENvbXBvbmVudCxcbiAgICBUYXNrRGV0YWlsSW50ZXJtZWRpYXRlU2F2ZUNvbXBvbmVudCxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBBc3NpZ25Vc2VyVG9UYXNrQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsc1Rhc2tEZXRhaWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHRhc2sodmFsdWU6IFByb2Nlc3NJbnN0YW5jZVRhc2sgfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLnBhZ2VWYWx1ZS5zZXQoe1xuICAgICAgdGl0bGU6IHZhbHVlPy5uYW1lLFxuICAgICAgc3VidGl0bGU6IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd0YXNrRGV0YWlsLnRhc2tDcmVhdGVkJyl9ICR7dmFsdWU/LmNyZWF0ZWR9YCxcbiAgICB9KTtcbiAgfVxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgYXNzaWdubWVudE9mVGFza0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3RNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucGFnZUhlYWRlclNlcnZpY2UuY29tcGFjdE1vZGUkO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFzayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2Nlc3NJbnN0YW5jZVRhc2sgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhbkFzc2lnblVzZXJUb1Rhc2skOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy50YXNrJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodGFzazogUHJvY2Vzc0luc3RhbmNlVGFzayB8IG51bGwpID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9BU1NJR05fVEFTS19QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLnRhc2ssXG4gICAgICAgIGlkZW50aWZpZXI6IHRhc2s/LmlkID8/ICcnLFxuICAgICAgfSlcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBpbnRlcm1lZGlhdGVTYXZlVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnRlcm1lZGlhdGVTdWJtaXNzaW9uIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBwYWdlVmFsdWUgPSBzaWduYWw8e3RpdGxlOiBzdHJpbmc7IHN1YnRpdGxlOiBzdHJpbmd9Pih7XG4gICAgdGl0bGU6ICcnLFxuICAgIHN1YnRpdGxlOiAnJyxcbiAgfSk7XG4gIHB1YmxpYyBlbmFibGVJbnRlcm1lZGlhdGVTYXZlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZUhlYWRlclNlcnZpY2U6IFBhZ2VIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmVuYWJsZUludGVybWVkaWF0ZVNhdmUgPSAhIXRoaXMuY29uZmlnU2VydmljZS5mZWF0dXJlVG9nZ2xlcz8uZW5hYmxlSW50ZXJtZWRpYXRlU2F2ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoKTtcbiAgICB0aGlzLm9uQWN0aXZlQ2hhbmdlRXZlbnQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uQ3VycmVudEludGVybWVkaWF0ZVNhdmVFdmVudCh2YWx1ZTogSW50ZXJtZWRpYXRlU3VibWlzc2lvbiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmludGVybWVkaWF0ZVNhdmVWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5vbkFjdGl2ZUNoYW5nZUV2ZW50KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFjdGl2ZUNoYW5nZUV2ZW50KGFjdGl2ZUNoYW5nZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlQ2hhbmdlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZvcm1TdWJtaXRFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdCgpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJ7XG4gICAgY2FuQXNzaWduVXNlclRvVGFzazogY2FuQXNzaWduVXNlclRvVGFzayQgfCBhc3luYyxcbiAgICBpbnRlcm1lZGlhdGVTYXZlVmFsdWU6IGludGVybWVkaWF0ZVNhdmVWYWx1ZSQgfCBhc3luYyxcbiAgICB0YXNrOiB0YXNrJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbFwiXG4+XG4gIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbF9faGVhZGVyXCI+XG4gICAgPHZhbHRpbW8tdGFzay1kZXRhaWwtaW50ZXJtZWRpYXRlLXNhdmVcbiAgICAgICpuZ0lmPVwiZW5hYmxlSW50ZXJtZWRpYXRlU2F2ZVwiXG4gICAgICBbdGFza109XCJvYnMudGFza1wiXG4gICAgICAoY3VycmVudEludGVybWVkaWF0ZVNhdmVFdmVudCk9XCJvbkN1cnJlbnRJbnRlcm1lZGlhdGVTYXZlRXZlbnQoJGV2ZW50KVwiXG4gICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1pbnRlcm1lZGlhdGUtc2F2ZT5cblxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiBbaWNvbk9ubHldPVwidHJ1ZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJjbG9zZVwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L3NlY3Rpb24+XG5cbiAgPHNlY3Rpb25cbiAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWxfX2JvZHlcIlxuICAgIFtjbGFzcy52YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsX19ib2R5LS1jb21wYWN0XT1cImNvbXBhY3RNb2RlJCB8IGFzeW5jXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cbiAgICAgIDxwIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbF9fdGl0bGVcIj57eyBwYWdlVmFsdWUoKT8udGl0bGUgfX08L3A+XG5cbiAgICAgIDxwIGNsYXNzPVwiY2RzLS1tb2RhbC1oZWFkZXJfX2xhYmVsIGNkcy0tdHlwZS1kZWx0YVwiPnt7IHBhZ2VWYWx1ZSgpPy5zdWJ0aXRsZSB9fTwvcD5cblxuICAgICAgPHAgKm5nSWY9XCJvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlXCIgY2xhc3M9XCJjZHMtLW1vZGFsLWhlYWRlcl9fbGFiZWxcIj5cbiAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmludGVybWVkaWF0ZVNhdmUubGFzdFNhdmVkQnknIHwgdHJhbnNsYXRlIH19OlxuXG4gICAgICAgIHt7XG4gICAgICAgICAgb2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZS5lZGl0ZWRCeVxuICAgICAgICAgICAgPyBvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlLmVkaXRlZEJ5XG4gICAgICAgICAgICA6IG9icy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUuY3JlYXRlZEJ5XG4gICAgICAgIH19XG5cbiAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmludGVybWVkaWF0ZVNhdmUub24nIHwgdHJhbnNsYXRlIH19OlxuXG4gICAgICAgIHt7XG4gICAgICAgICAgb2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZS5lZGl0ZWRPblxuICAgICAgICAgICAgPyBvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlLmVkaXRlZE9uXG4gICAgICAgICAgICA6IG9icy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUuY3JlYXRlZE9uXG4gICAgICAgIH19XG4gICAgICA8L3A+XG5cbiAgICAgIDx2YWx0aW1vLWFzc2lnbi11c2VyLXRvLXRhc2tcbiAgICAgICAgKm5nSWY9XCJvYnMudGFzayAmJiBvYnMuY2FuQXNzaWduVXNlclRvVGFza1wiXG4gICAgICAgIFt0YXNrSWRdPVwib2JzLnRhc2suaWRcIlxuICAgICAgICBbYXNzaWduZWVJZF09XCJvYnMudGFzay5hc3NpZ25lZVwiXG4gICAgICA+PC92YWx0aW1vLWFzc2lnbi11c2VyLXRvLXRhc2s+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby10YXNrLWRldGFpbC1jb250ZW50XG4gICAgICBbdGFza109XCJ0YXNrJCB8IGFzeW5jXCJcbiAgICAgIChhY3RpdmVDaGFuZ2UpPVwib25BY3RpdmVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgIChmb3JtU3VibWl0KT1cIm9uRm9ybVN1Ym1pdEV2ZW50KClcIlxuICAgID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtY29udGVudD5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|
package/esm2022/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.mjs
CHANGED
|
@@ -13,33 +13,42 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Component, ViewChild } from '@angular/core';
|
|
16
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
17
17
|
import { CommonModule } from '@angular/common';
|
|
18
18
|
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
|
|
19
19
|
import { TranslateModule } from '@ngx-translate/core';
|
|
20
20
|
import { CarbonListModule, WidgetModule } from '@valtimo/components';
|
|
21
21
|
import { BehaviorSubject, combineLatest, filter, map, of, repeat, switchMap, tap, } from 'rxjs';
|
|
22
22
|
import { LayerModule, LoadingModule, TagModule, TilesModule } from 'carbon-components-angular';
|
|
23
|
-
import moment from 'moment/moment';
|
|
24
23
|
import { CAN_VIEW_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, TaskModule, } from '@valtimo/task';
|
|
24
|
+
import moment from 'moment';
|
|
25
25
|
import * as i0 from "@angular/core";
|
|
26
26
|
import * as i1 from "@valtimo/document";
|
|
27
27
|
import * as i2 from "@valtimo/process";
|
|
28
28
|
import * as i3 from "@angular/router";
|
|
29
29
|
import * as i4 from "@valtimo/access-control";
|
|
30
|
-
import * as i5 from "@
|
|
31
|
-
import * as i6 from "
|
|
32
|
-
import * as i7 from "
|
|
33
|
-
import * as i8 from "@
|
|
34
|
-
import * as i9 from "
|
|
30
|
+
import * as i5 from "@valtimo/security";
|
|
31
|
+
import * as i6 from "../../services";
|
|
32
|
+
import * as i7 from "@angular/common";
|
|
33
|
+
import * as i8 from "@ngx-translate/core";
|
|
34
|
+
import * as i9 from "carbon-components-angular";
|
|
35
|
+
import * as i10 from "@valtimo/task";
|
|
36
|
+
import * as i11 from "@valtimo/components";
|
|
35
37
|
moment.locale(localStorage.getItem('langKey') || '');
|
|
36
38
|
moment.defaultFormat = 'DD MMM YYYY HH:mm';
|
|
37
39
|
export class DossierDetailTaskListComponent {
|
|
38
|
-
|
|
40
|
+
set openInTaskModal(value) {
|
|
41
|
+
if (value)
|
|
42
|
+
this._taskDetailModal.openTaskDetails(value);
|
|
43
|
+
}
|
|
44
|
+
constructor(documentService, processService, route, permissionService, userProviderService, dossierDetailLayoutService) {
|
|
39
45
|
this.documentService = documentService;
|
|
40
46
|
this.processService = processService;
|
|
41
47
|
this.route = route;
|
|
42
48
|
this.permissionService = permissionService;
|
|
49
|
+
this.userProviderService = userProviderService;
|
|
50
|
+
this.dossierDetailLayoutService = dossierDetailLayoutService;
|
|
51
|
+
this.taskClickEvent = new EventEmitter();
|
|
43
52
|
this.loadingTasks$ = new BehaviorSubject(true);
|
|
44
53
|
this._refresh$ = new BehaviorSubject(null);
|
|
45
54
|
this._documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId));
|
|
@@ -59,12 +68,13 @@ export class DossierDetailTaskListComponent {
|
|
|
59
68
|
const mappedTasks = this.mapTasks(tasks, permissions);
|
|
60
69
|
const uniqueTasks = this.getUniqueTasks(mappedTasks);
|
|
61
70
|
return this.getSortedTasks(uniqueTasks);
|
|
62
|
-
}), tap(() => this.loadingTasks$.next(false)));
|
|
71
|
+
}), switchMap((tasks) => combineLatest([of(tasks), this.userProviderService.getUserSubject()])), map(([tasks, userIdentity]) => this.sortTasksToUser(tasks, userIdentity)), tap(() => this.loadingTasks$.next(false)));
|
|
72
|
+
this.formSize$ = this.dossierDetailLayoutService.formDisplaySize$;
|
|
63
73
|
}
|
|
64
74
|
rowTaskClick(task) {
|
|
65
75
|
if (task.isLocked)
|
|
66
76
|
return;
|
|
67
|
-
this.
|
|
77
|
+
this.taskClickEvent.emit(task);
|
|
68
78
|
}
|
|
69
79
|
refresh() {
|
|
70
80
|
this._refresh$.next(null);
|
|
@@ -107,8 +117,13 @@ export class DossierDetailTaskListComponent {
|
|
|
107
117
|
return t1.name.localeCompare(t2.name);
|
|
108
118
|
});
|
|
109
119
|
}
|
|
110
|
-
|
|
111
|
-
|
|
120
|
+
sortTasksToUser(tasks, user) {
|
|
121
|
+
return tasks.reduce((acc, curr) => curr.assignee === user.username || curr.assignee === user.id
|
|
122
|
+
? { ...acc, myTasks: [...acc.myTasks, curr] }
|
|
123
|
+
: { ...acc, otherTasks: [...acc.otherTasks, curr] }, { myTasks: [], otherTasks: [] });
|
|
124
|
+
}
|
|
125
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailTaskListComponent, deps: [{ token: i1.DocumentService }, { token: i2.ProcessService }, { token: i3.ActivatedRoute }, { token: i4.PermissionService }, { token: i5.UserProviderService }, { token: i6.DossierDetailLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierDetailTaskListComponent, isStandalone: true, selector: "valtimo-dossier-detail-task-list", inputs: { openInTaskModal: "openInTaskModal" }, outputs: { taskClickEvent: "taskClickEvent" }, viewQueries: [{ propertyName: "_taskDetailModal", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h2 class=\"task-list__title\">{{ 'summary.myTasks' | translate }}</h2>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (task of obs.tasks?.myTasks; track task.id) {\n <ng-container *ngTemplateOutlet=\"taskTemplate; context: {task: task}\"></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (task of obs.tasks?.otherTasks; track task.id) {\n <ng-container *ngTemplateOutlet=\"taskTemplate; context: {task: task}\"></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"refresh()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-task=\"task\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(task)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ task.name }}</span>\n\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"task.locked ? 'cool-gray' : 'green'\">\n @if (!task.locked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ task.created }}\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column}.task-list>*:first-child{margin-bottom:16px}.task-list__title,.task-list__subtitle{font-size:24px;font-style:normal;font-weight:600;line-height:24px;margin-bottom:16px}.task-list__subtitle{font-size:18px}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{white-space:pre}.task__title{width:100%}.task__title,.task__description{font-size:14px;font-style:normal;font-weight:600;line-height:20px;letter-spacing:.16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__description{font-weight:400}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: WidgetModule }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i9.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: TaskModule }, { kind: "component", type: i10.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", inputs: ["modalSize"], outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: i9.ClickableTile, selector: "cds-clickable-tile, ibm-clickable-tile", inputs: ["theme", "href", "target", "disabled", "route", "routeExtras"], outputs: ["navigation"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i9.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i9.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i11.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }] }); }
|
|
112
127
|
}
|
|
113
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailTaskListComponent, decorators: [{
|
|
114
129
|
type: Component,
|
|
@@ -123,9 +138,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
123
138
|
LayerModule,
|
|
124
139
|
TagModule,
|
|
125
140
|
CarbonListModule,
|
|
126
|
-
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n <h2 class=\"task-list__title\">{{ 'summary.
|
|
127
|
-
}], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.ProcessService }, { type: i3.ActivatedRoute }, { type: i4.PermissionService }], propDecorators: { _taskDetailModal: [{
|
|
141
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h2 class=\"task-list__title\">{{ 'summary.myTasks' | translate }}</h2>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (task of obs.tasks?.myTasks; track task.id) {\n <ng-container *ngTemplateOutlet=\"taskTemplate; context: {task: task}\"></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (task of obs.tasks?.otherTasks; track task.id) {\n <ng-container *ngTemplateOutlet=\"taskTemplate; context: {task: task}\"></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"refresh()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-task=\"task\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(task)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ task.name }}</span>\n\n <cds-tag class=\"cds-tag--no-margin\" [type]=\"task.locked ? 'cool-gray' : 'green'\">\n @if (!task.locked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ task.created }}\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column}.task-list>*:first-child{margin-bottom:16px}.task-list__title,.task-list__subtitle{font-size:24px;font-style:normal;font-weight:600;line-height:24px;margin-bottom:16px}.task-list__subtitle{font-size:18px}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{white-space:pre}.task__title{width:100%}.task__title,.task__description{font-size:14px;font-style:normal;font-weight:600;line-height:20px;letter-spacing:.16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__description{font-weight:400}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
142
|
+
}], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.ProcessService }, { type: i3.ActivatedRoute }, { type: i4.PermissionService }, { type: i5.UserProviderService }, { type: i6.DossierDetailLayoutService }], propDecorators: { _taskDetailModal: [{
|
|
128
143
|
type: ViewChild,
|
|
129
144
|
args: ['taskDetail']
|
|
145
|
+
}], openInTaskModal: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], taskClickEvent: [{
|
|
148
|
+
type: Output
|
|
130
149
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwtdGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwtdGFzay1saXN0L2Rvc3NpZXItZGV0YWlsLXRhc2stbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsLXRhc2stbGlzdC9kb3NzaWVyLWRldGFpbC10YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUVILEVBQUUsRUFDRixNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RixPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxFQUNMLHdCQUF3QixFQUV4QiwrQkFBK0IsRUFFL0IsVUFBVSxHQUNYLE1B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QThCLDRNQ25FM0MsNGpGQStFQSxnNENEeEJJLFlBQVksOFZBQ1osZ0JBQWdCLDhCQUNoQixlQUFlLDJGQUNmLFlBQVksOEJBQ1osYUFBYSwrSkFDYixVQUFVLG1MQUNWLFdBQVcsbU9BQ1gsV0FBVyx5S0FDWCxTQUFTLG9JQUNULGdCQUFnQjs7NEZBR1AsOEJBQThCO2tCQWxCMUMsU0FBUzsrQkFDRSxrQ0FBa0MsY0FHaEMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxTQUFTO3dCQUNULGdCQUFnQjtxQkFDakI7OEtBR3lDLGdCQUFnQjtzQkFBekQsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdiVG9vbHRpcE1vZHVsZX0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDYXJib25MaXN0TW9kdWxlLCBXaWRnZXRNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHJlcGVhdCxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMYXllck1vZHVsZSwgTG9hZGluZ01vZHVsZSwgVGFnTW9kdWxlLCBUaWxlc01vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1Byb2Nlc3NJbnN0YW5jZVRhc2ssIFByb2Nlc3NTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQge1xuICBDQU5fVklFV19UQVNLX1BFUk1JU1NJT04sXG4gIFRhc2ssXG4gIFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG4gIFRhc2tEZXRhaWxNb2RhbENvbXBvbmVudCxcbiAgVGFza01vZHVsZSxcbn0gZnJvbSAnQHZhbHRpbW8vdGFzayc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcbm1vbWVudC5kZWZhdWx0Rm9ybWF0ID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1kZXRhaWwtdGFzay1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1kZXRhaWwtdGFzay1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmdiVG9vbHRpcE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgV2lkZ2V0TW9kdWxlLFxuICAgIExvYWRpbmdNb2R1bGUsXG4gICAgVGFza01vZHVsZSxcbiAgICBUaWxlc01vZHVsZSxcbiAgICBMYXllck1vZHVsZSxcbiAgICBUYWdNb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFRhc2tMaXN0Q29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgndGFza0RldGFpbCcpIHByaXZhdGUgcmVhZG9ubHkgX3Rhc2tEZXRhaWxNb2RhbDogVGFza0RldGFpbE1vZGFsQ29tcG9uZW50O1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnRJZCQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NJbnN0YW5jZVRhc2tzJDogT2JzZXJ2YWJsZTxQcm9jZXNzSW5zdGFuY2VUYXNrW10+ID0gdGhpcy5fcmVmcmVzaCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fZG9jdW1lbnRJZCQpLFxuICAgIHN3aXRjaE1hcChkb2N1bWVudElkID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZVxuICAgICAgICAuZmluZFByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyhkb2N1bWVudElkKVxuICAgICAgICAucGlwZShyZXBlYXQoe2NvdW50OiA1LCBkZWxheTogMTUwMH0pKVxuICAgICksXG4gICAgc3dpdGNoTWFwKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIC4uLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlcy5tYXAocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2UgPT5cbiAgICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NJbnN0YW5jZVRhc2tzKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlLmlkLnByb2Nlc3NJbnN0YW5jZUlkKVxuICAgICAgICApLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcChyZXMgPT4gcmVzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBbLi4uYWNjLCAuLi5jdXJyXSwgW10pKSxcbiAgICBzd2l0Y2hNYXAodGFza3MgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICBvZih0YXNrcyksXG4gICAgICAgIC4uLih0YXNrcyB8fCBbXSkubWFwKHRhc2sgPT5cbiAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgcmVzb3VyY2U6IFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UudGFzayxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHRhc2suaWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAocmVzID0+IHtcbiAgICAgIGNvbnN0IHRhc2tzID0gcmVzWzBdIHx8IFtdO1xuICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSByZXM/LmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSAwKSBhcyBib29sZWFuW107XG4gICAgICBjb25zdCBtYXBwZWRUYXNrcyA9IHRoaXMubWFwVGFza3ModGFza3MsIHBlcm1pc3Npb25zKTtcbiAgICAgIGNvbnN0IHVuaXF1ZVRhc2tzID0gdGhpcy5nZXRVbmlxdWVUYXNrcyhtYXBwZWRUYXNrcyk7XG5cbiAgICAgIHJldHVybiB0aGlzLmdldFNvcnRlZFRhc2tzKHVuaXF1ZVRhc2tzKTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nVGFza3MkLm5leHQoZmFsc2UpKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyByb3dUYXNrQ2xpY2sodGFzazogUHJvY2Vzc0luc3RhbmNlVGFzayk6IHZvaWQge1xuICAgIGlmICh0YXNrLmlzTG9ja2VkKSByZXR1cm47XG5cbiAgICB0aGlzLl90YXNrRGV0YWlsTW9kYWwub3BlblRhc2tEZXRhaWxzKHRhc2sgYXMgdW5rbm93biBhcyBUYXNrKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZnJlc2gkLm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFRhc2tzKHRhc2tzOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10sIHBlcm1pc3Npb25zOiBib29sZWFuW10pOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10ge1xuICAgIHJldHVybiB0YXNrcy5tYXAoKHRhc2ssIGluZGV4KSA9PiAoe1xuICAgICAgLi4udGFzayxcbiAgICAgIGNyZWF0ZWRVbml4OiBtb21lbnQodGFzay5jcmVhdGVkKS51bml4KCksXG4gICAgICBjcmVhdGVkOiBtb21lbnQodGFzay5jcmVhdGVkKS5mb3JtYXQoJ0REIE1NTSBZWVlZIEhIOm1tJyksXG4gICAgICAuLi4odGFzay5kdWUgJiYge2R1ZVVuaXg6IG1vbWVudCh0YXNrLmR1ZSkudW5peCgpfSksXG4gICAgICBpc0xvY2tlZDogIXBlcm1pc3Npb25zW2luZGV4XSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVuaXF1ZVRhc2tzKHRhc2tzOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10pOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10ge1xuICAgIHJldHVybiB0YXNrcy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgaWYgKCFhY2MuZmluZCh0YXNrID0+IHRhc2suaWQgPT09IGN1cnIuaWQpKSB7XG4gICAgICAgIHJldHVybiBbLi4uYWNjLCBjdXJyXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTb3J0ZWRUYXNrcyh0YXNrczogUHJvY2Vzc0luc3RhbmNlVGFza1tdKTogUHJvY2Vzc0luc3RhbmNlVGFza1tdIHtcbiAgICByZXR1cm4gdGFza3Muc29ydCgodDEsIHQyKSA9PiB7XG4gICAgICAvLyBoaWdoIHByaW9yaXR5IHRhc2tzIG9uIHRvcFxuICAgICAgaWYgKHQyLnByaW9yaXR5ICE9PSB0MS5wcmlvcml0eSkge1xuICAgICAgICByZXR1cm4gdDIucHJpb3JpdHkgLSB0MS5wcmlvcml0eTtcbiAgICAgIH1cblxuICAgICAgLy8gdGFzayB3aXRoIGFwcHJvYWNoaW5nIGR1ZSBkYXRlIG9uIHRvcFxuICAgICAgY29uc3QgZHVlMSA9IHQxPy5kdWVVbml4IHx8IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICBjb25zdCBkdWUyID0gdDI/LmR1ZVVuaXggfHwgTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIGlmIChkdWUxICE9PSBkdWUyKSB7XG4gICAgICAgIHJldHVybiBkdWUxIC0gZHVlMjtcbiAgICAgIH1cblxuICAgICAgLy8gbmV3IHRhc2sgb24gdG9wXG4gICAgICBjb25zdCBjcmVhdGVkQ29tcGFyZSA9IHQyLmNyZWF0ZWRVbml4IC8gNTAwMCAtIHQxLmNyZWF0ZWRVbml4IC8gNTAwMDtcbiAgICAgIGlmIChjcmVhdGVkQ29tcGFyZSAhPT0gMCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlZENvbXBhcmU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRhc2sgd2l0aCBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGFnZSwgYXJlIHNvcnRlZCBieSBuYW1lXG4gICAgICByZXR1cm4gdDEubmFtZS5sb2NhbGVDb21wYXJlKHQyLm5hbWUpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXZcbiAgY2xhc3M9XCJ0YXNrLWxpc3RcIlxuICAqbmdJZj1cIntsb2FkaW5nVGFza3M6IGxvYWRpbmdUYXNrcyQgfCBhc3luYywgdGFza3M6IHByb2Nlc3NJbnN0YW5jZVRhc2tzJCB8IGFzeW5jfSBhcyBvYnNcIlxuPlxuICA8aDIgY2xhc3M9XCJ0YXNrLWxpc3RfX3RpdGxlXCI+e3sgJ3N1bW1hcnkudXNlclRhc2tzJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwidGFzay1saXN0X190YXNrcy1jb250YWluZXJcIlxuICAgIGNkc0xheWVyPVwiMVwiXG4gICAgKm5nSWY9XCIhb2JzLmxvYWRpbmdUYXNrcyAmJiBvYnMudGFza3M7IGVsc2UgbG9hZGluZ1Rhc2tzVGVtcGxhdGVcIlxuICA+XG4gICAgQGlmIChvYnMudGFza3MubGVuZ3RoID09PSAwKSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9UYXNrc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZm9yICh0YXNrIG9mIG9icy50YXNrczsgdHJhY2sgdGFzay5pZCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFza1RlbXBsYXRlOyBjb250ZXh0OiB7dGFzazogdGFza31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDx2YWx0aW1vLXRhc2stZGV0YWlsLW1vZGFsXG4gICAgI3Rhc2tEZXRhaWxcbiAgICAoZm9ybVN1Ym1pdCk9XCJyZWZyZXNoKClcIlxuICAgIChhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCk9XCJyZWZyZXNoKClcIlxuICA+PC92YWx0aW1vLXRhc2stZGV0YWlsLW1vZGFsPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFza1RlbXBsYXRlIGxldC10YXNrPVwidGFza1wiPlxuICA8Y2RzLWNsaWNrYWJsZS10aWxlIChjbGljayk9XCJyb3dUYXNrQ2xpY2sodGFzaylcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFza1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhc2tfX2hlYWRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRhc2tfX3RpdGxlXCI+e3sgdGFzay5uYW1lIH19PC9zcGFuPlxuXG4gICAgICAgIDxjZHMtdGFnIGNsYXNzPVwiY2RzLXRhZy0tbm8tbWFyZ2luXCIgW3R5cGVdPVwidGFzay5sb2NrZWQgPyAnY29vbC1ncmF5JyA6ICdncmVlbidcIj5cbiAgICAgICAgICBAaWYgKCF0YXNrLmxvY2tlZCkge1xuICAgICAgICAgICAge3sgJ3N1bW1hcnkudGFza09wZW4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1sb2NrXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9jZHMtdGFnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YXNrX19kZXNjcmlwdGlvblwiPlxuICAgICAgICB7eyAnc3VtbWFyeS50YXNrQ3JlYXRlZCcgfCB0cmFuc2xhdGUgfX0ge3sgdGFzay5jcmVhdGVkIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jZHMtY2xpY2thYmxlLXRpbGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vVGFza3NUZW1wbGF0ZT5cbiAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgIFthbHdheXNSZW5kZXJWZXJ0aWNhbGx5XT1cInRydWVcIlxuICAgIGlsbHVzdHJhdGlvbj1cInZhbHRpbW8tbGF5b3V0L2ltZy9lbXB0eXN0YXRlLXN1Y2Nlc3Muc3ZnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ3N1bW1hcnkudXNlclRhc2tzRG9uZVN0YXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3NtYWxsUGFkZGluZ109XCJ0cnVlXCJcbiAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVGFza3NUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGNkcy1sb2FkaW5nIHNpemU9XCJzbVwiPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwtdGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwtdGFzay1saXN0L2Rvc3NpZXItZGV0YWlsLXRhc2stbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsLXRhc2stbGlzdC9kb3NzaWVyLWRldGFpbC10YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUVILEVBQUUsRUFDRixNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RixPQUFPLEVBQ0wsd0JBQXdCLEVBRXhCLCtCQUErQixFQUUvQixVQUFVLEdBQ1gsTUFB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RUFBRSxFQUEyQixFQUFFLFVBQVUsRUFBRSxFQUEyQixFQUFDLENBQ2hGLENBQUM7SUFDSixDQUFDOytHQTFJVSw4QkFBOEI7bUdBQTlCLDhCQUE4QiwyU0N0RTNDLDh5R0E4RkEsbytDRHBDSSxZQUFZLDhWQUNaLGdCQUFnQiw4QkFDaEIsZUFBZSwyRkFDZixZQUFZLDhCQUNaLGFBQWEsK0pBQ2IsVUFBVSwyTUFDVixXQUFXLG1PQUNYLFdBQVcseUtBQ1gsU0FBUyxvSUFDVCxnQkFBZ0I7OzRGQUdQLDhCQUE4QjtrQkFsQjFDLFNBQVM7K0JBQ0Usa0NBQWtDLGNBR2hDLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxnQkFBZ0I7cUJBQ2pCO3lQQUd5QyxnQkFBZ0I7c0JBQXpELFNBQVM7dUJBQUMsWUFBWTtnQkFFSCxlQUFlO3NCQUFsQyxLQUFLO2dCQUlvQixjQUFjO3NCQUF2QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ2JUb29sdGlwTW9kdWxlfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NhcmJvbkxpc3RNb2R1bGUsIFdpZGdldE1vZHVsZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgcmVwZWF0LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xheWVyTW9kdWxlLCBMb2FkaW5nTW9kdWxlLCBUYWdNb2R1bGUsIFRpbGVzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTixcbiAgVGFzayxcbiAgVEFTS19ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbiAgVGFza0RldGFpbE1vZGFsQ29tcG9uZW50LFxuICBUYXNrTW9kdWxlLFxufSBmcm9tICdAdmFsdGltby90YXNrJztcbmltcG9ydCB7UHJvY2Vzc0luc3RhbmNlVGFzaywgUHJvY2Vzc1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuaW1wb3J0IHtVc2VySWRlbnRpdHl9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtEb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5tb21lbnQubG9jYWxlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nS2V5JykgfHwgJycpO1xubW9tZW50LmRlZmF1bHRGb3JtYXQgPSAnREQgTU1NIFlZWVkgSEg6bW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC10YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWRldGFpbC10YXNrLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBXaWRnZXRNb2R1bGUsXG4gICAgTG9hZGluZ01vZHVsZSxcbiAgICBUYXNrTW9kdWxlLFxuICAgIFRpbGVzTW9kdWxlLFxuICAgIExheWVyTW9kdWxlLFxuICAgIFRhZ01vZHVsZSxcbiAgICBDYXJib25MaXN0TW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFza0xpc3RDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCd0YXNrRGV0YWlsJykgcHJpdmF0ZSByZWFkb25seSBfdGFza0RldGFpbE1vZGFsOiBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQ7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCBvcGVuSW5UYXNrTW9kYWwodmFsdWU6IFRhc2spIHtcbiAgICBpZiAodmFsdWUpIHRoaXMuX3Rhc2tEZXRhaWxNb2RhbC5vcGVuVGFza0RldGFpbHModmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSB0YXNrQ2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvY2Vzc0luc3RhbmNlVGFzaz4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1Rhc2tzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50SWQkID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgZmlsdGVyKGRvY3VtZW50SWQgPT4gISFkb2N1bWVudElkKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzSW5zdGFuY2VUYXNrcyQ6IE9ic2VydmFibGU8e1xuICAgIG15VGFza3M6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXTtcbiAgICBvdGhlclRhc2tzOiBQcm9jZXNzSW5zdGFuY2VUYXNrW107XG4gIH0+ID0gdGhpcy5fcmVmcmVzaCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fZG9jdW1lbnRJZCQpLFxuICAgIHN3aXRjaE1hcChkb2N1bWVudElkID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZVxuICAgICAgICAuZmluZFByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyhkb2N1bWVudElkKVxuICAgICAgICAucGlwZShyZXBlYXQoe2NvdW50OiA1LCBkZWxheTogMTUwMH0pKVxuICAgICksXG4gICAgc3dpdGNoTWFwKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIC4uLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlcy5tYXAocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2UgPT5cbiAgICAgICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NJbnN0YW5jZVRhc2tzKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlLmlkLnByb2Nlc3NJbnN0YW5jZUlkKVxuICAgICAgICApLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcChyZXMgPT4gcmVzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBbLi4uYWNjLCAuLi5jdXJyXSwgW10pKSxcbiAgICBzd2l0Y2hNYXAodGFza3MgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICBvZih0YXNrcyksXG4gICAgICAgIC4uLih0YXNrcyB8fCBbXSkubWFwKHRhc2sgPT5cbiAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgcmVzb3VyY2U6IFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UudGFzayxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHRhc2suaWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAocmVzID0+IHtcbiAgICAgIGNvbnN0IHRhc2tzID0gcmVzWzBdIHx8IFtdO1xuICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSByZXM/LmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSAwKSBhcyBib29sZWFuW107XG4gICAgICBjb25zdCBtYXBwZWRUYXNrcyA9IHRoaXMubWFwVGFza3ModGFza3MsIHBlcm1pc3Npb25zKTtcbiAgICAgIGNvbnN0IHVuaXF1ZVRhc2tzID0gdGhpcy5nZXRVbmlxdWVUYXNrcyhtYXBwZWRUYXNrcyk7XG5cbiAgICAgIHJldHVybiB0aGlzLmdldFNvcnRlZFRhc2tzKHVuaXF1ZVRhc2tzKTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKHRhc2tzOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10pID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtvZih0YXNrcyksIHRoaXMudXNlclByb3ZpZGVyU2VydmljZS5nZXRVc2VyU3ViamVjdCgpXSlcbiAgICApLFxuICAgIG1hcCgoW3Rhc2tzLCB1c2VySWRlbnRpdHldKSA9PiB0aGlzLnNvcnRUYXNrc1RvVXNlcih0YXNrcywgdXNlcklkZW50aXR5KSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ1Rhc2tzJC5uZXh0KGZhbHNlKSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybVNpemUkID0gdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5mb3JtRGlzcGxheVNpemUkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llckRldGFpbExheW91dFNlcnZpY2U6IERvc3NpZXJEZXRhaWxMYXlvdXRTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgcm93VGFza0NsaWNrKHRhc2s6IFByb2Nlc3NJbnN0YW5jZVRhc2spOiB2b2lkIHtcbiAgICBpZiAodGFzay5pc0xvY2tlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrQ2xpY2tFdmVudC5lbWl0KHRhc2spO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaCQubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVGFza3ModGFza3M6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXSwgcGVybWlzc2lvbnM6IGJvb2xlYW5bXSk6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXSB7XG4gICAgcmV0dXJuIHRhc2tzLm1hcCgodGFzaywgaW5kZXgpID0+ICh7XG4gICAgICAuLi50YXNrLFxuICAgICAgY3JlYXRlZFVuaXg6IG1vbWVudCh0YXNrLmNyZWF0ZWQpLnVuaXgoKSxcbiAgICAgIGNyZWF0ZWQ6IG1vbWVudCh0YXNrLmNyZWF0ZWQpLmZvcm1hdCgnREQgTU1NIFlZWVkgSEg6bW0nKSxcbiAgICAgIC4uLih0YXNrLmR1ZSAmJiB7ZHVlVW5peDogbW9tZW50KHRhc2suZHVlKS51bml4KCl9KSxcbiAgICAgIGlzTG9ja2VkOiAhcGVybWlzc2lvbnNbaW5kZXhdLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VW5pcXVlVGFza3ModGFza3M6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXSk6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXSB7XG4gICAgcmV0dXJuIHRhc2tzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICBpZiAoIWFjYy5maW5kKHRhc2sgPT4gdGFzay5pZCA9PT0gY3Vyci5pZCkpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5hY2MsIGN1cnJdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBQcm9jZXNzSW5zdGFuY2VUYXNrW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTb3J0ZWRUYXNrcyh0YXNrczogUHJvY2Vzc0luc3RhbmNlVGFza1tdKTogUHJvY2Vzc0luc3RhbmNlVGFza1tdIHtcbiAgICByZXR1cm4gdGFza3Muc29ydCgodDEsIHQyKSA9PiB7XG4gICAgICAvLyBoaWdoIHByaW9yaXR5IHRhc2tzIG9uIHRvcFxuICAgICAgaWYgKHQyLnByaW9yaXR5ICE9PSB0MS5wcmlvcml0eSkge1xuICAgICAgICByZXR1cm4gdDIucHJpb3JpdHkgLSB0MS5wcmlvcml0eTtcbiAgICAgIH1cblxuICAgICAgLy8gdGFzayB3aXRoIGFwcHJvYWNoaW5nIGR1ZSBkYXRlIG9uIHRvcFxuICAgICAgY29uc3QgZHVlMSA9IHQxPy5kdWVVbml4IHx8IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICBjb25zdCBkdWUyID0gdDI/LmR1ZVVuaXggfHwgTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIGlmIChkdWUxICE9PSBkdWUyKSB7XG4gICAgICAgIHJldHVybiBkdWUxIC0gZHVlMjtcbiAgICAgIH1cblxuICAgICAgLy8gbmV3IHRhc2sgb24gdG9wXG4gICAgICBjb25zdCBjcmVhdGVkQ29tcGFyZSA9IHQyLmNyZWF0ZWRVbml4IC8gNTAwMCAtIHQxLmNyZWF0ZWRVbml4IC8gNTAwMDtcbiAgICAgIGlmIChjcmVhdGVkQ29tcGFyZSAhPT0gMCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlZENvbXBhcmU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRhc2sgd2l0aCBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGFnZSwgYXJlIHNvcnRlZCBieSBuYW1lXG4gICAgICByZXR1cm4gdDEubmFtZS5sb2NhbGVDb21wYXJlKHQyLm5hbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VGFza3NUb1VzZXIoXG4gICAgdGFza3M6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXSxcbiAgICB1c2VyOiBVc2VySWRlbnRpdHlcbiAgKToge215VGFza3M6IFByb2Nlc3NJbnN0YW5jZVRhc2tbXTsgb3RoZXJUYXNrczogUHJvY2Vzc0luc3RhbmNlVGFza1tdfSB7XG4gICAgcmV0dXJuIHRhc2tzLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnIpID0+XG4gICAgICAgIGN1cnIuYXNzaWduZWUgPT09IHVzZXIudXNlcm5hbWUgfHwgY3Vyci5hc3NpZ25lZSA9PT0gdXNlci5pZFxuICAgICAgICAgID8gey4uLmFjYywgbXlUYXNrczogWy4uLmFjYy5teVRhc2tzLCBjdXJyXX1cbiAgICAgICAgICA6IHsuLi5hY2MsIG90aGVyVGFza3M6IFsuLi5hY2Mub3RoZXJUYXNrcywgY3Vycl19LFxuICAgICAge215VGFza3M6IFtdIGFzIFByb2Nlc3NJbnN0YW5jZVRhc2tbXSwgb3RoZXJUYXNrczogW10gYXMgUHJvY2Vzc0luc3RhbmNlVGFza1tdfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICBjbGFzcz1cInRhc2stbGlzdFwiXG4gICpuZ0lmPVwie2xvYWRpbmdUYXNrczogbG9hZGluZ1Rhc2tzJCB8IGFzeW5jLCB0YXNrczogcHJvY2Vzc0luc3RhbmNlVGFza3MkIHwgYXN5bmN9IGFzIG9ic1wiXG4+XG4gIEBpZiAob2JzLmxvYWRpbmdUYXNrcyAmJiAhb2JzLnRhc2tzKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdUYXNrc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIH0gQGVsc2UgaWYgKG9icy50YXNrcz8ubXlUYXNrcz8ubGVuZ3RoID09PSAwICYmIG9icy50YXNrcz8ub3RoZXJUYXNrcz8ubGVuZ3RoID09PSAwKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vVGFza3NUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICB9IEBlbHNlIHtcbiAgICA8ZGl2IGNsYXNzPVwidGFzay1saXN0X190YXNrcy1jb250YWluZXJcIiBjZHNMYXllcj1cIjFcIj5cbiAgICAgIDxoMiBjbGFzcz1cInRhc2stbGlzdF9fdGl0bGVcIj57eyAnc3VtbWFyeS5teVRhc2tzJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG5cbiAgICAgIEBpZiAob2JzLnRhc2tzPy5teVRhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB7eyAnc3VtbWFyeS5ub1Jlc3VsdHNNeVRhc2tzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBmb3IgKHRhc2sgb2Ygb2JzLnRhc2tzPy5teVRhc2tzOyB0cmFjayB0YXNrLmlkKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhc2tUZW1wbGF0ZTsgY29udGV4dDoge3Rhc2s6IHRhc2t9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0YXNrLWxpc3RfX3Rhc2tzLWNvbnRhaW5lclwiIGNkc0xheWVyPVwiMVwiPlxuICAgICAgPGgzIGNsYXNzPVwidGFzay1saXN0X19zdWJ0aXRsZVwiPnt7ICdzdW1tYXJ5Lm90aGVyVGFza3MnIHwgdHJhbnNsYXRlIH19PC9oMz5cblxuICAgICAgQGlmIChvYnMudGFza3M/Lm90aGVyVGFza3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHt7ICdzdW1tYXJ5Lm5vUmVzdWx0c090aGVyVGFza3MnIHwgdHJhbnNsYXRlIH19XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGZvciAodGFzayBvZiBvYnMudGFza3M/Lm90aGVyVGFza3M7IHRyYWNrIHRhc2suaWQpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFza1RlbXBsYXRlOyBjb250ZXh0OiB7dGFzazogdGFza31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPHZhbHRpbW8tdGFzay1kZXRhaWwtbW9kYWxcbiAgICAjdGFza0RldGFpbFxuICAgIFttb2RhbFNpemVdPVwiZm9ybVNpemUkIHwgYXN5bmNcIlxuICAgIChmb3JtU3VibWl0KT1cInJlZnJlc2goKVwiXG4gICAgKGFzc2lnbm1lbnRPZlRhc2tDaGFuZ2VkKT1cInJlZnJlc2goKVwiXG4gID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtbW9kYWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0YXNrVGVtcGxhdGUgbGV0LXRhc2s9XCJ0YXNrXCI+XG4gIDxjZHMtY2xpY2thYmxlLXRpbGUgW2hyZWZdPVwibnVsbFwiIChjbGljayk9XCJyb3dUYXNrQ2xpY2sodGFzaylcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFza1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhc2tfX2hlYWRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRhc2tfX3RpdGxlXCI+e3sgdGFzay5uYW1lIH19PC9zcGFuPlxuXG4gICAgICAgIDxjZHMtdGFnIGNsYXNzPVwiY2RzLXRhZy0tbm8tbWFyZ2luXCIgW3R5cGVdPVwidGFzay5sb2NrZWQgPyAnY29vbC1ncmF5JyA6ICdncmVlbidcIj5cbiAgICAgICAgICBAaWYgKCF0YXNrLmxvY2tlZCkge1xuICAgICAgICAgICAge3sgJ3N1bW1hcnkudGFza09wZW4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1sb2NrXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9jZHMtdGFnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YXNrX19kZXNjcmlwdGlvblwiPlxuICAgICAgICB7eyAnc3VtbWFyeS50YXNrQ3JlYXRlZCcgfCB0cmFuc2xhdGUgfX0ge3sgdGFzay5jcmVhdGVkIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jZHMtY2xpY2thYmxlLXRpbGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vVGFza3NUZW1wbGF0ZT5cbiAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgIFthbHdheXNSZW5kZXJWZXJ0aWNhbGx5XT1cInRydWVcIlxuICAgIGlsbHVzdHJhdGlvbj1cInZhbHRpbW8tbGF5b3V0L2ltZy9lbXB0eXN0YXRlLXN1Y2Nlc3Muc3ZnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ3N1bW1hcnkudXNlclRhc2tzRG9uZVN0YXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3NtYWxsUGFkZGluZ109XCJ0cnVlXCJcbiAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVGFza3NUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGNkcy1sb2FkaW5nIHNpemU9XCJzbVwiPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|