@valtimo/dossier 12.6.1 → 12.8.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-detail/dossier-detail.component.mjs +55 -23
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.mjs +41 -15
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.mjs +27 -12
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.mjs +46 -13
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.mjs +25 -11
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.mjs +32 -13
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.mjs +17 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.component.mjs +4 -4
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.permissions.mjs +30 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.service.mjs +45 -0
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +27 -12
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +38 -6
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +44 -6
- package/esm2022/lib/constants/dossier-detail-layout.constants.mjs +7 -2
- package/esm2022/lib/models/case-widget-content.model.mjs +1 -1
- package/esm2022/lib/models/case-widget-display.model.mjs +1 -1
- package/esm2022/lib/models/case-widget.model.mjs +1 -1
- package/fesm2022/valtimo-dossier.mjs +424 -139
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +10 -2
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts +13 -3
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts +12 -4
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts +17 -4
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts +11 -3
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts +11 -3
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.d.ts +13 -0
- package/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/widgets.permissions.d.ts +8 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.permissions.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.service.d.ts +16 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.service.d.ts.map +1 -0
- package/lib/components/dossier-list/dossier-list.component.d.ts +2 -0
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +8 -3
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +8 -3
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/dossier-detail-layout.constants.d.ts +6 -1
- package/lib/constants/dossier-detail-layout.constants.d.ts.map +1 -1
- package/lib/models/case-widget-content.model.d.ts +1 -0
- package/lib/models/case-widget-content.model.d.ts.map +1 -1
- package/lib/models/case-widget-display.model.d.ts +8 -0
- package/lib/models/case-widget-display.model.d.ts.map +1 -1
- package/lib/models/case-widget.model.d.ts +6 -1
- package/lib/models/case-widget.model.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BehaviorSubject, switchMap } from 'rxjs';
|
|
2
|
+
import { CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, WIDGET_PERMISSION_RESOURCE, } from '../../widgets.permissions';
|
|
3
|
+
export class WidgetProcess {
|
|
4
|
+
set baseWidgetConfiguration(value) {
|
|
5
|
+
this._baseWidgetConfiguration$.next(value);
|
|
6
|
+
}
|
|
7
|
+
constructor(documentService, permissionService) {
|
|
8
|
+
this.documentService = documentService;
|
|
9
|
+
this.permissionService = permissionService;
|
|
10
|
+
this._baseWidgetConfiguration$ = new BehaviorSubject(null);
|
|
11
|
+
this.canCreateCamundaExecution$ = this._baseWidgetConfiguration$.pipe(switchMap((widgetConfiguration) => this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(widgetConfiguration?.actions?.[0].processDefinitionKey ?? '')), switchMap((processDefintions) => this.permissionService.requestPermission(CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, {
|
|
12
|
+
resource: WIDGET_PERMISSION_RESOURCE.camundaProcessDefinition,
|
|
13
|
+
identifier: processDefintions[0].latestVersionId,
|
|
14
|
+
})));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi93aWRnZXRzL2NvbXBvbmVudHMvd2lkZ2V0LXByb2Nlc3Mvd2lkZ2V0LXByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGVBQWUsRUFBYyxTQUFTLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFHakUsT0FBTyxFQUNMLHVDQUF1QyxFQUN2QywwQkFBMEIsR0FDM0IsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixJQUFjLHVCQUF1QixDQUFDLEtBQXNCO1FBQzFELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQWlCRCxZQUNxQixlQUFnQyxFQUNoQyxpQkFBb0M7UUFEcEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF0QnhDLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUF5QixJQUFJLENBQUMsQ0FBQztRQUsvRSwrQkFBMEIsR0FDeEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FDakMsU0FBUyxDQUFDLENBQUMsbUJBQTJDLEVBQUUsRUFBRSxDQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLG9EQUFvRCxDQUN2RSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQzdELENBQ0YsRUFDRCxTQUFTLENBQUMsQ0FBQyxpQkFBOEMsRUFBRSxFQUFFLENBQzNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyx1Q0FBdUMsRUFBRTtZQUNoRixRQUFRLEVBQUUsMEJBQTBCLENBQUMsd0JBQXdCO1lBQzdELFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlO1NBQ2pELENBQUMsQ0FDSCxDQUNGLENBQUM7SUFLRCxDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jhc2ljQ2FzZVdpZGdldH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Blcm1pc3Npb25SZXNwb25zZSwgUGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1xuICBDQU5fQ1JFQVRFX0NBTVVOREFfRVhFQ1VUSU9OX1BFUk1JU1NJT04sXG4gIFdJREdFVF9QRVJNSVNTSU9OX1JFU09VUkNFLFxufSBmcm9tICcuLi8uLi93aWRnZXRzLnBlcm1pc3Npb25zJztcblxuZXhwb3J0IGNsYXNzIFdpZGdldFByb2Nlc3Mge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYXNlV2lkZ2V0Q29uZmlndXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2ljQ2FzZVdpZGdldCB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgc2V0IGJhc2VXaWRnZXRDb25maWd1cmF0aW9uKHZhbHVlOiBCYXNpY0Nhc2VXaWRnZXQpIHtcbiAgICB0aGlzLl9iYXNlV2lkZ2V0Q29uZmlndXJhdGlvbiQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuQ3JlYXRlQ2FtdW5kYUV4ZWN1dGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPVxuICAgIHRoaXMuX2Jhc2VXaWRnZXRDb25maWd1cmF0aW9uJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh3aWRnZXRDb25maWd1cmF0aW9uOiBCYXNpY0Nhc2VXaWRnZXQgfCBudWxsKSA9PlxuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeVByb2Nlc3NEZWZpbml0aW9uS2V5KFxuICAgICAgICAgIHdpZGdldENvbmZpZ3VyYXRpb24/LmFjdGlvbnM/LlswXS5wcm9jZXNzRGVmaW5pdGlvbktleSA/PyAnJ1xuICAgICAgICApXG4gICAgICApLFxuICAgICAgc3dpdGNoTWFwKChwcm9jZXNzRGVmaW50aW9uczogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbltdKSA9PlxuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9DUkVBVEVfQ0FNVU5EQV9FWEVDVVRJT05fUEVSTUlTU0lPTiwge1xuICAgICAgICAgIHJlc291cmNlOiBXSURHRVRfUEVSTUlTU0lPTl9SRVNPVVJDRS5jYW11bmRhUHJvY2Vzc0RlZmluaXRpb24sXG4gICAgICAgICAgaWRlbnRpZmllcjogcHJvY2Vzc0RlZmludGlvbnNbMF0ubGF0ZXN0VmVyc2lvbklkLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2VcbiAgKSB7fVxufVxuIl19
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { CommonModule } from '@angular/common';
|
|
17
17
|
import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
|
|
18
|
-
import {
|
|
18
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
19
|
+
import { CarbonListModule } from '@valtimo/components';
|
|
19
20
|
import { LoadingModule } from 'carbon-components-angular';
|
|
21
|
+
import { BehaviorSubject, combineLatest, delay, filter, map, switchMap, tap } from 'rxjs';
|
|
20
22
|
import { WidgetsContainerComponent } from './components/widgets-container/widgets-container.component';
|
|
21
|
-
import { CarbonListModule } from '@valtimo/components';
|
|
22
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
import * as i1 from "@angular/router";
|
|
25
25
|
import * as i2 from "../../../../services";
|
|
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
71
71
|
type: HostBinding,
|
|
72
72
|
args: ['class.tab--no-min-height']
|
|
73
73
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi93aWRnZXRzL3dpZGdldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy93aWRnZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFNcEcsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sNERBQTRELENBQUM7Ozs7Ozs7O0FBZXJHLE1BQU0sT0FBTyw2QkFBNkI7SUF1QnhDLFlBQ21CLEtBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxpQkFBMkMsRUFDM0MsMkJBQXdEO1FBSHhELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBMUJyQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFN0QsaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUFDO1FBRWUsYUFBUSxHQUF1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1FBRXJFLGdDQUEyQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRWpFLHlCQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRixTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQ3JFLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztRQUVjLFlBQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQU9qRixDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUN2RCxDQUFDOytHQXJDVSw2QkFBNkI7bUdBQTdCLDZCQUE2QiwrT0MxQzFDLDR0REFrREEsaUlEaEJJLFlBQVksdUxBQ1osYUFBYSxnS0FDYix5QkFBeUIsa0dBQ3pCLGdCQUFnQixvUEFDaEIsZUFBZTs7NEZBSU4sNkJBQTZCO2tCQWJ6QyxTQUFTO2lDQUdJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IseUJBQXlCO3dCQUN6QixnQkFBZ0I7d0JBQ2hCLGVBQWU7cUJBQ2hCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO29NQUdPLFNBQVM7c0JBQTlELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUN1QixhQUFhO3NCQUF0RSxXQUFXO3VCQUFDLDBCQUEwQjtnQkFDbUIsWUFBWTtzQkFBckUsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDYXJib25MaXN0TW9kdWxlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7TG9hZGluZ01vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGVsYXksIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBEb3NzaWVyVGFiU2VydmljZSxcbiAgRG9zc2llcldpZGdldHNBcGlTZXJ2aWNlLFxuICBEb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7V2lkZ2V0c0NvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMtY29udGFpbmVyL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBMb2FkaW5nTW9kdWxlLFxuICAgIFdpZGdldHNDb250YWluZXJDb21wb25lbnQsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsV2lkZ2V0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWItLW5vLW1hcmdpbicpIHByaXZhdGUgcmVhZG9ubHkgX25vTWFyZ2luID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWItLW5vLWJhY2tncm91bmQnKSBwcml2YXRlIHJlYWRvbmx5IF9ub0JhY2tncm91bmQgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhYi0tbm8tbWluLWhlaWdodCcpIHByaXZhdGUgcmVhZG9ubHkgX25vTWluSGVpZ2h0ID0gdHJ1ZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudElkJCA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgIGZpbHRlcihkb2N1bWVudElkID0+ICEhZG9jdW1lbnRJZClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90YWJLZXkkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmRvc3NpZXJUYWJTZXJ2aWNlLmFjdGl2ZVRhYktleSQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmdXaWRnZXRDb25maWd1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldENvbmZpZ3VyYXRpb24kID0gY29tYmluZUxhdGVzdChbdGhpcy5fZG9jdW1lbnRJZCQsIHRoaXMuX3RhYktleSRdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2RvY3VtZW50SWQsIHRhYktleV0pID0+XG4gICAgICB0aGlzLndpZGdldHNBcGlTZXJ2aWNlLmdldFdpZGdldFRhYkNvbmZpZ3VyYXRpb24oZG9jdW1lbnRJZCwgdGFiS2V5KVxuICAgICksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ1dpZGdldENvbmZpZ3VyYXRpb24kLm5leHQoZmFsc2UpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkZWQkID0gdGhpcy5kb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2UubG9hZGVkJC5waXBlKGRlbGF5KDQwMCkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llclRhYlNlcnZpY2U6IERvc3NpZXJUYWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0c0FwaVNlcnZpY2U6IERvc3NpZXJXaWRnZXRzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZTogRG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyVGFiU2VydmljZS5kaXNhYmxlVGFiSG9yaXpvbnRhbE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLmRvc3NpZXJUYWJTZXJ2aWNlLmVuYWJsZVRhYkhvcml6b250YWxPdmVyZmxvdygpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgbG9hZGluZ1dpZGdldENvbmZpZ3VyYXRpb246IGxvYWRpbmdXaWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgIHdpZGdldENvbmZpZ3VyYXRpb246IHdpZGdldENvbmZpZ3VyYXRpb24kIHwgYXN5bmMsXG4gICAgbG9hZGVkOiBsb2FkZWQkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwie1xuICAgICAgbm9XaWRnZXRzQ29uZmlndXJlZDpcbiAgICAgICAgb2JzLndpZGdldENvbmZpZ3VyYXRpb24/LndpZGdldHMgJiYgb2JzLndpZGdldENvbmZpZ3VyYXRpb24ud2lkZ2V0cy5sZW5ndGggPT09IDAsXG4gICAgfSBhcyB2YXJzXCJcbiAgPlxuICAgIEBpZiAoIW9icy5sb2FkZWQgJiYgIXZhcnMubm9XaWRnZXRzQ29uZmlndXJlZCkge1xuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgICAgIDxjZHMtbG9hZGluZz48L2Nkcy1sb2FkaW5nPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmICh2YXJzLm5vV2lkZ2V0c0NvbmZpZ3VyZWQpIHtcbiAgICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyLndpZGdldHMubm9XaWRnZXRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci53aWRnZXRzLm5vV2lkZ2V0c0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGlsbHVzdHJhdGlvbj1cInZhbHRpbW8tbGF5b3V0L2ltZy9uby13aWRnZXRzLnN2Z1wiXG4gICAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gICAgfVxuXG4gICAgPGRpdiBbc3R5bGUudmlzaWJpbGl0eV09XCIhb2JzLmxvYWRlZCA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCI+XG4gICAgICA8dmFsdGltby1kb3NzaWVyLXdpZGdldHMtY29udGFpbmVyXG4gICAgICAgIFt3aWRnZXRzXT1cIm9icy53aWRnZXRDb25maWd1cmF0aW9uPy53aWRnZXRzIHx8IFtdXCJcbiAgICAgID48L3ZhbHRpbW8tZG9zc2llci13aWRnZXRzLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
var PERMISSION_ACTION;
|
|
17
|
+
(function (PERMISSION_ACTION) {
|
|
18
|
+
PERMISSION_ACTION["create"] = "create";
|
|
19
|
+
})(PERMISSION_ACTION || (PERMISSION_ACTION = {}));
|
|
20
|
+
var WIDGET_PERMISSION_RESOURCE;
|
|
21
|
+
(function (WIDGET_PERMISSION_RESOURCE) {
|
|
22
|
+
WIDGET_PERMISSION_RESOURCE["camundaExecution"] = "com.ritense.valtimo.camunda.domain.CamundaExecution";
|
|
23
|
+
WIDGET_PERMISSION_RESOURCE["camundaProcessDefinition"] = "com.ritense.valtimo.camunda.domain.CamundaProcessDefinition";
|
|
24
|
+
})(WIDGET_PERMISSION_RESOURCE || (WIDGET_PERMISSION_RESOURCE = {}));
|
|
25
|
+
const CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION = {
|
|
26
|
+
action: PERMISSION_ACTION.create,
|
|
27
|
+
resource: WIDGET_PERMISSION_RESOURCE.camundaExecution,
|
|
28
|
+
};
|
|
29
|
+
export { CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, WIDGET_PERMISSION_RESOURCE };
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5wZXJtaXNzaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvd2lkZ2V0cy5wZXJtaXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUlILElBQUssaUJBRUo7QUFGRCxXQUFLLGlCQUFpQjtJQUNwQixzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBRkksaUJBQWlCLEtBQWpCLGlCQUFpQixRQUVyQjtBQUVELElBQUssMEJBR0o7QUFIRCxXQUFLLDBCQUEwQjtJQUM3QixzR0FBd0UsQ0FBQTtJQUN4RSxzSEFBd0YsQ0FBQTtBQUMxRixDQUFDLEVBSEksMEJBQTBCLEtBQTFCLDBCQUEwQixRQUc5QjtBQUVELE1BQU0sdUNBQXVDLEdBQXNCO0lBQ2pFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO0lBQ2hDLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQyxnQkFBZ0I7Q0FDdEQsQ0FBQztBQUVGLE9BQU8sRUFBQyx1Q0FBdUMsRUFBRSwwQkFBMEIsRUFBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtQZXJtaXNzaW9uUmVxdWVzdH0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuXG5lbnVtIFBFUk1JU1NJT05fQUNUSU9OIHtcbiAgY3JlYXRlID0gJ2NyZWF0ZScsXG59XG5cbmVudW0gV0lER0VUX1BFUk1JU1NJT05fUkVTT1VSQ0Uge1xuICBjYW11bmRhRXhlY3V0aW9uID0gJ2NvbS5yaXRlbnNlLnZhbHRpbW8uY2FtdW5kYS5kb21haW4uQ2FtdW5kYUV4ZWN1dGlvbicsXG4gIGNhbXVuZGFQcm9jZXNzRGVmaW5pdGlvbiA9ICdjb20ucml0ZW5zZS52YWx0aW1vLmNhbXVuZGEuZG9tYWluLkNhbXVuZGFQcm9jZXNzRGVmaW5pdGlvbicsXG59XG5cbmNvbnN0IENBTl9DUkVBVEVfQ0FNVU5EQV9FWEVDVVRJT05fUEVSTUlTU0lPTjogUGVybWlzc2lvblJlcXVlc3QgPSB7XG4gIGFjdGlvbjogUEVSTUlTU0lPTl9BQ1RJT04uY3JlYXRlLFxuICByZXNvdXJjZTogV0lER0VUX1BFUk1JU1NJT05fUkVTT1VSQ0UuY2FtdW5kYUV4ZWN1dGlvbixcbn07XG5cbmV4cG9ydCB7Q0FOX0NSRUFURV9DQU1VTkRBX0VYRUNVVElPTl9QRVJNSVNTSU9OLCBXSURHRVRfUEVSTUlTU0lPTl9SRVNPVVJDRX07XG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
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 { EventEmitter, Injectable } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, distinctUntilChanged, filter, switchMap } from 'rxjs';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@valtimo/document";
|
|
20
|
+
export class WidgetsService {
|
|
21
|
+
get activeProcess$() {
|
|
22
|
+
return this._activeProcessKey$.pipe(filter((processDocumentDefinition) => !!processDocumentDefinition), switchMap((processDefinitionKey) => this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(processDefinitionKey)), distinctUntilChanged());
|
|
23
|
+
}
|
|
24
|
+
constructor(documentService) {
|
|
25
|
+
this.documentService = documentService;
|
|
26
|
+
this._activeProcessKey$ = new BehaviorSubject(null);
|
|
27
|
+
this.startProcessEvent = new EventEmitter();
|
|
28
|
+
}
|
|
29
|
+
startProcess(processDocumentDefinitionKey) {
|
|
30
|
+
this._activeProcessKey$.next(processDocumentDefinitionKey);
|
|
31
|
+
this.startProcessEvent.emit();
|
|
32
|
+
}
|
|
33
|
+
finishProcess() {
|
|
34
|
+
this._activeProcessKey$.next(null);
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetsService, deps: [{ token: i1.DocumentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetsService, providedIn: 'root' }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetsService, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{
|
|
42
|
+
providedIn: 'root',
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: () => [{ type: i1.DocumentService }] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy93aWRnZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsZUFBZSxFQUFjLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUsxRixNQUFNLE9BQU8sY0FBYztJQUl6QixJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUNqQyxNQUFNLENBQUMsQ0FBQyx5QkFBd0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEVBQ2pGLFNBQVMsQ0FBQyxDQUFDLG9CQUE0QixFQUFFLEVBQUUsQ0FDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvREFBb0QsQ0FDdkUsb0JBQW9CLENBQ3JCLENBQ0YsRUFDRCxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQTZCLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWY1Qyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDL0Qsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQWNTLENBQUM7SUFFMUQsWUFBWSxDQUFDLDRCQUFvQztRQUN0RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0F6QlUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVByb2Nlc3NLZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXJ0UHJvY2Vzc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBnZXQgYWN0aXZlUHJvY2VzcyQoKTogT2JzZXJ2YWJsZTxQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUHJvY2Vzc0tleSQucGlwZShcbiAgICAgIGZpbHRlcigocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogc3RyaW5nIHwgbnVsbCkgPT4gISFwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKSxcbiAgICAgIHN3aXRjaE1hcCgocHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZykgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zQnlQcm9jZXNzRGVmaW5pdGlvbktleShcbiAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBzdGFydFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbktleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZlUHJvY2Vzc0tleSQubmV4dChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uS2V5KTtcbiAgICB0aGlzLnN0YXJ0UHJvY2Vzc0V2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5pc2hQcm9jZXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2ZVByb2Nlc3NLZXkkLm5leHQobnVsbCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -102,12 +102,16 @@ export class DossierListComponent {
|
|
|
102
102
|
});
|
|
103
103
|
}));
|
|
104
104
|
this.showStatusSelector$ = this.statusService.showStatusSelector$;
|
|
105
|
+
this.INTERNAL_STATUS_COLUMN = 'internalStatus';
|
|
105
106
|
this._statusField = {
|
|
106
107
|
label: 'document.status',
|
|
107
|
-
key:
|
|
108
|
+
key: this.INTERNAL_STATUS_COLUMN,
|
|
108
109
|
viewType: ViewType.TAGS,
|
|
109
110
|
sortable: true,
|
|
110
111
|
};
|
|
112
|
+
this._internalStatusKeys$ = new BehaviorSubject([
|
|
113
|
+
this.INTERNAL_STATUS_COLUMN,
|
|
114
|
+
]);
|
|
111
115
|
this.fields$ = combineLatest([
|
|
112
116
|
this._canHaveAssignee$,
|
|
113
117
|
this._columns$,
|
|
@@ -118,6 +122,10 @@ export class DossierListComponent {
|
|
|
118
122
|
]).pipe(tap(([canHaveAssignee]) => {
|
|
119
123
|
this.canHaveAssignee = canHaveAssignee;
|
|
120
124
|
}), map(([canHaveAssignee, columns, hasEnvConfig, hasApiConfig, statuses]) => {
|
|
125
|
+
this._internalStatusKeys$.next([
|
|
126
|
+
...this._internalStatusKeys$.getValue(),
|
|
127
|
+
...columns.reduce((acc, curr) => curr.propertyName === this.INTERNAL_STATUS_COLUMN ? [...acc, curr.translationKey] : acc, []),
|
|
128
|
+
]);
|
|
121
129
|
const filteredAssigneeColumns = this.assigneeService.filterAssigneeColumns(columns, canHaveAssignee);
|
|
122
130
|
const listFields = this.columnService.mapDefinitionColumnsToListFields(filteredAssigneeColumns, hasEnvConfig, hasApiConfig);
|
|
123
131
|
const fieldsToReturn = this.assigneeService.addAssigneeListField(columns, listFields, canHaveAssignee);
|
|
@@ -198,7 +206,8 @@ export class DossierListComponent {
|
|
|
198
206
|
identifier: document.id,
|
|
199
207
|
})
|
|
200
208
|
.pipe(take(1)))).pipe(defaultIfEmpty([])),
|
|
201
|
-
|
|
209
|
+
this._internalStatusKeys$,
|
|
210
|
+
])), map(([res, documentsAuthorization, statusColumnKeys]) => ({
|
|
202
211
|
...res,
|
|
203
212
|
documents: {
|
|
204
213
|
...res.documents,
|
|
@@ -207,6 +216,7 @@ export class DossierListComponent {
|
|
|
207
216
|
locked: !documentsAuthorization[index],
|
|
208
217
|
})),
|
|
209
218
|
},
|
|
219
|
+
statusColumnKeys,
|
|
210
220
|
})), map((res) => {
|
|
211
221
|
this.paginationService.setCollectionSize(res.documents);
|
|
212
222
|
this.paginationService.checkPage(res.documents);
|
|
@@ -214,22 +224,27 @@ export class DossierListComponent {
|
|
|
214
224
|
return {
|
|
215
225
|
data: this.listService.mapDocuments(res.documents, res.hasEnvColumnConfig, res.hasApiColumnConfig),
|
|
216
226
|
statuses: res.allStatuses,
|
|
227
|
+
statusColumnKeys: res.statusColumnKeys,
|
|
217
228
|
};
|
|
218
229
|
}), map(res => {
|
|
219
230
|
if (!Array.isArray(res.data))
|
|
220
231
|
return res.data;
|
|
221
232
|
return res.data.map(item => {
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
return
|
|
233
|
+
const mappedInternalStatusColumns = res.statusColumnKeys.reduce((acc, curr) => {
|
|
234
|
+
const status = res.statuses.find((status) => status.key === item[curr] || status.key === item.status);
|
|
235
|
+
return !status
|
|
236
|
+
? acc
|
|
237
|
+
: {
|
|
238
|
+
...acc,
|
|
239
|
+
[curr]: {
|
|
240
|
+
content: status.title,
|
|
241
|
+
type: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
}, {});
|
|
225
245
|
return {
|
|
226
246
|
...item,
|
|
227
|
-
|
|
228
|
-
{
|
|
229
|
-
content: status.title,
|
|
230
|
-
type: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),
|
|
231
|
-
},
|
|
232
|
-
],
|
|
247
|
+
...mappedInternalStatusColumns,
|
|
233
248
|
};
|
|
234
249
|
});
|
|
235
250
|
}), tap(() => {
|
|
@@ -413,4 +428,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
413
428
|
type: ViewChild,
|
|
414
429
|
args: [Tabs]
|
|
415
430
|
}] } });
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUVMLG1CQUFtQixFQUduQix3QkFBd0IsRUFJeEIsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFXN0IsT0FBTyxFQUVMLGlDQUFpQyxFQUtqQyx1QkFBdUIsR0FFeEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQU0sSUFBSSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osY0FBYyxFQUNkLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBRUYsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQiwrQkFBK0IsR0FDaEMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixrQ0FBa0MsR0FDbkMsTUFBTSxtQkFBbUIsQ0FBQztBQUMz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SSxJQUFJLENBQUM7SUFDdEYsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGNBQXVCO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3pCLGNBQWM7WUFDWixDQUFDLENBQUM7Z0JBQ0UsV0FBVyxFQUFFLHNDQUFzQztnQkFDbkQsY0FBYztnQkFDZCxLQUFLLEVBQUUsZ0NBQWdDO2FBQ3hDO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLFdBQVcsRUFBRSxxQkFBcUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLGNBQWM7Z0JBQ3ZFLGNBQWM7Z0JBQ2QsS0FBSyxFQUFFLHFCQUFxQixJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssUUFBUTthQUM1RCxDQUNOLENBQUM7SUFDSixDQUFDOytHQWxqQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsK0NBVnBCO1lBQ1Qsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQiwwQkFBMEI7WUFDMUIsdUJBQXVCO1lBQ3ZCLDRCQUE0QjtZQUM1Qix3QkFBd0I7WUFDeEIsd0JBQXdCO1NBQ3pCLHNFQUdVLG1CQUFtQix1RkFDbkIsMkJBQTJCLGdGQUMzQixJQUFJLGdEQzVHakIsbWpPQXlNQTs7NEZEaEdhLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckI7d0JBQ1Qsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjttbEJBRytCLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNVLG9CQUFvQjtzQkFBM0QsU0FBUzt1QkFBQywyQkFBMkI7Z0JBQ3JCLGFBQWE7c0JBQTdCLFNBQVM7dUJBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9hY2Nlc3MtY29udHJvbCc7XG5pbXBvcnQge1xuICBCcmVhZGNydW1iU2VydmljZSxcbiAgQ2FyYm9uTGlzdENvbXBvbmVudCxcbiAgQ2FyYm9uTGlzdE5vUmVzdWx0c01lc3NhZ2UsXG4gIENhcmJvblBhZ2luYXRpb25TZWxlY3Rpb24sXG4gIENBU0VTX1dJVEhPVVRfU1RBVFVTX0tFWSxcbiAgTGlzdEZpZWxkLFxuICBQYWdlVGl0bGVTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBWaWV3VHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBc3NpZ25lZUZpbHRlcixcbiAgQ29uZmlnU2VydmljZSxcbiAgRGVmaW5pdGlvbkNvbHVtbixcbiAgRGlyZWN0aW9uLFxuICBEb3NzaWVyTGlzdFRhYixcbiAgU2VhcmNoRmllbGQsXG4gIFNlYXJjaEZpZWxkVmFsdWVzLFxuICBTb3J0U3RhdGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3RJbXBsLFxuICBEb2N1bWVudCxcbiAgRG9jdW1lbnRzLFxuICBEb2N1bWVudFNlcnZpY2UsXG4gIEludGVybmFsQ2FzZVN0YXR1cyxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzVXRpbHMsXG4gIFNwZWNpZmllZERvY3VtZW50cyxcbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtUYWIsIFRhYnN9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRlZmF1bHRJZkVtcHR5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBmb3JrSm9pbixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfRE9TU0lFUl9MSVNUX1RBQlMsXG4gIERPU1NJRVJfTElTVF9OT19SRVNVTFRTX01FU1NBR0UsXG4gIERPU1NJRVJfTElTVF9UQUJMRV9UUkFOU0xBVElPTlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDQU5fQ1JFQVRFX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLFxuICBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLFxufSBmcm9tICcuLi8uLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQge1xuICBEb3NzaWVyQnVsa0Fzc2lnblNlcnZpY2UsXG4gIERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICBEb3NzaWVyTGlzdEFzc2lnbmVlU2VydmljZSxcbiAgRG9zc2llckxpc3RQYWdpbmF0aW9uU2VydmljZSxcbiAgRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gIERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgRG9zc2llclBhcmFtZXRlclNlcnZpY2UsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9zc2llckxpc3RBY3Rpb25zQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLWxpc3QtYWN0aW9ucy9kb3NzaWVyLWxpc3QtYWN0aW9ucy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRG9zc2llckxpc3RTZXJ2aWNlLFxuICAgIERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICAgIERvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ2FyYm9uTGlzdENvbXBvbmVudCkgY2FyYm9uTGlzdDogQ2FyYm9uTGlzdENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChEb3NzaWVyTGlzdEFjdGlvbnNDb21wb25lbnQpIGxpc3RBY3Rpb25zQ29tcG9uZW50OiBEb3NzaWVyTGlzdEFjdGlvbnNDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoVGFicykgdGFic0NvbXBvbmVudDogVGFicztcblxuICBwdWJsaWMgYWN0aXZlVGFiOiBEb3NzaWVyTGlzdFRhYiA9IG51bGw7XG4gIHB1YmxpYyBsb2FkaW5nRmllbGRzID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdQYWdpbmF0aW9uID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdTZWFyY2hGaWVsZHMgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ0Fzc2lnbmVlRmlsdGVyID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdEb2N1bWVudEl0ZW1zID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdTdGF0dXNlcyA9IHRydWU7XG4gIHB1YmxpYyBwYWdpbmF0aW9uITogUGFnaW5hdGlvbjtcbiAgcHVibGljIGNhbkhhdmVBc3NpZ25lZSE6IGJvb2xlYW47XG4gIHB1YmxpYyB2aXNpYmxlRG9zc2llclRhYnM6IEFycmF5PERvc3NpZXJMaXN0VGFiPiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0VGFicyA9IERFRkFVTFRfRE9TU0lFUl9MSVNUX1RBQlM7XG4gIHB1YmxpYyByZWFkb25seSB0YWJsZVRyYW5zbGF0aW9ucyA9IERPU1NJRVJfTElTVF9UQUJMRV9UUkFOU0xBVElPTlM7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vUmVzdWx0c01lc3NhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZT4oXG4gICAgRE9TU0lFUl9MSVNUX05PX1JFU1VMVFNfTUVTU0FHRVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZVN0YXJ0QnV0dG9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Fzc2lnbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0NoYW5nZVBhZ2VNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dDaGFuZ2VUYWJNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZD4gfCBudWxsPiA9XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvY3VtZW50U2VhcmNoRmllbGRzJC5waXBlKHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nU2VhcmNoRmllbGRzID0gZmFsc2UpKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c2VzJCA9IHRoaXMuc3RhdHVzU2VydmljZS5jYXNlU3RhdHVzZXMkLnBpcGUoXG4gICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmdTdGF0dXNlcyA9IGZhbHNlKSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkU3RhdHVzZXMkID0gdGhpcy5zdGF0dXNTZXJ2aWNlLnNlbGVjdGVkQ2FzZVN0YXR1c2VzJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERvY3VtZW50SWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2NoZW1hJCA9IHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnREZWZpbml0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoZG9jdW1lbnREZWZpbml0aW9uID0+IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hKSxcbiAgICB0YXAoc2NoZW1hID0+IHtcbiAgICAgIGlmIChzY2hlbWE/LnRpdGxlKSB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRDdXN0b21QYWdlVGl0bGUoc2NoZW1hPy50aXRsZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhbkNyZWF0ZURvY3VtZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5yZXF1ZXN0UGVybWlzc2lvbihDQU5fQ1JFQVRFX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnREZWZpbml0aW9uLFxuICAgICAgICBpZGVudGlmaWVyOiBkb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaEZpZWxkVmFsdWVzJCA9IHRoaXMucGFyYW1ldGVyU2VydmljZS5zZWFyY2hGaWVsZFZhbHVlcyQ7XG4gIHB1YmxpYyByZWFkb25seSBhc3NpZ25lZUZpbHRlciQ6IE9ic2VydmFibGU8QXNzaWduZWVGaWx0ZXI+ID1cbiAgICB0aGlzLmFzc2lnbmVlU2VydmljZS5hc3NpZ25lZUZpbHRlciQucGlwZShcbiAgICAgIHRhcChhc3NpZ25lZUZpbHRlciA9PiAodGhpcy5hY3RpdmVUYWIgPSBhc3NpZ25lZUZpbHRlciBhcyBEb3NzaWVyTGlzdFRhYikpXG4gICAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb25DaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25QYWdpbmF0aW9uU2VsZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSB0YWJDaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEb3NzaWVyTGlzdFRhYiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdpbmF0aW9uJCA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbiQucGlwZShcbiAgICB0YXAocGFnaW5hdGlvbiA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24gPSBwYWdpbmF0aW9uO1xuICAgICAgdGhpcy5sb2FkaW5nUGFnaW5hdGlvbiA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhc0VudkNvbHVtbkNvbmZpZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxpc3RTZXJ2aWNlLmhhc0VudkNvbHVtbkNvbmZpZyQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhc0FwaUNvbHVtbkNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FuSGF2ZUFzc2lnbmVlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXNzaWduZWVTZXJ2aWNlLmNhbkhhdmVBc3NpZ25lZSQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnMkOiBPYnNlcnZhYmxlPEFycmF5PERlZmluaXRpb25Db2x1bW4+PiA9XG4gICAgdGhpcy5saXN0U2VydmljZS5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5jb2x1bW5TZXJ2aWNlLmdldERlZmluaXRpb25Db2x1bW5zKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICApLFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuX2hhc0FwaUNvbHVtbkNvbmZpZyQubmV4dChyZXMuaGFzQXBpQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHJlcy5jb2x1bW5zO1xuICAgICAgfSksXG4gICAgICB0YXAoY29sdW1ucyA9PiB7XG4gICAgICAgIHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZXRQYWdpbmF0aW9uKGNvbHVtbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1N0YXR1c1NlbGVjdG9yJCA9IHRoaXMuc3RhdHVzU2VydmljZS5zaG93U3RhdHVzU2VsZWN0b3IkO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c0ZpZWxkOiBMaXN0RmllbGQgPSB7XG4gICAgbGFiZWw6ICdkb2N1bWVudC5zdGF0dXMnLFxuICAgIGtleTogJ2ludGVybmFsU3RhdHVzJyxcbiAgICB2aWV3VHlwZTogVmlld1R5cGUuVEFHUyxcbiAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgfTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8TGlzdEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9jYW5IYXZlQXNzaWduZWUkLFxuICAgIHRoaXMuX2NvbHVtbnMkLFxuICAgIHRoaXMuX2hhc0VudkNvbHVtbkNvbmZpZyQsXG4gICAgdGhpcy5faGFzQXBpQ29sdW1uQ29uZmlnJCxcbiAgICB0aGlzLnN0YXR1c2VzJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICB0YXAoKFtjYW5IYXZlQXNzaWduZWVdKSA9PiB7XG4gICAgICB0aGlzLmNhbkhhdmVBc3NpZ25lZSA9IGNhbkhhdmVBc3NpZ25lZTtcbiAgICB9KSxcbiAgICBtYXAoKFtjYW5IYXZlQXNzaWduZWUsIGNvbHVtbnMsIGhhc0VudkNvbmZpZywgaGFzQXBpQ29uZmlnLCBzdGF0dXNlc10pID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQXNzaWduZWVDb2x1bW5zID0gdGhpcy5hc3NpZ25lZVNlcnZpY2UuZmlsdGVyQXNzaWduZWVDb2x1bW5zKFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBjYW5IYXZlQXNzaWduZWVcbiAgICAgICk7XG4gICAgICBjb25zdCBsaXN0RmllbGRzID0gdGhpcy5jb2x1bW5TZXJ2aWNlLm1hcERlZmluaXRpb25Db2x1bW5zVG9MaXN0RmllbGRzKFxuICAgICAgICBmaWx0ZXJlZEFzc2lnbmVlQ29sdW1ucyxcbiAgICAgICAgaGFzRW52Q29uZmlnLFxuICAgICAgICBoYXNBcGlDb25maWdcbiAgICAgICk7XG4gICAgICBjb25zdCBmaWVsZHNUb1JldHVybiA9IHRoaXMuYXNzaWduZWVTZXJ2aWNlLmFkZEFzc2lnbmVlTGlzdEZpZWxkKFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBsaXN0RmllbGRzLFxuICAgICAgICBjYW5IYXZlQXNzaWduZWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBzdGF0dXNlcy5zb21lKFxuICAgICAgICAoc3RhdHVzOiBJbnRlcm5hbENhc2VTdGF0dXMpID0+IHN0YXR1cy5rZXkgIT09IENBU0VTX1dJVEhPVVRfU1RBVFVTX0tFWVxuICAgICAgKSAmJiAhaGFzQXBpQ29uZmlnXG4gICAgICAgID8gWy4uLmZpZWxkc1RvUmV0dXJuLCB0aGlzLl9zdGF0dXNGaWVsZF1cbiAgICAgICAgOiBmaWVsZHNUb1JldHVybjtcbiAgICB9KSxcbiAgICB0YXAobGlzdEZpZWxkcyA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0TGlzdEZpZWxkID0gbGlzdEZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLmRlZmF1bHQpO1xuICAgICAgLy8gc2V0IGRlZmF1bHQgc29ydCBzdGF0ZSBpZiBubyBwYWdpbmF0aW9uIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHNvcnRpbmcgYXJlIGF2YWlsYWJsZVxuICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLnF1ZXJ5UGFnaW5hdGlvblBhcmFtcyRcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShxdWVyeVBhZ2luYXRpb25QYXJhbXMgPT4ge1xuICAgICAgICAgIGlmIChkZWZhdWx0TGlzdEZpZWxkICYmICFxdWVyeVBhZ2luYXRpb25QYXJhbXM/LnNvcnQ/LmlzU29ydGluZykge1xuICAgICAgICAgICAgY29uc3Qgc29ydERpcmVjdGlvbiA9XG4gICAgICAgICAgICAgIHR5cGVvZiBkZWZhdWx0TGlzdEZpZWxkLmRlZmF1bHQgPT09ICdzdHJpbmcnID8gZGVmYXVsdExpc3RGaWVsZC5kZWZhdWx0IDogJ0RFU0MnO1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zb3J0Q2hhbmdlZCh7XG4gICAgICAgICAgICAgIGlzU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgc3RhdGU6IHtuYW1lOiBkZWZhdWx0TGlzdEZpZWxkLmtleSwgZGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uIGFzIERpcmVjdGlvbn0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmdGaWVsZHMgPSBmYWxzZTtcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50U2VhcmNoUmVxdWVzdCQ6IE9ic2VydmFibGU8QWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3Q+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wYWdpbmF0aW9uJCwgdGhpcy5saXN0U2VydmljZS5kb2N1bWVudERlZmluaXRpb25OYW1lJF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtwYWdpbmF0aW9uXSkgPT4gISFwYWdpbmF0aW9uKSxcbiAgICAgIG1hcCgoW3BhZ2luYXRpb24sIGRvY3VtZW50RGVmaW5pdGlvbk5hbWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBwYWdpbmF0aW9uLnBhZ2UgLSAxO1xuXG4gICAgICAgIHJldHVybiBuZXcgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3RJbXBsKFxuICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgcGFnZSA+PSAwID8gcGFnZSA6IDAsXG4gICAgICAgICAgcGFnaW5hdGlvbi5zaXplLFxuICAgICAgICAgIHBhZ2luYXRpb24uc29ydFxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEl0ZW1zJDogT2JzZXJ2YWJsZTxhbnlbXT4gPSB0aGlzLmxpc3RTZXJ2aWNlLmNoZWNrUmVmcmVzaCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLl9kb2N1bWVudFNlYXJjaFJlcXVlc3QkLFxuICAgICAgICB0aGlzLmFzc2lnbmVlRmlsdGVyJCxcbiAgICAgICAgdGhpcy5zZWFyY2hGaWVsZFZhbHVlcyQsXG4gICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZWxlY3RlZENhc2VTdGF0dXNlcyQsXG4gICAgICAgIHRoaXMubGlzdFNlcnZpY2UuZm9yY2VSZWZyZXNoJCxcbiAgICAgICAgdGhpcy5faGFzRW52Q29sdW1uQ29uZmlnJCxcbiAgICAgICAgdGhpcy5faGFzQXBpQ29sdW1uQ29uZmlnJCxcbiAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmNhc2VTdGF0dXNlcyQsXG4gICAgICBdKS5waXBlKGRlYm91bmNlVGltZSg1MCkpXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgIChcbiAgICAgICAgW1xuICAgICAgICAgIHByZXZTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgIHByZXZBc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICBwcmV2U2VhcmNoRmllbGRWYWx1ZXMsXG4gICAgICAgICAgcHJldlNlbGVjdGVkU3RhdHVzZXMsXG4gICAgICAgICAgcHJldkZvcmNlUmVmcmVzaCxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIGN1cnJTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgIGN1cnJBc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICBjdXJyU2VhcmNoRmllbGRWYWx1ZXMsXG4gICAgICAgICAgY3VyclNlbGVjdGVkU3RhdHVzZXMsXG4gICAgICAgICAgY3VyckZvcmNlUmVmcmVzaCxcbiAgICAgICAgXVxuICAgICAgKSA9PlxuICAgICAgICBpc0VxdWFsKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLnByZXZTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgYXNzaWduZWU6IHByZXZBc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgIC4uLnByZXZTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICAgIC4uLnByZXZTZWxlY3RlZFN0YXR1c2VzLm1hcCgoc3RhdHVzOiBJbnRlcm5hbENhc2VTdGF0dXMpID0+IHN0YXR1cy5rZXkpLFxuICAgICAgICAgICAgZm9yY2VSZWZyZXNoOiBwcmV2Rm9yY2VSZWZyZXNoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uY3VyclNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICBhc3NpZ25lZTogY3VyckFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgLi4uY3VyclNlYXJjaEZpZWxkVmFsdWVzLFxuICAgICAgICAgICAgLi4uY3VyclNlbGVjdGVkU3RhdHVzZXMubWFwKChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSksXG4gICAgICAgICAgICBmb3JjZVJlZnJlc2g6IGN1cnJGb3JjZVJlZnJlc2gsXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoXG4gICAgICAoW1xuICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICBzZWFyY2hWYWx1ZXMsXG4gICAgICAgIHNlbGVjdGVkU3RhdHVzZXMsXG4gICAgICAgIF8sXG4gICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZyxcbiAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnLFxuICAgICAgICBhbGxTdGF0dXNlcyxcbiAgICAgIF0pID0+IHtcbiAgICAgICAgY29uc3Qgb2JzRW52OiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoaGFzRW52Q29sdW1uQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgb2JzQXBpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YoaGFzQXBpQ29sdW1uQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzS2V5czogKHN0cmluZyB8IG51bGwpW10gPSBzZWxlY3RlZFN0YXR1c2VzLm1hcCgoc3RhdHVzOiBJbnRlcm5hbENhc2VTdGF0dXMpID0+XG4gICAgICAgICAgc3RhdHVzLmtleSA9PT0gQ0FTRVNfV0lUSE9VVF9TVEFUVVNfS0VZID8gbnVsbCA6IHN0YXR1cy5rZXlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKChPYmplY3Qua2V5cyhzZWFyY2hWYWx1ZXMpIHx8IFtdKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGRvY3VtZW50czpcbiAgICAgICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnIHx8ICFoYXNBcGlDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50c1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5tYXBTZWFyY2hWYWx1ZXNUb0ZpbHRlcnMoc2VhcmNoVmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzS2V5c1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0U3BlY2lmaWVkRG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLm1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhzZWFyY2hWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNLZXlzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnOiBvYnNFbnYsXG4gICAgICAgICAgICBoYXNBcGlDb2x1bW5Db25maWc6IG9ic0FwaSxcbiAgICAgICAgICAgIGlzU2VhcmNoUmVzdWx0OiBvZih0cnVlKSxcbiAgICAgICAgICAgIGFsbFN0YXR1c2VzOiBvZihhbGxTdGF0dXNlcyksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oe1xuICAgICAgICAgIGRvY3VtZW50czpcbiAgICAgICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZyB8fCAhaGFzQXBpQ29sdW1uQ29uZmlnXG4gICAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c0tleXNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0U3BlY2lmaWVkRG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnRTZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c0tleXNcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgIGhhc0VudkNvbHVtbkNvbmZpZzogb2JzRW52LFxuICAgICAgICAgIGhhc0FwaUNvbHVtbkNvbmZpZzogb2JzQXBpLFxuICAgICAgICAgIGlzU2VhcmNoUmVzdWx0OiBvZihmYWxzZSksXG4gICAgICAgICAgYWxsU3RhdHVzZXM6IG9mKGFsbFN0YXR1c2VzKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKSxcbiAgICBzd2l0Y2hNYXAocmVzID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgb2YocmVzKSxcbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgcmVzLmRvY3VtZW50cy5jb250ZW50Lm1hcChkb2N1bWVudCA9PlxuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZVxuICAgICAgICAgICAgICAucmVxdWVzdFBlcm1pc3Npb24oQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgICAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGRvY3VtZW50LmlkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKGRlZmF1bHRJZkVtcHR5KFtdIGFzIGJvb2xlYW5bXSkpLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3JlcywgZG9jdW1lbnRzQXV0aG9yaXphdGlvbl0pID0+ICh7XG4gICAgICAuLi5yZXMsXG4gICAgICBkb2N1bWVudHM6IHtcbiAgICAgICAgLi4ucmVzLmRvY3VtZW50cyxcbiAgICAgICAgY29udGVudDogcmVzLmRvY3VtZW50cy5jb250ZW50Lm1hcCgoZG9jdW1lbnQsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLmRvY3VtZW50LFxuICAgICAgICAgIGxvY2tlZDogIWRvY3VtZW50c0F1dGhvcml6YXRpb25baW5kZXhdLFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgIH0pKSxcbiAgICBtYXAoXG4gICAgICAocmVzOiB7XG4gICAgICAgIGRvY3VtZW50czogRG9jdW1lbnRzIHwgU3BlY2lmaWVkRG9jdW1lbnRzO1xuICAgICAgICBoYXNFbnZDb2x1bW5Db25maWc6IGJvb2xlYW47XG4gICAgICAgIGhhc0FwaUNvbHVtbkNvbmZpZzogYm9vbGVhbjtcbiAgICAgICAgaXNTZWFyY2hSZXN1bHQ6IGJvb2xlYW47XG4gICAgICAgIHNlbGVjdGVkU3RhdHVzZXM6IEludGVybmFsQ2FzZVN0YXR1c1tdO1xuICAgICAgICBhbGxTdGF0dXNlczogSW50ZXJuYWxDYXNlU3RhdHVzW107XG4gICAgICB9KSA9PiB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2V0Q29sbGVjdGlvblNpemUocmVzLmRvY3VtZW50cyk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY2hlY2tQYWdlKHJlcy5kb2N1bWVudHMpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5vUmVzdWx0c01lc3NhZ2UocmVzLmlzU2VhcmNoUmVzdWx0KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHRoaXMubGlzdFNlcnZpY2UubWFwRG9jdW1lbnRzKFxuICAgICAgICAgICAgcmVzLmRvY3VtZW50cyxcbiAgICAgICAgICAgIHJlcy5oYXNFbnZDb2x1bW5Db25maWcsXG4gICAgICAgICAgICByZXMuaGFzQXBpQ29sdW1uQ29uZmlnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzdGF0dXNlczogcmVzLmFsbFN0YXR1c2VzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICksXG4gICAgbWFwKHJlcyA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzLmRhdGEpKSByZXR1cm4gcmVzLmRhdGE7XG5cbiAgICAgIHJldHVybiByZXMuZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHJlcy5zdGF0dXNlcy5maW5kKFxuICAgICAgICAgIChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT5cbiAgICAgICAgICAgIHN0YXR1cy5rZXkgPT09IGl0ZW0uaW50ZXJuYWxTdGF0dXMgfHwgc3RhdHVzLmtleSA9PT0gaXRlbS5zdGF0dXNcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFzdGF0dXMpIHJldHVybiBpdGVtO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHN0YXR1cy50aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogSW50ZXJuYWxDYXNlU3RhdHVzVXRpbHMuZ2V0VGFnVHlwZUZyb21JbnRlcm5hbENhc2VTdGF0dXNDb2xvcihzdGF0dXMuY29sb3IpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ0Fzc2lnbmVlRmlsdGVyID0gZmFsc2U7XG4gICAgICB0aGlzLmxvYWRpbmdEb2N1bWVudEl0ZW1zID0gZmFsc2U7XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIF9wcmV2aW91c0RvY3VtZW50RGVmaW5pdGlvbk5hbWUhOiBzdHJpbmc7XG4gIHByaXZhdGUgX2RvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhc3NpZ25lZVNlcnZpY2U6IERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnVsa0Fzc2lnblNlcnZpY2U6IERvc3NpZXJCdWxrQXNzaWduU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbHVtblNlcnZpY2U6IERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdFNlcnZpY2U6IERvc3NpZXJMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdpbmF0aW9uU2VydmljZTogRG9zc2llckxpc3RQYWdpbmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlclNlcnZpY2U6IERvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzU2VydmljZTogRG9zc2llckxpc3RTdGF0dXNTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWaXNpYmxlVGFicygpO1xuICAgIHRoaXMub3BlbkRvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5lbmFibGVSZXNldCgpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKHNlYXJjaEZpZWxkVmFsdWVzOiBTZWFyY2hGaWVsZFZhbHVlcyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2goc2VhcmNoRmllbGRWYWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIHJvd0NsaWNrKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLmNhY2hlUXVlcnlQYXJhbXMoXG4gICAgICAgIGAvZG9zc2llcnMvJHtkb2N1bWVudERlZmluaXRpb25OYW1lfWAsXG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNcbiAgICAgICk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVycy8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9L2RvY3VtZW50LyR7aXRlbS5pZH1gXSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlKHRhYjogRG9zc2llckxpc3RUYWIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlVGFiKSB7XG4gICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgICAgIHRoaXMudXBkYXRlTm9SZXN1bHRzTWVzc2FnZShmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiLnRvTG93ZXJDYXNlKCkgPT09IHRhYi50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FyYm9uTGlzdC5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpKSB7XG4gICAgICB0aGlzLnNob3dDaGFuZ2VUYWJNb2RhbCQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMudGFiQ2hhbmdlJC5uZXh0KHRhYik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZVRhYkNvbmZpcm0odGFiKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZVRhYkNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZUYWI6IFRhYiB8IHVuZGVmaW5lZCA9IHRoaXMudGFic0NvbXBvbmVudC50YWJzLmZpbmQoXG4gICAgICAodGFiOiBUYWIpID0+IHRhYi5pZCA9PT0gdGhpcy5hY3RpdmVUYWJcbiAgICApO1xuXG4gICAgaWYgKCFwcmV2VGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50YWJzQ29tcG9uZW50LnRhYnMuZmluZCgodGFiOiBUYWIpID0+IHRhYi5hY3RpdmUpLmFjdGl2ZSA9IGZhbHNlO1xuICAgIHByZXZUYWIuYWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhcmJvbkxpc3Q/Lm1vZGVsLnNlbGVjdGVkUm93c0NvdW50KCkpIHtcbiAgICAgIHRoaXMuc2hvd0NoYW5nZVBhZ2VNb2RhbCQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZSQubmV4dCh7cGFnZSwgc2l6ZTogdGhpcy5wYWdpbmF0aW9uLnNpemV9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5wYWdlQ2hhbmdlKHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIHBhZ2VTaXplQ2hhbmdlKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhcmJvbkxpc3Q/Lm1vZGVsLnNlbGVjdGVkUm93c0NvdW50KCkpIHtcbiAgICAgIHRoaXMuc2hvd0NoYW5nZVBhZ2VNb2RhbCQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZSQubmV4dCh7cGFnZTogdGhpcy5wYWdpbmF0aW9uLnBhZ2UsIHNpemV9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5wYWdlU2l6ZUNoYW5nZShzaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0Q2hhbmdlZChuZXdTb3J0U3RhdGU6IFNvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc29ydENoYW5nZWQobmV3U29ydFN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VUYWJDb25maXJtKHRhYjogRG9zc2llckxpc3RUYWIpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmdBc3NpZ25lZUZpbHRlciA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgdGhpcy51cGRhdGVOb1Jlc3VsdHNNZXNzYWdlKGZhbHNlKTtcbiAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNldFBhZ2UoMSk7XG4gICAgdGhpcy5hc3NpZ25lZVNlcnZpY2Uuc2V0QXNzaWduZWVGaWx0ZXIodGFiKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93QXNzaWduTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERvY3VtZW50SWRzJC5uZXh0KFxuICAgICAgdGhpcy5jYXJib25MaXN0LnNlbGVjdGVkSXRlbXMubWFwKChkb2N1bWVudDogRG9jdW1lbnQpID0+IGRvY3VtZW50LmlkKVxuICAgICk7XG4gICAgdGhpcy5zaG93QXNzaWduTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZUV2ZW50KGFzc2lnbmVlSWQ6IG51bGwgfCBzdHJpbmcsIGRvY3VtZW50SWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0Fzc2lnbk1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICBpZiAoIWFzc2lnbmVlSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1bGtBc3NpZ25TZXJ2aWNlLmJ1bGtBc3NpZ24oYXNzaWduZWVJZCwgZG9jdW1lbnRJZHMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcmNlUmVmcmVzaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlUGFnZUNvbmZpcm0ocGFnaW5hdGlvbjogQ2FyYm9uUGFnaW5hdGlvblNlbGVjdGlvbik6IHZvaWQge1xuICAgIGlmIChwYWdpbmF0aW9uLnNpemUgIT09IHRoaXMucGFnaW5hdGlvbi5zaXplKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnBhZ2VTaXplQ2hhbmdlKHBhZ2luYXRpb24uc2l6ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5wYWdlQ2hhbmdlKHBhZ2luYXRpb24ucGFnZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnREb3NzaWVyKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdEFjdGlvbnNDb21wb25lbnQuc3RhcnREb3NzaWVyKCk7XG4gIH1cblxuICBwdWJsaWMgZm9yY2VSZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdFNlcnZpY2UuZm9yY2VSZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZFN0YXR1c2VzQ2hhbmdlKHN0YXR1c2VzOiBJbnRlcm5hbENhc2VTdGF0dXNbXSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXRTZWxlY3RlZFN0YXR1c2VzKHN0YXR1c2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0YXJ0QnV0dG9uRGlzYWJsZUV2ZW50KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlU3RhcnRCdXR0b24kLm5leHQoZGlzYWJsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXNcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHBhcmFtczogUGFyYW1zKSA9PiBwYXJhbXM/LmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLFxuICAgICAgICBmaWx0ZXIoZG9jRGVmTmFtZSA9PiAhIWRvY0RlZk5hbWUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRvY3VtZW50RGVmaW5pdG9uTmFtZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c0RvY3VtZW50RGVmaW5pdGlvbk5hbWUpIHtcbiAgICAgICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuY2xlYXJQYXJhbWV0ZXJzKCk7XG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmNsZWFyU2VhcmNoRmllbGRWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c0RvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSBkb2N1bWVudERlZmluaXRvbk5hbWU7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY2xlYXJQYWdpbmF0aW9uKCk7XG4gICAgICAgIHRoaXMuYXNzaWduZWVTZXJ2aWNlLnJlc2V0QXNzaWduZWVGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5zZXREb2N1bWVudERlZmluaXRpb25OYW1lKGRvY3VtZW50RGVmaW5pdG9uTmFtZSk7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldExvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nRmllbGRzID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmdQYWdpbmF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmdTZWFyY2hGaWVsZHMgPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ0Fzc2lnbmVlRmlsdGVyID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmdEb2N1bWVudEl0ZW1zID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmdTdGF0dXNlcyA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNldFZpc2libGVUYWJzKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZURvc3NpZXJUYWJzID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZz8udmlzaWJsZURvc3NpZXJMaXN0VGFicyB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVOb1Jlc3VsdHNNZXNzYWdlKGlzU2VhcmNoUmVzdWx0OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5ub1Jlc3VsdHNNZXNzYWdlJC5uZXh0KFxuICAgICAgaXNTZWFyY2hSZXN1bHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ2Rvc3NpZXIubm9SZXN1bHRzLnNlYXJjaC5kZXNjcmlwdGlvbicsXG4gICAgICAgICAgICBpc1NlYXJjaFJlc3VsdCxcbiAgICAgICAgICAgIHRpdGxlOiAnZG9zc2llci5ub1Jlc3VsdHMuc2VhcmNoLnRpdGxlJyxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBkb3NzaWVyLm5vUmVzdWx0cy4ke3RoaXMuYWN0aXZlVGFiID8/ICdBTEwnfS5kZXNjcmlwdGlvbmAsXG4gICAgICAgICAgICBpc1NlYXJjaFJlc3VsdCxcbiAgICAgICAgICAgIHRpdGxlOiBgZG9zc2llci5ub1Jlc3VsdHMuJHt0aGlzLmFjdGl2ZVRhYiA/PyAnQUxMJ30udGl0bGVgLFxuICAgICAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgZG9jdW1lbnRJdGVtczogZG9jdW1lbnRJdGVtcyQgfCBhc3luYyxcbiAgICBub1Jlc3VsdHNNZXNzYWdlOiBub1Jlc3VsdHNNZXNzYWdlJCB8IGFzeW5jLFxuICAgIHNlYXJjaEZpZWxkczogc2VhcmNoRmllbGRzJCB8IGFzeW5jLFxuICAgIHNjaGVtYTogc2NoZW1hJCB8IGFzeW5jLFxuICAgIHNob3dBc3NpZ25Nb2RhbDogc2hvd0Fzc2lnbk1vZGFsJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkRG9jdW1lbnRJZHM6IHNlbGVjdGVkRG9jdW1lbnRJZHMkIHwgYXN5bmMsXG4gICAgc3RhdHVzZXM6IHN0YXR1c2VzJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkU3RhdHVzZXM6IHNlbGVjdGVkU3RhdHVzZXMkIHwgYXN5bmMsXG4gICAgc2hvd1N0YXR1c1NlbGVjdG9yOiBzaG93U3RhdHVzU2VsZWN0b3IkIHwgYXN5bmMsXG4gICAgbG9hZGVkOlxuICAgICAgIWxvYWRpbmdGaWVsZHMgJiZcbiAgICAgICFsb2FkaW5nUGFnaW5hdGlvbiAmJlxuICAgICAgIWxvYWRpbmdTZWFyY2hGaWVsZHMgJiZcbiAgICAgICFsb2FkaW5nQXNzaWduZWVGaWx0ZXIgJiZcbiAgICAgICFsb2FkaW5nRG9jdW1lbnRJdGVtcyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50IHB0LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTAgbWItNVwiPlxuICAgICAgICA8dmFsdGltby1kb3NzaWVyLWxpc3QtYWN0aW9uc1xuICAgICAgICAgIFtsb2FkaW5nXT1cIiFvYnMubG9hZGVkXCJcbiAgICAgICAgICAoZm9ybUZsb3dDb21wbGV0ZSk9XCJmb3JjZVJlZnJlc2goKVwiXG4gICAgICAgICAgKHN0YXJ0QnV0dG9uRGlzYWJsZUV2ZW50KT1cIm9uU3RhcnRCdXR0b25EaXNhYmxlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgID48L3ZhbHRpbW8tZG9zc2llci1saXN0LWFjdGlvbnM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hGaWVsZHM7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRlZDsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3Q7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1bGtBc3NpZ25Nb2RhbDsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGFuZ2VQYWdlTW9kYWxcIj48L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhbmdlVGFiTW9kYWxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkcyBsZXQtb2JzPVwib2JzXCI+XG4gIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgPHZhbHRpbW8tc2VhcmNoLWZpZWxkc1xuICAgICAgW3NlYXJjaEZpZWxkc109XCJvYnMuc2VhcmNoRmllbGRzXCJcbiAgICAgIChkb1NlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJkb2N1bWVudERlZmluaXRpb25OYW1lJCB8IGFzeW5jXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVzXT1cInNlYXJjaEZpZWxkVmFsdWVzJCB8IGFzeW5jXCJcbiAgICAgIFtpbnB1dERpc2FibGVkXT1cIiFvYnMubG9hZGVkXCJcbiAgICAgIFtleHRlcm5hbFNlYXJjaEZpZWxkXT1cIm9icy5zaG93U3RhdHVzU2VsZWN0b3JcIlxuICAgID5cbiAgICAgIDx2YWx0aW1vLXN0YXR1cy1zZWxlY3RvclxuICAgICAgICAqbmdJZj1cIm9icy5zaG93U3RhdHVzU2VsZWN0b3JcIlxuICAgICAgICBbc3RhdHVzZXNdPVwib2JzLnN0YXR1c2VzXCJcbiAgICAgICAgW3NlbGVjdGVkU3RhdHVzZXNdPVwib2JzLnNlbGVjdGVkU3RhdHVzZXNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIW9icy5sb2FkZWRcIlxuICAgICAgICAoc2VsZWN0ZWRTdGF0dXNlc0NoYW5nZUV2ZW50KT1cIm9uU2VsZWN0ZWRTdGF0dXNlc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3ZhbHRpbW8tc3RhdHVzLXNlbGVjdG9yPlxuICAgIDwvdmFsdGltby1zZWFyY2gtZmllbGRzPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICBbaGVhZGVyXT1cImZhbHNlXCJcbiAgICBbaW5pdGlhbFNvcnRTdGF0ZV09XCJwYWdpbmF0aW9uLnNvcnRcIlxuICAgIFtpdGVtc109XCJvYnMuZG9jdW1lbnRJdGVtc1wiXG4gICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb3NzaWVyTGlzdFwiXG4gICAgbG9ja2VkVG9vbHRpcFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5yb3dMb2NrZWRcIlxuICAgIFtzaG93U2VsZWN0aW9uQ29sdW1uXT1cImNhbkhhdmVBc3NpZ25lZVwiXG4gICAgW3RhYmxlVHJhbnNsYXRpb25zXT1cInRhYmxlVHJhbnNsYXRpb25zXCJcbiAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwicGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAocGFnaW5hdGlvblNldCk9XCJwYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2tlZCk9XCJyb3dDbGljaygkZXZlbnQpXCJcbiAgICAoc29ydENoYW5nZWQpPVwic29ydENoYW5nZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGNhcmJvblRvb2xiYXJBY3Rpb25zPlxuICAgICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNob3dBc3NpZ25Nb2RhbCgpXCI+XG4gICAgICAgIHt7ICdkb3NzaWVyLmJ1bGtBc3NpZ24uYXNzaWduJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRvc3NpZXJMaXN0QWN0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5pc1NlYXJjaFJlc3VsdCA/IG51bGwgOiBkb3NzaWVyTGlzdEFjdGlvbnNcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIm9icy5ub1Jlc3VsdHNNZXNzYWdlLmRlc2NyaXB0aW9uIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS50aXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gICAgPGRpdiB0YWJzICpuZ0lmPVwiY2FuSGF2ZUFzc2lnbmVlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFic1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYnM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3NpZ25lZUZpbHRlciQgfCBhc3luYyBhcyBhc3NpZ25lZUZpbHRlclwiPlxuICAgIDxjZHMtdGFic1xuICAgICAgKm5nSWY9XCIhdmlzaWJsZURvc3NpZXJUYWJzOyBlbHNlIGNvbmZpZ3VyZWRUYWJzXCJcbiAgICAgIHR5cGU9XCJjb250YWluZWRcIlxuICAgICAgY2xhc3M9XCJkb3NzaWVyLWxpc3QtdGFic1wiXG4gICAgPlxuICAgICAgPGNkcy10YWJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBkZWZhdWx0VGFiczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCJcbiAgICAgICAgW2FjdGl2ZV09XCJhc3NpZ25lZUZpbHRlciA9PT0gdGFiXCJcbiAgICAgICAgaGVhZGluZz1cInt7ICdkb3NzaWVyLnRhYnMuJyArIHRhYiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFtpZF09XCJ0YWJcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwidGFiQ2hhbmdlKHRhYilcIlxuICAgICAgPjwvY2RzLXRhYj5cbiAgICA8L2Nkcy10YWJzPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZmlndXJlZFRhYnM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3NpZ25lZUZpbHRlciQgfCBhc3luYyBhcyBhc3NpZ25lZUZpbHRlclwiPlxuICAgIDxjZHMtdGFicyB0eXBlPVwiY29udGFpbmVkXCIgY2xhc3M9XCJkb3NzaWVyLWxpc3QtdGFic1wiPlxuICAgICAgPGNkcy10YWJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlRG9zc2llclRhYnM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXG4gICAgICAgIFthY3RpdmVdPVwiYXNzaWduZWVGaWx0ZXIgPT09IHRhYlwiXG4gICAgICAgIGhlYWRpbmc9XCJ7eyAnZG9zc2llci50YWJzLicgKyB0YWIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbaWRdPVwidGFiXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cInRhYkNoYW5nZSh0YWIpXCJcbiAgICAgID48L2Nkcy10YWI+XG4gICAgPC9jZHMtdGFicz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdcbiAgPjx2YWx0aW1vLWNhcmJvbi1saXN0IFtsb2FkaW5nXT1cInRydWVcIj5cbiAgICA8ZGl2IHRhYnMgKm5nSWY9XCJjYW5IYXZlQXNzaWduZWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+IDwvdmFsdGltby1jYXJib24tbGlzdFxuPjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnVsa0Fzc2lnbk1vZGFsIGxldC1vYnM9XCJvYnNcIj5cbiAgPHZhbHRpbW8tZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbFxuICAgIFtkb2N1bWVudElkc109XCJvYnMuc2VsZWN0ZWREb2N1bWVudElkc1wiXG4gICAgW29wZW5dPVwib2JzLnNob3dBc3NpZ25Nb2RhbFwiXG4gICAgKGNsb3NlRXZlbnQpPVwib25DbG9zZUV2ZW50KCRldmVudCwgb2JzLnNlbGVjdGVkRG9jdW1lbnRJZHMpXCJcbiAgPjwvdmFsdGltby1kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjaGFuZ2VQYWdlTW9kYWw+XG4gIDx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICAgIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVBhZ2VNb2RhbC5jb25maXJtXCJcbiAgICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVBhZ2VNb2RhbC5jb250ZW50XCJcbiAgICBbb3V0cHV0T25Db25maXJtXT1cInBhZ2luYXRpb25DaGFuZ2UkIHwgYXN5bmNcIlxuICAgIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93Q2hhbmdlUGFnZU1vZGFsJFwiXG4gICAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlUGFnZU1vZGFsLnRpdGxlXCJcbiAgICAoY29uZmlybUV2ZW50KT1cIm9uQ2hhbmdlUGFnZUNvbmZpcm0oJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjaGFuZ2VUYWJNb2RhbD5cbiAgPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gICAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlVGFiTW9kYWwuY29uZmlybVwiXG4gICAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VUYWJNb2RhbC5jb250ZW50XCJcbiAgICBbb3V0cHV0T25Db25maXJtXT1cInRhYkNoYW5nZSQgfCBhc3luY1wiXG4gICAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dDaGFuZ2VUYWJNb2RhbCRcIlxuICAgIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVRhYk1vZGFsLnRpdGxlXCJcbiAgICAoY2FuY2VsRXZlbnQpPVwib25DaGFuZ2VUYWJDYW5jZWwoKVwiXG4gICAgKGNvbmZpcm1FdmVudCk9XCJvbkNoYW5nZVRhYkNvbmZpcm0oJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkb3NzaWVyTGlzdEFjdGlvbnM+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cImNhbkNyZWF0ZURvY3VtZW50JCB8IGFzeW5jXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVN0YXJ0QnV0dG9uJCB8IGFzeW5jXCJcbiAgICAoY2xpY2spPVwic3RhcnREb3NzaWVyKClcIlxuICA+XG4gICAge3sgJ1N0YXJ0IERvc3NpZXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1saXN0L2Rvc3NpZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbGlzdC9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsU0FBUyxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUVMLG1CQUFtQixFQUduQix3QkFBd0IsRUFJeEIsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFXN0IsT0FBTyxFQUVMLGlDQUFpQyxFQUtqQyx1QkFBdUIsR0FFeEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQU0sSUFBSSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osY0FBYyxFQUNkLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBRUYsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQiwrQkFBK0IsR0FDaEMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixrQ0FBa0MsR0FDbkMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQiw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsdUJBQXVCLEdBQ3hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFnQm5HLE1BQU0sT0FBTyxvQkFBb0I7SUEwWC9CLFlBQ21CLGVBQTJDLEVBQzNDLGlCQUFvQyxFQUNwQyxpQkFBMkMsRUFDM0MsYUFBbUMsRUFDbkMsYUFBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsV0FBK0IsRUFDL0IsZ0JBQWtDLEVBQ2xDLGlCQUErQyxFQUMvQyxnQkFBeUMsRUFDekMsS0FBcUIsRUFDckIsTUFBYyxFQUNkLGFBQXVDLEVBQ3ZDLGdCQUFrQyxFQUNsQyxpQkFBb0MsRUFDcEMsYUFBdUM7UUFmdkMsb0JBQWUsR0FBZixlQUFlLENBQTRCO1FBQzNDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBOEI7UUFDL0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUN6QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFyWW5ELGNBQVMsR0FBbUIsSUFBSSxDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6Qix3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDM0IsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUd2Qix1QkFBa0IsR0FBaUMsSUFBSSxDQUFDO1FBRS9DLGdCQUFXLEdBQUcseUJBQXlCLENBQUM7UUFDeEMsc0JBQWlCLEdBQUcsK0JBQStCLENBQUM7UUFFcEQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQ3JELCtCQUErQixDQUNoQyxDQUFDO1FBQ2Msd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDMUQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkQseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDM0Qsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFMUQsa0JBQWEsR0FDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvRSxjQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQzFDLENBQUM7UUFDYyxzQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDO1FBRTdELDRCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUM7UUFFbkUseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFekQsWUFBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUNyRSxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLENBQ25FLEVBQ0QsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsRUFDckQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ2MsdUJBQWtCLEdBQXdCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQ3pGLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsRUFBRTtZQUNuRSxRQUFRLEVBQUUsa0NBQWtDLENBQUMsNEJBQTRCO1lBQ3pFLFVBQVUsRUFBRSxzQkFBc0I7U0FDbkMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUVjLHVCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUM5RCxvQkFBZSxHQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3ZDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFnQyxDQUFDLENBQUMsQ0FDM0UsQ0FBQztRQUNZLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFtQyxJQUFJLENBQUMsQ0FBQztRQUNoRixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNlLHlCQUFvQixHQUF3QixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDO1FBQ2pGLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzNELHNCQUFpQixHQUF3QixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO1FBQy9FLGNBQVMsR0FDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQzNDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FDaEUsRUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDckIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNuRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVZLHdCQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUM7UUFFNUQsMkJBQXNCLEdBQUcsZ0JBQWdCLENBQUM7UUFDMUMsaUJBQVksR0FBYztZQUN6QyxLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLEdBQUcsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQ2hDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTtZQUN2QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDZSx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBVztZQUNwRSxJQUFJLENBQUMsc0JBQXNCO1NBQzVCLENBQUMsQ0FBQztRQUNhLFlBQU8sR0FBaUMsYUFBYSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsb0JBQW9CO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0I7WUFDekIsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN6QyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRTtnQkFDdkMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNmLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ1osSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQ3pGLEVBQUUsQ0FDSDthQUNGLENBQUMsQ0FBQztZQUNILE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FDeEUsT0FBTyxFQUNQLGVBQWUsQ0FDaEIsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQ3BFLHVCQUF1QixFQUN2QixZQUFZLEVBQ1osWUFBWSxDQUNiLENBQUM7WUFDRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUM5RCxPQUFPLEVBQ1AsVUFBVSxFQUNWLGVBQWUsQ0FDaEIsQ0FBQztZQUVGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLHdCQUF3QixDQUN4RSxJQUFJLENBQUMsWUFBWTtnQkFDaEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNyQixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDZixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakUscUZBQXFGO1lBQ3JGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0I7aUJBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7Z0JBQ2pDLElBQUksZ0JBQWdCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7b0JBQ2hFLE1BQU0sYUFBYSxHQUNqQixPQUFPLGdCQUFnQixDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO29CQUNuRixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDO3dCQUNqQyxTQUFTLEVBQUUsSUFBSTt3QkFDZixLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxhQUEwQixFQUFDO3FCQUMzRSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFZSw0QkFBdUIsR0FDdEMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9FLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRWpDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FDMUMsc0JBQXNCLEVBQ3RCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNwQixVQUFVLENBQUMsSUFBSSxFQUNmLFVBQVUsQ0FBQyxJQUFJLENBQ2hCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRVksbUJBQWMsR0FBc0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLHVCQUF1QjtZQUM1QixJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCO1lBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTtZQUM5QixJQUFJLENBQUMsb0JBQW9CO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0I7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhO1NBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQzFCLEVBQ0Qsb0JBQW9CLENBQ2xCLENBQ0UsQ0FDRSxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2pCLEVBQ0QsQ0FDRSxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2pCLEVBQ0QsRUFBRSxDQUNGLE9BQU8sQ0FDTDtZQUNFLEdBQUcsaUJBQWlCO1lBQ3BCLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsR0FBRyxxQkFBcUI7WUFDeEIsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ3ZFLFlBQVksRUFBRSxnQkFBZ0I7U0FDL0IsRUFDRDtZQUNFLEdBQUcsaUJBQWlCO1lBQ3BCLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsR0FBRyxxQkFBcUI7WUFDeEIsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ3ZFLFlBQVksRUFBRSxnQkFBZ0I7U0FDL0IsQ0FDRixDQUNKLEVBQ0QsU0FBUyxDQUNQLENBQUMsQ0FDQyxxQkFBcUIsRUFDckIsY0FBYyxFQUNkLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsQ0FBQyxFQUNELGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNaLEVBQUUsRUFBRTtZQUNILE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMzRCxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0QsTUFBTSxVQUFVLEdBQXNCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQTBCLEVBQUUsRUFBRSxDQUN4RixNQUFNLENBQUMsR0FBRyxLQUFLLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQzVELENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE9BQU8sUUFBUSxDQUFDO29CQUNkLFNBQVMsRUFDUCxrQkFBa0IsSUFBSSxDQUFDLGtCQUFrQjt3QkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQ3JDLHFCQUFxQixFQUNyQixLQUFLLEVBQ0wsY0FBYyxFQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLEVBQ3pELFVBQVUsQ0FDWDt3QkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsQ0FDOUMscUJBQXFCLEVBQ3JCLEtBQUssRUFDTCxjQUFjLEVBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsRUFDekQsVUFBVSxDQUNYO29CQUNQLGtCQUFrQixFQUFFLE1BQU07b0JBQzFCLGtCQUFrQixFQUFFLE1BQU07b0JBQzFCLGNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO29CQUN4QixXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sUUFBUSxDQUFDO2dCQUNkLFNBQVMsRUFDUCxrQkFBa0IsSUFBSSxDQUFDLGtCQUFrQjtvQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQ3JDLHFCQUFxQixFQUNyQixLQUFLLEVBQ0wsY0FBYyxFQUNkLFNBQVMsRUFDVCxVQUFVLENBQ1g7b0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMkJBQTJCLENBQzlDLHFCQUFxQixFQUNyQixLQUFLLEVBQ0wsY0FBYyxFQUNkLFNBQVMsRUFDVCxVQUFVLENBQ1g7Z0JBQ1Asa0JBQWtCLEVBQUUsTUFBTTtnQkFDMUIsa0JBQWtCLEVBQUUsTUFBTTtnQkFDMUIsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDO2FBQzdCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixFQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNkLGFBQWEsQ0FBQztZQUNaLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDUCxRQUFRLENBQ04sR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ25DLElBQUksQ0FBQyxpQkFBaUI7aUJBQ25CLGlCQUFpQixDQUFDLHdCQUF3QixFQUFFO2dCQUMzQyxRQUFRLEVBQUUsa0NBQWtDLENBQUMsa0JBQWtCO2dCQUMvRCxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7YUFDeEIsQ0FBQztpQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQ0YsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQWUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxvQkFBb0I7U0FDMUIsQ0FBQyxDQUNILEVBQ0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RCxHQUFHLEdBQUc7WUFDTixTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxHQUFHLENBQUMsU0FBUztnQkFDaEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELEdBQUcsUUFBUTtvQkFDWCxNQUFNLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7aUJBQ3ZDLENBQUMsQ0FBQzthQUNKO1lBQ0QsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQyxFQUNILEdBQUcsQ0FDRCxDQUFDLEdBUUEsRUFBRSxFQUFFO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRWhELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUNqQyxHQUFHLENBQUMsU0FBUyxFQUNiLEdBQUcsQ0FBQyxrQkFBa0IsRUFDdEIsR0FBRyxDQUFDLGtCQUFrQixDQUN2QjtnQkFDRCxRQUFRLEVBQUUsR0FBRyxDQUFDLFdBQVc7Z0JBQ3pCLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7YUFDdkMsQ0FBQztRQUNKLENBQUMsQ0FDRixFQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBRTlDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDNUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzlCLENBQUMsTUFBMEIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUN4RixDQUFDO29CQUNGLE9BQU8sQ0FBQyxNQUFNO3dCQUNaLENBQUMsQ0FBQyxHQUFHO3dCQUNMLENBQUMsQ0FBQzs0QkFDRSxHQUFHLEdBQUc7NEJBQ04sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQ0FDTixPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0NBQ3JCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDOzZCQUNsRjt5QkFDRixDQUFDO2dCQUNSLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFUCxPQUFPO29CQUNMLEdBQUcsSUFBSTtvQkFDUCxHQUFHLDJCQUEyQjtpQkFDL0IsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBc0JDLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFhO1FBQy9CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBb0M7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQVM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDeEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUNyQyxhQUFhLHNCQUFzQixFQUFFLEVBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDaEMsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxzQkFBc0IsYUFBYSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFtQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN2RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQW9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDM0QsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0RSxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7WUFDaEUsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUNoRSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxZQUF1QjtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxHQUFtQjtRQUM1QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUN2RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQXlCLEVBQUUsV0FBcUI7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxVQUFxQztRQUM5RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxRQUE4QjtRQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxRQUFpQjtRQUNoRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxzQ0FBc0M7UUFDNUMsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTthQUN6RCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsRUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUNsQyxvQkFBb0IsRUFBRSxDQUN2QjthQUNBLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDakQsQ0FBQztZQUNELElBQUksQ0FBQywrQkFBK0IsR0FBRyxxQkFBcUIsQ0FBQztZQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsSUFBSSxJQUFJLENBQUM7SUFDdEYsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGNBQXVCO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3pCLGNBQWM7WUFDWixDQUFDLENBQUM7Z0JBQ0UsV0FBVyxFQUFFLHNDQUFzQztnQkFDbkQsY0FBYztnQkFDZCxLQUFLLEVBQUUsZ0NBQWdDO2FBQ3hDO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLFdBQVcsRUFBRSxxQkFBcUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLGNBQWM7Z0JBQ3ZFLGNBQWM7Z0JBQ2QsS0FBSyxFQUFFLHFCQUFxQixJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssUUFBUTthQUM1RCxDQUNOLENBQUM7SUFDSixDQUFDOytHQXRrQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsK0NBVnBCO1lBQ1Qsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQiwwQkFBMEI7WUFDMUIsdUJBQXVCO1lBQ3ZCLDRCQUE0QjtZQUM1Qix3QkFBd0I7WUFDeEIsd0JBQXdCO1NBQ3pCLHNFQUdVLG1CQUFtQix1RkFDbkIsMkJBQTJCLGdGQUMzQixJQUFJLGdEQzVHakIsbWpPQXlNQTs7NEZEaEdhLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckI7d0JBQ1Qsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjttbEJBRytCLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNVLG9CQUFvQjtzQkFBM0QsU0FBUzt1QkFBQywyQkFBMkI7Z0JBQ3JCLGFBQWE7c0JBQTdCLFNBQVM7dUJBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9hY2Nlc3MtY29udHJvbCc7XG5pbXBvcnQge1xuICBCcmVhZGNydW1iU2VydmljZSxcbiAgQ2FyYm9uTGlzdENvbXBvbmVudCxcbiAgQ2FyYm9uTGlzdE5vUmVzdWx0c01lc3NhZ2UsXG4gIENhcmJvblBhZ2luYXRpb25TZWxlY3Rpb24sXG4gIENBU0VTX1dJVEhPVVRfU1RBVFVTX0tFWSxcbiAgTGlzdEZpZWxkLFxuICBQYWdlVGl0bGVTZXJ2aWNlLFxuICBQYWdpbmF0aW9uLFxuICBWaWV3VHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBc3NpZ25lZUZpbHRlcixcbiAgQ29uZmlnU2VydmljZSxcbiAgRGVmaW5pdGlvbkNvbHVtbixcbiAgRGlyZWN0aW9uLFxuICBEb3NzaWVyTGlzdFRhYixcbiAgU2VhcmNoRmllbGQsXG4gIFNlYXJjaEZpZWxkVmFsdWVzLFxuICBTb3J0U3RhdGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgQWR2YW5jZWREb2N1bWVudFNlYXJjaFJlcXVlc3RJbXBsLFxuICBEb2N1bWVudCxcbiAgRG9jdW1lbnRzLFxuICBEb2N1bWVudFNlcnZpY2UsXG4gIEludGVybmFsQ2FzZVN0YXR1cyxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzVXRpbHMsXG4gIFNwZWNpZmllZERvY3VtZW50cyxcbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtUYWIsIFRhYnN9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRlZmF1bHRJZkVtcHR5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBmb3JrSm9pbixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfRE9TU0lFUl9MSVNUX1RBQlMsXG4gIERPU1NJRVJfTElTVF9OT19SRVNVTFRTX01FU1NBR0UsXG4gIERPU1NJRVJfTElTVF9UQUJMRV9UUkFOU0xBVElPTlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDQU5fQ1JFQVRFX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLFxuICBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLFxufSBmcm9tICcuLi8uLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQge1xuICBEb3NzaWVyQnVsa0Fzc2lnblNlcnZpY2UsXG4gIERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICBEb3NzaWVyTGlzdEFzc2lnbmVlU2VydmljZSxcbiAgRG9zc2llckxpc3RQYWdpbmF0aW9uU2VydmljZSxcbiAgRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gIERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgRG9zc2llclBhcmFtZXRlclNlcnZpY2UsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9zc2llckxpc3RBY3Rpb25zQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLWxpc3QtYWN0aW9ucy9kb3NzaWVyLWxpc3QtYWN0aW9ucy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRG9zc2llckxpc3RTZXJ2aWNlLFxuICAgIERvc3NpZXJDb2x1bW5TZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0QXNzaWduZWVTZXJ2aWNlLFxuICAgIERvc3NpZXJQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICAgIERvc3NpZXJMaXN0U3RhdHVzU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ2FyYm9uTGlzdENvbXBvbmVudCkgY2FyYm9uTGlzdDogQ2FyYm9uTGlzdENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChEb3NzaWVyTGlzdEFjdGlvbnNDb21wb25lbnQpIGxpc3RBY3Rpb25zQ29tcG9uZW50OiBEb3NzaWVyTGlzdEFjdGlvbnNDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoVGFicykgdGFic0NvbXBvbmVudDogVGFicztcblxuICBwdWJsaWMgYWN0aXZlVGFiOiBEb3NzaWVyTGlzdFRhYiA9IG51bGw7XG4gIHB1YmxpYyBsb2FkaW5nRmllbGRzID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdQYWdpbmF0aW9uID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdTZWFyY2hGaWVsZHMgPSB0cnVlO1xuICBwdWJsaWMgbG9hZGluZ0Fzc2lnbmVlRmlsdGVyID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdEb2N1bWVudEl0ZW1zID0gdHJ1ZTtcbiAgcHVibGljIGxvYWRpbmdTdGF0dXNlcyA9IHRydWU7XG4gIHB1YmxpYyBwYWdpbmF0aW9uITogUGFnaW5hdGlvbjtcbiAgcHVibGljIGNhbkhhdmVBc3NpZ25lZSE6IGJvb2xlYW47XG4gIHB1YmxpYyB2aXNpYmxlRG9zc2llclRhYnM6IEFycmF5PERvc3NpZXJMaXN0VGFiPiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0VGFicyA9IERFRkFVTFRfRE9TU0lFUl9MSVNUX1RBQlM7XG4gIHB1YmxpYyByZWFkb25seSB0YWJsZVRyYW5zbGF0aW9ucyA9IERPU1NJRVJfTElTVF9UQUJMRV9UUkFOU0xBVElPTlM7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vUmVzdWx0c01lc3NhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZT4oXG4gICAgRE9TU0lFUl9MSVNUX05PX1JFU1VMVFNfTUVTU0FHRVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZVN0YXJ0QnV0dG9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0Fzc2lnbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0NoYW5nZVBhZ2VNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dDaGFuZ2VUYWJNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZD4gfCBudWxsPiA9XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvY3VtZW50U2VhcmNoRmllbGRzJC5waXBlKHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nU2VhcmNoRmllbGRzID0gZmFsc2UpKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c2VzJCA9IHRoaXMuc3RhdHVzU2VydmljZS5jYXNlU3RhdHVzZXMkLnBpcGUoXG4gICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmdTdGF0dXNlcyA9IGZhbHNlKSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkU3RhdHVzZXMkID0gdGhpcy5zdGF0dXNTZXJ2aWNlLnNlbGVjdGVkQ2FzZVN0YXR1c2VzJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERvY3VtZW50SWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2NoZW1hJCA9IHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnREZWZpbml0aW9uKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoZG9jdW1lbnREZWZpbml0aW9uID0+IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hKSxcbiAgICB0YXAoc2NoZW1hID0+IHtcbiAgICAgIGlmIChzY2hlbWE/LnRpdGxlKSB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRDdXN0b21QYWdlVGl0bGUoc2NoZW1hPy50aXRsZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhbkNyZWF0ZURvY3VtZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5yZXF1ZXN0UGVybWlzc2lvbihDQU5fQ1JFQVRFX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnREZWZpbml0aW9uLFxuICAgICAgICBpZGVudGlmaWVyOiBkb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaEZpZWxkVmFsdWVzJCA9IHRoaXMucGFyYW1ldGVyU2VydmljZS5zZWFyY2hGaWVsZFZhbHVlcyQ7XG4gIHB1YmxpYyByZWFkb25seSBhc3NpZ25lZUZpbHRlciQ6IE9ic2VydmFibGU8QXNzaWduZWVGaWx0ZXI+ID1cbiAgICB0aGlzLmFzc2lnbmVlU2VydmljZS5hc3NpZ25lZUZpbHRlciQucGlwZShcbiAgICAgIHRhcChhc3NpZ25lZUZpbHRlciA9PiAodGhpcy5hY3RpdmVUYWIgPSBhc3NpZ25lZUZpbHRlciBhcyBEb3NzaWVyTGlzdFRhYikpXG4gICAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb25DaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25QYWdpbmF0aW9uU2VsZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSB0YWJDaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEb3NzaWVyTGlzdFRhYiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdpbmF0aW9uJCA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbiQucGlwZShcbiAgICB0YXAocGFnaW5hdGlvbiA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24gPSBwYWdpbmF0aW9uO1xuICAgICAgdGhpcy5sb2FkaW5nUGFnaW5hdGlvbiA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhc0VudkNvbHVtbkNvbmZpZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxpc3RTZXJ2aWNlLmhhc0VudkNvbHVtbkNvbmZpZyQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhc0FwaUNvbHVtbkNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FuSGF2ZUFzc2lnbmVlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXNzaWduZWVTZXJ2aWNlLmNhbkhhdmVBc3NpZ25lZSQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbnMkOiBPYnNlcnZhYmxlPEFycmF5PERlZmluaXRpb25Db2x1bW4+PiA9XG4gICAgdGhpcy5saXN0U2VydmljZS5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5jb2x1bW5TZXJ2aWNlLmdldERlZmluaXRpb25Db2x1bW5zKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICApLFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuX2hhc0FwaUNvbHVtbkNvbmZpZyQubmV4dChyZXMuaGFzQXBpQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHJlcy5jb2x1bW5zO1xuICAgICAgfSksXG4gICAgICB0YXAoY29sdW1ucyA9PiB7XG4gICAgICAgIHRoaXMubGlzdFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZXRQYWdpbmF0aW9uKGNvbHVtbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1N0YXR1c1NlbGVjdG9yJCA9IHRoaXMuc3RhdHVzU2VydmljZS5zaG93U3RhdHVzU2VsZWN0b3IkO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgSU5URVJOQUxfU1RBVFVTX0NPTFVNTiA9ICdpbnRlcm5hbFN0YXR1cyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c0ZpZWxkOiBMaXN0RmllbGQgPSB7XG4gICAgbGFiZWw6ICdkb2N1bWVudC5zdGF0dXMnLFxuICAgIGtleTogdGhpcy5JTlRFUk5BTF9TVEFUVVNfQ09MVU1OLFxuICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5UQUdTLFxuICAgIHNvcnRhYmxlOiB0cnVlLFxuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRlcm5hbFN0YXR1c0tleXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW1xuICAgIHRoaXMuSU5URVJOQUxfU1RBVFVTX0NPTFVNTixcbiAgXSk7XG4gIHB1YmxpYyByZWFkb25seSBmaWVsZHMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RGaWVsZD4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fY2FuSGF2ZUFzc2lnbmVlJCxcbiAgICB0aGlzLl9jb2x1bW5zJCxcbiAgICB0aGlzLl9oYXNFbnZDb2x1bW5Db25maWckLFxuICAgIHRoaXMuX2hhc0FwaUNvbHVtbkNvbmZpZyQsXG4gICAgdGhpcy5zdGF0dXNlcyQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgdGFwKChbY2FuSGF2ZUFzc2lnbmVlXSkgPT4ge1xuICAgICAgdGhpcy5jYW5IYXZlQXNzaWduZWUgPSBjYW5IYXZlQXNzaWduZWU7XG4gICAgfSksXG4gICAgbWFwKChbY2FuSGF2ZUFzc2lnbmVlLCBjb2x1bW5zLCBoYXNFbnZDb25maWcsIGhhc0FwaUNvbmZpZywgc3RhdHVzZXNdKSA9PiB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFN0YXR1c0tleXMkLm5leHQoW1xuICAgICAgICAuLi50aGlzLl9pbnRlcm5hbFN0YXR1c0tleXMkLmdldFZhbHVlKCksXG4gICAgICAgIC4uLmNvbHVtbnMucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+XG4gICAgICAgICAgICBjdXJyLnByb3BlcnR5TmFtZSA9PT0gdGhpcy5JTlRFUk5BTF9TVEFUVVNfQ09MVU1OID8gWy4uLmFjYywgY3Vyci50cmFuc2xhdGlvbktleV0gOiBhY2MsXG4gICAgICAgICAgW11cbiAgICAgICAgKSxcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZmlsdGVyZWRBc3NpZ25lZUNvbHVtbnMgPSB0aGlzLmFzc2lnbmVlU2VydmljZS5maWx0ZXJBc3NpZ25lZUNvbHVtbnMoXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGxpc3RGaWVsZHMgPSB0aGlzLmNvbHVtblNlcnZpY2UubWFwRGVmaW5pdGlvbkNvbHVtbnNUb0xpc3RGaWVsZHMoXG4gICAgICAgIGZpbHRlcmVkQXNzaWduZWVDb2x1bW5zLFxuICAgICAgICBoYXNFbnZDb25maWcsXG4gICAgICAgIGhhc0FwaUNvbmZpZ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpZWxkc1RvUmV0dXJuID0gdGhpcy5hc3NpZ25lZVNlcnZpY2UuYWRkQXNzaWduZWVMaXN0RmllbGQoXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGxpc3RGaWVsZHMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHN0YXR1c2VzLnNvbWUoXG4gICAgICAgIChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSAhPT0gQ0FTRVNfV0lUSE9VVF9TVEFUVVNfS0VZXG4gICAgICApICYmICFoYXNBcGlDb25maWdcbiAgICAgICAgPyBbLi4uZmllbGRzVG9SZXR1cm4sIHRoaXMuX3N0YXR1c0ZpZWxkXVxuICAgICAgICA6IGZpZWxkc1RvUmV0dXJuO1xuICAgIH0pLFxuICAgIHRhcChsaXN0RmllbGRzID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRMaXN0RmllbGQgPSBsaXN0RmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuZGVmYXVsdCk7XG4gICAgICAvLyBzZXQgZGVmYXVsdCBzb3J0IHN0YXRlIGlmIG5vIHBhZ2luYXRpb24gcXVlcnkgcGFyYW1ldGVycyBmb3Igc29ydGluZyBhcmUgYXZhaWxhYmxlXG4gICAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UucXVlcnlQYWdpbmF0aW9uUGFyYW1zJFxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKHF1ZXJ5UGFnaW5hdGlvblBhcmFtcyA9PiB7XG4gICAgICAgICAgaWYgKGRlZmF1bHRMaXN0RmllbGQgJiYgIXF1ZXJ5UGFnaW5hdGlvblBhcmFtcz8uc29ydD8uaXNTb3J0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgdHlwZW9mIGRlZmF1bHRMaXN0RmllbGQuZGVmYXVsdCA9PT0gJ3N0cmluZycgPyBkZWZhdWx0TGlzdEZpZWxkLmRlZmF1bHQgOiAnREVTQyc7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNvcnRDaGFuZ2VkKHtcbiAgICAgICAgICAgICAgaXNTb3J0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICBzdGF0ZToge25hbWU6IGRlZmF1bHRMaXN0RmllbGQua2V5LCBkaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gYXMgRGlyZWN0aW9ufSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ0ZpZWxkcyA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnRTZWFyY2hSZXF1ZXN0JDogT2JzZXJ2YWJsZTxBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BhZ2luYXRpb24kLCB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3BhZ2luYXRpb25dKSA9PiAhIXBhZ2luYXRpb24pLFxuICAgICAgbWFwKChbcGFnaW5hdGlvbiwgZG9jdW1lbnREZWZpbml0aW9uTmFtZV0pID0+IHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHBhZ2luYXRpb24ucGFnZSAtIDE7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBBZHZhbmNlZERvY3VtZW50U2VhcmNoUmVxdWVzdEltcGwoXG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBwYWdlID49IDAgPyBwYWdlIDogMCxcbiAgICAgICAgICBwYWdpbmF0aW9uLnNpemUsXG4gICAgICAgICAgcGFnaW5hdGlvbi5zb3J0XG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SXRlbXMkOiBPYnNlcnZhYmxlPGFueVtdPiA9IHRoaXMubGlzdFNlcnZpY2UuY2hlY2tSZWZyZXNoJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuX2RvY3VtZW50U2VhcmNoUmVxdWVzdCQsXG4gICAgICAgIHRoaXMuYXNzaWduZWVGaWx0ZXIkLFxuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkVmFsdWVzJCxcbiAgICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNlbGVjdGVkQ2FzZVN0YXR1c2VzJCxcbiAgICAgICAgdGhpcy5saXN0U2VydmljZS5mb3JjZVJlZnJlc2gkLFxuICAgICAgICB0aGlzLl9oYXNFbnZDb2x1bW5Db25maWckLFxuICAgICAgICB0aGlzLl9oYXNBcGlDb2x1bW5Db25maWckLFxuICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuY2FzZVN0YXR1c2VzJCxcbiAgICAgIF0pLnBpcGUoZGVib3VuY2VUaW1lKDUwKSlcbiAgICApLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgKFxuICAgICAgICBbXG4gICAgICAgICAgcHJldlNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgcHJldkFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgIHByZXZTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICBwcmV2U2VsZWN0ZWRTdGF0dXNlcyxcbiAgICAgICAgICBwcmV2Rm9yY2VSZWZyZXNoLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgY3VyclNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgY3VyckFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgIGN1cnJTZWFyY2hGaWVsZFZhbHVlcyxcbiAgICAgICAgICBjdXJyU2VsZWN0ZWRTdGF0dXNlcyxcbiAgICAgICAgICBjdXJyRm9yY2VSZWZyZXNoLFxuICAgICAgICBdXG4gICAgICApID0+XG4gICAgICAgIGlzRXF1YWwoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4ucHJldlNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICBhc3NpZ25lZTogcHJldkFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgLi4ucHJldlNlYXJjaEZpZWxkVmFsdWVzLFxuICAgICAgICAgICAgLi4ucHJldlNlbGVjdGVkU3RhdHVzZXMubWFwKChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT4gc3RhdHVzLmtleSksXG4gICAgICAgICAgICBmb3JjZVJlZnJlc2g6IHByZXZGb3JjZVJlZnJlc2gsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5jdXJyU2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgIGFzc2lnbmVlOiBjdXJyQXNzaWduZWVGaWx0ZXIsXG4gICAgICAgICAgICAuLi5jdXJyU2VhcmNoRmllbGRWYWx1ZXMsXG4gICAgICAgICAgICAuLi5jdXJyU2VsZWN0ZWRTdGF0dXNlcy5tYXAoKHN0YXR1czogSW50ZXJuYWxDYXNlU3RhdHVzKSA9PiBzdGF0dXMua2V5KSxcbiAgICAgICAgICAgIGZvcmNlUmVmcmVzaDogY3VyckZvcmNlUmVmcmVzaCxcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICApLFxuICAgIHN3aXRjaE1hcChcbiAgICAgIChbXG4gICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgYXNzaWduZWVGaWx0ZXIsXG4gICAgICAgIHNlYXJjaFZhbHVlcyxcbiAgICAgICAgc2VsZWN0ZWRTdGF0dXNlcyxcbiAgICAgICAgXyxcbiAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnLFxuICAgICAgICBoYXNBcGlDb2x1bW5Db25maWcsXG4gICAgICAgIGFsbFN0YXR1c2VzLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBvYnNFbnY6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihoYXNFbnZDb2x1bW5Db25maWcpO1xuICAgICAgICBjb25zdCBvYnNBcGk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihoYXNBcGlDb2x1bW5Db25maWcpO1xuICAgICAgICBjb25zdCBzdGF0dXNLZXlzOiAoc3RyaW5nIHwgbnVsbClbXSA9IHNlbGVjdGVkU3RhdHVzZXMubWFwKChzdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cykgPT5cbiAgICAgICAgICBzdGF0dXMua2V5ID09PSBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVkgPyBudWxsIDogc3RhdHVzLmtleVxuICAgICAgICApO1xuICAgICAgICBpZiAoKE9iamVjdC5rZXlzKHNlYXJjaFZhbHVlcykgfHwgW10pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oe1xuICAgICAgICAgICAgZG9jdW1lbnRzOlxuICAgICAgICAgICAgICBoYXNFbnZDb2x1bW5Db25maWcgfHwgIWhhc0FwaUNvbHVtbkNvbmZpZ1xuICAgICAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRzU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLm1hcFNlYXJjaFZhbHVlc1RvRmlsdGVycyhzZWFyY2hWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNLZXlzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRTcGVjaWZpZWREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50U2VhcmNoUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UubWFwU2VhcmNoVmFsdWVzVG9GaWx0ZXJzKHNlYXJjaFZhbHVlcyksXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0tleXNcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBoYXNFbnZDb2x1bW5Db25maWc6IG9ic0VudixcbiAgICAgICAgICAgIGhhc0FwaUNvbHVtbkNvbmZpZzogb2JzQXBpLFxuICAgICAgICAgICAgaXNTZWFyY2hSZXN1bHQ6IG9mKHRydWUpLFxuICAgICAgICAgICAgYWxsU3RhdHVzZXM6IG9mKGFsbFN0YXR1c2VzKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICAgICAgZG9jdW1lbnRzOlxuICAgICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnIHx8ICFoYXNBcGlDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgPyB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzS2V5c1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRTcGVjaWZpZWREb2N1bWVudHNTZWFyY2goXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudFNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAnQU5EJyxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzS2V5c1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgaGFzRW52Q29sdW1uQ29uZmlnOiBvYnNFbnYsXG4gICAgICAgICAgaGFzQXBpQ29sdW1uQ29uZmlnOiBvYnNBcGksXG4gICAgICAgICAgaXNTZWFyY2hSZXN1bHQ6IG9mKGZhbHNlKSxcbiAgICAgICAgICBhbGxTdGF0dXNlczogb2YoYWxsU3RhdHVzZXMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApLFxuICAgIHN3aXRjaE1hcChyZXMgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICBvZihyZXMpLFxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICByZXMuZG9jdW1lbnRzLmNvbnRlbnQubWFwKGRvY3VtZW50ID0+XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlXG4gICAgICAgICAgICAgIC5yZXF1ZXN0UGVybWlzc2lvbihDQU5fVklFV19DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogZG9jdW1lbnQuaWQsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoZGVmYXVsdElmRW1wdHkoW10gYXMgYm9vbGVhbltdKSksXG4gICAgICAgIHRoaXMuX2ludGVybmFsU3RhdHVzS2V5cyQsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbcmVzLCBkb2N1bWVudHNBdXRob3JpemF0aW9uLCBzdGF0dXNDb2x1bW5LZXlzXSkgPT4gKHtcbiAgICAgIC4uLnJlcyxcbiAgICAgIGRvY3VtZW50czoge1xuICAgICAgICAuLi5yZXMuZG9jdW1lbnRzLFxuICAgICAgICBjb250ZW50OiByZXMuZG9jdW1lbnRzLmNvbnRlbnQubWFwKChkb2N1bWVudCwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgLi4uZG9jdW1lbnQsXG4gICAgICAgICAgbG9ja2VkOiAhZG9jdW1lbnRzQXV0aG9yaXphdGlvbltpbmRleF0sXG4gICAgICAgIH0pKSxcbiAgICAgIH0sXG4gICAgICBzdGF0dXNDb2x1bW5LZXlzLFxuICAgIH0pKSxcbiAgICBtYXAoXG4gICAgICAocmVzOiB7XG4gICAgICAgIGRvY3VtZW50czogRG9jdW1lbnRzIHwgU3BlY2lmaWVkRG9jdW1lbnRzO1xuICAgICAgICBoYXNFbnZDb2x1bW5Db25maWc6IGJvb2xlYW47XG4gICAgICAgIGhhc0FwaUNvbHVtbkNvbmZpZzogYm9vbGVhbjtcbiAgICAgICAgaXNTZWFyY2hSZXN1bHQ6IGJvb2xlYW47XG4gICAgICAgIHNlbGVjdGVkU3RhdHVzZXM6IEludGVybmFsQ2FzZVN0YXR1c1tdO1xuICAgICAgICBhbGxTdGF0dXNlczogSW50ZXJuYWxDYXNlU3RhdHVzW107XG4gICAgICAgIHN0YXR1c0NvbHVtbktleXM6IHN0cmluZ1tdO1xuICAgICAgfSkgPT4ge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNldENvbGxlY3Rpb25TaXplKHJlcy5kb2N1bWVudHMpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmNoZWNrUGFnZShyZXMuZG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy51cGRhdGVOb1Jlc3VsdHNNZXNzYWdlKHJlcy5pc1NlYXJjaFJlc3VsdCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB0aGlzLmxpc3RTZXJ2aWNlLm1hcERvY3VtZW50cyhcbiAgICAgICAgICAgIHJlcy5kb2N1bWVudHMsXG4gICAgICAgICAgICByZXMuaGFzRW52Q29sdW1uQ29uZmlnLFxuICAgICAgICAgICAgcmVzLmhhc0FwaUNvbHVtbkNvbmZpZ1xuICAgICAgICAgICksXG4gICAgICAgICAgc3RhdHVzZXM6IHJlcy5hbGxTdGF0dXNlcyxcbiAgICAgICAgICBzdGF0dXNDb2x1bW5LZXlzOiByZXMuc3RhdHVzQ29sdW1uS2V5cyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApLFxuICAgIG1hcChyZXMgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlcy5kYXRhKSkgcmV0dXJuIHJlcy5kYXRhO1xuXG4gICAgICByZXR1cm4gcmVzLmRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBtYXBwZWRJbnRlcm5hbFN0YXR1c0NvbHVtbnMgPSByZXMuc3RhdHVzQ29sdW1uS2V5cy5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHJlcy5zdGF0dXNlcy5maW5kKFxuICAgICAgICAgICAgKHN0YXR1czogSW50ZXJuYWxDYXNlU3RhdHVzKSA9PiBzdGF0dXMua2V5ID09PSBpdGVtW2N1cnJdIHx8IHN0YXR1cy5rZXkgPT09IGl0ZW0uc3RhdHVzXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gIXN0YXR1c1xuICAgICAgICAgICAgPyBhY2NcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBbY3Vycl06IHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHN0YXR1cy50aXRsZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLmdldFRhZ1R5cGVGcm9tSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3Ioc3RhdHVzLmNvbG9yKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIC4uLm1hcHBlZEludGVybmFsU3RhdHVzQ29sdW1ucyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmdBc3NpZ25lZUZpbHRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkaW5nRG9jdW1lbnRJdGVtcyA9IGZhbHNlO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNEb2N1bWVudERlZmluaXRpb25OYW1lITogc3RyaW5nO1xuICBwcml2YXRlIF9kb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXNzaWduZWVTZXJ2aWNlOiBEb3NzaWVyTGlzdEFzc2lnbmVlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1bGtBc3NpZ25TZXJ2aWNlOiBEb3NzaWVyQnVsa0Fzc2lnblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5TZXJ2aWNlOiBEb3NzaWVyQ29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZXJ2aWNlOiBEb3NzaWVyTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnaW5hdGlvblNlcnZpY2U6IERvc3NpZXJMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTZXJ2aWNlOiBEb3NzaWVyUGFyYW1ldGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZTogRG9zc2llckxpc3RTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1NlcnZpY2U6IERvc3NpZXJMaXN0U3RhdHVzU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmlzaWJsZVRhYnMoKTtcbiAgICB0aGlzLm9wZW5Eb2N1bWVudERlZmluaXRpb25OYW1lU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZW5hYmxlUmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIHNlYXJjaChzZWFyY2hGaWVsZFZhbHVlczogU2VhcmNoRmllbGRWYWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHNlYXJjaEZpZWxkVmFsdWVzKTtcbiAgfVxuXG4gIHB1YmxpYyByb3dDbGljayhpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RTZXJ2aWNlLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5jYWNoZVF1ZXJ5UGFyYW1zKFxuICAgICAgICBgL2Rvc3NpZXJzLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gLFxuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zXG4gICAgICApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llcnMvJHtkb2N1bWVudERlZmluaXRpb25OYW1lfS9kb2N1bWVudC8ke2l0ZW0uaWR9YF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRhYkNoYW5nZSh0YWI6IERvc3NpZXJMaXN0VGFiKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZVRhYikge1xuICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgICB0aGlzLnVwZGF0ZU5vUmVzdWx0c01lc3NhZ2UoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVRhYi50b0xvd2VyQ2FzZSgpID09PSB0YWIudG9Mb3dlckNhc2UoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNhcmJvbkxpc3QubW9kZWwuc2VsZWN0ZWRSb3dzQ291bnQoKSkge1xuICAgICAgdGhpcy5zaG93Q2hhbmdlVGFiTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnRhYkNoYW5nZSQubmV4dCh0YWIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VUYWJDb25maXJtKHRhYik7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VUYWJDYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2VGFiOiBUYWIgfCB1bmRlZmluZWQgPSB0aGlzLnRhYnNDb21wb25lbnQudGFicy5maW5kKFxuICAgICAgKHRhYjogVGFiKSA9PiB0YWIuaWQgPT09IHRoaXMuYWN0aXZlVGFiXG4gICAgKTtcblxuICAgIGlmICghcHJldlRhYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJzLmZpbmQoKHRhYjogVGFiKSA9PiB0YWIuYWN0aXZlKS5hY3RpdmUgPSBmYWxzZTtcbiAgICBwcmV2VGFiLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXJib25MaXN0Py5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpKSB7XG4gICAgICB0aGlzLnNob3dDaGFuZ2VQYWdlTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UkLm5leHQoe3BhZ2UsIHNpemU6IHRoaXMucGFnaW5hdGlvbi5zaXplfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZUNoYW5nZShwYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXJib25MaXN0Py5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpKSB7XG4gICAgICB0aGlzLnNob3dDaGFuZ2VQYWdlTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UkLm5leHQoe3BhZ2U6IHRoaXMucGFnaW5hdGlvbi5wYWdlLCBzaXplfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZVNpemVDaGFuZ2Uoc2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgc29ydENoYW5nZWQobmV3U29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNvcnRDaGFuZ2VkKG5ld1NvcnRTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlVGFiQ29uZmlybSh0YWI6IERvc3NpZXJMaXN0VGFiKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nQXNzaWduZWVGaWx0ZXIgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICAgIHRoaXMudXBkYXRlTm9SZXN1bHRzTWVzc2FnZShmYWxzZSk7XG4gICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZXRQYWdlKDEpO1xuICAgIHRoaXMuYXNzaWduZWVTZXJ2aWNlLnNldEFzc2lnbmVlRmlsdGVyKHRhYik7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Fzc2lnbk1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREb2N1bWVudElkcyQubmV4dChcbiAgICAgIHRoaXMuY2FyYm9uTGlzdC5zZWxlY3RlZEl0ZW1zLm1hcCgoZG9jdW1lbnQ6IERvY3VtZW50KSA9PiBkb2N1bWVudC5pZClcbiAgICApO1xuICAgIHRoaXMuc2hvd0Fzc2lnbk1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VFdmVudChhc3NpZ25lZUlkOiBudWxsIHwgc3RyaW5nLCBkb2N1bWVudElkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBc3NpZ25Nb2RhbCQubmV4dChmYWxzZSk7XG4gICAgaWYgKCFhc3NpZ25lZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idWxrQXNzaWduU2VydmljZS5idWxrQXNzaWduKGFzc2lnbmVlSWQsIGRvY3VtZW50SWRzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JjZVJlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZVBhZ2VDb25maXJtKHBhZ2luYXRpb246IENhcmJvblBhZ2luYXRpb25TZWxlY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAocGFnaW5hdGlvbi5zaXplICE9PSB0aGlzLnBhZ2luYXRpb24uc2l6ZSkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5wYWdlU2l6ZUNoYW5nZShwYWdpbmF0aW9uLnNpemUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UucGFnZUNoYW5nZShwYWdpbmF0aW9uLnBhZ2UpO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0RG9zc2llcigpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RBY3Rpb25zQ29tcG9uZW50LnN0YXJ0RG9zc2llcigpO1xuICB9XG5cbiAgcHVibGljIGZvcmNlUmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RTZXJ2aWNlLmZvcmNlUmVmcmVzaCgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRTdGF0dXNlc0NoYW5nZShzdGF0dXNlczogSW50ZXJuYWxDYXNlU3RhdHVzW10pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c1NlcnZpY2Uuc2V0U2VsZWN0ZWRTdGF0dXNlcyhzdGF0dXNlcyk7XG4gIH1cblxuICBwdWJsaWMgb25TdGFydEJ1dHRvbkRpc2FibGVFdmVudChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZVN0YXJ0QnV0dG9uJC5uZXh0KGRpc2FibGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRvY3VtZW50RGVmaW5pdGlvbk5hbWVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChwYXJhbXM6IFBhcmFtcykgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICAgICAgZmlsdGVyKGRvY0RlZk5hbWUgPT4gISFkb2NEZWZOYW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRvbk5hbWUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNEb2N1bWVudERlZmluaXRpb25OYW1lKSB7XG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmNsZWFyUGFyYW1ldGVycygpO1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5jbGVhclNlYXJjaEZpZWxkVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNEb2N1bWVudERlZmluaXRpb25OYW1lID0gZG9jdW1lbnREZWZpbml0b25OYW1lO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmNsZWFyUGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLmFzc2lnbmVlU2VydmljZS5yZXNldEFzc2lnbmVlRmlsdGVyKCk7XG4gICAgICAgIHRoaXMubGlzdFNlcnZpY2Uuc2V0RG9jdW1lbnREZWZpbml0aW9uTmFtZShkb2N1bWVudERlZmluaXRvbk5hbWUpO1xuICAgICAgICB0aGlzLnNldExvYWRpbmcoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZ0ZpZWxkcyA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nUGFnaW5hdGlvbiA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nU2VhcmNoRmllbGRzID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmdBc3NpZ25lZUZpbHRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nRG9jdW1lbnRJdGVtcyA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nU3RhdHVzZXMgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaXNpYmxlVGFicygpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVEb3NzaWVyVGFicyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWc/LnZpc2libGVEb3NzaWVyTGlzdFRhYnMgfHwgbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTm9SZXN1bHRzTWVzc2FnZShpc1NlYXJjaFJlc3VsdDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubm9SZXN1bHRzTWVzc2FnZSQubmV4dChcbiAgICAgIGlzU2VhcmNoUmVzdWx0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdkb3NzaWVyLm5vUmVzdWx0cy5zZWFyY2guZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgaXNTZWFyY2hSZXN1bHQsXG4gICAgICAgICAgICB0aXRsZTogJ2Rvc3NpZXIubm9SZXN1bHRzLnNlYXJjaC50aXRsZScsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgZG9zc2llci5ub1Jlc3VsdHMuJHt0aGlzLmFjdGl2ZVRhYiA/PyAnQUxMJ30uZGVzY3JpcHRpb25gLFxuICAgICAgICAgICAgaXNTZWFyY2hSZXN1bHQsXG4gICAgICAgICAgICB0aXRsZTogYGRvc3NpZXIubm9SZXN1bHRzLiR7dGhpcy5hY3RpdmVUYWIgPz8gJ0FMTCd9LnRpdGxlYCxcbiAgICAgICAgICB9XG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGZpZWxkczogZmllbGRzJCB8IGFzeW5jLFxuICAgIGRvY3VtZW50SXRlbXM6IGRvY3VtZW50SXRlbXMkIHwgYXN5bmMsXG4gICAgbm9SZXN1bHRzTWVzc2FnZTogbm9SZXN1bHRzTWVzc2FnZSQgfCBhc3luYyxcbiAgICBzZWFyY2hGaWVsZHM6IHNlYXJjaEZpZWxkcyQgfCBhc3luYyxcbiAgICBzY2hlbWE6IHNjaGVtYSQgfCBhc3luYyxcbiAgICBzaG93QXNzaWduTW9kYWw6IHNob3dBc3NpZ25Nb2RhbCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZERvY3VtZW50SWRzOiBzZWxlY3RlZERvY3VtZW50SWRzJCB8IGFzeW5jLFxuICAgIHN0YXR1c2VzOiBzdGF0dXNlcyQgfCBhc3luYyxcbiAgICBzZWxlY3RlZFN0YXR1c2VzOiBzZWxlY3RlZFN0YXR1c2VzJCB8IGFzeW5jLFxuICAgIHNob3dTdGF0dXNTZWxlY3Rvcjogc2hvd1N0YXR1c1NlbGVjdG9yJCB8IGFzeW5jLFxuICAgIGxvYWRlZDpcbiAgICAgICFsb2FkaW5nRmllbGRzICYmXG4gICAgICAhbG9hZGluZ1BhZ2luYXRpb24gJiZcbiAgICAgICFsb2FkaW5nU2VhcmNoRmllbGRzICYmXG4gICAgICAhbG9hZGluZ0Fzc2lnbmVlRmlsdGVyICYmXG4gICAgICAhbG9hZGluZ0RvY3VtZW50SXRlbXMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudCBwdC0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBweC0wIG1iLTVcIj5cbiAgICAgICAgPHZhbHRpbW8tZG9zc2llci1saXN0LWFjdGlvbnNcbiAgICAgICAgICBbbG9hZGluZ109XCIhb2JzLmxvYWRlZFwiXG4gICAgICAgICAgKGZvcm1GbG93Q29tcGxldGUpPVwiZm9yY2VSZWZyZXNoKClcIlxuICAgICAgICAgIChzdGFydEJ1dHRvbkRpc2FibGVFdmVudCk9XCJvblN0YXJ0QnV0dG9uRGlzYWJsZUV2ZW50KCRldmVudClcIlxuICAgICAgICA+PC92YWx0aW1vLWRvc3NpZXItbGlzdC1hY3Rpb25zPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoRmllbGRzOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9icy5sb2FkZWQ7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0OyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidWxrQXNzaWduTW9kYWw7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhbmdlUGFnZU1vZGFsXCI+PC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoYW5nZVRhYk1vZGFsXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hGaWVsZHMgbGV0LW9icz1cIm9ic1wiPlxuICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgIDx2YWx0aW1vLXNlYXJjaC1maWVsZHNcbiAgICAgIFtzZWFyY2hGaWVsZHNdPVwib2JzLnNlYXJjaEZpZWxkc1wiXG4gICAgICAoZG9TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luY1wiXG4gICAgICBbZGVmYXVsdFZhbHVlc109XCJzZWFyY2hGaWVsZFZhbHVlcyQgfCBhc3luY1wiXG4gICAgICBbaW5wdXREaXNhYmxlZF09XCIhb2JzLmxvYWRlZFwiXG4gICAgICBbZXh0ZXJuYWxTZWFyY2hGaWVsZF09XCJvYnMuc2hvd1N0YXR1c1NlbGVjdG9yXCJcbiAgICA+XG4gICAgICA8dmFsdGltby1zdGF0dXMtc2VsZWN0b3JcbiAgICAgICAgKm5nSWY9XCJvYnMuc2hvd1N0YXR1c1NlbGVjdG9yXCJcbiAgICAgICAgW3N0YXR1c2VzXT1cIm9icy5zdGF0dXNlc1wiXG4gICAgICAgIFtzZWxlY3RlZFN0YXR1c2VzXT1cIm9icy5zZWxlY3RlZFN0YXR1c2VzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFvYnMubG9hZGVkXCJcbiAgICAgICAgKHNlbGVjdGVkU3RhdHVzZXNDaGFuZ2VFdmVudCk9XCJvblNlbGVjdGVkU3RhdHVzZXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC92YWx0aW1vLXN0YXR1cy1zZWxlY3Rvcj5cbiAgICA8L3ZhbHRpbW8tc2VhcmNoLWZpZWxkcz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3QgbGV0LW9icz1cIm9ic1wiPlxuICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgW2luaXRpYWxTb3J0U3RhdGVdPVwicGFnaW5hdGlvbi5zb3J0XCJcbiAgICBbaXRlbXNdPVwib2JzLmRvY3VtZW50SXRlbXNcIlxuICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgIHBhZ2luYXRpb25JZGVudGlmaWVyPVwiZG9zc2llckxpc3RcIlxuICAgIGxvY2tlZFRvb2x0aXBUcmFuc2xhdGlvbktleT1cImRvc3NpZXIucm93TG9ja2VkXCJcbiAgICBbc2hvd1NlbGVjdGlvbkNvbHVtbl09XCJjYW5IYXZlQXNzaWduZWVcIlxuICAgIFt0YWJsZVRyYW5zbGF0aW9uc109XCJ0YWJsZVRyYW5zbGF0aW9uc1wiXG4gICAgKHBhZ2luYXRpb25DbGlja2VkKT1cInBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHBhZ2luYXRpb25TZXQpPVwicGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHJvd0NsaWNrZWQpPVwicm93Q2xpY2soJGV2ZW50KVwiXG4gICAgKHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciBjYXJib25Ub29sYmFyQWN0aW9ucz5cbiAgICAgIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJzaG93QXNzaWduTW9kYWwoKVwiPlxuICAgICAgICB7eyAnZG9zc2llci5idWxrQXNzaWduLmFzc2lnbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkb3NzaWVyTGlzdEFjdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UuaXNTZWFyY2hSZXN1bHQgPyBudWxsIDogZG9zc2llckxpc3RBY3Rpb25zXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UudGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cblxuICAgIDxkaXYgdGFicyAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJzPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWduZWVGaWx0ZXIkIHwgYXN5bmMgYXMgYXNzaWduZWVGaWx0ZXJcIj5cbiAgICA8Y2RzLXRhYnNcbiAgICAgICpuZ0lmPVwiIXZpc2libGVEb3NzaWVyVGFiczsgZWxzZSBjb25maWd1cmVkVGFic1wiXG4gICAgICB0eXBlPVwiY29udGFpbmVkXCJcbiAgICAgIGNsYXNzPVwiZG9zc2llci1saXN0LXRhYnNcIlxuICAgID5cbiAgICAgIDxjZHMtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgZGVmYXVsdFRhYnM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXG4gICAgICAgIFthY3RpdmVdPVwiYXNzaWduZWVGaWx0ZXIgPT09IHRhYlwiXG4gICAgICAgIGhlYWRpbmc9XCJ7eyAnZG9zc2llci50YWJzLicgKyB0YWIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbaWRdPVwidGFiXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cInRhYkNoYW5nZSh0YWIpXCJcbiAgICAgID48L2Nkcy10YWI+XG4gICAgPC9jZHMtdGFicz5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbmZpZ3VyZWRUYWJzPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWduZWVGaWx0ZXIkIHwgYXN5bmMgYXMgYXNzaWduZWVGaWx0ZXJcIj5cbiAgICA8Y2RzLXRhYnMgdHlwZT1cImNvbnRhaW5lZFwiIGNsYXNzPVwiZG9zc2llci1saXN0LXRhYnNcIj5cbiAgICAgIDxjZHMtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdmlzaWJsZURvc3NpZXJUYWJzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxuICAgICAgICBbYWN0aXZlXT1cImFzc2lnbmVlRmlsdGVyID09PSB0YWJcIlxuICAgICAgICBoZWFkaW5nPVwie3sgJ2Rvc3NpZXIudGFicy4nICsgdGFiIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2lkXT1cInRhYlwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJ0YWJDaGFuZ2UodGFiKVwiXG4gICAgICA+PC9jZHMtdGFiPlxuICAgIDwvY2RzLXRhYnM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nXG4gID48dmFsdGltby1jYXJib24tbGlzdCBbbG9hZGluZ109XCJ0cnVlXCI+XG4gICAgPGRpdiB0YWJzICpuZ0lmPVwiY2FuSGF2ZUFzc2lnbmVlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFic1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PiA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Rcbj48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1bGtBc3NpZ25Nb2RhbCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWRvc3NpZXItYnVsay1hc3NpZ24tbW9kYWxcbiAgICBbZG9jdW1lbnRJZHNdPVwib2JzLnNlbGVjdGVkRG9jdW1lbnRJZHNcIlxuICAgIFtvcGVuXT1cIm9icy5zaG93QXNzaWduTW9kYWxcIlxuICAgIChjbG9zZUV2ZW50KT1cIm9uQ2xvc2VFdmVudCgkZXZlbnQsIG9icy5zZWxlY3RlZERvY3VtZW50SWRzKVwiXG4gID48L3ZhbHRpbW8tZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hhbmdlUGFnZU1vZGFsPlxuICA8dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VQYWdlTW9kYWwuY29uZmlybVwiXG4gICAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VQYWdlTW9kYWwuY29udGVudFwiXG4gICAgW291dHB1dE9uQ29uZmlybV09XCJwYWdpbmF0aW9uQ2hhbmdlJCB8IGFzeW5jXCJcbiAgICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0NoYW5nZVBhZ2VNb2RhbCRcIlxuICAgIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVBhZ2VNb2RhbC50aXRsZVwiXG4gICAgKGNvbmZpcm1FdmVudCk9XCJvbkNoYW5nZVBhZ2VDb25maXJtKCRldmVudClcIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hhbmdlVGFiTW9kYWw+XG4gIDx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICAgIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmNoYW5nZVRhYk1vZGFsLmNvbmZpcm1cIlxuICAgIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuY2hhbmdlVGFiTW9kYWwuY29udGVudFwiXG4gICAgW291dHB1dE9uQ29uZmlybV09XCJ0YWJDaGFuZ2UkIHwgYXN5bmNcIlxuICAgIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93Q2hhbmdlVGFiTW9kYWwkXCJcbiAgICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5jaGFuZ2VUYWJNb2RhbC50aXRsZVwiXG4gICAgKGNhbmNlbEV2ZW50KT1cIm9uQ2hhbmdlVGFiQ2FuY2VsKClcIlxuICAgIChjb25maXJtRXZlbnQpPVwib25DaGFuZ2VUYWJDb25maXJtKCRldmVudClcIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZG9zc2llckxpc3RBY3Rpb25zPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJjYW5DcmVhdGVEb2N1bWVudCQgfCBhc3luY1wiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVTdGFydEJ1dHRvbiQgfCBhc3luY1wiXG4gICAgKGNsaWNrKT1cInN0YXJ0RG9zc2llcigpXCJcbiAgPlxuICAgIHt7ICdTdGFydCBEb3NzaWVyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|