aril 2.0.1-dev.3 → 2.0.1-dev.5
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/boot/bridge/src/mfe-bridge.d.ts +33 -0
- package/boot/config/apps/src/interfaces.d.ts +7 -1
- package/boot/config/apps/src/route-close.service.d.ts +8 -3
- package/boot/config/apps/src/route-permissions.d.ts +2 -2
- package/esm2022/boot/bridge/src/mfe-bridge.mjs +18 -1
- package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
- package/esm2022/boot/config/apps/src/apps.service.mjs +2 -2
- package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
- package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
- package/esm2022/boot/config/apps/src/route-close.service.mjs +11 -4
- package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
- package/esm2022/boot/host/src/bootstrap.mjs +5 -3
- package/esm2022/boot/mfe/src/bootstrap.mjs +15 -3
- package/esm2022/http/index.mjs +1 -2
- package/esm2022/http/src/serviceBase.mjs +4 -4
- package/esm2022/http/src/serviceStateMethods.mjs +9 -1
- package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
- package/esm2022/selection/aril-selection.mjs +5 -0
- package/esm2022/selection/index.mjs +2 -0
- package/esm2022/selection/src/interfaces.mjs +2 -0
- package/esm2022/selection/src/selection-group.service.mjs +195 -0
- package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +2 -2
- package/esm2022/theme/layout/index.mjs +4 -2
- package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +12 -4
- package/esm2022/theme/layout/service/interfaces/interfaces.mjs +1 -1
- package/esm2022/ui/button/index.mjs +1 -2
- package/esm2022/ui/button/src/button.component.mjs +5 -2
- package/esm2022/ui/charts/index.mjs +1 -11
- package/esm2022/ui/lib/index.mjs +1 -4
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +9 -5
- package/esm2022/ui/multiSelect/src/multi-select.component.mjs +25 -25
- package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +2 -2
- package/esm2022/ui/selectBox/src/select-box.component.mjs +11 -34
- package/esm2022/ui/table/src/table.component.mjs +10 -5
- package/esm2022/ui/value/src/value.component.mjs +3 -2
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +14 -6
- package/esm2022/util/activity/aril-util-activity.mjs +5 -0
- package/esm2022/util/activity/index.mjs +4 -0
- package/esm2022/util/activity/src/activity.constants.mjs +4 -0
- package/esm2022/util/activity/src/activity.service.mjs +218 -0
- package/esm2022/util/activity/src/activity.types.mjs +2 -0
- package/esm2022/util/block/src/block.mjs +9 -25
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +10 -5
- package/fesm2022/{aril-app.component-s14ruALV.mjs → aril-app.component-MjG_tPEe.mjs} +2 -1
- package/fesm2022/{aril-app.component-s14ruALV.mjs.map → aril-app.component-MjG_tPEe.mjs.map} +1 -1
- package/fesm2022/aril-boot-bridge.mjs +17 -0
- package/fesm2022/aril-boot-bridge.mjs.map +1 -1
- package/fesm2022/aril-boot-config-api.mjs +2 -1
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +36 -12
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +6 -4
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +4 -2
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-AS4MzEo2.mjs → aril-boot-mfe-app.component-DtspQ3J8.mjs} +3 -2
- package/fesm2022/{aril-boot-mfe-app.component-AS4MzEo2.mjs.map → aril-boot-mfe-app.component-DtspQ3J8.mjs.map} +1 -1
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-Ui9Cv3UC.mjs → aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs} +16 -4
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +2 -1
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +11 -7
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +4 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-selection.mjs +202 -0
- package/fesm2022/aril-selection.mjs.map +1 -0
- package/fesm2022/aril-theme-layout.mjs +14 -66
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +14 -6
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +5 -17
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-charts.mjs +4 -1302
- package/fesm2022/aril-ui-charts.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +10 -98
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-multiSelect.mjs +24 -24
- package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +10 -33
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +9 -4
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +2 -1
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-util-activity.mjs +228 -0
- package/fesm2022/aril-util-activity.mjs.map +1 -0
- package/fesm2022/aril-util-block.mjs +9 -25
- package/fesm2022/aril-util-block.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +9 -4
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril.mjs +18 -5
- package/fesm2022/aril.mjs.map +1 -1
- package/http/index.d.ts +0 -1
- package/http/src/serviceStateMethods.d.ts +1 -0
- package/package.json +210 -234
- package/scripts/mf-shared.js +47 -0
- package/selection/index.d.ts +1 -0
- package/selection/src/interfaces.d.ts +8 -0
- package/{theme/layout/service → selection/src}/selection-group.service.d.ts +9 -5
- package/theme/layout/index.d.ts +1 -1
- package/theme/layout/index.ts +3 -1
- package/theme/layout/service/breadcrumb-publisher.service.ts +18 -8
- package/theme/layout/service/interfaces/interfaces.d.ts +3 -17
- package/theme/layout/service/interfaces/interfaces.ts +6 -18
- package/ui/button/index.d.ts +0 -1
- package/ui/button/src/button.component.d.ts +2 -0
- package/ui/charts/index.d.ts +0 -10
- package/ui/lib/index.d.ts +0 -3
- package/ui/lib/src/form/form-error-message.directive.d.ts +4 -3
- package/ui/multiSelect/src/multi-select.component.d.ts +4 -5
- package/ui/selectBox/src/select-box.component.d.ts +2 -7
- package/ui/table/src/table.component.d.ts +3 -2
- package/util/activity/index.d.ts +3 -0
- package/util/activity/src/activity.constants.d.ts +3 -0
- package/util/activity/src/activity.service.d.ts +35 -0
- package/util/activity/src/activity.types.d.ts +13 -0
- package/util/block/src/block.d.ts +4 -10
- package/util/pub-sub/src/pub-sub.service.d.ts +2 -2
- package/esm2022/http/src/serviceMockBase.mjs +0 -4
- package/esm2022/theme/layout/service/selection-group.service.mjs +0 -65
- package/esm2022/ui/button/src/split-button.component.mjs +0 -18
- package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +0 -124
- package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +0 -164
- package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +0 -116
- package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +0 -114
- package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +0 -100
- package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +0 -117
- package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +0 -252
- package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +0 -89
- package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +0 -82
- package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +0 -137
- package/esm2022/ui/charts/src/theme/theme.mjs +0 -54
- package/esm2022/ui/dxEditor/aril-ui-dxEditor.mjs +0 -5
- package/esm2022/ui/dxEditor/index.mjs +0 -2
- package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +0 -26
- package/esm2022/ui/lib/src/form/form-field-builder.mjs +0 -23
- package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +0 -49
- package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +0 -25
- package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +0 -5
- package/esm2022/ui/overlayPanel/index.mjs +0 -2
- package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +0 -20
- package/esm2022/ui/tooltip/aril-ui-tooltip.mjs +0 -5
- package/esm2022/ui/tooltip/index.mjs +0 -2
- package/esm2022/ui/tooltip/src/tooltip-component.mjs +0 -23
- package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +0 -5
- package/esm2022/ui/treeTable/index.mjs +0 -2
- package/esm2022/ui/treeTable/src/tree-table.component.mjs +0 -55
- package/esm2022/ui-business/operation-types-dialog/aril-ui-business-operation-types-dialog.mjs +0 -5
- package/esm2022/ui-business/operation-types-dialog/index.mjs +0 -2
- package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +0 -76
- package/esm2022/util/unwrap/aril-util-unwrap.mjs +0 -5
- package/esm2022/util/unwrap/index.mjs +0 -2
- package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +0 -24
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-Ui9Cv3UC.mjs.map +0 -1
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs +0 -83
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +0 -1
- package/fesm2022/aril-ui-dxEditor.mjs +0 -33
- package/fesm2022/aril-ui-dxEditor.mjs.map +0 -1
- package/fesm2022/aril-ui-overlayPanel.mjs +0 -27
- package/fesm2022/aril-ui-overlayPanel.mjs.map +0 -1
- package/fesm2022/aril-ui-tooltip.mjs +0 -30
- package/fesm2022/aril-ui-tooltip.mjs.map +0 -1
- package/fesm2022/aril-ui-treeTable.mjs +0 -62
- package/fesm2022/aril-ui-treeTable.mjs.map +0 -1
- package/fesm2022/aril-util-unwrap.mjs +0 -31
- package/fesm2022/aril-util-unwrap.mjs.map +0 -1
- package/http/src/serviceMockBase.d.ts +0 -6
- package/theme/layout/service/selection-group.service.ts +0 -73
- package/ui/button/src/split-button.component.d.ts +0 -8
- package/ui/charts/src/amCharts/column/column-chart.component.d.ts +0 -25
- package/ui/charts/src/amCharts/line/line-chart.component.d.ts +0 -26
- package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +0 -24
- package/ui/charts/src/highCharts/area/area-chart.component.d.ts +0 -20
- package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +0 -26
- package/ui/charts/src/highCharts/column/column-chart.component.d.ts +0 -28
- package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +0 -32
- package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +0 -21
- package/ui/charts/src/highCharts/line/line-chart.component.d.ts +0 -21
- package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +0 -27
- package/ui/charts/src/theme/theme.d.ts +0 -5
- package/ui/dxEditor/index.d.ts +0 -1
- package/ui/dxEditor/src/dx-editor.component.d.ts +0 -11
- package/ui/lib/src/form/form-field-builder.d.ts +0 -8
- package/ui/lib/src/input/common-input-validators.service.d.ts +0 -20
- package/ui/lib/src/input/input-disabled.directive.d.ts +0 -9
- package/ui/overlayPanel/index.d.ts +0 -1
- package/ui/overlayPanel/src/overlay-panel.component.d.ts +0 -8
- package/ui/tooltip/index.d.ts +0 -1
- package/ui/tooltip/src/tooltip-component.d.ts +0 -14
- package/ui/treeTable/index.d.ts +0 -1
- package/ui/treeTable/src/tree-table.component.d.ts +0 -21
- package/ui-business/operation-types-dialog/index.d.ts +0 -1
- package/ui-business/operation-types-dialog/src/operation-types-dialog.component.d.ts +0 -28
- package/util/unwrap/index.d.ts +0 -1
- package/util/unwrap/src/unwrap-tag.directive.d.ts +0 -9
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { runInInjectionContext } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { Observable, of } from 'rxjs';
|
|
4
|
-
import { catchError, map, tap } from 'rxjs/operators';
|
|
4
|
+
import { catchError, finalize, map, tap } from 'rxjs/operators';
|
|
5
5
|
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
6
6
|
import { HTTPMethods, HTTPStatusCodes } from '../lib/enums';
|
|
7
7
|
import { ErrorResponse, ServiceResponse } from '../lib/interfaces';
|
|
8
8
|
import { getRequest } from './serviceRequest';
|
|
9
|
-
import { callState, errorState, successState, warningState } from './serviceStateMethods';
|
|
9
|
+
import { callState, clearWaitingState, errorState, successState, warningState } from './serviceStateMethods';
|
|
10
10
|
export function ServiceCall(httpMethod, proxy, serviceURL, message, remoteAPI, isMockAPI = false) {
|
|
11
11
|
return function (serviceClass, serviceName, descriptor) {
|
|
12
12
|
// const originalFunction = descriptor.value;
|
|
@@ -131,10 +131,10 @@ export function ServiceCall(httpMethod, proxy, serviceURL, message, remoteAPI, i
|
|
|
131
131
|
}), catchError((error) => {
|
|
132
132
|
errorState(states, serviceName, error, this.translocoService, this.messageService, this.keycloak, message);
|
|
133
133
|
return of(new ErrorResponse(error));
|
|
134
|
-
}), takeUntilDestroyed());
|
|
134
|
+
}), takeUntilDestroyed(), finalize(() => clearWaitingState(states, serviceName)));
|
|
135
135
|
return observable;
|
|
136
136
|
});
|
|
137
137
|
};
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2h0dHAvc3JjL3NlcnZpY2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQWMsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRixNQUFNLFVBQVUsV0FBVyxDQUMxQixVQUF1QixFQUN2QixLQUFpQixFQUNqQixVQUFrQixFQUNsQixPQUFxRixFQUNyRixTQUFnQixFQUNoQixTQUFTLEdBQUcsS0FBSztJQUVqQixPQUFPLFVBQVUsWUFBb0IsRUFBRSxXQUE0QixFQUFFLFVBQThCO1FBQ2xHLDZDQUE2QztRQUU3QyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1lBQzFDLE9BQU8scUJBQXFCLENBQU8sSUFBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZELE1BQU0sVUFBVSxHQUFxQixJQUFLLENBQUMsVUFBVSxDQUFD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LENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDOzRCQUNoRixNQUFNLEVBQVEsSUFBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQzt5QkFDekUsQ0FBQyxDQUFDO29CQUNKLENBQUM7eUJBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyw0QkFBNEIsRUFBRSxDQUFDO3dCQUN0RSxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFRLElBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDcEYsQ0FBQzt5QkFBTSxDQUFDO3dCQUNQLFlBQVksQ0FDWCxNQUFNLEVBQ04sV0FBVyxFQUNMLElBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsSUFBSyxDQUFDLGNBQWMsRUFDMUIsT0FBTyxFQUNQLFVBQVUsQ0FDVixDQUFDO29CQUNILENBQUM7Z0JBQ0YsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO29CQUN2QyxVQUFVLENBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxLQUFLLEVBQ0MsSUFBSyxDQUFDLGdCQUFnQixFQUN0QixJQUFLLENBQUMsY0FBYyxFQUNwQixJQUFLLENBQUMsUUFBUSxFQUNwQixPQUFPLENBQ1AsQ0FBQztvQkFDRixPQUFPLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsRUFDRixrQkFBa0IsRUFBRSxDQUNwQixDQUFDO2dCQUVGLE9BQU8sVUFBVSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBUElfQ09ORklHUyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5pbXBvcnQgeyBIVFRQTWV0aG9kcywgSFRUUFN0YXR1c0NvZGVzLCBQcm94eVR5cGVzIH0gZnJvbSAnLi4vbGliL2VudW1zJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSwgU2VydmljZUNhbGxTdGF0ZU1hcCwgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vbGliL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBnZXRSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlUmVxdWVzdCc7XHJcbmltcG9ydCB7IGNhbGxTdGF0ZSwgZXJyb3JTdGF0ZSwgc3VjY2Vzc1N0YXRlLCB3YXJuaW5nU3RhdGUgfSBmcm9tICcuL3NlcnZpY2VTdGF0ZU1ldGhvZHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFNlcnZpY2VDYWxsKFxyXG5cdGh0dHBNZXRob2Q6IEhUVFBNZXRob2RzLFxyXG5cdHByb3h5OiBQcm94eVR5cGVzLFxyXG5cdHNlcnZpY2VVUkw6IHN0cmluZyxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgaWdub3JlZFN0YXR1c0NvZGVzPzogSHR0cFN0YXR1c0NvZGVbXSB9LFxyXG5cdHJlbW90ZUFQST86IEFwcHMsXHJcblx0aXNNb2NrQVBJID0gZmFsc2VcclxuKTogTWV0aG9kRGVjb3JhdG9yIHtcclxuXHRyZXR1cm4gZnVuY3Rpb24gKHNlcnZpY2VDbGFzczogb2JqZWN0LCBzZXJ2aWNlTmFtZTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcclxuXHRcdC8vIGNvbnN0IG9yaWdpbmFsRnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuXHRcdGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuXHRcdFx0cmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCgoPGFueT50aGlzKS5pbmplY3RvciwgKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQgPSAoPGFueT50aGlzKS5odHRwQ2xpZW50O1xyXG5cclxuXHRcdFx0XHRsZXQgYXBpID0gJyc7XHJcblx0XHRcdFx0aWYgKGlzTW9ja0FQSSkgYXBpID0gPHN0cmluZz5yZW1vdGVBUEk7XHJcblx0XHRcdFx0ZWxzZSBpZiAocmVtb3RlQVBJKSB7XHJcblx0XHRcdFx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKEFQSV9DT05GSUdTLmFwaSk7XHJcblx0XHRcdFx0XHRhcGkgPSB1cmwub3JpZ2luICsgJy8nICsgQVBJX0NPTkZJR1MucHJlZml4TWFwW3JlbW90ZUFQSV07XHJcblx0XHRcdFx0fSBlbHNlIGFwaSA9IEFQSV9DT05GSUdTLmFwaTtcclxuXHJcblx0XHRcdFx0Y29uc3QgZW5kUG9pbnQgPSBhcGkgKyAnLycgKyBzZXJ2aWNlVVJMO1xyXG5cdFx0XHRcdGNvbnN0IHJlcXVlc3QgPSBnZXRSZXF1ZXN0KGh0dHBNZXRob2QsIGFyZ3MpO1xyXG5cdFx0XHRcdGNvbnN0IHN0YXRlczogU2VydmljZUNhbGxTdGF0ZU1hcDxhbnk+ID0gKDxhbnk+dGhpcykuc3RhdGVzO1xyXG5cclxuXHRcdFx0XHRjYWxsU3RhdGUoc3RhdGVzLCBzZXJ2aWNlTmFtZSk7XHJcblxyXG5cdFx0XHRcdGxldCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gPSBuZXcgT2JzZXJ2YWJsZTxhbnk+KCk7XHJcblx0XHRcdFx0bGV0IGdldER5bmFtaWNTZXJ2aWNlVXJsOiBzdHJpbmc7XHJcblxyXG5cdFx0XHRcdHN3aXRjaCAoaHR0cE1ldGhvZCkge1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5HRVQ6XHJcblx0XHRcdFx0XHRcdGxldCBnZXRSZXEgPSBhcmdzLmxlbmd0aCA/ICcvJyArIGFyZ3NbMF0gOiAnJztcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZ2V0PGFueT4oZW5kUG9pbnQgKyBnZXRSZXEsIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVEJZUEFSQU1TOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5nZXQ8YW55PihlbmRQb2ludCwgeyBwYXJhbXM6IHJlcXVlc3QgYXMgSHR0cFBhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5HRVRCWURZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRnZXREeW5hbWljU2VydmljZVVybCA9IHNlcnZpY2VVUkw7XHJcblx0XHRcdFx0XHRcdGFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0Z2V0RHluYW1pY1NlcnZpY2VVcmwgPSBnZXREeW5hbWljU2VydmljZVVybC5yZXBsYWNlKCckJywgYXJnKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmdldDxhbnk+KGFwaSArICcvJyArIGdldER5bmFtaWNTZXJ2aWNlVXJsLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5HRVRCWVBBUkFNU0FORERZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRsZXQgZ2V0UGFyYW1zID0ge307XHJcblx0XHRcdFx0XHRcdGxldCBnZXREeW5hbWljU2VydmljZVVybFdpdGhQYXJhbXMgPSBzZXJ2aWNlVVJMO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIGdldFBhcmFtcyA9IGFyZztcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcyA9IGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcy5yZXBsYWNlKCckJywgYXJnKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5nZXQ8YW55PihhcGkgKyAnLycgKyBnZXREeW5hbWljU2VydmljZVVybFdpdGhQYXJhbXMsIHtcclxuXHRcdFx0XHRcdFx0XHRwYXJhbXM6IGdldFBhcmFtcyBhcyBIdHRwUGFyYW1zLFxyXG5cdFx0XHRcdFx0XHRcdG9ic2VydmU6ICdyZXNwb25zZScsXHJcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VUeXBlOiAnanNvbidcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QT1NUOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wb3N0PGFueT4oZW5kUG9pbnQsIGFyZ3NbMF0sIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBPU1RCWVBBUkFNUzpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucG9zdDxhbnk+KGVuZFBvaW50LCBhcmdzWzBdLmJvZHksIHsgcGFyYW1zOiByZXF1ZXN0LCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBPU1RCWURZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRsZXQgYm9keSA9IHt9O1xyXG5cdFx0XHRcdFx0XHRsZXQgZHluYW1pY1NlcnZpY2VVcmwgPSBzZXJ2aWNlVVJMO1xyXG5cclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIGJvZHkgPSBhcmc7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBkeW5hbWljU2VydmljZVVybCA9IGR5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucG9zdDxhbnk+KGFwaSArICcvJyArIGR5bmFtaWNTZXJ2aWNlVXJsLCBib2R5LCB7IG9ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUFVUOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wdXQ8YW55PihlbmRQb2ludCArICcvJyArIGFyZ3NbMF0sIHJlcXVlc3QsIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QVVRCWVBBUkFNUzpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucHV0PGFueT4oZW5kUG9pbnQsIGFyZ3NbMF0sIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUFVUQllEWU5BTUlDUEFUSDpcclxuXHRcdFx0XHRcdFx0bGV0IHB1dEJvZHkgPSB7fTtcclxuXHRcdFx0XHRcdFx0bGV0IHB1dER5bmFtaWNTZXJ2aWNlVXJsID0gc2VydmljZVVSTDtcclxuXHJcblx0XHRcdFx0XHRcdGFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBhcmcgPT09ICdvYmplY3QnKSBwdXRCb2R5ID0gYXJnO1xyXG5cdFx0XHRcdFx0XHRcdGVsc2UgcHV0RHluYW1pY1NlcnZpY2VVcmwgPSBwdXREeW5hbWljU2VydmljZVVybC5yZXBsYWNlKCckJywgYXJnKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LnB1dDxhbnk+KGFwaSArICcvJyArIHB1dER5bmFtaWNTZXJ2aWNlVXJsLCBwdXRCb2R5LCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5ERUxFVEU6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmRlbGV0ZTxhbnk+KGVuZFBvaW50ICsgJy8nICsgYXJnc1swXSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuREVMRVRFQllQQVJBTVM6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmRlbGV0ZTxhbnk+KGVuZFBvaW50LCB7IHBhcmFtczogcmVxdWVzdCBhcyBIdHRwUGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkRFTEVURUJZRFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGxldCBkZWxldGVQYXJhbXMgPSB7fTtcclxuXHRcdFx0XHRcdFx0bGV0IGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsID0gc2VydmljZVVSTDtcclxuXHJcblx0XHRcdFx0XHRcdGFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBhcmcgPT09ICdvYmplY3QnKSBkZWxldGVQYXJhbXMgPSBhcmc7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBkZWxldGVEeW5hbWljU2VydmljZVVybCA9IGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmRlbGV0ZTxhbnk+KGFwaSArICcvJyArIGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsLCB7XHJcblx0XHRcdFx0XHRcdFx0cGFyYW1zOiBkZWxldGVQYXJhbXMsXHJcblx0XHRcdFx0XHRcdFx0b2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuXHRcdFx0XHRcdFx0XHRyZXNwb25zZVR5cGU6ICdqc29uJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXHJcblx0XHRcdFx0XHRtYXAoKHJlc3BvbnNlKSA9PiBuZXcgU2VydmljZVJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlPy5ib2R5LCBwcm94eSwgcmVzcG9uc2U/LnN0YXR1cykpLFxyXG5cdFx0XHRcdFx0dGFwKChzZXJ2aWNlUmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChzZXJ2aWNlUmVzPy5zdGF0dXNDb2RlID09PSBIVFRQU3RhdHVzQ29kZXMuTk9fQ09OVEVOVCkge1xyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRcdFx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiAoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMuc3VjY2Vzc01lc3NhZ2VIZWFkZXInKSxcclxuXHRcdFx0XHRcdFx0XHRcdGRldGFpbDogKDxhbnk+dGhpcykudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ21lc3NhZ2VzLnN1Y2Nlc3NNZXNzYWdlJylcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzZXJ2aWNlUmVzLnJlc3BvbnNlLnR5cGUgPT09ICdWYWxpZGF0aW9uV2FybmluZ0V4Y2VwdGlvbicpIHtcclxuXHRcdFx0XHRcdFx0XHR3YXJuaW5nU3RhdGUoc3RhdGVzLCBzZXJ2aWNlTmFtZSwgc2VydmljZVJlcy5yZXNwb25zZSwgKDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NTdGF0ZShcclxuXHRcdFx0XHRcdFx0XHRcdHN0YXRlcyxcclxuXHRcdFx0XHRcdFx0XHRcdHNlcnZpY2VOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykudHJhbnNsb2NvU2VydmljZSxcclxuXHRcdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLm1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZSxcclxuXHRcdFx0XHRcdFx0XHRcdHNlcnZpY2VSZXNcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRlcnJvclN0YXRlKFxyXG5cdFx0XHRcdFx0XHRcdHN0YXRlcyxcclxuXHRcdFx0XHRcdFx0XHRzZXJ2aWNlTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRlcnJvcixcclxuXHRcdFx0XHRcdFx0XHQoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLm1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLmtleWNsb2FrLFxyXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIG9mKG5ldyBFcnJvclJlc3BvbnNlKGVycm9yKSk7XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHRha2VVbnRpbERlc3Ryb3llZCgpXHJcblx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGU7XHJcblx0XHRcdH0pO1xyXG5cdFx0fTtcclxuXHR9O1xyXG59XHJcbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2h0dHAvc3JjL3NlcnZpY2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFjLE1BQU0sY0FBYyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQXVCLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0csTUFBTSxVQUFVLFdBQVcsQ0FDMUIsVUFBdUIsRUFDdkIsS0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsT0FBcUYsRUFDckYsU0FBZ0IsRUFDaEIsU0FBUyxHQUFHLEtBQUs7SUFFakIsT0FBTyxVQUFVLFlBQW9CLEVBQUUsV0FBNEIsRUFBRSxVQUE4QjtRQUNsRyw2Q0FBNkM7UUFFN0MsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztZQUMxQyxPQUFPLHFCQUFxQixDQUFPLElBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUN2RCxNQUFNLFVBQVUsR0FB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bGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuaW1wb3J0IHsgSFRUUE1ldGhvZHMsIEhUVFBTdGF0dXNDb2RlcywgUHJveHlUeXBlcyB9IGZyb20gJy4uL2xpYi9lbnVtcyc7XHJcbmltcG9ydCB7IEVycm9yUmVzcG9uc2UsIFNlcnZpY2VDYWxsU3RhdGVNYXAsIFNlcnZpY2VSZXNwb25zZSB9IGZyb20gJy4uL2xpYi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgZ2V0UmVxdWVzdCB9IGZyb20gJy4vc2VydmljZVJlcXVlc3QnO1xyXG5pbXBvcnQgeyBjYWxsU3RhdGUsIGNsZWFyV2FpdGluZ1N0YXRlLCBlcnJvclN0YXRlLCBzdWNjZXNzU3RhdGUsIHdhcm5pbmdTdGF0ZSB9IGZyb20gJy4vc2VydmljZVN0YXRlTWV0aG9kcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU2VydmljZUNhbGwoXHJcblx0aHR0cE1ldGhvZDogSFRUUE1ldGhvZHMsXHJcblx0cHJveHk6IFByb3h5VHlwZXMsXHJcblx0c2VydmljZVVSTDogc3RyaW5nLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nOyBpZ25vcmVkU3RhdHVzQ29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdIH0sXHJcblx0cmVtb3RlQVBJPzogQXBwcyxcclxuXHRpc01vY2tBUEkgPSBmYWxzZVxyXG4pOiBNZXRob2REZWNvcmF0b3Ige1xyXG5cdHJldHVybiBmdW5jdGlvbiAoc2VydmljZUNsYXNzOiBvYmplY3QsIHNlcnZpY2VOYW1lOiBzdHJpbmcgfCBzeW1ib2wsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG5cdFx0Ly8gY29uc3Qgb3JpZ2luYWxGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWU7XHJcblxyXG5cdFx0ZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG5cdFx0XHRyZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KCg8YW55PnRoaXMpLmluamVjdG9yLCAoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgaHR0cENsaWVudDogSHR0cENsaWVudCA9ICg8YW55PnRoaXMpLmh0dHBDbGllbnQ7XHJcblxyXG5cdFx0XHRcdGxldCBhcGkgPSAnJztcclxuXHRcdFx0XHRpZiAoaXNNb2NrQVBJKSBhcGkgPSA8c3RyaW5nPnJlbW90ZUFQSTtcclxuXHRcdFx0XHRlbHNlIGlmIChyZW1vdGVBUEkpIHtcclxuXHRcdFx0XHRcdGNvbnN0IHVybCA9IG5ldyBVUkwoQVBJX0NPTkZJR1MuYXBpKTtcclxuXHRcdFx0XHRcdGFwaSA9IHVybC5vcmlnaW4gKyAnLycgKyBBUElfQ09ORklHUy5wcmVmaXhNYXBbcmVtb3RlQVBJXTtcclxuXHRcdFx0XHR9IGVsc2UgYXBpID0gQVBJX0NPTkZJR1MuYXBpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBlbmRQb2ludCA9IGFwaSArICcvJyArIHNlcnZpY2VVUkw7XHJcblx0XHRcdFx0Y29uc3QgcmVxdWVzdCA9IGdldFJlcXVlc3QoaHR0cE1ldGhvZCwgYXJncyk7XHJcblx0XHRcdFx0Y29uc3Qgc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4gPSAoPGFueT50aGlzKS5zdGF0ZXM7XHJcblxyXG5cdFx0XHRcdGNhbGxTdGF0ZShzdGF0ZXMsIHNlcnZpY2VOYW1lKTtcclxuXHJcblx0XHRcdFx0bGV0IG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55PiA9IG5ldyBPYnNlcnZhYmxlPGFueT4oKTtcclxuXHRcdFx0XHRsZXQgZ2V0RHluYW1pY1NlcnZpY2VVcmw6IHN0cmluZztcclxuXHJcblx0XHRcdFx0c3dpdGNoIChodHRwTWV0aG9kKSB7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVDpcclxuXHRcdFx0XHRcdFx0bGV0IGdldFJlcSA9IGFyZ3MubGVuZ3RoID8gJy8nICsgYXJnc1swXSA6ICcnO1xyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5nZXQ8YW55PihlbmRQb2ludCArIGdldFJlcSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuR0VUQllQQVJBTVM6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmdldDxhbnk+KGVuZFBvaW50LCB7IHBhcmFtczogcmVxdWVzdCBhcyBIdHRwUGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVEJZRFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGdldER5bmFtaWNTZXJ2aWNlVXJsID0gc2VydmljZVVSTDtcclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRnZXREeW5hbWljU2VydmljZVVybCA9IGdldER5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZ2V0PGFueT4oYXBpICsgJy8nICsgZ2V0RHluYW1pY1NlcnZpY2VVcmwsIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVEJZUEFSQU1TQU5ERFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGxldCBnZXRQYXJhbXMgPSB7fTtcclxuXHRcdFx0XHRcdFx0bGV0IGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcyA9IHNlcnZpY2VVUkw7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRhcmdzLmZvckVhY2goKGFyZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgYXJnID09PSAnb2JqZWN0JykgZ2V0UGFyYW1zID0gYXJnO1xyXG5cdFx0XHRcdFx0XHRcdGVsc2UgZ2V0RHluYW1pY1NlcnZpY2VVcmxXaXRoUGFyYW1zID0gZ2V0RHluYW1pY1NlcnZpY2VVcmxXaXRoUGFyYW1zLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmdldDxhbnk+KGFwaSArICcvJyArIGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcywge1xyXG5cdFx0XHRcdFx0XHRcdHBhcmFtczogZ2V0UGFyYW1zIGFzIEh0dHBQYXJhbXMsXHJcblx0XHRcdFx0XHRcdFx0b2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuXHRcdFx0XHRcdFx0XHRyZXNwb25zZVR5cGU6ICdqc29uJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBPU1Q6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LnBvc3Q8YW55PihlbmRQb2ludCwgYXJnc1swXSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUE9TVEJZUEFSQU1TOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wb3N0PGFueT4oZW5kUG9pbnQsIGFyZ3NbMF0uYm9keSwgeyBwYXJhbXM6IHJlcXVlc3QsIG9ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUE9TVEJZRFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGxldCBib2R5ID0ge307XHJcblx0XHRcdFx0XHRcdGxldCBkeW5hbWljU2VydmljZVVybCA9IHNlcnZpY2VVUkw7XHJcblxyXG5cdFx0XHRcdFx0XHRhcmdzLmZvckVhY2goKGFyZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgYXJnID09PSAnb2JqZWN0JykgYm9keSA9IGFyZztcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGR5bmFtaWNTZXJ2aWNlVXJsID0gZHluYW1pY1NlcnZpY2VVcmwucmVwbGFjZSgnJCcsIGFyZyk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wb3N0PGFueT4oYXBpICsgJy8nICsgZHluYW1pY1NlcnZpY2VVcmwsIGJvZHksIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QVVQ6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LnB1dDxhbnk+KGVuZFBvaW50ICsgJy8nICsgYXJnc1swXSwgcmVxdWVzdCwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBVVEJZUEFSQU1TOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wdXQ8YW55PihlbmRQb2ludCwgYXJnc1swXSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QVVRCWURZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRsZXQgcHV0Qm9keSA9IHt9O1xyXG5cdFx0XHRcdFx0XHRsZXQgcHV0RHluYW1pY1NlcnZpY2VVcmwgPSBzZXJ2aWNlVVJMO1xyXG5cclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIHB1dEJvZHkgPSBhcmc7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBwdXREeW5hbWljU2VydmljZVVybCA9IHB1dER5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucHV0PGFueT4oYXBpICsgJy8nICsgcHV0RHluYW1pY1NlcnZpY2VVcmwsIHB1dEJvZHksIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkRFTEVURTpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZGVsZXRlPGFueT4oZW5kUG9pbnQgKyAnLycgKyBhcmdzWzBdLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5ERUxFVEVCWVBBUkFNUzpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZGVsZXRlPGFueT4oZW5kUG9pbnQsIHsgcGFyYW1zOiByZXF1ZXN0IGFzIEh0dHBQYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuREVMRVRFQllEWU5BTUlDUEFUSDpcclxuXHRcdFx0XHRcdFx0bGV0IGRlbGV0ZVBhcmFtcyA9IHt9O1xyXG5cdFx0XHRcdFx0XHRsZXQgZGVsZXRlRHluYW1pY1NlcnZpY2VVcmwgPSBzZXJ2aWNlVVJMO1xyXG5cclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIGRlbGV0ZVBhcmFtcyA9IGFyZztcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsID0gZGVsZXRlRHluYW1pY1NlcnZpY2VVcmwucmVwbGFjZSgnJCcsIGFyZyk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZGVsZXRlPGFueT4oYXBpICsgJy8nICsgZGVsZXRlRHluYW1pY1NlcnZpY2VVcmwsIHtcclxuXHRcdFx0XHRcdFx0XHRwYXJhbXM6IGRlbGV0ZVBhcmFtcyxcclxuXHRcdFx0XHRcdFx0XHRvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlVHlwZTogJ2pzb24nXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0b2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShcclxuXHRcdFx0XHRcdG1hcCgocmVzcG9uc2UpID0+IG5ldyBTZXJ2aWNlUmVzcG9uc2UocmVxdWVzdCwgcmVzcG9uc2U/LmJvZHksIHByb3h5LCByZXNwb25zZT8uc3RhdHVzKSksXHJcblx0XHRcdFx0XHR0YXAoKHNlcnZpY2VSZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHNlcnZpY2VSZXM/LnN0YXR1c0NvZGUgPT09IEhUVFBTdGF0dXNDb2Rlcy5OT19DT05URU5UKSB7XHJcblx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuXHRcdFx0XHRcdFx0XHRcdHN1bW1hcnk6ICg8YW55PnRoaXMpLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5zdWNjZXNzTWVzc2FnZUhlYWRlcicpLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZGV0YWlsOiAoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMuc3VjY2Vzc01lc3NhZ2UnKVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHNlcnZpY2VSZXMucmVzcG9uc2UudHlwZSA9PT0gJ1ZhbGlkYXRpb25XYXJuaW5nRXhjZXB0aW9uJykge1xyXG5cdFx0XHRcdFx0XHRcdHdhcm5pbmdTdGF0ZShzdGF0ZXMsIHNlcnZpY2VOYW1lLCBzZXJ2aWNlUmVzLnJlc3BvbnNlLCAoPGFueT50aGlzKS5tZXNzYWdlU2VydmljZSk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzc1N0YXRlKFxyXG5cdFx0XHRcdFx0XHRcdFx0c3RhdGVzLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2VydmljZU5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHQoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UsXHJcblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2VydmljZVJlc1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRcdGVycm9yU3RhdGUoXHJcblx0XHRcdFx0XHRcdFx0c3RhdGVzLFxyXG5cdFx0XHRcdFx0XHRcdHNlcnZpY2VOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGVycm9yLFxyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLnRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UsXHJcblx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykua2V5Y2xvYWssXHJcblx0XHRcdFx0XHRcdFx0bWVzc2FnZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gb2YobmV3IEVycm9yUmVzcG9uc2UoZXJyb3IpKTtcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0dGFrZVVudGlsRGVzdHJveWVkKCksXHJcblx0XHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiBjbGVhcldhaXRpbmdTdGF0ZShzdGF0ZXMsIHNlcnZpY2VOYW1lKSlcclxuXHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHRcdFx0fSk7XHJcblx0XHR9O1xyXG5cdH07XHJcbn1cclxuIl19
|
|
@@ -6,6 +6,14 @@ export const callState = (states, serviceName) => {
|
|
|
6
6
|
serviceCallFailed: false
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
+
// İstek iptal/teardown olduğunda (finalize) waitingForResponse'u temizler. Normal akış
|
|
10
|
+
// (success/warning/error) state'i zaten güncellediyse no-op — yalnızca takılı kalan true'yu düşürür.
|
|
11
|
+
export const clearWaitingState = (states, serviceName) => {
|
|
12
|
+
const current = states[serviceName];
|
|
13
|
+
if (current?.waitingForResponse) {
|
|
14
|
+
states[serviceName] = { ...current, waitingForResponse: false };
|
|
15
|
+
}
|
|
16
|
+
};
|
|
9
17
|
export const successState = (states, serviceName, translocoService, messageService, message, response) => {
|
|
10
18
|
states[serviceName] = {
|
|
11
19
|
serviceCalled: true,
|
|
@@ -166,4 +174,4 @@ const getTranslatedMessage = (messageCode, translocoService, response) => {
|
|
|
166
174
|
}
|
|
167
175
|
return translatedMessage;
|
|
168
176
|
};
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZVN0YXRlTWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvaHR0cC9zcmMvc2VydmljZVN0YXRlTWV0aG9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUNyRixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMzQixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsT0FBcUYsRUFDckYsUUFBYyxFQUNQLEVBQUU7SUFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxHQUFHLENBQUM7WUFDbEIsR0FBRyxFQUFFLFlBQVk7WUFDakIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsT0FBTyxFQUFFLG9CQUFvQixDQUFTLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1NBQ2xGLENBQUMsQ0FBQztJQUNKLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUM5QixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixLQUF3QixFQUN4Qixn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bGljaXQtYW55ICovXHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBFcnJvckRldGFpbCwgU2VydmljZUNhbGxTdGF0ZU1hcCB9IGZyb20gJy4uL2xpYi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBjYWxsU3RhdGUgPSAoc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sIHNlcnZpY2VOYW1lOiBhbnkpOiB2b2lkID0+IHtcclxuXHRzdGF0ZXNbc2VydmljZU5hbWVdID0ge1xyXG5cdFx0c2VydmljZUNhbGxlZDogdHJ1ZSxcclxuXHRcdHdhaXRpbmdGb3JSZXNwb25zZTogdHJ1ZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogZmFsc2UsXHJcblx0XHRzZXJ2aWNlQ2FsbEZhaWxlZDogZmFsc2VcclxuXHR9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1Y2Nlc3NTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nOyBpZ25vcmVkU3RhdHVzQ29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdIH0sXHJcblx0cmVzcG9uc2U/OiBhbnlcclxuKTogdm9pZCA9PiB7XHJcblx0c3RhdGVzW3NlcnZpY2VOYW1lXSA9IHtcclxuXHRcdHNlcnZpY2VDYWxsZWQ6IHRydWUsXHJcblx0XHR3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiB0cnVlLFxyXG5cdFx0c2VydmljZUNhbGxGYWlsZWQ6IGZhbHNlXHJcblx0fTtcclxuXHJcblx0aWYgKG1lc3NhZ2U/LnN1Y2Nlc3MpIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRzdW1tYXJ5OiBnZXRUcmFuc2xhdGVkTWVzc2FnZSg8c3RyaW5nPm1lc3NhZ2Uuc3VjY2VzcywgdHJhbnNsb2NvU2VydmljZSwgcmVzcG9uc2UpXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXJyb3JTdGF0ZSA9IGFzeW5jIChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuXHR0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRrZXljbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgaWdub3JlZFN0YXR1c0NvZGVzPzogSHR0cFN0YXR1c0NvZGVbXSB9XHJcbikgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0bGV0IGh0dHBFcnJvcjogc3RyaW5nO1xyXG5cclxuXHRzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xyXG5cdFx0Y2FzZSA0MDA6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdIYXRhbMSxIMSwc3Rlayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDE6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdZZXRraXNpeiBFcmnFn2ltJztcclxuXHRcdFx0YXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmxvZ2luKHsgcmVkaXJlY3RVcmk6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH0pO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDAzOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnRXJpxZ9pbSBFbmdlbGxlbmRpJztcclxuXHRcdFx0aWYgKGtleWNsb2FrU2VydmljZS5pc1Rva2VuRXhwaXJlZCgpKSBhd2FpdCBrZXljbG9ha1NlcnZpY2UubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDQ6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYXluYWsgQnVsdW5hbWFkxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA1OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnxLB6aW4gVmVyaWxtZXllbiBNZXRvZCc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDY6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYWJ1bCBFZGlsZW1leiBCYcWfbMSxayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDg6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdaYW1hbiBBxZ/EsW3EsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDk6XHJcblx0XHRcdGh0dHBFcnJvciA9ICfDh2FrxLHFn21hJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBZYXDEsWxhbmTEsXJtYSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMjpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0dlw6dlcnNpeiBBxJ8gR2XDp2lkaSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDM6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgSGl6bWV0IFZlcm1peW9yJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBHZcOnaWRpIFphbWFuIEHFn8SxbcSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0hUVFAgUHJvdG9rb2wgRGVzdGVrbGVubWl5b3InO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTExOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEtpbWxpayBEb8SfcnVsYW1hc8SxIEdlcmVrbGknO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTk5OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEJhxJ9sYW50xLFzxLEgWmFtYW4gQcWfxLFtxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdGh0dHBFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZTtcclxuXHRcdFx0YnJlYWs7XHJcblx0fVxyXG5cclxuXHRpZiAoIWh0dHBFcnJvcikgcmV0dXJuO1xyXG5cclxuXHRpZiAobWVzc2FnZT8uaWdub3JlZFN0YXR1c0NvZGVzPy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpKSByZXR1cm47XHJcblxyXG5cdGlmIChlcnJvci5lcnJvcj8uZGV0YWlscz8ubGVuZ3RoICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZXJyb3IuZGV0YWlscykpIHtcclxuXHRcdGVycm9yLmVycm9yLmRldGFpbHMuZm9yRWFjaCgoZGV0YWlsOiBFcnJvckRldGFpbCkgPT4ge1xyXG5cdFx0XHRjb25zdCBrZXkgPSAnZmllbGRzLicgKyBkZXRhaWwuZmllbGROYW1lO1xyXG5cdFx0XHRjb25zdCB0cmFuc2xhdGVkRmllbGQgPSB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0XHRjb25zdCB0ZXh0ID0gdHJhbnNsYXRlZEZpZWxkID09PSBrZXkgPyBkZXRhaWwuZmllbGROYW1lIDogdHJhbnNsYXRlZEZpZWxkO1xyXG5cclxuXHRcdFx0Y29uc3QgZGV0YWlsVGV4dCA9IChkZXRhaWwuZmllbGROYW1lID8gdGV4dCArICcgLSAnIDogJycpICsgZGV0YWlsLnJlYXNvbjtcclxuXHJcblx0XHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdFx0c3VtbWFyeTogZXJyb3I/LmVycm9yPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogZGV0YWlsVGV4dFxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGh0dHBFcnJvcixcclxuXHRcdFx0ZGV0YWlsOiBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aWYgKG1lc3NhZ2U/LmVycm9yKSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBnZXRUcmFuc2xhdGVkTWVzc2FnZShtZXNzYWdlLmVycm9yLCB0cmFuc2xvY29TZXJ2aWNlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdhcm5pbmdTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHJlc3BvbnNlOiBhbnksXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbik6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0aWYgKHJlc3BvbnNlPy5kZXRhaWxzICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGV0YWlscykgJiYgcmVzcG9uc2UuZGV0YWlscy5sZW5ndGggPiAwKSB7XHJcblx0XHRyZXNwb25zZS5kZXRhaWxzLmZvckVhY2goKGRldGFpbDogRXJyb3JEZXRhaWwpID0+IHtcclxuXHRcdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRcdHN1bW1hcnk6IHJlc3BvbnNlPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogKGRldGFpbC5maWVsZE5hbWUgIT09IG51bGwgPyBkZXRhaWwuZmllbGROYW1lICsgJyAtICcgOiAnJykgKyBkZXRhaWwucmVhc29uXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRkZXRhaWw6IHJlc3BvbnNlPy5tZXNzYWdlXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFuc2xhdGVkTWVzc2FnZSA9IChtZXNzYWdlQ29kZTogc3RyaW5nLCB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLCByZXNwb25zZT86IGFueSk6IHN0cmluZyA9PiB7XHJcblx0Y29uc3QgdHJhbnNsYXRlT2JqZWN0ID0gdHJhbnNsb2NvU2VydmljZS5nZXRUcmFuc2xhdGlvbigpLmdldCh0cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKSk7XHJcblx0bGV0IHRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlT2JqZWN0Py5bbWVzc2FnZUNvZGVdID8/IG1lc3NhZ2VDb2RlO1xyXG5cclxuXHRjb25zdCBwYXJhbVN0YXJ0U3ltYm9sID0gJ3t7JztcclxuXHRjb25zdCBwYXJhbUVuZFN5bWJvbCA9ICd9fSc7XHJcblxyXG5cdGlmIChyZXNwb25zZSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbVN0YXJ0U3ltYm9sKSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbUVuZFN5bWJvbCkpIHtcclxuXHRcdGRvIHtcclxuXHRcdFx0bGV0IHBhcmFtU3RhcnRJbmRleCA9IHRyYW5zbGF0ZWRNZXNzYWdlLmluZGV4T2YocGFyYW1TdGFydFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUVuZEluZGV4ID0gdHJhbnNsYXRlZE1lc3NhZ2UuaW5kZXhPZihwYXJhbUVuZFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUtleSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnNsaWNlKHBhcmFtU3RhcnRJbmRleCArIHBhcmFtU3RhcnRTeW1ib2wubGVuZ3RoLCBwYXJhbUVuZEluZGV4KTtcclxuXHJcblx0XHRcdC8vIFNwbGl0dGluZyB0aGUga2V5IHRvIGdldCBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xyXG5cdFx0XHRsZXQgcGFyYW1LZXlMaXN0ID0gcGFyYW1LZXkuc3BsaXQoJy4nKTtcclxuXHRcdFx0bGV0IHBhcmFtVmFsdWU7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgcGFyYW1LZXlMaXN0KSB7XHJcblx0XHRcdFx0cGFyYW1WYWx1ZSA9IHBhcmFtVmFsdWUgPyBwYXJhbVZhbHVlW2tleV0gOiByZXNwb25zZVtrZXldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgcmVwbGFjZVBhdHRlcm4gPSBgJHtwYXJhbVN0YXJ0U3ltYm9sfSR7cGFyYW1LZXl9JHtwYXJhbUVuZFN5bWJvbH1gO1xyXG5cdFx0XHR0cmFuc2xhdGVkTWVzc2FnZSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnJlcGxhY2UocmVwbGFjZVBhdHRlcm4sIHBhcmFtVmFsdWUpO1xyXG5cdFx0fSB3aGlsZSAodHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1TdGFydFN5bWJvbCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHRyYW5zbGF0ZWRNZXNzYWdlO1xyXG59O1xyXG4iXX0=
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZVN0YXRlTWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvaHR0cC9zcmMvc2VydmljZVN0YXRlTWV0aG9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUNyRixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLHVGQUF1RjtBQUN2RixxR0FBcUc7QUFDckcsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUM3RixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsSUFBSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0FBQ0YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQzNCLE1BQWdDLEVBQ2hDLFdBQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixPQUFxRixFQUNyRixRQUFjLEVBQ1AsRUFBRTtJQUNULE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRztRQUNyQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsaUJBQWlCLEVBQUUsS0FBSztLQUN4QixDQUFDO0lBRUYsSUFBSSxPQUFP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QUFHLEdBQUcsZ0JBQWdCLEdBQUcsUUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3ZFLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0UsQ0FBQyxRQUFRLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0lBQ3hELENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEVycm9yRGV0YWlsLCBTZXJ2aWNlQ2FsbFN0YXRlTWFwIH0gZnJvbSAnLi4vbGliL2ludGVyZmFjZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNhbGxTdGF0ZSA9IChzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55Piwgc2VydmljZU5hbWU6IGFueSk6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiB0cnVlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiBmYWxzZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiBmYWxzZVxyXG5cdH07XHJcbn07XHJcblxyXG4vLyDEsHN0ZWsgaXB0YWwvdGVhcmRvd24gb2xkdcSfdW5kYSAoZmluYWxpemUpIHdhaXRpbmdGb3JSZXNwb25zZSd1IHRlbWl6bGVyLiBOb3JtYWwgYWvEscWfXHJcbi8vIChzdWNjZXNzL3dhcm5pbmcvZXJyb3IpIHN0YXRlJ2kgemF0ZW4gZ8O8bmNlbGxlZGl5c2Ugbm8tb3Ag4oCUIHlhbG7EsXpjYSB0YWvEsWzEsSBrYWxhbiB0cnVlJ3l1IGTDvMWfw7xyw7xyLlxyXG5leHBvcnQgY29uc3QgY2xlYXJXYWl0aW5nU3RhdGUgPSAoc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sIHNlcnZpY2VOYW1lOiBhbnkpOiB2b2lkID0+IHtcclxuXHRjb25zdCBjdXJyZW50ID0gc3RhdGVzW3NlcnZpY2VOYW1lXTtcclxuXHRpZiAoY3VycmVudD8ud2FpdGluZ0ZvclJlc3BvbnNlKSB7XHJcblx0XHRzdGF0ZXNbc2VydmljZU5hbWVdID0geyAuLi5jdXJyZW50LCB3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlIH07XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1Y2Nlc3NTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nOyBpZ25vcmVkU3RhdHVzQ29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdIH0sXHJcblx0cmVzcG9uc2U/OiBhbnlcclxuKTogdm9pZCA9PiB7XHJcblx0c3RhdGVzW3NlcnZpY2VOYW1lXSA9IHtcclxuXHRcdHNlcnZpY2VDYWxsZWQ6IHRydWUsXHJcblx0XHR3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiB0cnVlLFxyXG5cdFx0c2VydmljZUNhbGxGYWlsZWQ6IGZhbHNlXHJcblx0fTtcclxuXHJcblx0aWYgKG1lc3NhZ2U/LnN1Y2Nlc3MpIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRzdW1tYXJ5OiBnZXRUcmFuc2xhdGVkTWVzc2FnZSg8c3RyaW5nPm1lc3NhZ2Uuc3VjY2VzcywgdHJhbnNsb2NvU2VydmljZSwgcmVzcG9uc2UpXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXJyb3JTdGF0ZSA9IGFzeW5jIChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuXHR0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRrZXljbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgaWdub3JlZFN0YXR1c0NvZGVzPzogSHR0cFN0YXR1c0NvZGVbXSB9XHJcbikgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0bGV0IGh0dHBFcnJvcjogc3RyaW5nO1xyXG5cclxuXHRzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xyXG5cdFx0Y2FzZSA0MDA6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdIYXRhbMSxIMSwc3Rlayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDE6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdZZXRraXNpeiBFcmnFn2ltJztcclxuXHRcdFx0YXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmxvZ2luKHsgcmVkaXJlY3RVcmk6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH0pO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDAzOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnRXJpxZ9pbSBFbmdlbGxlbmRpJztcclxuXHRcdFx0aWYgKGtleWNsb2FrU2VydmljZS5pc1Rva2VuRXhwaXJlZCgpKSBhd2FpdCBrZXljbG9ha1NlcnZpY2UubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDQ6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYXluYWsgQnVsdW5hbWFkxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA1OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnxLB6aW4gVmVyaWxtZXllbiBNZXRvZCc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDY6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYWJ1bCBFZGlsZW1leiBCYcWfbMSxayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDg6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdaYW1hbiBBxZ/EsW3EsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDk6XHJcblx0XHRcdGh0dHBFcnJvciA9ICfDh2FrxLHFn21hJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBZYXDEsWxhbmTEsXJtYSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMjpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0dlw6dlcnNpeiBBxJ8gR2XDp2lkaSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDM6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgSGl6bWV0IFZlcm1peW9yJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBHZcOnaWRpIFphbWFuIEHFn8SxbcSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0hUVFAgUHJvdG9rb2wgRGVzdGVrbGVubWl5b3InO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTExOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEtpbWxpayBEb8SfcnVsYW1hc8SxIEdlcmVrbGknO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTk5OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEJhxJ9sYW50xLFzxLEgWmFtYW4gQcWfxLFtxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdGh0dHBFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZTtcclxuXHRcdFx0YnJlYWs7XHJcblx0fVxyXG5cclxuXHRpZiAoIWh0dHBFcnJvcikgcmV0dXJuO1xyXG5cclxuXHRpZiAobWVzc2FnZT8uaWdub3JlZFN0YXR1c0NvZGVzPy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpKSByZXR1cm47XHJcblxyXG5cdGlmIChlcnJvci5lcnJvcj8uZGV0YWlscz8ubGVuZ3RoICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZXJyb3IuZGV0YWlscykpIHtcclxuXHRcdGVycm9yLmVycm9yLmRldGFpbHMuZm9yRWFjaCgoZGV0YWlsOiBFcnJvckRldGFpbCkgPT4ge1xyXG5cdFx0XHRjb25zdCBrZXkgPSAnZmllbGRzLicgKyBkZXRhaWwuZmllbGROYW1lO1xyXG5cdFx0XHRjb25zdCB0cmFuc2xhdGVkRmllbGQgPSB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0XHRjb25zdCB0ZXh0ID0gdHJhbnNsYXRlZEZpZWxkID09PSBrZXkgPyBkZXRhaWwuZmllbGROYW1lIDogdHJhbnNsYXRlZEZpZWxkO1xyXG5cclxuXHRcdFx0Y29uc3QgZGV0YWlsVGV4dCA9IChkZXRhaWwuZmllbGROYW1lID8gdGV4dCArICcgLSAnIDogJycpICsgZGV0YWlsLnJlYXNvbjtcclxuXHJcblx0XHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdFx0c3VtbWFyeTogZXJyb3I/LmVycm9yPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogZGV0YWlsVGV4dFxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGh0dHBFcnJvcixcclxuXHRcdFx0ZGV0YWlsOiBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aWYgKG1lc3NhZ2U/LmVycm9yKSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBnZXRUcmFuc2xhdGVkTWVzc2FnZShtZXNzYWdlLmVycm9yLCB0cmFuc2xvY29TZXJ2aWNlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdhcm5pbmdTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHJlc3BvbnNlOiBhbnksXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbik6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0aWYgKHJlc3BvbnNlPy5kZXRhaWxzICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGV0YWlscykgJiYgcmVzcG9uc2UuZGV0YWlscy5sZW5ndGggPiAwKSB7XHJcblx0XHRyZXNwb25zZS5kZXRhaWxzLmZvckVhY2goKGRldGFpbDogRXJyb3JEZXRhaWwpID0+IHtcclxuXHRcdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRcdHN1bW1hcnk6IHJlc3BvbnNlPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogKGRldGFpbC5maWVsZE5hbWUgIT09IG51bGwgPyBkZXRhaWwuZmllbGROYW1lICsgJyAtICcgOiAnJykgKyBkZXRhaWwucmVhc29uXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRkZXRhaWw6IHJlc3BvbnNlPy5tZXNzYWdlXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFuc2xhdGVkTWVzc2FnZSA9IChtZXNzYWdlQ29kZTogc3RyaW5nLCB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLCByZXNwb25zZT86IGFueSk6IHN0cmluZyA9PiB7XHJcblx0Y29uc3QgdHJhbnNsYXRlT2JqZWN0ID0gdHJhbnNsb2NvU2VydmljZS5nZXRUcmFuc2xhdGlvbigpLmdldCh0cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKSk7XHJcblx0bGV0IHRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlT2JqZWN0Py5bbWVzc2FnZUNvZGVdID8/IG1lc3NhZ2VDb2RlO1xyXG5cclxuXHRjb25zdCBwYXJhbVN0YXJ0U3ltYm9sID0gJ3t7JztcclxuXHRjb25zdCBwYXJhbUVuZFN5bWJvbCA9ICd9fSc7XHJcblxyXG5cdGlmIChyZXNwb25zZSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbVN0YXJ0U3ltYm9sKSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbUVuZFN5bWJvbCkpIHtcclxuXHRcdGRvIHtcclxuXHRcdFx0bGV0IHBhcmFtU3RhcnRJbmRleCA9IHRyYW5zbGF0ZWRNZXNzYWdlLmluZGV4T2YocGFyYW1TdGFydFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUVuZEluZGV4ID0gdHJhbnNsYXRlZE1lc3NhZ2UuaW5kZXhPZihwYXJhbUVuZFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUtleSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnNsaWNlKHBhcmFtU3RhcnRJbmRleCArIHBhcmFtU3RhcnRTeW1ib2wubGVuZ3RoLCBwYXJhbUVuZEluZGV4KTtcclxuXHJcblx0XHRcdC8vIFNwbGl0dGluZyB0aGUga2V5IHRvIGdldCBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xyXG5cdFx0XHRsZXQgcGFyYW1LZXlMaXN0ID0gcGFyYW1LZXkuc3BsaXQoJy4nKTtcclxuXHRcdFx0bGV0IHBhcmFtVmFsdWU7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgcGFyYW1LZXlMaXN0KSB7XHJcblx0XHRcdFx0cGFyYW1WYWx1ZSA9IHBhcmFtVmFsdWUgPyBwYXJhbVZhbHVlW2tleV0gOiByZXNwb25zZVtrZXldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgcmVwbGFjZVBhdHRlcm4gPSBgJHtwYXJhbVN0YXJ0U3ltYm9sfSR7cGFyYW1LZXl9JHtwYXJhbUVuZFN5bWJvbH1gO1xyXG5cdFx0XHR0cmFuc2xhdGVkTWVzc2FnZSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnJlcGxhY2UocmVwbGFjZVBhdHRlcm4sIHBhcmFtVmFsdWUpO1xyXG5cdFx0fSB3aGlsZSAodHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1TdGFydFN5bWJvbCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHRyYW5zbGF0ZWRNZXNzYWdlO1xyXG59O1xyXG4iXX0=
|
|
@@ -4,6 +4,7 @@ import { fromEvent } from 'rxjs';
|
|
|
4
4
|
import { filter, switchMap, take } from 'rxjs/operators';
|
|
5
5
|
import { bridge } from 'aril/boot/bridge';
|
|
6
6
|
import { Apps } from 'aril/boot/config/apps';
|
|
7
|
+
import { ActivityService, LOGGER_SESSION_HEADER } from 'aril/util/activity';
|
|
7
8
|
const HOST_APP_HEADERS = {
|
|
8
9
|
[Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },
|
|
9
10
|
[Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },
|
|
@@ -18,10 +19,12 @@ export const authInterceptor = (req, next) => {
|
|
|
18
19
|
const activeHost = bridge.activeHost();
|
|
19
20
|
const headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};
|
|
20
21
|
const csrfToken = getCsrfToken();
|
|
22
|
+
const loggerSessionId = inject(ActivityService).getSessionId();
|
|
21
23
|
const authReq = req.clone({
|
|
22
24
|
setHeaders: {
|
|
23
25
|
csrf_token: csrfToken ?? '',
|
|
24
|
-
...headers
|
|
26
|
+
...headers,
|
|
27
|
+
...(loggerSessionId ? { [LOGGER_SESSION_HEADER]: loggerSessionId } : {})
|
|
25
28
|
}
|
|
26
29
|
});
|
|
27
30
|
return next(authReq);
|
|
@@ -40,4 +43,4 @@ export const keycloakAuthInterceptor = (req, next) => {
|
|
|
40
43
|
}
|
|
41
44
|
return fromEvent(document, 'visibilitychange').pipe(filter(() => document.visibilityState === 'visible'), take(1), switchMap(() => interceptor.intercept(req, { handle: next })));
|
|
42
45
|
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTVFLE1BQU0sZ0JBQWdCLEdBQXNEO0lBQzNFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtJQUM3RixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7SUFDN0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0NBQzdGLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWdDLEVBQW9CLEVBQUUsQ0FDeEUsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7QUFFbkUsTUFBTSxZQUFZLEdBQUcsR0FBdUIsRUFBRSxDQUM3QyxRQUFRLENBQUMsTUFBTTtLQUNiLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDakMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRS9ELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDekIsVUFBVSxFQUFFO1lBQ1gsVUFBVSxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQzNCLEdBQUcsT0FBTztZQUNWLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDeEU7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUM1RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUV0RCxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxRQUFRLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUNsRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsRUFDcEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQzdELENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvciB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgTE9HR0VSX1NFU1NJT05fSEVBREVSIH0gZnJvbSAnYXJpbC91dGlsL2FjdGl2aXR5JztcclxuXHJcbnR5cGUgSG9zdEFwcCA9IEFwcHMuVEhPUiB8IEFwcHMuWUVBUCB8IEFwcHMuTEVOQTtcclxuXHJcbmNvbnN0IEhPU1RfQVBQX0hFQURFUlM6IFJlY29yZDxIb3N0QXBwLCBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4gPSB7XHJcblx0W0FwcHMuVEhPUl06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtYXBwbGljYXRpb24nOiAndGhvcicsICd4LW1vZHVsZSc6ICd0aG9yLWZlJyB9LFxyXG5cdFtBcHBzLkxFTkFdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LWFwcGxpY2F0aW9uJzogJ2xlbmEnLCAneC1tb2R1bGUnOiAnbGVuYS1mZScgfSxcclxuXHRbQXBwcy5ZRUFQXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1hcHBsaWNhdGlvbic6ICd5ZWFwJywgJ3gtbW9kdWxlJzogJ3llYXAtZmUnIH1cclxufTtcclxuXHJcbmNvbnN0IGlzSG9zdEFwcCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIEhvc3RBcHAgPT5cclxuXHR2YWx1ZSA9PT0gQXBwcy5USE9SIHx8IHZhbHVlID09PSBBcHBzLkxFTkEgfHwgdmFsdWUgPT09IEFwcHMuWUVBUDtcclxuXHJcbmNvbnN0IGdldENzcmZUb2tlbiA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cclxuXHRkb2N1bWVudC5jb29raWVcclxuXHRcdC5zcGxpdCgnOyAnKVxyXG5cdFx0LmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgoJ2NzcmZfdG9rZW49JykpXHJcblx0XHQ/LnNwbGl0KCc9JylbMV07XHJcblxyXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XHJcblx0Y29uc3QgYWN0aXZlSG9zdCA9IGJyaWRnZS5hY3RpdmVIb3N0KCk7XHJcblx0Y29uc3QgaGVhZGVycyA9IGlzSG9zdEFwcChhY3RpdmVIb3N0KSA/IEhPU1RfQVBQX0hFQURFUlNbYWN0aXZlSG9zdF0gOiB7fTtcclxuXHRjb25zdCBjc3JmVG9rZW4gPSBnZXRDc3JmVG9rZW4oKTtcclxuXHRjb25zdCBsb2dnZXJTZXNzaW9uSWQgPSBpbmplY3QoQWN0aXZpdHlTZXJ2aWNlKS5nZXRTZXNzaW9uSWQoKTtcclxuXHJcblx0Y29uc3QgYXV0aFJlcSA9IHJlcS5jbG9uZSh7XHJcblx0XHRzZXRIZWFkZXJzOiB7XHJcblx0XHRcdGNzcmZfdG9rZW46IGNzcmZUb2tlbiA/PyAnJyxcclxuXHRcdFx0Li4uaGVhZGVycyxcclxuXHRcdFx0Li4uKGxvZ2dlclNlc3Npb25JZCA/IHsgW0xPR0dFUl9TRVNTSU9OX0hFQURFUl06IGxvZ2dlclNlc3Npb25JZCB9IDoge30pXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEtleWNsb2FrIHRva2VuIHJlZnJlc2ggWEhSJ2xhcsSxbsSxbiB0YWIgaW5hY3RpdmUgaWtlbiBhYm9ydCBvbHVwIGBJbnZhbGlkU3RhdGVFcnJvcmBcclxuICogZsSxcmxhdG1hc8SxbsSxIMO2bmxlci4gYEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IuaW50ZXJjZXB0YCBsYXp5IE9ic2VydmFibGUgZMO2bmVyIOKAlFxyXG4gKiBzdWJzY3JpYmUgZWRpbG1lZGnEn2kgc8O8cmVjZSBzaWRlLWVmZmVjdCAodG9rZW4gcmVmcmVzaCkgeW9rLiBUYWIgYHZpc2liaWxpdHlTdGF0ZWBcclxuICogYCdoaWRkZW4nYCBpa2VuIHN1YnNjcmliZSfEsSBgdmlzaWJpbGl0eWNoYW5nZSDihpIgJ3Zpc2libGUnYCBldmVudCdpbmUga2FkYXIgZXJ0ZWxlcml6O1xyXG4gKiB0YWIgdGVrcmFyIGfDtnLDvG7DvHIgb2x1bmNhIHJlcXVlc3QgZnJlc2ggdG9rZW4gaWxlIGF0xLFsxLFyLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGtleWNsb2FrQXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XHJcblx0Y29uc3QgaW50ZXJjZXB0b3IgPSBpbmplY3QoS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvcik7XHJcblxyXG5cdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnIHx8IGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XHJcblx0XHRyZXR1cm4gaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHJlcSwgeyBoYW5kbGU6IG5leHQgfSk7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gZnJvbUV2ZW50KGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScpLnBpcGUoXHJcblx0XHRmaWx0ZXIoKCkgPT4gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpLFxyXG5cdFx0dGFrZSgxKSxcclxuXHRcdHN3aXRjaE1hcCgoKSA9PiBpbnRlcmNlcHRvci5pbnRlcmNlcHQocmVxLCB7IGhhbmRsZTogbmV4dCB9KSlcclxuXHQpO1xyXG59O1xyXG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3NlbGVjdGlvbi9hcmlsLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './src/selection-group.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3NlbGVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvc2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UnO1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvc2VsZWN0aW9uL3NyYy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvblJlcXVlc3REVE8ge1xyXG5cdGdyb3VwTmFtZTogc3RyaW5nO1xyXG5cdHBhcmVudFNlbGVjdGlvbktleT86IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uR3JvdXBWZXJzaW9uRFRPIHtcclxuXHRncm91cE5hbWU6IHN0cmluZztcclxuXHR2ZXJzaW9uOiBudW1iZXI7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { take } from 'rxjs';
|
|
3
|
+
import { bridge } from 'aril/boot/bridge';
|
|
4
|
+
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
// Key başına maksimum ardışık fetch hatası: limit aşılınca o key oturum boyu yeniden denenmez.
|
|
8
|
+
// Sınırsız retry'da kalıcı hata veren bir grup (örn. silinmiş grup → 404), diğer grupların her
|
|
9
|
+
// başarılı yüklemesinde (map güncellemesi tüm enum computed'larını yeniden çalıştırır) yeniden
|
|
10
|
+
// POST edilirdi → istek/console fırtınası.
|
|
11
|
+
const MAX_FETCH_FAILURES = 3;
|
|
12
|
+
export class SelectionGroupService {
|
|
13
|
+
constructor(http) {
|
|
14
|
+
this.http = http;
|
|
15
|
+
// State cross-MFE paylaşımlı: bridge globalThis-singleton'ında yaşar (bkz. mfe-bridge.ts).
|
|
16
|
+
// Servis instance'ı MFE/tab başına çoğalsa da tüm okuma/yazma tek bridge state'ine gider.
|
|
17
|
+
this.selectionGroups = bridge.selectionGroups;
|
|
18
|
+
this.loading = bridge.selectionLoading;
|
|
19
|
+
this.loaded = bridge.selectionLoaded;
|
|
20
|
+
this.failures = bridge.selectionFailures;
|
|
21
|
+
// loadStates + invalidate yalnızca ilk instance'ta (cross-MFE bir kez): tek localStorage
|
|
22
|
+
// yüklemesi, tek `/versions` çağrısı. effect her instance'ta kurulur ama hepsi aynı paylaşılan
|
|
23
|
+
// state'i yazdığından ezme olmaz.
|
|
24
|
+
if (!bridge.selectionInitialized) {
|
|
25
|
+
bridge.selectionInitialized = true;
|
|
26
|
+
this.loadStatesFromLocalStorage();
|
|
27
|
+
this.invalidateStaleGroups();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// localStorage'a slim cache yazar. `effect` YERİNE bilinçli olarak doğrudan çağrılır: signal'i
|
|
31
|
+
// değiştiren her yer (fetchEnum, invalidateStaleGroups) persist'i açıkça tetikler. NOT: webpack MF
|
|
32
|
+
// config'iyle `@angular/core` artık singleton shared olduğundan effect-tabanlı persist de çalışırdı;
|
|
33
|
+
// yine de açık/öngörülebilir olması (effect içinde gizli signal-write + NG0600 riski olmaması) için
|
|
34
|
+
// doğrudan çağrı tercih edildi.
|
|
35
|
+
persistToLocalStorage() {
|
|
36
|
+
try {
|
|
37
|
+
const slim = this.slimForStorage(this.selectionGroups());
|
|
38
|
+
localStorage.setItem('selection-groups', btoa(encodeURI(JSON.stringify(slim))));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// QuotaExceededError vb. → eski cache'i koru, yeni yazımı sessizce atla.
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
loadStatesFromLocalStorage() {
|
|
45
|
+
const selectionGroups = localStorage.getItem('selection-groups');
|
|
46
|
+
if (selectionGroups) {
|
|
47
|
+
try {
|
|
48
|
+
const decodedData = decodeURI(atob(selectionGroups));
|
|
49
|
+
// Dynamic gruplar zaten persist edilmiyor (slimForStorage onları atlar) → ekstra
|
|
50
|
+
// filtre gerekmez; localStorage içeriği yalnızca Fixed gruplardır.
|
|
51
|
+
const restored = JSON.parse(decodedData);
|
|
52
|
+
this.selectionGroups.set(restored);
|
|
53
|
+
// Restore edilen gruplar loaded sayılır: aksi halde koşulsuz fetchEnum çağıran
|
|
54
|
+
// consumer'lar guard'ı geçip her oturum yeniden çeker (cache faydası kaybolur).
|
|
55
|
+
// Stale'lik kontrolü invalidateStaleGroups'un işi. null entry'ler (legacy) loaded
|
|
56
|
+
// işaretlenmez — işaretlenirse o grup bir daha hiç yüklenemezdi.
|
|
57
|
+
Object.entries(restored).forEach(([key, group]) => {
|
|
58
|
+
if (group)
|
|
59
|
+
this.loaded.set(key, true);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.error(e);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Dynamic grupları atlar + Fixed grupları yalnızca render (value/table/picker/export) ve invalidate
|
|
68
|
+
// için gerekli alanlara indirger. localStorage'da audit/id/açıklama gibi kullanılmayan alanları tutmaz.
|
|
69
|
+
slimForStorage(groups) {
|
|
70
|
+
const out = {};
|
|
71
|
+
for (const [key, group] of Object.entries(groups)) {
|
|
72
|
+
if (!group || group.loadStrategy === 'Dynamic')
|
|
73
|
+
continue;
|
|
74
|
+
out[key] = {
|
|
75
|
+
version: group.version,
|
|
76
|
+
selectionItems: (group.selectionItems ?? []).map((it) => ({
|
|
77
|
+
selectionKey: it.selectionKey,
|
|
78
|
+
selectionDisplay: it.selectionDisplay,
|
|
79
|
+
selectionMultiLanguageDisplays: it.selectionMultiLanguageDisplays,
|
|
80
|
+
showOrder: it.showOrder,
|
|
81
|
+
parentSelectionKey: it.parentSelectionKey
|
|
82
|
+
}))
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
// App init'te enum version'larını çekip localStorage'daki stale grupları temizler.
|
|
88
|
+
// Silinen grup, tüketici component'lerin `if (!selectionGroup) fetchEnum()` guard'ıyla yeniden yüklenir.
|
|
89
|
+
invalidateStaleGroups() {
|
|
90
|
+
// App-init snapshot: yalnızca localStorage'dan yüklenen gruplar kontrol edilir. Yanıt gelene
|
|
91
|
+
// kadar consumer'ların fetchEnum ile yüklediği taze gruplar taranmaz/silinmez (aksi halde
|
|
92
|
+
// taze grup silinir ve kalıcı per-component fetch guard'ları onu bir daha çekmeyebilir).
|
|
93
|
+
const keysToCheck = Object.keys(this.selectionGroups());
|
|
94
|
+
if (keysToCheck.length === 0)
|
|
95
|
+
return;
|
|
96
|
+
const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
|
|
97
|
+
this.http
|
|
98
|
+
.get(hostApi + '/selection-group/versions')
|
|
99
|
+
.pipe(take(1))
|
|
100
|
+
.subscribe({
|
|
101
|
+
next: (versions) => {
|
|
102
|
+
// Boş/bozuk yanıt güvenlik şeridi: aşağıdaki "listede olmayanı sil" kuralı
|
|
103
|
+
// boş listeyle tüm cache'i yanlışlıkla boşaltmasın.
|
|
104
|
+
if (!versions?.length)
|
|
105
|
+
return;
|
|
106
|
+
const latest = new Map(versions.map((v) => [v.groupName, v.version]));
|
|
107
|
+
let changed = false;
|
|
108
|
+
const next = { ...this.selectionGroups() };
|
|
109
|
+
keysToCheck.forEach((key) => {
|
|
110
|
+
const group = next[key];
|
|
111
|
+
if (!group)
|
|
112
|
+
return;
|
|
113
|
+
const separatorIndex = key.indexOf('~');
|
|
114
|
+
if (separatorIndex === -1)
|
|
115
|
+
return;
|
|
116
|
+
const serverVersion = latest.get(key.substring(0, separatorIndex));
|
|
117
|
+
// serverVersion == null: grup /versions listesinde yok → sunucudan silinmiş /
|
|
118
|
+
// yeniden adlandırılmış demektir (endpoint Fixed grupların tam listesini döner)
|
|
119
|
+
// → o da evict edilir; kalırsa kaldırılmış enum değerleri süresiz render edilir.
|
|
120
|
+
if (serverVersion == null || serverVersion !== group.version) {
|
|
121
|
+
delete next[key];
|
|
122
|
+
this.loaded.delete(key);
|
|
123
|
+
this.failures.delete(key);
|
|
124
|
+
// Uçuştaki fetch'in flag'i korunur: silinirse ikinci bir consumer guard'ı
|
|
125
|
+
// geçip duplicate /load atar ve export-overlay'in isLoading poll'ü grubu
|
|
126
|
+
// beklemeden erken geçer. Yanıt geldiğinde flag'i fetchEnum kendisi yönetir.
|
|
127
|
+
if (!this.loading.get(key)) {
|
|
128
|
+
this.loading.delete(key);
|
|
129
|
+
}
|
|
130
|
+
changed = true;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
if (changed) {
|
|
134
|
+
this.selectionGroups.set(next);
|
|
135
|
+
this.persistToLocalStorage();
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
error: () => {
|
|
139
|
+
// versions endpoint yok/erişilemez: sessizce mevcut cache ile devam.
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
fetchEnum(groupName, parentSelectionKey = 'ALL') {
|
|
144
|
+
const key = groupName + '~' + parentSelectionKey;
|
|
145
|
+
if (this.loaded.get(key) || this.loading.get(key))
|
|
146
|
+
return;
|
|
147
|
+
if ((this.failures.get(key) ?? 0) >= MAX_FETCH_FAILURES)
|
|
148
|
+
return;
|
|
149
|
+
const payload = {
|
|
150
|
+
groupName,
|
|
151
|
+
parentSelectionKey
|
|
152
|
+
};
|
|
153
|
+
this.loading.set(key, true);
|
|
154
|
+
this.loaded.set(key, false);
|
|
155
|
+
const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
|
|
156
|
+
this.http
|
|
157
|
+
.post(hostApi + '/selection-group/load', payload)
|
|
158
|
+
.pipe(take(1))
|
|
159
|
+
.subscribe({
|
|
160
|
+
next: (selectionGroup) => {
|
|
161
|
+
this.loading.set(key, false);
|
|
162
|
+
this.loaded.set(key, true);
|
|
163
|
+
this.failures.delete(key);
|
|
164
|
+
this.selectionGroups.update((groups) => ({
|
|
165
|
+
...groups,
|
|
166
|
+
[key]: selectionGroup
|
|
167
|
+
}));
|
|
168
|
+
this.persistToLocalStorage();
|
|
169
|
+
},
|
|
170
|
+
// HTTP hatasında loading'i sıfırla: aksi halde guard (loaded/loading) bu enum'u
|
|
171
|
+
// kilitler. loading/loaded bridge'de cross-MFE SHARED olduğundan, tek bir anlık hata
|
|
172
|
+
// bu enum'u TÜM remote'larda hard-reload'a kadar bir daha çekilemez yapardı. loading=false
|
|
173
|
+
// → sonraki fetchEnum (component init/retry) yeniden deneyebilir. loaded zaten false kalır.
|
|
174
|
+
// Deneme sayısı MAX_FETCH_FAILURES ile sınırlı: kalıcı hatada sonsuz retry önlenir.
|
|
175
|
+
error: () => {
|
|
176
|
+
this.loading.set(key, false);
|
|
177
|
+
this.failures.set(key, (this.failures.get(key) ?? 0) + 1);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
// key formatı: `groupName~parentSelectionKey` (fetchEnum'daki composite key ile aynı).
|
|
182
|
+
// Direkt olarak groupName geçilirse Map'te eşleşme olmaz ve her zaman false döner.
|
|
183
|
+
isLoading(key) {
|
|
184
|
+
return this.loading.get(key) ?? false;
|
|
185
|
+
}
|
|
186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
187
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, providedIn: 'root' }); }
|
|
188
|
+
}
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, decorators: [{
|
|
190
|
+
type: Injectable,
|
|
191
|
+
args: [{
|
|
192
|
+
providedIn: 'root'
|
|
193
|
+
}]
|
|
194
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3NlbGVjdGlvbi9zcmMvc2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBcUIsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFJbkQsK0ZBQStGO0FBQy9GLCtGQUErRjtBQUMvRiwrRkFBK0Y7QUFDL0YsMkNBQTJDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBSzdCLE1BQU0sT0FBTyxxQkFBcUI7SUFTakMsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVI3QywyRkFBMkY7UUFDM0YsMEZBQTBGO1FBQzFGLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUV4QixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFHcEQseUZBQXlGO1FBQ3pGLCtGQUErRjtRQUMvRixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNGLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsbUdBQW1HO0lB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LENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztTQUNELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsbUZBQW1GO0lBQ25GLFNBQVMsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3ZDLENBQUM7OEdBNUxXLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnJCLE1BQU07OzJGQUVOLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cERUTywgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgU2VsZWN0aW9uR3JvdXBWZXJzaW9uRFRPLCBTZWxlY3Rpb25SZXF1ZXN0RFRPIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuXHJcbi8vIEtleSBiYcWfxLFuYSBtYWtzaW11bSBhcmTEscWfxLFrIGZldGNoIGhhdGFzxLE6IGxpbWl0IGHFn8SxbMSxbmNhIG8ga2V5IG90dXJ1bSBib3l1IHllbmlkZW4gZGVuZW5tZXouXHJcbi8vIFPEsW7EsXJzxLF6IHJldHJ5J2RhIGthbMSxY8SxIGhhdGEgdmVyZW4gYmlyIGdydXAgKMO2cm4uIHNpbGlubWnFnyBncnVwIOKGkiA0MDQpLCBkacSfZXIgZ3J1cGxhcsSxbiBoZXJcclxuLy8gYmHFn2FyxLFsxLEgecO8a2xlbWVzaW5kZSAobWFwIGfDvG5jZWxsZW1lc2kgdMO8bSBlbnVtIGNvbXB1dGVkJ2xhcsSxbsSxIHllbmlkZW4gw6dhbMSxxZ90xLFyxLFyKSB5ZW5pZGVuXHJcbi8vIFBPU1QgZWRpbGlyZGkg4oaSIGlzdGVrL2NvbnNvbGUgZsSxcnTEsW5hc8SxLlxyXG5jb25zdCBNQVhfRkVUQ0hfRkFJTFVSRVMgPSAzO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlIHtcclxuXHQvLyBTdGF0ZSBjcm9zcy1NRkUgcGF5bGHFn8SxbWzEsTogYnJpZGdlIGdsb2JhbFRoaXMtc2luZ2xldG9uJ8SxbmRhIHlhxZ9hciAoYmt6LiBtZmUtYnJpZGdlLnRzKS5cclxuXHQvLyBTZXJ2aXMgaW5zdGFuY2UnxLEgTUZFL3RhYiBiYcWfxLFuYSDDp2/En2Fsc2EgZGEgdMO8bSBva3VtYS95YXptYSB0ZWsgYnJpZGdlIHN0YXRlJ2luZSBnaWRlci5cclxuXHRzZWxlY3Rpb25Hcm91cHMgPSBicmlkZ2Uuc2VsZWN0aW9uR3JvdXBzO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmcgPSBicmlkZ2Uuc2VsZWN0aW9uTG9hZGluZztcclxuXHRwcml2YXRlIHJlYWRvbmx5IGxvYWRlZCA9IGJyaWRnZS5zZWxlY3Rpb25Mb2FkZWQ7XHJcblx0cHJpdmF0ZSByZWFkb25seSBmYWlsdXJlcyA9IGJyaWRnZS5zZWxlY3Rpb25GYWlsdXJlcztcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcblx0XHQvLyBsb2FkU3RhdGVzICsgaW52YWxpZGF0ZSB5YWxuxLF6Y2EgaWxrIGluc3RhbmNlJ3RhIChjcm9zcy1NRkUgYmlyIGtleik6IHRlayBsb2NhbFN0b3JhZ2VcclxuXHRcdC8vIHnDvGtsZW1lc2ksIHRlayBgL3ZlcnNpb25zYCDDp2HEn3LEsXPEsS4gZWZmZWN0IGhlciBpbnN0YW5jZSd0YSBrdXJ1bHVyIGFtYSBoZXBzaSBheW7EsSBwYXlsYcWfxLFsYW5cclxuXHRcdC8vIHN0YXRlJ2kgeWF6ZMSxxJ/EsW5kYW4gZXptZSBvbG1hei5cclxuXHRcdGlmICghYnJpZGdlLnNlbGVjdGlvbkluaXRpYWxpemVkKSB7XHJcblx0XHRcdGJyaWRnZS5zZWxlY3Rpb25Jbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdHRoaXMubG9hZFN0YXRlc0Zyb21Mb2NhbFN0b3JhZ2UoKTtcclxuXHRcdFx0dGhpcy5pbnZhbGlkYXRlU3RhbGVHcm91cHMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIGxvY2FsU3RvcmFnZSdhIHNsaW0gY2FjaGUgeWF6YXIuIGBlZmZlY3RgIFlFUsSwTkUgYmlsaW7Dp2xpIG9sYXJhayBkb8SfcnVkYW4gw6dhxJ9yxLFsxLFyOiBzaWduYWwnaVxyXG5cdC8vIGRlxJ9pxZ90aXJlbiBoZXIgeWVyIChmZXRjaEVudW0sIGludmFsaWRhdGVTdGFsZUdyb3VwcykgcGVyc2lzdCdpIGHDp8Sxa8OnYSB0ZXRpa2xlci4gTk9UOiB3ZWJwYWNrIE1GXHJcblx0Ly8gY29uZmlnJ2l5bGUgYEBhbmd1bGFyL2NvcmVgIGFydMSxayBzaW5nbGV0b24gc2hhcmVkIG9sZHXEn3VuZGFuIGVmZmVjdC10YWJhbmzEsSBwZXJzaXN0IGRlIMOnYWzEscWfxLFyZMSxO1xyXG5cdC8vIHlpbmUgZGUgYcOnxLFrL8O2bmfDtnLDvGxlYmlsaXIgb2xtYXPEsSAoZWZmZWN0IGnDp2luZGUgZ2l6bGkgc2lnbmFsLXdyaXRlICsgTkcwNjAwIHJpc2tpIG9sbWFtYXPEsSkgacOnaW5cclxuXHQvLyBkb8SfcnVkYW4gw6dhxJ9yxLEgdGVyY2loIGVkaWxkaS5cclxuXHRwcml2YXRlIHBlcnNpc3RUb0xvY2FsU3RvcmFnZSgpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHNsaW0gPSB0aGlzLnNsaW1Gb3JTdG9yYWdlKHRoaXMuc2VsZWN0aW9uR3JvdXBzKCkpO1xyXG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2VsZWN0aW9uLWdyb3VwcycsIGJ0b2EoZW5jb2RlVVJJKEpTT04uc3RyaW5naWZ5KHNsaW0pKSkpO1xyXG5cdFx0fSBjYXRjaCB7XHJcblx0XHRcdC8vIFF1b3RhRXhjZWVkZWRFcnJvciB2Yi4g4oaSIGVza2kgY2FjaGUnaSBrb3J1LCB5ZW5pIHlhesSxbcSxIHNlc3NpemNlIGF0bGEuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWRTdGF0ZXNGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXBzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGlvbi1ncm91cHMnKTtcclxuXHJcblx0XHRpZiAoc2VsZWN0aW9uR3JvdXBzKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Y29uc3QgZGVjb2RlZERhdGEgPSBkZWNvZGVVUkkoYXRvYihzZWxlY3Rpb25Hcm91cHMpKTtcclxuXHRcdFx0XHQvLyBEeW5hbWljIGdydXBsYXIgemF0ZW4gcGVyc2lzdCBlZGlsbWl5b3IgKHNsaW1Gb3JTdG9yYWdlIG9ubGFyxLEgYXRsYXIpIOKGkiBla3N0cmFcclxuXHRcdFx0XHQvLyBmaWx0cmUgZ2VyZWttZXo7IGxvY2FsU3RvcmFnZSBpw6dlcmnEn2kgeWFsbsSxemNhIEZpeGVkIGdydXBsYXJkxLFyLlxyXG5cdFx0XHRcdGNvbnN0IHJlc3RvcmVkOiB7IFtrZXk6IHN0cmluZ106IFNlbGVjdGlvbkdyb3VwRFRPIHwgbnVsbCB9ID0gSlNPTi5wYXJzZShkZWNvZGVkRGF0YSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cHMuc2V0KHJlc3RvcmVkKTtcclxuXHJcblx0XHRcdFx0Ly8gUmVzdG9yZSBlZGlsZW4gZ3J1cGxhciBsb2FkZWQgc2F5xLFsxLFyOiBha3NpIGhhbGRlIGtvxZ91bHN1eiBmZXRjaEVudW0gw6dhxJ/EsXJhblxyXG5cdFx0XHRcdC8vIGNvbnN1bWVyJ2xhciBndWFyZCfEsSBnZcOnaXAgaGVyIG90dXJ1bSB5ZW5pZGVuIMOnZWtlciAoY2FjaGUgZmF5ZGFzxLEga2F5Ym9sdXIpLlxyXG5cdFx0XHRcdC8vIFN0YWxlJ2xpayBrb250cm9sw7wgaW52YWxpZGF0ZVN0YWxlR3JvdXBzJ3VuIGnFn2kuIG51bGwgZW50cnknbGVyIChsZWdhY3kpIGxvYWRlZFxyXG5cdFx0XHRcdC8vIGnFn2FyZXRsZW5tZXog4oCUIGnFn2FyZXRsZW5pcnNlIG8gZ3J1cCBiaXIgZGFoYSBoacOnIHnDvGtsZW5lbWV6ZGkuXHJcblx0XHRcdFx0T2JqZWN0LmVudHJpZXMocmVzdG9yZWQpLmZvckVhY2goKFtrZXksIGdyb3VwXSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGdyb3VwKSB0aGlzLmxvYWRlZC5zZXQoa2V5LCB0cnVlKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIER5bmFtaWMgZ3J1cGxhcsSxIGF0bGFyICsgRml4ZWQgZ3J1cGxhcsSxIHlhbG7EsXpjYSByZW5kZXIgKHZhbHVlL3RhYmxlL3BpY2tlci9leHBvcnQpIHZlIGludmFsaWRhdGVcclxuXHQvLyBpw6dpbiBnZXJla2xpIGFsYW5sYXJhIGluZGlyZ2VyLiBsb2NhbFN0b3JhZ2UnZGEgYXVkaXQvaWQvYcOnxLFrbGFtYSBnaWJpIGt1bGxhbsSxbG1heWFuIGFsYW5sYXLEsSB0dXRtYXouXHJcblx0cHJpdmF0ZSBzbGltRm9yU3RvcmFnZShncm91cHM6IHsgW2tleTogc3RyaW5nXTogU2VsZWN0aW9uR3JvdXBEVE8gfCBudWxsIH0pOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB7XHJcblx0XHRjb25zdCBvdXQ6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9ID0ge307XHJcblx0XHRmb3IgKGNvbnN0IFtrZXksIGdyb3VwXSBvZiBPYmplY3QuZW50cmllcyhncm91cHMpKSB7XHJcblx0XHRcdGlmICghZ3JvdXAgfHwgZ3JvdXAubG9hZFN0cmF0ZWd5ID09PSAnRHluYW1pYycpIGNvbnRpbnVlO1xyXG5cdFx0XHRvdXRba2V5XSA9IHtcclxuXHRcdFx0XHR2ZXJzaW9uOiBncm91cC52ZXJzaW9uLFxyXG5cdFx0XHRcdHNlbGVjdGlvbkl0ZW1zOiAoZ3JvdXAuc2VsZWN0aW9uSXRlbXMgPz8gW10pLm1hcCgoaXQpID0+ICh7XHJcblx0XHRcdFx0XHRzZWxlY3Rpb25LZXk6IGl0LnNlbGVjdGlvbktleSxcclxuXHRcdFx0XHRcdHNlbGVjdGlvbkRpc3BsYXk6IGl0LnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdFx0XHRzZWxlY3Rpb25NdWx0aUxhbmd1YWdlRGlzcGxheXM6IGl0LnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cyxcclxuXHRcdFx0XHRcdHNob3dPcmRlcjogaXQuc2hvd09yZGVyLFxyXG5cdFx0XHRcdFx0cGFyZW50U2VsZWN0aW9uS2V5OiBpdC5wYXJlbnRTZWxlY3Rpb25LZXlcclxuXHRcdFx0XHR9KSlcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBvdXQ7XHJcblx0fVxyXG5cclxuXHQvLyBBcHAgaW5pdCd0ZSBlbnVtIHZlcnNpb24nbGFyxLFuxLEgw6dla2lwIGxvY2FsU3RvcmFnZSdkYWtpIHN0YWxlIGdydXBsYXLEsSB0ZW1pemxlci5cclxuXHQvLyBTaWxpbmVuIGdydXAsIHTDvGtldGljaSBjb21wb25lbnQnbGVyaW4gYGlmICghc2VsZWN0aW9uR3JvdXApIGZldGNoRW51bSgpYCBndWFyZCfEsXlsYSB5ZW5pZGVuIHnDvGtsZW5pci5cclxuXHRwcml2YXRlIGludmFsaWRhdGVTdGFsZUdyb3VwcygpIHtcclxuXHRcdC8vIEFwcC1pbml0IHNuYXBzaG90OiB5YWxuxLF6Y2EgbG9jYWxTdG9yYWdlJ2RhbiB5w7xrbGVuZW4gZ3J1cGxhciBrb250cm9sIGVkaWxpci4gWWFuxLF0IGdlbGVuZVxyXG5cdFx0Ly8ga2FkYXIgY29uc3VtZXInbGFyxLFuIGZldGNoRW51bSBpbGUgecO8a2xlZGnEn2kgdGF6ZSBncnVwbGFyIHRhcmFubWF6L3NpbGlubWV6IChha3NpIGhhbGRlXHJcblx0XHQvLyB0YXplIGdydXAgc2lsaW5pciB2ZSBrYWzEsWPEsSBwZXItY29tcG9uZW50IGZldGNoIGd1YXJkJ2xhcsSxIG9udSBiaXIgZGFoYSDDp2VrbWV5ZWJpbGlyKS5cclxuXHRcdGNvbnN0IGtleXNUb0NoZWNrID0gT2JqZWN0LmtleXModGhpcy5zZWxlY3Rpb25Hcm91cHMoKSk7XHJcblx0XHRpZiAoa2V5c1RvQ2hlY2subGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgaG9zdEFwaSA9IEFQSV9DT05GSUdTLmFwaS5yZXBsYWNlKC9cXC9bXlxcL10rXFwvdjEkLywgYC9ob3N0L3YxYCk7XHJcblxyXG5cdFx0dGhpcy5odHRwXHJcblx0XHRcdC5nZXQ8U2VsZWN0aW9uR3JvdXBWZXJzaW9uRFRPW10+KGhvc3RBcGkgKyAnL3NlbGVjdGlvbi1ncm91cC92ZXJzaW9ucycpXHJcblx0XHRcdC5waXBlKHRha2UoMSkpXHJcblx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh2ZXJzaW9ucykgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gQm/Fny9ib3p1ayB5YW7EsXQgZ8O8dmVubGlrIMWfZXJpZGk6IGHFn2HEn8SxZGFraSBcImxpc3RlZGUgb2xtYXlhbsSxIHNpbFwiIGt1cmFsxLFcclxuXHRcdFx0XHRcdC8vIGJvxZ8gbGlzdGV5bGUgdMO8bSBjYWNoZSdpIHlhbmzEscWfbMSxa2xhIGJvxZ9hbHRtYXPEsW4uXHJcblx0XHRcdFx0XHRpZiAoIXZlcnNpb25zPy5sZW5ndGgpIHJldHVybjtcclxuXHJcblx0XHRcdFx0XHRjb25zdCBsYXRlc3QgPSBuZXcgTWFwKHZlcnNpb25zLm1hcCgodikgPT4gW3YuZ3JvdXBOYW1lLCB2LnZlcnNpb25dIGFzIFtzdHJpbmcsIG51bWJlcl0pKTtcclxuXHJcblx0XHRcdFx0XHRsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0Y29uc3QgbmV4dCA9IHsgLi4udGhpcy5zZWxlY3Rpb25Hcm91cHMoKSB9O1xyXG5cclxuXHRcdFx0XHRcdGtleXNUb0NoZWNrLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBncm91cCA9IG5leHRba2V5XTtcclxuXHRcdFx0XHRcdFx0aWYgKCFncm91cCkgcmV0dXJuO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3Qgc2VwYXJhdG9ySW5kZXggPSBrZXkuaW5kZXhPZignficpO1xyXG5cdFx0XHRcdFx0XHRpZiAoc2VwYXJhdG9ySW5kZXggPT09IC0xKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCBzZXJ2ZXJWZXJzaW9uID0gbGF0ZXN0LmdldChrZXkuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KSk7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBzZXJ2ZXJWZXJzaW9uID09IG51bGw6IGdydXAgL3ZlcnNpb25zIGxpc3Rlc2luZGUgeW9rIOKGkiBzdW51Y3VkYW4gc2lsaW5tacWfIC9cclxuXHRcdFx0XHRcdFx0Ly8geWVuaWRlbiBhZGxhbmTEsXLEsWxtxLHFnyBkZW1la3RpciAoZW5kcG9pbnQgRml4ZWQgZ3J1cGxhcsSxbiB0YW0gbGlzdGVzaW5pIGTDtm5lcilcclxuXHRcdFx0XHRcdFx0Ly8g4oaSIG8gZGEgZXZpY3QgZWRpbGlyOyBrYWzEsXJzYSBrYWxkxLFyxLFsbcSxxZ8gZW51bSBkZcSfZXJsZXJpIHPDvHJlc2l6IHJlbmRlciBlZGlsaXIuXHJcblx0XHRcdFx0XHRcdGlmIChzZXJ2ZXJWZXJzaW9uID09IG51bGwgfHwgc2VydmVyVmVyc2lvbiAhPT0gZ3JvdXAudmVyc2lvbikge1xyXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBuZXh0W2tleV07XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkZWQuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5mYWlsdXJlcy5kZWxldGUoa2V5KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBVw6d1xZ90YWtpIGZldGNoJ2luIGZsYWcnaSBrb3J1bnVyOiBzaWxpbmlyc2UgaWtpbmNpIGJpciBjb25zdW1lciBndWFyZCfEsVxyXG5cdFx0XHRcdFx0XHRcdC8vIGdlw6dpcCBkdXBsaWNhdGUgL2xvYWQgYXRhciB2ZSBleHBvcnQtb3ZlcmxheSdpbiBpc0xvYWRpbmcgcG9sbCfDvCBncnVidVxyXG5cdFx0XHRcdFx0XHRcdC8vIGJla2xlbWVkZW4gZXJrZW4gZ2XDp2VyLiBZYW7EsXQgZ2VsZGnEn2luZGUgZmxhZydpIGZldGNoRW51bSBrZW5kaXNpIHnDtm5ldGlyLlxyXG5cdFx0XHRcdFx0XHRcdGlmICghdGhpcy5sb2FkaW5nLmdldChrZXkpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGNoYW5nZWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0XHRpZiAoY2hhbmdlZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGlvbkdyb3Vwcy5zZXQobmV4dCk7XHJcblx0XHRcdFx0XHRcdHRoaXMucGVyc2lzdFRvTG9jYWxTdG9yYWdlKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gdmVyc2lvbnMgZW5kcG9pbnQgeW9rL2VyacWfaWxlbWV6OiBzZXNzaXpjZSBtZXZjdXQgY2FjaGUgaWxlIGRldmFtLlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRmZXRjaEVudW0oZ3JvdXBOYW1lOiBzdHJpbmcsIHBhcmVudFNlbGVjdGlvbktleTogc3RyaW5nID0gJ0FMTCcpIHtcclxuXHRcdGNvbnN0IGtleSA9IGdyb3VwTmFtZSArICd+JyArIHBhcmVudFNlbGVjdGlvbktleTtcclxuXHJcblx0XHRpZiAodGhpcy5sb2FkZWQuZ2V0KGtleSkgfHwgdGhpcy5sb2FkaW5nLmdldChrZXkpKSByZXR1cm47XHJcblx0XHRpZiAoKHRoaXMuZmFpbHVyZXMuZ2V0KGtleSkgPz8gMCkgPj0gTUFYX0ZFVENIX0ZBSUxVUkVTKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZDogU2VsZWN0aW9uUmVxdWVzdERUTyA9IHtcclxuXHRcdFx0Z3JvdXBOYW1lLFxyXG5cdFx0XHRwYXJlbnRTZWxlY3Rpb25LZXlcclxuXHRcdH07XHJcblxyXG5cdFx0dGhpcy5sb2FkaW5nLnNldChrZXksIHRydWUpO1xyXG5cdFx0dGhpcy5sb2FkZWQuc2V0KGtleSwgZmFsc2UpO1xyXG5cclxuXHRcdGNvbnN0IGhvc3RBcGkgPSBBUElfQ09ORklHUy5hcGkucmVwbGFjZSgvXFwvW15cXC9dK1xcL3YxJC8sIGAvaG9zdC92MWApO1xyXG5cclxuXHRcdHRoaXMuaHR0cFxyXG5cdFx0XHQucG9zdDxTZWxlY3Rpb25Hcm91cERUTz4oaG9zdEFwaSArICcvc2VsZWN0aW9uLWdyb3VwL2xvYWQnLCBwYXlsb2FkKVxyXG5cdFx0XHQucGlwZSh0YWtlKDEpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoc2VsZWN0aW9uR3JvdXApID0+IHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5zZXQoa2V5LCBmYWxzZSk7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRlZC5zZXQoa2V5LCB0cnVlKTtcclxuXHRcdFx0XHRcdHRoaXMuZmFpbHVyZXMuZGVsZXRlKGtleSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cHMudXBkYXRlKChncm91cHMpID0+ICh7XHJcblx0XHRcdFx0XHRcdC4uLmdyb3VwcyxcclxuXHRcdFx0XHRcdFx0W2tleV06IHNlbGVjdGlvbkdyb3VwXHJcblx0XHRcdFx0XHR9KSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5wZXJzaXN0VG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdC8vIEhUVFAgaGF0YXPEsW5kYSBsb2FkaW5nJ2kgc8SxZsSxcmxhOiBha3NpIGhhbGRlIGd1YXJkIChsb2FkZWQvbG9hZGluZykgYnUgZW51bSd1XHJcblx0XHRcdFx0Ly8ga2lsaXRsZXIuIGxvYWRpbmcvbG9hZGVkIGJyaWRnZSdkZSBjcm9zcy1NRkUgU0hBUkVEIG9sZHXEn3VuZGFuLCB0ZWsgYmlyIGFubMSxayBoYXRhXHJcblx0XHRcdFx0Ly8gYnUgZW51bSd1IFTDnE0gcmVtb3RlJ2xhcmRhIGhhcmQtcmVsb2FkJ2Ega2FkYXIgYmlyIGRhaGEgw6dla2lsZW1leiB5YXBhcmTEsS4gbG9hZGluZz1mYWxzZVxyXG5cdFx0XHRcdC8vIOKGkiBzb25yYWtpIGZldGNoRW51bSAoY29tcG9uZW50IGluaXQvcmV0cnkpIHllbmlkZW4gZGVuZXllYmlsaXIuIGxvYWRlZCB6YXRlbiBmYWxzZSBrYWzEsXIuXHJcblx0XHRcdFx0Ly8gRGVuZW1lIHNhecSxc8SxIE1BWF9GRVRDSF9GQUlMVVJFUyBpbGUgc8SxbsSxcmzEsToga2FsxLFjxLEgaGF0YWRhIHNvbnN1eiByZXRyeSDDtm5sZW5pci5cclxuXHRcdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLnNldChrZXksIGZhbHNlKTtcclxuXHRcdFx0XHRcdHRoaXMuZmFpbHVyZXMuc2V0KGtleSwgKHRoaXMuZmFpbHVyZXMuZ2V0KGtleSkgPz8gMCkgKyAxKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8ga2V5IGZvcm1hdMSxOiBgZ3JvdXBOYW1lfnBhcmVudFNlbGVjdGlvbktleWAgKGZldGNoRW51bSdkYWtpIGNvbXBvc2l0ZSBrZXkgaWxlIGF5bsSxKS5cclxuXHQvLyBEaXJla3Qgb2xhcmFrIGdyb3VwTmFtZSBnZcOnaWxpcnNlIE1hcCd0ZSBlxZ9sZcWfbWUgb2xtYXogdmUgaGVyIHphbWFuIGZhbHNlIGTDtm5lci5cclxuXHRpc0xvYWRpbmcoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxvYWRpbmcuZ2V0KGtleSkgPz8gZmFsc2U7XHJcblx0fVxyXG59XHJcbiJdfQ==
|