@valtimo/dossier 12.1.2 → 12.2.0
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-bulk-assign-modal/dossier-bulk-assign-modal.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/progress/progress.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/table/widget-table.component.mjs +4 -1
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +9 -5
- package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +18 -7
- package/esm2022/lib/components/note-modal/note-modal.component.mjs +1 -1
- package/esm2022/lib/services/dossier-tab-api.service.mjs +2 -7
- package/esm2022/lib/services/dossier-tab.service.mjs +2 -3
- package/fesm2022/valtimo-dossier.mjs +36 -23
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts +1 -1
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/components/dossier-list/dossier-list.component.d.ts +3 -1
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts +4 -3
- package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -1
- package/lib/services/dossier-tab-api.service.d.ts.map +1 -1
- package/lib/services/dossier-tab.service.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -95,7 +95,7 @@ export class NoteModalComponent {
|
|
|
95
95
|
this.valid$.next(!!data.content);
|
|
96
96
|
}
|
|
97
97
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoteModalComponent, deps: [{ token: i1.NotesService }, { token: i2.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NoteModalComponent, selector: "valtimo-note-modal", inputs: { customData: "customData" }, outputs: { createNoteEvent: "createNoteEvent", editNoteEvent: "editNoteEvent" }, viewQueries: [{ propertyName: "noteModal", first: true, predicate: ["noteModal"], 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<v-modal\n #noteModal\n *ngIf=\"{disabled: disabled$ | async, valid: valid$ | async, modalType: modalType$ | async} as obs\"\n>\n <div role=\"header\">\n <div class=\"add-note-title\">\n <v-title [margin]=\"false\">{{\n (obs.modalType === 'add' ? 'dossier.notes.addNote' : 'dossier.notes.modifyNote') | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'document.cancel' | translate }}\n </v-button>\n <ng-container\n *ngTemplateOutlet=\"\n obs.modalType === 'add' ? addNoteButton : editNoteButton;\n context: {obs: obs}\n \"\n ></ng-container>\n </div>\n </div>\n</v-modal>\n\n<ng-template #addNoteButton let-obs=\"obs\">\n <v-button\n (clickEvent)=\"emitNoteData()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{ 'dossier.notes.addNote' | translate }}\n </v-button>\n</ng-template>\n<ng-template #editNoteButton let-obs=\"obs\">\n <v-button\n [disabled]=\"obs.disabled || !obs.valid\"\n (clickEvent)=\"emitNoteData()\"\n mdiIcon=\"pencil\"\n type=\"success\"\n >\n {{ 'dossier.notes.modifyNote' | translate }}\n </v-button>\n</ng-template>\n\n<ng-template #form>\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n type=\"textarea\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'dossier.notes.input.content' | translate\"\n name=\"content\"\n [fullWidth]=\"true\"\n [rows]=\"10\"\n [defaultValue]=\"customData?.summaryTranslationKey || ''\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n", styles: [".buttons,.add-note-title{width:100%;display:flex;flex-direction:row;justify-content:space-between}.add-note-title{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: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.VModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx", "hideFooter"], outputs: ["closeEvent"] }, { kind: "component", type: i2.TitleComponent, selector: "v-title", inputs: ["type", "margin", "fullWidth", "center"] }, { kind: "component", type: i2.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled", "title", "titleTranslationKey"], outputs: ["clickEvent"] }, { kind: "component", type: i2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder"], outputs: ["valueChange"] }, { kind: "component", type: i2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NoteModalComponent, selector: "valtimo-note-modal", inputs: { customData: "customData" }, outputs: { createNoteEvent: "createNoteEvent", editNoteEvent: "editNoteEvent" }, viewQueries: [{ propertyName: "noteModal", first: true, predicate: ["noteModal"], 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<v-modal\n #noteModal\n *ngIf=\"{disabled: disabled$ | async, valid: valid$ | async, modalType: modalType$ | async} as obs\"\n>\n <div role=\"header\">\n <div class=\"add-note-title\">\n <v-title [margin]=\"false\">{{\n (obs.modalType === 'add' ? 'dossier.notes.addNote' : 'dossier.notes.modifyNote') | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'document.cancel' | translate }}\n </v-button>\n <ng-container\n *ngTemplateOutlet=\"\n obs.modalType === 'add' ? addNoteButton : editNoteButton;\n context: {obs: obs}\n \"\n ></ng-container>\n </div>\n </div>\n</v-modal>\n\n<ng-template #addNoteButton let-obs=\"obs\">\n <v-button\n (clickEvent)=\"emitNoteData()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{ 'dossier.notes.addNote' | translate }}\n </v-button>\n</ng-template>\n<ng-template #editNoteButton let-obs=\"obs\">\n <v-button\n [disabled]=\"obs.disabled || !obs.valid\"\n (clickEvent)=\"emitNoteData()\"\n mdiIcon=\"pencil\"\n type=\"success\"\n >\n {{ 'dossier.notes.modifyNote' | translate }}\n </v-button>\n</ng-template>\n\n<ng-template #form>\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n type=\"textarea\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'dossier.notes.input.content' | translate\"\n name=\"content\"\n [fullWidth]=\"true\"\n [rows]=\"10\"\n [defaultValue]=\"customData?.summaryTranslationKey || ''\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n", styles: [".buttons,.add-note-title{width:100%;display:flex;flex-direction:row;justify-content:space-between}.add-note-title{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: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.VModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx", "hideFooter"], outputs: ["closeEvent"] }, { kind: "component", type: i2.TitleComponent, selector: "v-title", inputs: ["type", "margin", "fullWidth", "center"] }, { kind: "component", type: i2.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled", "title", "titleTranslationKey"], outputs: ["clickEvent"] }, { kind: "component", type: i2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId"], outputs: ["valueChange"] }, { kind: "component", type: i2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
99
99
|
}
|
|
100
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoteModalComponent, decorators: [{
|
|
101
101
|
type: Component,
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Injectable } from '@angular/core';
|
|
17
17
|
import { BaseApiService } from '@valtimo/config';
|
|
18
|
-
import { switchMap } from 'rxjs';
|
|
19
18
|
import * as i0 from "@angular/core";
|
|
20
19
|
import * as i1 from "@angular/common/http";
|
|
21
20
|
import * as i2 from "@valtimo/config";
|
|
@@ -26,11 +25,7 @@ export class DossierTabApiService extends BaseApiService {
|
|
|
26
25
|
this.configService = configService;
|
|
27
26
|
}
|
|
28
27
|
getDossierTabs(documentDefinitionName, documentId) {
|
|
29
|
-
return this.
|
|
30
|
-
.getFeatureToggleObservable('enableCaseWidgets')
|
|
31
|
-
.pipe(switchMap(enableCaseWidgets => enableCaseWidgets
|
|
32
|
-
? this.httpClient.get(this.getApiUrl(`v1/document/${documentId}/tab`))
|
|
33
|
-
: this.httpClient.get(this.getApiUrl(`v1/case-definition/${documentDefinitionName}/tab`))));
|
|
28
|
+
return this.httpClient.get(this.getApiUrl(`v1/document/${documentId}/tab`));
|
|
34
29
|
}
|
|
35
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierTabApiService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
31
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierTabApiService, providedIn: 'root' }); }
|
|
@@ -41,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
41
36
|
providedIn: 'root',
|
|
42
37
|
}]
|
|
43
38
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci10YWItYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9zZXJ2aWNlcy9kb3NzaWVyLXRhYi1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGNBQWMsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVE5RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsY0FBYztJQUN0RCxZQUNxQixVQUFzQixFQUN0QixhQUE0QjtRQUUvQyxLQUFLLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBSGQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUdqRCxDQUFDO0lBRU0sY0FBYyxDQUNuQixzQkFBOEIsRUFDOUIsVUFBa0I7UUFFbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLFVBQVUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDOytHQWJVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYXNlQXBpU2VydmljZSwgQ29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXBpVGFiSXRlbX0gZnJvbSAnLi4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJUYWJBcGlTZXJ2aWNlIGV4dGVuZHMgQmFzZUFwaVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCBjb25maWdTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREb3NzaWVyVGFicyhcbiAgICBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmcsXG4gICAgZG9jdW1lbnRJZDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8QXJyYXk8QXBpVGFiSXRlbT4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcnJheTxBcGlUYWJJdGVtPj4odGhpcy5nZXRBcGlVcmwoYHYxL2RvY3VtZW50LyR7ZG9jdW1lbnRJZH0vdGFiYCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -138,8 +138,7 @@ export class DossierTabService {
|
|
|
138
138
|
case ApiTabType.CUSTOM:
|
|
139
139
|
return new TabImpl(tab.key, index, this.caseTabConfig[tab.contentKey], tab.contentKey, tab.name, tab.showTasks);
|
|
140
140
|
case ApiTabType.WIDGETS:
|
|
141
|
-
return (
|
|
142
|
-
new TabImpl(tab.key, index, DossierDetailWidgetsComponent, tab.contentKey, tab.name, tab.showTasks));
|
|
141
|
+
return (new TabImpl(tab.key, index, DossierDetailWidgetsComponent, tab.contentKey, tab.name, tab.showTasks));
|
|
143
142
|
default:
|
|
144
143
|
return null;
|
|
145
144
|
}
|
|
@@ -163,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
163
162
|
type: Inject,
|
|
164
163
|
args: [ZGW_OBJECT_TYPE_COMPONENT_TOKEN]
|
|
165
164
|
}] }, { type: i1.ConfigService }, { type: i2.ActivatedRoute }, { type: i3.DossierTabApiService }] });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci10YWIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL3NlcnZpY2VzL2Rvc3NpZXItdGFiLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQVUsTUFBTSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFFTCxVQUFVLEVBRVYsV0FBVyxFQUNYLE9BQU8sR0FFUixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUMsY0FBYyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0YsT0FBTyxFQUFnQiwrQkFBK0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRy9FLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBRUgsWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDREQUE0RCxDQUFDOzs7OztBQUd6RyxNQUFNLE9BQU8saUJBQWlCO0lBZTVCLElBQVcsNkJBQTZCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lB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LElBQUksT0FBTyxDQUNoQixHQUFHLENBQUMsR0FBRyxFQUNQLEtBQUssRUFDTCwrQkFBK0IsRUFDL0IsR0FBRyxDQUFDLFVBQVUsRUFDZCxHQUFHLENBQUMsSUFBSSxFQUNSLEdBQUcsQ0FBQyxTQUFTLENBQ2QsQ0FBQztZQUNKLEtBQUssVUFBVSxDQUFDLE1BQU07Z0JBQ3BCLE9BQU8sSUFBSSxPQUFPLENBQ2hCLEdBQUcsQ0FBQyxHQUFHLEVBQ1AsS0FBSyxFQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUNsQyxHQUFHLENBQUMsVUFBVSxFQUNkLEdBQUcsQ0FBQyxJQUFJLEVBQ1IsR0FBRyxDQUFDLFNBQVMsQ0FDZCxDQUFDO1lBQ0osS0FBSyxVQUFVLENBQUMsT0FBTztnQkFDckIsT0FBTyxDQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLGlCQUFpQjtvQkFDcEQsSUFBSSxPQUFPLENBQ1QsR0FBRyxDQUFDLEdBQUcsRUFDUCxLQUFLLEVBQ0wsNkJBQTZCLEVBQzdCLEdBQUcsQ0FBQyxVQUFVLEVBQ2QsR0FBRyxDQUFDLElBQUksRUFDUixHQUFHLENBQUMsU0FBUyxDQUNkLENBQ0YsQ0FBQztZQUNKO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDOytHQTlMVSxpQkFBaUIsa0JBMkNsQixPQUFPLGFBQ0ssY0FBYyw2QkFFMUIsK0JBQStCO21IQTlDOUIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkE0Q04sTUFBTTsyQkFBQyxPQUFPOzswQkFDZCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBTaWduYWwsIHNpZ25hbCwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBcGlUYWJJdGVtLFxuICBBcGlUYWJUeXBlLFxuICBDYXNlVGFiQ29uZmlnLFxuICBEZWZhdWx0VGFicyxcbiAgVGFiSW1wbCxcbiAgVGFiTG9hZGVySW1wbCxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Q0FTRV9UQUJfVE9LRU4sIERFRkFVTFRfVEFCX0NPTVBPTkVOVFMsIERFRkFVTFRfVEFCUywgVEFCX01BUH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgWkdXX09CSkVDVF9UWVBFX0NPTVBPTkVOVF9UT0tFTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0Rvc3NpZXJUYWJBcGlTZXJ2aWNlfSBmcm9tICcuL2Rvc3NpZXItdGFiLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RG9zc2llckRldGFpbFRhYkZvcm1pb0NvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvZm9ybWlvL2Zvcm1pby5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyRGV0YWlsVGFiTm90Rm91bmRDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL25vdC1mb3VuZC9ub3QtZm91bmQuY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llckRldGFpbFdpZGdldHNDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvd2lkZ2V0cy5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG9zc2llclRhYlNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF90YWJNYW5hZ2VtZW50RW5hYmxlZCE6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50SWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxUYWJJbXBsPiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90YWJMb2FkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJMb2FkZXJJbXBsIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYkhvcml6b250YWxPdmVyZmxvd0Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwdWJsaWMgZ2V0IHRhYkhvcml6b250YWxPdmVyZmxvd0Rpc2FibGVkKCk6IFNpZ25hbDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkhvcml6b250YWxPdmVyZmxvd0Rpc2FibGVkLmFzUmVhZG9ubHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFicyQoKTogT2JzZXJ2YWJsZTxBcnJheTxUYWJJbXBsPj4ge1xuICAgIHJldHVybiB0aGlzLl90YWJzJC5waXBlKGZpbHRlcih0YWJzID0+ICEhdGFicykpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWIkKCk6IE9ic2VydmFibGU8VGFiSW1wbD4ge1xuICAgIHJldHVybiB0aGlzLl90YWJMb2FkZXIkLnBpcGUoXG4gICAgICBmaWx0ZXIodGFiTG9hZGVyID0+ICEhdGFiTG9hZGVyKSxcbiAgICAgIHN3aXRjaE1hcCh0YWJMb2FkZXIgPT4gdGFiTG9hZGVyLmFjdGl2ZVRhYiQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiS2V5JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYiQucGlwZShtYXAodGFiID0+IHRhYi5uYW1lKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dUYXNrTGlzdCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkxvYWRlciQucGlwZShcbiAgICAgIGZpbHRlcih0YWJMb2FkZXIgPT4gISF0YWJMb2FkZXIpLFxuICAgICAgc3dpdGNoTWFwKHRhYkxvYWRlciA9PiB0YWJMb2FkZXIuYWN0aXZlVGFiJCksXG4gICAgICBtYXAoYWN0aXZlVGFiID0+ICEhYWN0aXZlVGFiPy5zaG93VGFza3MgfHwgYWN0aXZlVGFiLmNvbnRlbnRLZXkgPT09IERlZmF1bHRUYWJzLnN1bW1hcnkpXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEFCX01BUCkgcHJpdmF0ZSByZWFkb25seSB0YWJNYXA6IE1hcDxzdHJpbmcsIG9iamVjdD4gPSBERUZBVUxUX1RBQlMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDQVNFX1RBQl9UT0tFTikgcHJpdmF0ZSByZWFkb25seSBjYXNlVGFiQ29uZmlnOiBDYXNlVGFiQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChaR1dfT0JKRUNUX1RZUEVfQ09NUE9ORU5UX1RPS0VOKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgemd3T2JqZWN0VHlwZUNvbXBvbmVudDogVHlwZTxhbnk+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJUYWJBcGlTZXJ2aWNlOiBEb3NzaWVyVGFiQXBpU2VydmljZVxuICApIHtcbiAgICB0aGlzLl90YWJNYW5hZ2VtZW50RW5hYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmZlYXR1cmVUb2dnbGVzPy5lbmFibGVUYWJNYW5hZ2VtZW50ID8/IHRydWU7XG4gICAgdGhpcy5vcGVuRG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUYWJMb2FkZXIodGFiTG9hZGVyOiBUYWJMb2FkZXJJbXBsKTogdm9pZCB7XG4gICAgdGhpcy5fdGFiTG9hZGVyJC5uZXh0KHRhYkxvYWRlcik7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZVRhYkhvcml6b250YWxPdmVyZmxvdygpOiB2b2lkIHtcbiAgICB0aGlzLl90YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZC5zZXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlVGFiSG9yaXpvbnRhbE92ZXJmbG93KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYkhvcml6b250YWxPdmVyZmxvd0Rpc2FibGVkLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZ3VyYWJsZVRhYnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nKTogTWFwPHN0cmluZywgb2JqZWN0PiB7XG4gICAgY29uc3QgdGFiTWFwID0gbmV3IE1hcDxzdHJpbmcsIG9iamVjdD4oKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZU9iamVjdFR5cGVzKSB7XG4gICAgICBjb25zdCBhbGxOYW1lc09iamVjdHMgPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZU9iamVjdFR5cGVzW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdO1xuXG4gICAgICBhbGxOYW1lc09iamVjdHM/LmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgIHRhYk1hcC5zZXQobmFtZSwgdGhpcy56Z3dPYmplY3RUeXBlQ29tcG9uZW50IHx8IERvc3NpZXJEZXRhaWxUYWJOb3RGb3VuZENvbXBvbmVudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFiTWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxFbnZpcm9ubWVudFRhYnMoZXh0cmFUYWJzOiBNYXA8c3RyaW5nLCBvYmplY3Q+KTogQXJyYXk8VGFiSW1wbD4ge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCB0YWJNYXAgPSBleHRyYVRhYnNcbiAgICAgID8gbmV3IE1hcChbLi4uQXJyYXkuZnJvbSh0aGlzLnRhYk1hcC5lbnRyaWVzKCkpLCAuLi5BcnJheS5mcm9tKGV4dHJhVGFicy5lbnRyaWVzKCkpXSlcbiAgICAgIDogdGhpcy50YWJNYXA7XG4gICAgY29uc3QgdGFiczogQXJyYXk8VGFiSW1wbD4gPSBbXTtcblxuICAgIHRhYk1hcC5mb3JFYWNoKChjb21wb25lbnQsIG5hbWUpID0+IHtcbiAgICAgIHRhYnMucHVzaChuZXcgVGFiSW1wbChuYW1lLCBpLCBjb21wb25lbnQpKTtcbiAgICAgIGkrKztcbiAgICB9KTtcblxuICAgIHJldHVybiB0YWJzO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkLCB0aGlzLl9kb2N1bWVudElkJF0pLnN1YnNjcmliZShcbiAgICAgICAgKFtkb2N1bWVudERlZmluaXRpb25OYW1lLCBkb2N1bWVudElkXSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl90YWJNYW5hZ2VtZW50RW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRBcGlUYWJzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGRvY3VtZW50SWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldEVudmlyb25tZW50VGFicyhkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFbnZpcm9ubWVudFRhYnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlndXJhYmxlVGFicyA9IHRoaXMuZ2V0Q29uZmlndXJhYmxlVGFicyhkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICBjb25zdCBhbGxFbnZpcm9ubWVudFRhYnMgPSB0aGlzLmdldEFsbEVudmlyb25tZW50VGFicyhjb25maWd1cmFibGVUYWJzKTtcbiAgICB0aGlzLl90YWJzJC5uZXh0KGFsbEVudmlyb25tZW50VGFicyk7XG4gIH1cblxuICBwcml2YXRlIHNldEFwaVRhYnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nLCBkb2N1bWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJUYWJBcGlTZXJ2aWNlLmdldERvc3NpZXJUYWJzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGRvY3VtZW50SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiB0YWJzID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkVGFicyA9IHRhYnMuZmlsdGVyKHRhYiA9PiB0aGlzLmZpbHRlclRhYih0YWIpKTtcbiAgICAgICAgY29uc3QgbWFwcGVkVGFicyA9IHN1cHBvcnRlZFRhYnMubWFwKCh0YWIsIGluZGV4KSA9PiB0aGlzLm1hcFRhYih0YWIsIGluZGV4KSk7XG4gICAgICAgIHRoaXMuX3RhYnMkLm5leHQobWFwcGVkVGFicy5maWx0ZXIodGFiID0+ICEhdGFiKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fdGFicyQubmV4dChbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJUYWIodGFiOiBBcGlUYWJJdGVtKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0YWIudHlwZSkge1xuICAgICAgY2FzZSBBcGlUYWJUeXBlLlNUQU5EQVJEOlxuICAgICAgICByZXR1cm4gISFERUZBVUxUX1RBQl9DT01QT05FTlRTW3RhYi5jb250ZW50S2V5XTtcbiAgICAgIGNhc2UgQXBpVGFiVHlwZS5DVVNUT006XG4gICAgICAgIHJldHVybiAhISh0aGlzLmNhc2VUYWJDb25maWcgfHwge30pW3RhYi5jb250ZW50S2V5XTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwVGFiKHRhYjogQXBpVGFiSXRlbSwgaW5kZXg6IG51bWJlcik6IFRhYkltcGwgfCBudWxsIHtcbiAgICBzd2l0Y2ggKHRhYi50eXBlKSB7XG4gICAgICBjYXNlIEFwaVRhYlR5cGUuU1RBTkRBUkQ6XG4gICAgICAgIHJldHVybiBuZXcgVGFiSW1wbChcbiAgICAgICAgICB0YWIua2V5LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIERFRkFVTFRfVEFCX0NPTVBPTkVOVFNbdGFiLmNvbnRlbnRLZXldLFxuICAgICAgICAgIHRhYi5jb250ZW50S2V5LFxuICAgICAgICAgIHRhYi5uYW1lLFxuICAgICAgICAgIHRhYi5zaG93VGFza3NcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgQXBpVGFiVHlwZS5GT1JNSU86XG4gICAgICAgIHJldHVybiBuZXcgVGFiSW1wbChcbiAgICAgICAgICB0YWIua2V5LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIERvc3NpZXJEZXRhaWxUYWJGb3JtaW9Db21wb25lbnQsXG4gICAgICAgICAgdGFiLmNvbnRlbnRLZXksXG4gICAgICAgICAgdGFiLm5hbWUsXG4gICAgICAgICAgdGFiLnNob3dUYXNrc1xuICAgICAgICApO1xuICAgICAgY2FzZSBBcGlUYWJUeXBlLkNVU1RPTTpcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJJbXBsKFxuICAgICAgICAgIHRhYi5rZXksXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgdGhpcy5jYXNlVGFiQ29uZmlnW3RhYi5jb250ZW50S2V5XSxcbiAgICAgICAgICB0YWIuY29udGVudEtleSxcbiAgICAgICAgICB0YWIubmFtZSxcbiAgICAgICAgICB0YWIuc2hvd1Rhc2tzXG4gICAgICAgICk7XG4gICAgICBjYXNlIEFwaVRhYlR5cGUuV0lER0VUUzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZUNhc2VXaWRnZXRzICYmXG4gICAgICAgICAgbmV3IFRhYkltcGwoXG4gICAgICAgICAgICB0YWIua2V5LFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBEb3NzaWVyRGV0YWlsV2lkZ2V0c0NvbXBvbmVudCxcbiAgICAgICAgICAgIHRhYi5jb250ZW50S2V5LFxuICAgICAgICAgICAgdGFiLm5hbWUsXG4gICAgICAgICAgICB0YWIuc2hvd1Rhc2tzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci10YWIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL3NlcnZpY2VzL2Rvc3NpZXItdGFiLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQVUsTUFBTSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFFTCxVQUFVLEVBRVYsV0FBVyxFQUNYLE9BQU8sR0FFUixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUMsY0FBYyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0YsT0FBTyxFQUFnQiwrQkFBK0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRy9FLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBRUgsWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDREQUE0RCxDQUFDOzs7OztBQUd6RyxNQUFNLE9BQU8saUJBQWlCO0lBZTVCLElBQVcsNkJBQTZCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lB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LElBQUksT0FBTyxDQUNoQixHQUFHLENBQUMsR0FBRyxFQUNQLEtBQUssRUFDTCwrQkFBK0IsRUFDL0IsR0FBRyxDQUFDLFVBQVUsRUFDZCxHQUFHLENBQUMsSUFBSSxFQUNSLEdBQUcsQ0FBQyxTQUFTLENBQ2QsQ0FBQztZQUNKLEtBQUssVUFBVSxDQUFDLE1BQU07Z0JBQ3BCLE9BQU8sSUFBSSxPQUFPLENBQ2hCLEdBQUcsQ0FBQyxHQUFHLEVBQ1AsS0FBSyxFQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUNsQyxHQUFHLENBQUMsVUFBVSxFQUNkLEdBQUcsQ0FBQyxJQUFJLEVBQ1IsR0FBRyxDQUFDLFNBQVMsQ0FDZCxDQUFDO1lBQ0osS0FBSyxVQUFVLENBQUMsT0FBTztnQkFDckIsT0FBTyxDQUNMLElBQUksT0FBTyxDQUNULEdBQUcsQ0FBQyxHQUFHLEVBQ1AsS0FBSyxFQUNMLDZCQUE2QixFQUM3QixHQUFHLENBQUMsVUFBVSxFQUNkLEdBQUcsQ0FBQyxJQUFJLEVBQ1IsR0FBRyxDQUFDLFNBQVMsQ0FDZCxDQUNGLENBQUM7WUFDSjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzsrR0E3TFUsaUJBQWlCLGtCQTJDbEIsT0FBTyxhQUNLLGNBQWMsNkJBRTFCLCtCQUErQjttSEE5QzlCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBNENOLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzswQkFDakMsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCwgU2lnbmFsLCBzaWduYWwsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXBpVGFiSXRlbSxcbiAgQXBpVGFiVHlwZSxcbiAgQ2FzZVRhYkNvbmZpZyxcbiAgRGVmYXVsdFRhYnMsXG4gIFRhYkltcGwsXG4gIFRhYkxvYWRlckltcGwsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge0NBU0VfVEFCX1RPS0VOLCBERUZBVUxUX1RBQl9DT01QT05FTlRTLCBERUZBVUxUX1RBQlMsIFRBQl9NQVB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2UsIFpHV19PQkpFQ1RfVFlQRV9DT01QT05FTlRfVE9LRU59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEb3NzaWVyVGFiQXBpU2VydmljZX0gZnJvbSAnLi9kb3NzaWVyLXRhYi1hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rvc3NpZXJEZXRhaWxUYWJGb3JtaW9Db21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL2Zvcm1pby9mb3JtaW8uY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llckRldGFpbFRhYk5vdEZvdW5kQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi9ub3QtZm91bmQvbm90LWZvdW5kLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJEZXRhaWxXaWRnZXRzQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi93aWRnZXRzL3dpZGdldHMuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvc3NpZXJUYWJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGFiTWFuYWdlbWVudEVuYWJsZWQhOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgZmlsdGVyKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gISFkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgZmlsdGVyKGRvY3VtZW50SWQgPT4gISFkb2N1bWVudElkKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF90YWJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8VGFiSW1wbD4gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGFiTG9hZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiTG9hZGVySW1wbCB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIGdldCB0YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZCgpOiBTaWduYWw8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl90YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZC5hc1JlYWRvbmx5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYnMkKCk6IE9ic2VydmFibGU8QXJyYXk8VGFiSW1wbD4+IHtcbiAgICByZXR1cm4gdGhpcy5fdGFicyQucGlwZShmaWx0ZXIodGFicyA9PiAhIXRhYnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiJCgpOiBPYnNlcnZhYmxlPFRhYkltcGw+IHtcbiAgICByZXR1cm4gdGhpcy5fdGFiTG9hZGVyJC5waXBlKFxuICAgICAgZmlsdGVyKHRhYkxvYWRlciA9PiAhIXRhYkxvYWRlciksXG4gICAgICBzd2l0Y2hNYXAodGFiTG9hZGVyID0+IHRhYkxvYWRlci5hY3RpdmVUYWIkKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVRhYktleSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVUYWIkLnBpcGUobWFwKHRhYiA9PiB0YWIubmFtZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93VGFza0xpc3QkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl90YWJMb2FkZXIkLnBpcGUoXG4gICAgICBmaWx0ZXIodGFiTG9hZGVyID0+ICEhdGFiTG9hZGVyKSxcbiAgICAgIHN3aXRjaE1hcCh0YWJMb2FkZXIgPT4gdGFiTG9hZGVyLmFjdGl2ZVRhYiQpLFxuICAgICAgbWFwKGFjdGl2ZVRhYiA9PiAhIWFjdGl2ZVRhYj8uc2hvd1Rhc2tzIHx8IGFjdGl2ZVRhYi5jb250ZW50S2V5ID09PSBEZWZhdWx0VGFicy5zdW1tYXJ5KVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRBQl9NQVApIHByaXZhdGUgcmVhZG9ubHkgdGFiTWFwOiBNYXA8c3RyaW5nLCBvYmplY3Q+ID0gREVGQVVMVF9UQUJTLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ0FTRV9UQUJfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgY2FzZVRhYkNvbmZpZzogQ2FzZVRhYkNvbmZpZyxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoWkdXX09CSkVDVF9UWVBFX0NPTVBPTkVOVF9UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpnd09iamVjdFR5cGVDb21wb25lbnQ6IFR5cGU8YW55PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyVGFiQXBpU2VydmljZTogRG9zc2llclRhYkFwaVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5fdGFiTWFuYWdlbWVudEVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWF0dXJlVG9nZ2xlcz8uZW5hYmxlVGFiTWFuYWdlbWVudCA/PyB0cnVlO1xuICAgIHRoaXMub3BlbkRvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VGFiTG9hZGVyKHRhYkxvYWRlcjogVGFiTG9hZGVySW1wbCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYkxvYWRlciQubmV4dCh0YWJMb2FkZXIpO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVUYWJIb3Jpem9udGFsT3ZlcmZsb3coKTogdm9pZCB7XG4gICAgdGhpcy5fdGFiSG9yaXpvbnRhbE92ZXJmbG93RGlzYWJsZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZVRhYkhvcml6b250YWxPdmVyZmxvdygpOiB2b2lkIHtcbiAgICB0aGlzLl90YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWd1cmFibGVUYWJzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZyk6IE1hcDxzdHJpbmcsIG9iamVjdD4ge1xuICAgIGNvbnN0IHRhYk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBvYmplY3Q+KCk7XG5cbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VPYmplY3RUeXBlcykge1xuICAgICAgY29uc3QgYWxsTmFtZXNPYmplY3RzID0gdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VPYmplY3RUeXBlc1tkb2N1bWVudERlZmluaXRpb25OYW1lXTtcblxuICAgICAgYWxsTmFtZXNPYmplY3RzPy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICB0YWJNYXAuc2V0KG5hbWUsIHRoaXMuemd3T2JqZWN0VHlwZUNvbXBvbmVudCB8fCBEb3NzaWVyRGV0YWlsVGFiTm90Rm91bmRDb21wb25lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYk1hcDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsRW52aXJvbm1lbnRUYWJzKGV4dHJhVGFiczogTWFwPHN0cmluZywgb2JqZWN0Pik6IEFycmF5PFRhYkltcGw+IHtcbiAgICBsZXQgaSA9IDA7XG4gICAgY29uc3QgdGFiTWFwID0gZXh0cmFUYWJzXG4gICAgICA/IG5ldyBNYXAoWy4uLkFycmF5LmZyb20odGhpcy50YWJNYXAuZW50cmllcygpKSwgLi4uQXJyYXkuZnJvbShleHRyYVRhYnMuZW50cmllcygpKV0pXG4gICAgICA6IHRoaXMudGFiTWFwO1xuICAgIGNvbnN0IHRhYnM6IEFycmF5PFRhYkltcGw+ID0gW107XG5cbiAgICB0YWJNYXAuZm9yRWFjaCgoY29tcG9uZW50LCBuYW1lKSA9PiB7XG4gICAgICB0YWJzLnB1c2gobmV3IFRhYkltcGwobmFtZSwgaSwgY29tcG9uZW50KSk7XG4gICAgICBpKys7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFicztcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lJCwgdGhpcy5fZG9jdW1lbnRJZCRdKS5zdWJzY3JpYmUoXG4gICAgICAgIChbZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgZG9jdW1lbnRJZF0pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fdGFiTWFuYWdlbWVudEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QXBpVGFicyhkb2N1bWVudERlZmluaXRpb25OYW1lLCBkb2N1bWVudElkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRFbnZpcm9ubWVudFRhYnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RW52aXJvbm1lbnRUYWJzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZ3VyYWJsZVRhYnMgPSB0aGlzLmdldENvbmZpZ3VyYWJsZVRhYnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgY29uc3QgYWxsRW52aXJvbm1lbnRUYWJzID0gdGhpcy5nZXRBbGxFbnZpcm9ubWVudFRhYnMoY29uZmlndXJhYmxlVGFicyk7XG4gICAgdGhpcy5fdGFicyQubmV4dChhbGxFbnZpcm9ubWVudFRhYnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBcGlUYWJzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZywgZG9jdW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyVGFiQXBpU2VydmljZS5nZXREb3NzaWVyVGFicyhkb2N1bWVudERlZmluaXRpb25OYW1lLCBkb2N1bWVudElkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogdGFicyA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZFRhYnMgPSB0YWJzLmZpbHRlcih0YWIgPT4gdGhpcy5maWx0ZXJUYWIodGFiKSk7XG4gICAgICAgIGNvbnN0IG1hcHBlZFRhYnMgPSBzdXBwb3J0ZWRUYWJzLm1hcCgodGFiLCBpbmRleCkgPT4gdGhpcy5tYXBUYWIodGFiLCBpbmRleCkpO1xuICAgICAgICB0aGlzLl90YWJzJC5uZXh0KG1hcHBlZFRhYnMuZmlsdGVyKHRhYiA9PiAhIXRhYikpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX3RhYnMkLm5leHQoW10pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVGFiKHRhYjogQXBpVGFiSXRlbSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGFiLnR5cGUpIHtcbiAgICAgIGNhc2UgQXBpVGFiVHlwZS5TVEFOREFSRDpcbiAgICAgICAgcmV0dXJuICEhREVGQVVMVF9UQUJfQ09NUE9ORU5UU1t0YWIuY29udGVudEtleV07XG4gICAgICBjYXNlIEFwaVRhYlR5cGUuQ1VTVE9NOlxuICAgICAgICByZXR1cm4gISEodGhpcy5jYXNlVGFiQ29uZmlnIHx8IHt9KVt0YWIuY29udGVudEtleV07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcFRhYih0YWI6IEFwaVRhYkl0ZW0sIGluZGV4OiBudW1iZXIpOiBUYWJJbXBsIHwgbnVsbCB7XG4gICAgc3dpdGNoICh0YWIudHlwZSkge1xuICAgICAgY2FzZSBBcGlUYWJUeXBlLlNUQU5EQVJEOlxuICAgICAgICByZXR1cm4gbmV3IFRhYkltcGwoXG4gICAgICAgICAgdGFiLmtleSxcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBERUZBVUxUX1RBQl9DT01QT05FTlRTW3RhYi5jb250ZW50S2V5XSxcbiAgICAgICAgICB0YWIuY29udGVudEtleSxcbiAgICAgICAgICB0YWIubmFtZSxcbiAgICAgICAgICB0YWIuc2hvd1Rhc2tzXG4gICAgICAgICk7XG4gICAgICBjYXNlIEFwaVRhYlR5cGUuRk9STUlPOlxuICAgICAgICByZXR1cm4gbmV3IFRhYkltcGwoXG4gICAgICAgICAgdGFiLmtleSxcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBEb3NzaWVyRGV0YWlsVGFiRm9ybWlvQ29tcG9uZW50LFxuICAgICAgICAgIHRhYi5jb250ZW50S2V5LFxuICAgICAgICAgIHRhYi5uYW1lLFxuICAgICAgICAgIHRhYi5zaG93VGFza3NcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgQXBpVGFiVHlwZS5DVVNUT006XG4gICAgICAgIHJldHVybiBuZXcgVGFiSW1wbChcbiAgICAgICAgICB0YWIua2V5LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIHRoaXMuY2FzZVRhYkNvbmZpZ1t0YWIuY29udGVudEtleV0sXG4gICAgICAgICAgdGFiLmNvbnRlbnRLZXksXG4gICAgICAgICAgdGFiLm5hbWUsXG4gICAgICAgICAgdGFiLnNob3dUYXNrc1xuICAgICAgICApO1xuICAgICAgY2FzZSBBcGlUYWJUeXBlLldJREdFVFM6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IFRhYkltcGwoXG4gICAgICAgICAgICB0YWIua2V5LFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBEb3NzaWVyRGV0YWlsV2lkZ2V0c0NvbXBvbmVudCxcbiAgICAgICAgICAgIHRhYi5jb250ZW50S2V5LFxuICAgICAgICAgICAgdGFiLm5hbWUsXG4gICAgICAgICAgICB0YWIuc2hvd1Rhc2tzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
|