@veloceapps/sdk 10.0.0-3 → 10.0.0-30
Sign up to get free protection for your applications and to get access to all the features.
- package/cms/modules/runtime/services/runtime.service.d.ts +3 -1
- package/cms/utils/index.d.ts +1 -0
- package/cms/utils/inject.d.ts +1 -0
- package/cms/utils/ui-definition.utils.d.ts +1 -0
- package/cms/vendor-map.d.ts +4 -2
- package/core/modules/configuration/services/configuration-state.service.d.ts +1 -0
- package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +4 -1
- package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +3 -2
- package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
- package/esm2020/cms/modules/runtime/services/runtime.service.mjs +3 -1
- package/esm2020/cms/utils/index.mjs +2 -1
- package/esm2020/cms/utils/inject.mjs +27 -0
- package/esm2020/cms/utils/ui-definition.utils.mjs +13 -1
- package/esm2020/cms/vendor-map.mjs +7 -4
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +13 -4
- package/esm2020/core/modules/configuration/services/configuration.service.mjs +3 -3
- package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +16 -5
- package/esm2020/core/services/flow-state.service.mjs +10 -6
- package/fesm2015/veloceapps-sdk-cms.mjs +45 -5
- package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk-core.mjs +35 -12
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-cms.mjs +44 -4
- package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +34 -12
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/package.json +1 -1
@@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
|
|
3
3
|
import { ConfigurationApiService } from '@veloceapps/api';
|
4
4
|
import { ConfirmationComponent, ToastType } from '@veloceapps/components';
|
5
5
|
import { ConfigurationMode, ConfigurationTranslatorUtils, extractErrorDetails, } from '@veloceapps/core';
|
6
|
-
import {
|
6
|
+
import { transform } from 'lodash';
|
7
7
|
import { MessageService } from 'primeng/api';
|
8
8
|
import { DialogService } from 'primeng/dynamicdialog';
|
9
9
|
import { BehaviorSubject, shareReplay, throwError } from 'rxjs';
|
@@ -194,7 +194,7 @@ export class ConfigurationService {
|
|
194
194
|
generateLineItem() {
|
195
195
|
const runtimeContext = this.getRuntimeContext();
|
196
196
|
const uiDefinitionProperties = this.getUIDefinitionProperties();
|
197
|
-
let lineItem =
|
197
|
+
let lineItem = this.configurableRamp;
|
198
198
|
if (!lineItem) {
|
199
199
|
const { initializationProps } = this.runtimeService ?? {};
|
200
200
|
lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);
|
@@ -250,4 +250,4 @@ ConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
|
|
250
250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService, decorators: [{
|
251
251
|
type: Injectable
|
252
252
|
}], ctorParameters: function () { return [{ type: i1.QuoteDraftService }, { type: i2.ConfigurationRuntimeService }, { type: i3.ContextService }, { type: i4.ConfigurationApiService }, { type: i5.MessageService }, { type: i6.DialogService }, { type: i7.RuntimeSettingsService }]; } });
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFzQixTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RixPQUFPLEVBSUwsaUJBQWlCLEVBRWpCLDRCQUE0QixFQUU1QixtQkFBbUIsR0FPcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBa0IsV0FBVyxFQUFF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Q3RCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsTUFBTSxFQUFFLDRCQUE0QjtZQUNwQyxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFO1NBQzdCLENBQUM7YUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN4RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7aUhBN1NVLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCwgQ29uZmlybWF0aW9uQ29uZmlnLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYXJnZSxcbiAgQ29tcGlsZWRQcmljZVBsYW4sXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0LFxuICBDb25maWd1cmF0aW9uTW9kZSxcbiAgQ29uZmlndXJhdGlvblJlcXVlc3QsXG4gIENvbmZpZ3VyYXRpb25UcmFuc2xhdG9yVXRpbHMsXG4gIENvbmZpZ3VyZVByaWNlLFxuICBleHRyYWN0RXJyb3JEZXRhaWxzLFxuICBMaW5lSXRlbSxcbiAgTmV3QXR0cmlidXRlLFxuICBQYXRjaExpbmVJdGVtT3B0aW9ucyxcbiAgUnVudGltZU1vZGVsLFxuICBVSURlZmluaXRpb25Qcm9wcyxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBEaWN0aW9uYXJ5LCB0cmFuc2Zvcm0gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFJ1bnRpbWVDb250ZXh0LCBSdW50aW1lU3RlcCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGFzc2V0UHJlZGljYXRlRm4gfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBMaW5lSXRlbVdvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xpbmUtaXRlbS53b3JrZXInO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdExpbmVJdGVtLCBnZXRHdWlkZWRTZWxsaW5nQ29uZmlndXJhdGlvblJlcXVlc3QgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzLCBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBWbFdpbmRvdztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RlID0gQ29uZmlndXJhdGlvbk1vZGUuU0VBUkNIO1xuICBwcml2YXRlIGNvbmZpZ3VyYWJsZVJhbXA6IExpbmVJdGVtIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmVQcmljZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGlzTG9hZGluZyQgPSB0aGlzLmlzTG9hZGluZ1N1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQXBpU2VydmljZTogQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZVNldHRpbmdzOiBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJlc2V0KCk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGUubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCQobGluZUl0ZW06IExpbmVJdGVtLCBvcHRpb25zPzogUGF0Y2hMaW5lSXRlbU9wdGlvbnMpOiBPYnNlcnZhYmxlPExpbmVJdGVtPiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5nZXRTbmFwc2hvdCgpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFNvdXJjZSBMaW5lSXRlbSBub3QgZm91bmRgKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gPVxuICAgICAgb3B0aW9ucz8uc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gfHwgdGhpcy5jb250ZXh0U25hcHNob3QucHJvcGVydGllc1snI3NraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uJ10gPT09ICd0cnVlJztcblxuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IG5ldyBMaW5lSXRlbVdvcmtlcihzb3VyY2UpLnJlcGxhY2UobGluZUl0ZW0sIHNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKS5saTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZSgpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvblByb3BlcnRpZXMuc3VwcHJlc3NUb2FzdE1lc3NhZ2VzKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBib3VuY2UgYmFjayBpZiBjb25maWd1cmF0aW9uIGNhbGwgaGFzIGZhaWxlZFxuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS52YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGUubmV4dChwcmV2U3RhdGUgPyB7IC4uLnByZXZTdGF0ZSB9IDogbnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaChsaW5lSXRlbTogTGluZUl0ZW0sIG9wdGlvbnM/OiBQYXRjaExpbmVJdGVtT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2gkKGxpbmVJdGVtLCBvcHRpb25zKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWd1cmFibGVSYW1wKGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IGxpbmVJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGU/LmxpbmVJdGVtKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbmFwc2hvdCgpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5saW5lSXRlbSA/IHsgLi4udGhpcy5jb25maWd1cmF0aW9uU3RhdGUudmFsdWU/LmxpbmVJdGVtIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0UnVudGltZU1vZGVsKCk6IFJ1bnRpbWVNb2RlbCB7XG4gICAgY29uc3QgcnVudGltZU1vZGVsID0gdGhpcy5ydW50aW1lU2VydmljZS5ydW50aW1lTW9kZWw7XG4gICAgaWYgKCFydW50aW1lTW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBtb2RlbCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVudGltZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldFJ1bnRpbWVDb250ZXh0KCk6IFJ1bnRpbWVDb250ZXh0IHtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMucnVudGltZVNlcnZpY2UucnVudGltZUNvbnRleHQ7XG4gICAgaWYgKCFydW50aW1lQ29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW50aW1lIGNvbnRleHQgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bnRpbWVDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxDb25maWd1cmVQcmljZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlU25hcHNob3QoKTogQ29uZmlndXJlUHJpY2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHRTbmFwc2hvdCgpOiBDb25maWd1cmF0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0JCgpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlcyQoKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PENoYXJnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGU/LmNoYXJnZXMgPz8ge30pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q2hhcmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5jaGFyZ2VzID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBwcmljZVBsYW5zJCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlPy5wcmljZVBsYW5zID8/IHt9KSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaWNlUGxhbnNTbmFwc2hvdCgpOiBEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5wcmljZVBsYW5zID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9jZWR1cmVDb250ZXh0JCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8dW5rbm93bj4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGU/LnByb2NlZHVyZUNvbnRleHQgPz8ge30pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvY2VkdXJlQ29udGV4dFNuYXBzaG90KCk6IERpY3Rpb25hcnk8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS52YWx1ZT8ucHJvY2VkdXJlQ29udGV4dCA/PyB7fTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmUoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZVJlcXVlc3QkKHRoaXMuZ2VuZXJhdGVSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVJlcXVlc3QkKGNvbmZpZ3VyYXRpb25SZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCk6IE9ic2VydmFibGU8TGluZUl0ZW0+IHtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMuZ2V0UnVudGltZUNvbnRleHQoKTtcbiAgICBjb25zdCBydW50aW1lTW9kZWwgPSB0aGlzLmdldFJ1bnRpbWVNb2RlbCgpO1xuICAgIGNvbnN0IHVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSB0aGlzLmdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMoKTtcblxuICAgIGNvbnN0IG1haW5QcmljaW5nRW5hYmxlZCA9IHJ1bnRpbWVDb250ZXh0LnByb3BlcnRpZXM/LlByaWNpbmdFbmFibGVkO1xuICAgIGNvbnN0IHByaWNpbmdFbmFibGVkID0gbWFpblByaWNpbmdFbmFibGVkID8gbWFpblByaWNpbmdFbmFibGVkID09PSAndHJ1ZScgOiB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnByaWNpbmdFbmFibGVkO1xuICAgIGNvbnN0IGN1c3RvbVByaWNlQXBpID0gdGhpcy5ydW50aW1lU2V0dGluZ3MuZ2V0Q29uZmlndXJhdGlvblNldHRpbmdzKClbJ0NVU1RPTV9QUklDRV9BUEknXTtcblxuICAgIHRoaXMuaXNMb2FkaW5nU3ViaiQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZSQgPVxuICAgICAgcHJpY2luZ0VuYWJsZWQgJiYgY3VzdG9tUHJpY2VBcGlcbiAgICAgICAgPyB0aGlzLmNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLmN1c3RvbUNvbmZpZ3VyZVByaWNlKHsgdXJsOiBjdXN0b21QcmljZUFwaSwgY29uZmlndXJhdGlvblJlcXVlc3QsIHJ1bnRpbWVNb2RlbCB9KVxuICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbkFwaVNlcnZpY2UuY29uZmlndXJlTGluZUl0ZW0oe1xuICAgICAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3QsXG4gICAgICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgICAgICBwcmljaW5nRW5hYmxlZCxcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBjb25maWd1cmUkLnBpcGUoXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUocmVzdWx0LmNvbnRleHQpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS5uZXh0KHJlc3VsdCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5kZWxldGVkTGluZUl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNob3dJbmFjdGl2ZVByb2R1Y3RzQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSByZXN1bHQubGluZUl0ZW07XG4gICAgICB9KSxcbiAgICAgIG1hcCgoeyBsaW5lSXRlbSB9KSA9PiBsaW5lSXRlbSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+XG4gICAgICAgIHRocm93RXJyb3IoKCkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RFcnJvckRldGFpbHMoZXJyb3IuZXJyb3IpLmpvaW4oJy4gJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlIHx8IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVTZXJ2aWNlXG4gICAgICAuaW5pdCh7IHByb2R1Y3RJZDogcHJvcHMucHJvZHVjdElkLCBkZWZhdWx0UXR5OiBwcm9wcy5xdHksIGF0dHJpYnV0ZXNNYXA6IHByb3BzLmF0dHJpYnV0ZXNNYXAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmUoKSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnJlc2V0KCkpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVHdWlkZWRTZWxsaW5nJChkYXRhOiBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSk6IE9ic2VydmFibGU8Q29uZmlndXJlUHJpY2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uQXBpU2VydmljZVxuICAgICAgLmNvbmZpZ3VyZUxpbmVJdGVtKHtcbiAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3Q6IGdldEd1aWRlZFNlbGxpbmdDb25maWd1cmF0aW9uUmVxdWVzdChkYXRhLCB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSksXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IGVycm9yLmVycm9yLm1lc3NhZ2UgfHwgZXJyb3IuZXJyb3IgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVSZXF1ZXN0KGxpZ2h0TW9kZTogYm9vbGVhbiA9IHRydWUpOiBDb25maWd1cmF0aW9uUmVxdWVzdCB7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmdlbmVyYXRlTGluZUl0ZW0oKTtcblxuICAgIGxldCByZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGxpbmVJdGVtLFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgc3RlcDogIXRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5saW5lSXRlbSA/IFJ1bnRpbWVTdGVwLlNUQVJUIDogUnVudGltZVN0ZXAuVVBEQVRFLFxuICAgICAgYXR0cmlidXRlRG9tYWluTW9kZTogJ0FMTCcsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSxcbiAgICAgIGxpbmVJdGVtczogdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgfHwgW10sXG4gICAgICBhc3NldDogdGhpcy5nZXRBc3NldCgpLFxuICAgIH07XG5cbiAgICBpZiAobGlnaHRNb2RlKSB7XG4gICAgICByZXF1ZXN0ID0gQ29uZmlndXJhdGlvblRyYW5zbGF0b3JVdGlscy5saWdodGVuQ29uZmlndXJhdGlvblJlcXVlc3QocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVMaW5lSXRlbSgpOiBMaW5lSXRlbSB7XG4gICAgY29uc3QgcnVudGltZUNvbnRleHQgPSB0aGlzLmdldFJ1bnRpbWVDb250ZXh0KCk7XG4gICAgY29uc3QgdWlEZWZpbml0aW9uUHJvcGVydGllcyA9IHRoaXMuZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpO1xuXG4gICAgbGV0IGxpbmVJdGVtID0gY2xvbmVEZWVwKHRoaXMuY29uZmlndXJhYmxlUmFtcCk7XG4gICAgaWYgKCFsaW5lSXRlbSkge1xuICAgICAgY29uc3QgeyBpbml0aWFsaXphdGlvblByb3BzIH0gPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlID8/IHt9O1xuXG4gICAgICBsaW5lSXRlbSA9IGdldERlZmF1bHRMaW5lSXRlbShydW50aW1lQ29udGV4dCwgdWlEZWZpbml0aW9uUHJvcGVydGllcywgaW5pdGlhbGl6YXRpb25Qcm9wcz8uZGVmYXVsdFF0eSk7XG5cbiAgICAgIC8vIFNldCBkZWZhdWx0IGF0dHJpYnV0ZXNcbiAgICAgIGlmIChpbml0aWFsaXphdGlvblByb3BzPy5hdHRyaWJ1dGVzTWFwKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0cmFuc2Zvcm0oXG4gICAgICAgICAgaW5pdGlhbGl6YXRpb25Qcm9wcz8uYXR0cmlidXRlc01hcCxcbiAgICAgICAgICAoYWNjOiBOZXdBdHRyaWJ1dGVbXSwgdmFsdWUsIG5hbWUpID0+IGFjYy5wdXNoKHsgbmFtZSwgdmFsdWUgfSksXG4gICAgICAgICAgW10sXG4gICAgICAgICk7XG5cbiAgICAgICAgbGluZUl0ZW0gPSBuZXcgTGluZUl0ZW1Xb3JrZXIobGluZUl0ZW0pLnBhdGNoQXR0cmlidXRlKGF0dHJpYnV0ZXMpLmxpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lSXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBc3NldCgpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmNvbmZpZ3VyYWJsZVJhbXA7XG4gICAgaWYgKCFsaW5lSXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0SWQgPSBsaW5lSXRlbS5hc3NldElkID8/IGxpbmVJdGVtLm9wZW5PcmRlckxpbmVJdGVtSWQ7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYXNzZXRzU3RhdGU/LmluaXRpYWxTdGF0ZS5maW5kKGxpID0+IGFzc2V0UHJlZGljYXRlRm4obGksIGFzc2V0SWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpOiBVSURlZmluaXRpb25Qcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLih0aGlzLmdldFJ1bnRpbWVDb250ZXh0KCkudWlEZWZpbml0aW9uQ29udGFpbmVyPy5zb3VyY2UucHJvcGVydGllcyA/PyB7fSksXG4gICAgICAuLi4odGhpcy5ydW50aW1lU2VydmljZS51aURlZmluaXRpb25Qcm9wZXJ0aWVzID8/IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93SW5hY3RpdmVQcm9kdWN0c0NvbmZpcm1hdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maXJtYXRpb25Db25maWc6IENvbmZpcm1hdGlvbkNvbmZpZyA9IHtcbiAgICAgIHRpdGxlOiAnICcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgcXVvdGUgY29udGFpbnMgaW5hY3RpdmUgcHJvZHVjdHMuIERvIHlvdSB3YW50IHRvIHJlbW92ZSB0aGVtPycsXG4gICAgICBwcmltYXJ5QnV0dG9uTGFiZWw6ICdSZW1vdmUgcHJvZHVjdHMnLFxuICAgICAgc2Vjb25kYXJ5QnV0dG9uTGFiZWw6ICdCYWNrIHRvIFF1b3RlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXG4gICAgICAub3BlbihDb25maXJtYXRpb25Db21wb25lbnQsIHtcbiAgICAgICAgZGlzbWlzc2FibGVNYXNrOiBmYWxzZSxcbiAgICAgICAgY2xvc2VPbkVzY2FwZTogZmFsc2UsXG4gICAgICAgIGNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgc2hvd0hlYWRlcjogdHJ1ZSxcbiAgICAgICAgaGVhZGVyOiBgSW5hY3RpdmUgUHJvZHVjdHMgaW4gUXVvdGVgLFxuICAgICAgICB3aWR0aDogJzQ0MHB4JyxcbiAgICAgICAgZGF0YTogeyBjb25maXJtYXRpb25Db25maWcgfSxcbiAgICAgIH0pXG4gICAgICAub25DbG9zZS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgICAgICAgd2luZG93WydWRUxPX0JBQ0tfRk4nXS5hcHBseShudWxsLCBbY29udGV4dC5oZWFkZXJJZF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFzQixTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RixPQUFPLEVBSUwsaUJBQWlCLEVBRWpCLDRCQUE0QixFQUU1QixtQkFBbUIsR0FPcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxnQkFB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UUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsNEJBQTRCO1lBQ3BDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLEVBQUUsa0JBQWtCLEVBQUU7U0FDN0IsQ0FBQzthQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM5QyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQ3hEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztpSEE3U1Usb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQ29tcG9uZW50LCBDb25maXJtYXRpb25Db25maWcsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ2hhcmdlLFxuICBDb21waWxlZFByaWNlUGxhbixcbiAgQ29uZmlndXJhdGlvbkNvbnRleHQsXG4gIENvbmZpZ3VyYXRpb25Nb2RlLFxuICBDb25maWd1cmF0aW9uUmVxdWVzdCxcbiAgQ29uZmlndXJhdGlvblRyYW5zbGF0b3JVdGlscyxcbiAgQ29uZmlndXJlUHJpY2UsXG4gIGV4dHJhY3RFcnJvckRldGFpbHMsXG4gIExpbmVJdGVtLFxuICBOZXdBdHRyaWJ1dGUsXG4gIFBhdGNoTGluZUl0ZW1PcHRpb25zLFxuICBSdW50aW1lTW9kZWwsXG4gIFVJRGVmaW5pdGlvblByb3BzLFxuICBWbFdpbmRvdyxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCB0cmFuc2Zvcm0gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFJ1bnRpbWVDb250ZXh0LCBSdW50aW1lU3RlcCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGFzc2V0UHJlZGljYXRlRm4gfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBMaW5lSXRlbVdvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xpbmUtaXRlbS53b3JrZXInO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdExpbmVJdGVtLCBnZXRHdWlkZWRTZWxsaW5nQ29uZmlndXJhdGlvblJlcXVlc3QgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzLCBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBWbFdpbmRvdztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RlID0gQ29uZmlndXJhdGlvbk1vZGUuU0VBUkNIO1xuICBwcml2YXRlIGNvbmZpZ3VyYWJsZVJhbXA6IExpbmVJdGVtIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmVQcmljZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGlzTG9hZGluZyQgPSB0aGlzLmlzTG9hZGluZ1N1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQXBpU2VydmljZTogQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZVNldHRpbmdzOiBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJlc2V0KCk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGUubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCQobGluZUl0ZW06IExpbmVJdGVtLCBvcHRpb25zPzogUGF0Y2hMaW5lSXRlbU9wdGlvbnMpOiBPYnNlcnZhYmxlPExpbmVJdGVtPiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5nZXRTbmFwc2hvdCgpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFNvdXJjZSBMaW5lSXRlbSBub3QgZm91bmRgKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gPVxuICAgICAgb3B0aW9ucz8uc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gfHwgdGhpcy5jb250ZXh0U25hcHNob3QucHJvcGVydGllc1snI3NraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uJ10gPT09ICd0cnVlJztcblxuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IG5ldyBMaW5lSXRlbVdvcmtlcihzb3VyY2UpLnJlcGxhY2UobGluZUl0ZW0sIHNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKS5saTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZSgpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvblByb3BlcnRpZXMuc3VwcHJlc3NUb2FzdE1lc3NhZ2VzKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBib3VuY2UgYmFjayBpZiBjb25maWd1cmF0aW9uIGNhbGwgaGFzIGZhaWxlZFxuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS52YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGUubmV4dChwcmV2U3RhdGUgPyB7IC4uLnByZXZTdGF0ZSB9IDogbnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaChsaW5lSXRlbTogTGluZUl0ZW0sIG9wdGlvbnM/OiBQYXRjaExpbmVJdGVtT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2gkKGxpbmVJdGVtLCBvcHRpb25zKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWd1cmFibGVSYW1wKGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IGxpbmVJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGU/LmxpbmVJdGVtKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbmFwc2hvdCgpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5saW5lSXRlbSA/IHsgLi4udGhpcy5jb25maWd1cmF0aW9uU3RhdGUudmFsdWU/LmxpbmVJdGVtIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0UnVudGltZU1vZGVsKCk6IFJ1bnRpbWVNb2RlbCB7XG4gICAgY29uc3QgcnVudGltZU1vZGVsID0gdGhpcy5ydW50aW1lU2VydmljZS5ydW50aW1lTW9kZWw7XG4gICAgaWYgKCFydW50aW1lTW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBtb2RlbCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVudGltZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldFJ1bnRpbWVDb250ZXh0KCk6IFJ1bnRpbWVDb250ZXh0IHtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMucnVudGltZVNlcnZpY2UucnVudGltZUNvbnRleHQ7XG4gICAgaWYgKCFydW50aW1lQ29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW50aW1lIGNvbnRleHQgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bnRpbWVDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxDb25maWd1cmVQcmljZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlU25hcHNob3QoKTogQ29uZmlndXJlUHJpY2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHRTbmFwc2hvdCgpOiBDb25maWd1cmF0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0JCgpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlcyQoKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PENoYXJnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGU/LmNoYXJnZXMgPz8ge30pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q2hhcmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5jaGFyZ2VzID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBwcmljZVBsYW5zJCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlPy5wcmljZVBsYW5zID8/IHt9KSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaWNlUGxhbnNTbmFwc2hvdCgpOiBEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5wcmljZVBsYW5zID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9jZWR1cmVDb250ZXh0JCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8dW5rbm93bj4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGU/LnByb2NlZHVyZUNvbnRleHQgPz8ge30pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvY2VkdXJlQ29udGV4dFNuYXBzaG90KCk6IERpY3Rpb25hcnk8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS52YWx1ZT8ucHJvY2VkdXJlQ29udGV4dCA/PyB7fTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmUoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZVJlcXVlc3QkKHRoaXMuZ2VuZXJhdGVSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVJlcXVlc3QkKGNvbmZpZ3VyYXRpb25SZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCk6IE9ic2VydmFibGU8TGluZUl0ZW0+IHtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMuZ2V0UnVudGltZUNvbnRleHQoKTtcbiAgICBjb25zdCBydW50aW1lTW9kZWwgPSB0aGlzLmdldFJ1bnRpbWVNb2RlbCgpO1xuICAgIGNvbnN0IHVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSB0aGlzLmdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMoKTtcblxuICAgIGNvbnN0IG1haW5QcmljaW5nRW5hYmxlZCA9IHJ1bnRpbWVDb250ZXh0LnByb3BlcnRpZXM/LlByaWNpbmdFbmFibGVkO1xuICAgIGNvbnN0IHByaWNpbmdFbmFibGVkID0gbWFpblByaWNpbmdFbmFibGVkID8gbWFpblByaWNpbmdFbmFibGVkID09PSAndHJ1ZScgOiB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnByaWNpbmdFbmFibGVkO1xuICAgIGNvbnN0IGN1c3RvbVByaWNlQXBpID0gdGhpcy5ydW50aW1lU2V0dGluZ3MuZ2V0Q29uZmlndXJhdGlvblNldHRpbmdzKClbJ0NVU1RPTV9QUklDRV9BUEknXTtcblxuICAgIHRoaXMuaXNMb2FkaW5nU3ViaiQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZSQgPVxuICAgICAgcHJpY2luZ0VuYWJsZWQgJiYgY3VzdG9tUHJpY2VBcGlcbiAgICAgICAgPyB0aGlzLmNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLmN1c3RvbUNvbmZpZ3VyZVByaWNlKHsgdXJsOiBjdXN0b21QcmljZUFwaSwgY29uZmlndXJhdGlvblJlcXVlc3QsIHJ1bnRpbWVNb2RlbCB9KVxuICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbkFwaVNlcnZpY2UuY29uZmlndXJlTGluZUl0ZW0oe1xuICAgICAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3QsXG4gICAgICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgICAgICBwcmljaW5nRW5hYmxlZCxcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBjb25maWd1cmUkLnBpcGUoXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUocmVzdWx0LmNvbnRleHQpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS5uZXh0KHJlc3VsdCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5kZWxldGVkTGluZUl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNob3dJbmFjdGl2ZVByb2R1Y3RzQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSByZXN1bHQubGluZUl0ZW07XG4gICAgICB9KSxcbiAgICAgIG1hcCgoeyBsaW5lSXRlbSB9KSA9PiBsaW5lSXRlbSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+XG4gICAgICAgIHRocm93RXJyb3IoKCkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RFcnJvckRldGFpbHMoZXJyb3IuZXJyb3IpLmpvaW4oJy4gJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlIHx8IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVTZXJ2aWNlXG4gICAgICAuaW5pdCh7IHByb2R1Y3RJZDogcHJvcHMucHJvZHVjdElkLCBkZWZhdWx0UXR5OiBwcm9wcy5xdHksIGF0dHJpYnV0ZXNNYXA6IHByb3BzLmF0dHJpYnV0ZXNNYXAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmUoKSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnJlc2V0KCkpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVHdWlkZWRTZWxsaW5nJChkYXRhOiBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSk6IE9ic2VydmFibGU8Q29uZmlndXJlUHJpY2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uQXBpU2VydmljZVxuICAgICAgLmNvbmZpZ3VyZUxpbmVJdGVtKHtcbiAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3Q6IGdldEd1aWRlZFNlbGxpbmdDb25maWd1cmF0aW9uUmVxdWVzdChkYXRhLCB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSksXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IGVycm9yLmVycm9yLm1lc3NhZ2UgfHwgZXJyb3IuZXJyb3IgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVSZXF1ZXN0KGxpZ2h0TW9kZTogYm9vbGVhbiA9IHRydWUpOiBDb25maWd1cmF0aW9uUmVxdWVzdCB7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmdlbmVyYXRlTGluZUl0ZW0oKTtcblxuICAgIGxldCByZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGxpbmVJdGVtLFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgc3RlcDogIXRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5saW5lSXRlbSA/IFJ1bnRpbWVTdGVwLlNUQVJUIDogUnVudGltZVN0ZXAuVVBEQVRFLFxuICAgICAgYXR0cmlidXRlRG9tYWluTW9kZTogJ0FMTCcsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSxcbiAgICAgIGxpbmVJdGVtczogdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgfHwgW10sXG4gICAgICBhc3NldDogdGhpcy5nZXRBc3NldCgpLFxuICAgIH07XG5cbiAgICBpZiAobGlnaHRNb2RlKSB7XG4gICAgICByZXF1ZXN0ID0gQ29uZmlndXJhdGlvblRyYW5zbGF0b3JVdGlscy5saWdodGVuQ29uZmlndXJhdGlvblJlcXVlc3QocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVMaW5lSXRlbSgpOiBMaW5lSXRlbSB7XG4gICAgY29uc3QgcnVudGltZUNvbnRleHQgPSB0aGlzLmdldFJ1bnRpbWVDb250ZXh0KCk7XG4gICAgY29uc3QgdWlEZWZpbml0aW9uUHJvcGVydGllcyA9IHRoaXMuZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpO1xuXG4gICAgbGV0IGxpbmVJdGVtID0gdGhpcy5jb25maWd1cmFibGVSYW1wO1xuICAgIGlmICghbGluZUl0ZW0pIHtcbiAgICAgIGNvbnN0IHsgaW5pdGlhbGl6YXRpb25Qcm9wcyB9ID0gdGhpcy5ydW50aW1lU2VydmljZSA/PyB7fTtcblxuICAgICAgbGluZUl0ZW0gPSBnZXREZWZhdWx0TGluZUl0ZW0ocnVudGltZUNvbnRleHQsIHVpRGVmaW5pdGlvblByb3BlcnRpZXMsIGluaXRpYWxpemF0aW9uUHJvcHM/LmRlZmF1bHRRdHkpO1xuXG4gICAgICAvLyBTZXQgZGVmYXVsdCBhdHRyaWJ1dGVzXG4gICAgICBpZiAoaW5pdGlhbGl6YXRpb25Qcm9wcz8uYXR0cmlidXRlc01hcCkge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdHJhbnNmb3JtKFxuICAgICAgICAgIGluaXRpYWxpemF0aW9uUHJvcHM/LmF0dHJpYnV0ZXNNYXAsXG4gICAgICAgICAgKGFjYzogTmV3QXR0cmlidXRlW10sIHZhbHVlLCBuYW1lKSA9PiBhY2MucHVzaCh7IG5hbWUsIHZhbHVlIH0pLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuXG4gICAgICAgIGxpbmVJdGVtID0gbmV3IExpbmVJdGVtV29ya2VyKGxpbmVJdGVtKS5wYXRjaEF0dHJpYnV0ZShhdHRyaWJ1dGVzKS5saTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGluZUl0ZW07XG4gIH1cblxuICBwdWJsaWMgZ2V0QXNzZXQoKTogTGluZUl0ZW0gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5jb25maWd1cmFibGVSYW1wO1xuICAgIGlmICghbGluZUl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldElkID0gbGluZUl0ZW0uYXNzZXRJZCA/PyBsaW5lSXRlbS5vcGVuT3JkZXJMaW5lSXRlbUlkO1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmFzc2V0c1N0YXRlPy5pbml0aWFsU3RhdGUuZmluZChsaSA9PiBhc3NldFByZWRpY2F0ZUZuKGxpLCBhc3NldElkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMoKTogVUlEZWZpbml0aW9uUHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4odGhpcy5nZXRSdW50aW1lQ29udGV4dCgpLnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlLnByb3BlcnRpZXMgPz8ge30pLFxuICAgICAgLi4uKHRoaXMucnVudGltZVNlcnZpY2UudWlEZWZpbml0aW9uUHJvcGVydGllcyA/PyB7fSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0luYWN0aXZlUHJvZHVjdHNDb25maXJtYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlybWF0aW9uQ29uZmlnOiBDb25maXJtYXRpb25Db25maWcgPSB7XG4gICAgICB0aXRsZTogJyAnLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHF1b3RlIGNvbnRhaW5zIGluYWN0aXZlIHByb2R1Y3RzLiBEbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlbT8nLFxuICAgICAgcHJpbWFyeUJ1dHRvbkxhYmVsOiAnUmVtb3ZlIHByb2R1Y3RzJyxcbiAgICAgIHNlY29uZGFyeUJ1dHRvbkxhYmVsOiAnQmFjayB0byBRdW90ZScsXG4gICAgfTtcblxuICAgIHRoaXMuZGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XG4gICAgICAgIGRpc21pc3NhYmxlTWFzazogZmFsc2UsXG4gICAgICAgIGNsb3NlT25Fc2NhcGU6IGZhbHNlLFxuICAgICAgICBjbG9zYWJsZTogZmFsc2UsXG4gICAgICAgIHNob3dIZWFkZXI6IHRydWUsXG4gICAgICAgIGhlYWRlcjogYEluYWN0aXZlIFByb2R1Y3RzIGluIFF1b3RlYCxcbiAgICAgICAgd2lkdGg6ICc0NDBweCcsXG4gICAgICAgIGRhdGE6IHsgY29uZmlybWF0aW9uQ29uZmlnIH0sXG4gICAgICB9KVxuICAgICAgLm9uQ2xvc2Uuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICAgICAgICAgIHdpbmRvd1snVkVMT19CQUNLX0ZOJ10uYXBwbHkobnVsbCwgW2NvbnRleHQuaGVhZGVySWRdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -7,24 +7,27 @@ import { QuoteDraftService } from '../../../services/quote-draft.service';
|
|
7
7
|
import { multiplyLineItems } from '../../../utils/line-item.utils';
|
8
8
|
import { ConfigurationService } from '../../configuration/services/configuration.service';
|
9
9
|
import { FlowUpdateService } from './flow-update.service';
|
10
|
+
import { FlowInfoService } from '../../../services';
|
10
11
|
import * as i0 from "@angular/core";
|
11
12
|
import * as i1 from "@veloceapps/api";
|
12
13
|
import * as i2 from "../../../services/context.service";
|
13
14
|
import * as i3 from "../../../services/quote-draft.service";
|
14
15
|
import * as i4 from "./flow-update.service";
|
15
16
|
import * as i5 from "../../configuration/services/configuration.service";
|
17
|
+
import * as i6 from "../../../services";
|
16
18
|
export class FlowConfigurationService {
|
17
|
-
constructor(proceduresApiService, contextService, quoteDraftService, updateService, configurationService) {
|
19
|
+
constructor(proceduresApiService, contextService, quoteDraftService, updateService, configurationService, flowInfoService) {
|
18
20
|
this.proceduresApiService = proceduresApiService;
|
19
21
|
this.contextService = contextService;
|
20
22
|
this.quoteDraftService = quoteDraftService;
|
21
23
|
this.updateService = updateService;
|
22
24
|
this.configurationService = configurationService;
|
25
|
+
this.flowInfoService = flowInfoService;
|
23
26
|
this.updatedSubj$ = new Subject();
|
24
27
|
this.updated$ = this.updatedSubj$.asObservable();
|
25
28
|
}
|
26
29
|
calculate$(quoteDraft) {
|
27
|
-
return this.
|
30
|
+
return this.extendedApply$(quoteDraft).pipe(tap(result => {
|
28
31
|
// sort the result current state based on the quote draft initial state
|
29
32
|
const initialStateIds = quoteDraft.initialState.map(lineItem => lineItem.integrationId);
|
30
33
|
result.currentState = result.currentState
|
@@ -144,10 +147,18 @@ export class FlowConfigurationService {
|
|
144
147
|
}));
|
145
148
|
};
|
146
149
|
}
|
150
|
+
extendedApply$(quoteDraft) {
|
151
|
+
const request = { ...quoteDraft };
|
152
|
+
const procedureName = this.flowInfoService.flow?.properties.procedureName;
|
153
|
+
if (procedureName) {
|
154
|
+
request.procedureName = procedureName;
|
155
|
+
}
|
156
|
+
return this.proceduresApiService.apply$(request);
|
157
|
+
}
|
147
158
|
}
|
148
|
-
FlowConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.ProceduresApiService }, { token: i2.ContextService }, { token: i3.QuoteDraftService }, { token: i4.FlowUpdateService }, { token: i5.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
159
|
+
FlowConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationService, deps: [{ token: i1.ProceduresApiService }, { token: i2.ContextService }, { token: i3.QuoteDraftService }, { token: i4.FlowUpdateService }, { token: i5.ConfigurationService }, { token: i6.FlowInfoService }], target: i0.ɵɵFactoryTarget.Injectable });
|
149
160
|
FlowConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationService });
|
150
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationService, decorators: [{
|
151
162
|
type: Injectable
|
152
|
-
}], ctorParameters: function () { return [{ type: i1.ProceduresApiService }, { type: i2.ContextService }, { type: i3.QuoteDraftService }, { type: i4.FlowUpdateService }, { type: i5.ConfigurationService }]; } });
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLFFBQVEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBRzFELE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFDVSxvQkFBMEMsRUFDMUMsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLGFBQWdDLEVBQ2hDLG9CQUEwQztRQUoxQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNo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RUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDOztxSEF0TlUsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2NlZHVyZXNBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IENoYXJnZSwgQ29tcGlsZWRQcmljZVBsYW4sIENvbmZpZ3VyYXRpb25Db250ZXh0LCBMaW5lSXRlbSwgTWV0cmljUnVsZSwgUXVvdGVEcmFmdCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVvdGVEcmFmdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9xdW90ZS1kcmFmdC5zZXJ2aWNlJztcbmltcG9ydCB7IG11bHRpcGx5TGluZUl0ZW1zIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbGluZS1pdGVtLnV0aWxzJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dVcGRhdGVQYXJhbXMgfSBmcm9tICcuLi90eXBlcy91cGRhdGUudHlwZXMnO1xuaW1wb3J0IHsgRmxvd1VwZGF0ZVNlcnZpY2UgfSBmcm9tICcuL2Zsb3ctdXBkYXRlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGJlaW5nIGZpcmVkIHdoZW4gUXVvdGVEcmFmdCB3YXMgdXBkYXRlZFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZWQkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIHByaXZhdGUgdXBkYXRlZFN1YmokID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHByb2NlZHVyZXNBcGlTZXJ2aWNlOiBQcm9jZWR1cmVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHVwZGF0ZVNlcnZpY2U6IEZsb3dVcGRhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnVwZGF0ZWQkID0gdGhpcy51cGRhdGVkU3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlJChxdW90ZURyYWZ0OiBRdW90ZURyYWZ0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlc0FwaVNlcnZpY2UuYXBwbHkkKHF1b3RlRHJhZnQpLnBpcGUoXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgLy8gc29ydCB0aGUgcmVzdWx0IGN1cnJlbnQgc3RhdGUgYmFzZWQgb24gdGhlIHF1b3RlIGRyYWZ0IGluaXRpYWwgc3RhdGVcbiAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlSWRzID0gcXVvdGVEcmFmdC5pbml0aWFsU3RhdGUubWFwKGxpbmVJdGVtID0+IGxpbmVJdGVtLmludGVncmF0aW9uSWQpO1xuICAgICAgICByZXN1bHQuY3VycmVudFN0YXRlID0gcmVzdWx0LmN1cnJlbnRTdGF0ZVxuICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGluaXRpYWxTdGF0ZUlkcy5pbmRleE9mKGEuaW50ZWdyYXRpb25JZCkgLSBpbml0aWFsU3RhdGVJZHMuaW5kZXhPZihiLmludGVncmF0aW9uSWQpKTtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVRdW90ZURyYWZ0KHJlc3VsdCk7XG4gICAgICB9KSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZShxdW90ZURyYWZ0OiBRdW90ZURyYWZ0KTogdm9pZCB7XG4gICAgdGhpcy5jYWxjdWxhdGUkKHF1b3RlRHJhZnQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZSQodXBkYXRlczogRmxvd1VwZGF0ZVBhcmFtc1tdKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSBjbG9uZURlZXAocXVvdGVEcmFmdC5jdXJyZW50U3RhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlcnZpY2UudXBkYXRlKHVwZGF0ZWRTdGF0ZSwgdXBkYXRlcywgcXVvdGVEcmFmdC5jaGFyZ2VzKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRTdGF0ZTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHVwZGF0ZWRTdGF0ZSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZSh1cGRhdGVzOiBGbG93VXBkYXRlUGFyYW1zW10pOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZSQodXBkYXRlcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmV2ZXJ0JChsaW5lSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFF1b3RlRHJhZnQgfCBudWxsPiB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBjb25zdCBpbml0aWFsQ3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5nZXRJbml0aWFsQ3VycmVudFN0YXRlKCk7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5jdXJyZW50U3RhdGU7XG5cbiAgICBjb25zdCBjdXJyZW50TGluZUl0ZW1JbmRleCA9IGN1cnJlbnRTdGF0ZS5maW5kSW5kZXgoKHsgaWQgfSkgPT4gaWQgPT09IGxpbmVJdGVtSWQpO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5lSXRlbSA9IGN1cnJlbnRTdGF0ZVtjdXJyZW50TGluZUl0ZW1JbmRleF07XG5cbiAgICBjb25zdCBpbml0aWFsTGluZUl0ZW0gPSBpbml0aWFsQ3VycmVudFN0YXRlLmZpbmQoXG4gICAgICAoeyBpbnRlZ3JhdGlvbklkIH0pID0+IGludGVncmF0aW9uSWQgPT09IGN1cnJlbnRMaW5lSXRlbT8uaW50ZWdyYXRpb25JZCxcbiAgICApO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0IHx8ICFjdXJyZW50TGluZUl0ZW0gfHwgIWluaXRpYWxMaW5lSXRlbSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IGNsb25lRGVlcChjdXJyZW50U3RhdGUpO1xuICAgIHVwZGF0ZWRTdGF0ZS5zcGxpY2UoY3VycmVudExpbmVJdGVtSW5kZXgsIDEsIGluaXRpYWxMaW5lSXRlbSk7XG5cbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnNldEN1cnJlbnRMaW5lSXRlbVN0YXRlKHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJldmVydChsaW5lSXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJldmVydCQobGluZUl0ZW1JZCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlJChpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5jdXJyZW50U3RhdGU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gaWRzLnJlZHVjZSgocmVzdWx0LCBpZCkgPT4gdGhpcy51cGRhdGVTZXJ2aWNlLmRlbGV0ZShyZXN1bHQsIGlkKSwgY3VycmVudFN0YXRlKSksXG4gICAgICBzd2l0Y2hNYXAodXBkYXRlZFN0YXRlID0+IHRoaXMuY2FsY3VsYXRlJCh7IC4uLnF1b3RlRHJhZnQsIGN1cnJlbnRTdGF0ZTogdXBkYXRlZFN0YXRlIH0pKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQpLFxuICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlZFN1YmokLm5leHQoKSksXG4gICAgICB0aGlzLmhhbmRsZUVycm9yQW5kQm91bmNlQmFjaygpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZSQoaWRzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUZXJtJCh0ZXJtOiBMaW5lSXRlbSk6IE9ic2VydmFibGU8UXVvdGVEcmFmdCB8IG51bGw+IHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZFN0YXRlID0gWy4uLnF1b3RlRHJhZnQuY3VycmVudFN0YXRlLCB0ZXJtXTtcblxuICAgIHJldHVybiBvZihbXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRvQ2FydCQocHJvcHM6IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpLnBpcGUoXG4gICAgICBtYXAobGluZUl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0UnVudGltZU1vZGVsKCk7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gbW9kZWw/LnR5cGVzLmZpbmQodHlwZSA9PiB0eXBlLm5hbWUgPT09IGxpbmVJdGVtLnR5cGUpPy5zcGxpdCA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgbGluZUl0ZW1zID0gbXVsdGlwbHlMaW5lSXRlbXMobGluZUl0ZW0sIHByb3BzLnF0eSA/PyAxLCBzcGxpdCk7XG5cbiAgICAgICAgcmV0dXJuIFsuLi5xdW90ZURyYWZ0LmN1cnJlbnRTdGF0ZSwgLi4ubGluZUl0ZW1zXTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHVwZGF0ZWRTdGF0ZSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuY3VycmVudFN0YXRlKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbmFwc2hvdCgpOiBMaW5lSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZT8uY3VycmVudFN0YXRlLnNsaWNlKCkgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYXJnZXMkKCk6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDaGFyZ2U+PiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShtYXAoKHsgY2hhcmdlcyB9KSA9PiBjaGFyZ2VzKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaWNlUGxhbnMkKCk6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDb21waWxlZFByaWNlUGxhbj4+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcCgoeyBwcmljZVBsYW5zIH0pID0+IHByaWNlUGxhbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlTWV0cmljcyQoKTogT2JzZXJ2YWJsZTxNZXRyaWNSdWxlW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcCgoeyBhY3RpdmVNZXRyaWNzIH0pID0+IGFjdGl2ZU1ldHJpY3MpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q2hhcmdlPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY2hhcmdlcyA/PyB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJpY2VQbGFuc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5wcmljZVBsYW5zID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVNZXRyaWNzU25hcHNob3QoKTogTWV0cmljUnVsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5hY3RpdmVNZXRyaWNzID8/IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0U25hcHNob3QoKTogQ29uZmlndXJhdGlvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dCQoKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yQW5kQm91bmNlQmFjaygpIHtcbiAgICByZXR1cm4gPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgICAgLy8gYm91bmNlIGJhY2sgaWYgY29uZmlndXJhdGlvbiBjYWxsIGhhcyBmYWlsZWRcbiAgICAgICAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgICAgICAgIGlmIChxdW90ZURyYWZ0KSB7XG4gICAgICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnVwZGF0ZVF1b3RlRHJhZnQocXVvdGVEcmFmdCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
163
|
+
}], ctorParameters: function () { return [{ type: i1.ProceduresApiService }, { type: i2.ContextService }, { type: i3.QuoteDraftService }, { type: i4.FlowUpdateService }, { type: i5.ConfigurationService }, { type: i6.FlowInfoService }]; } });
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLFFBQVEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFHcEQsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUNVLG9CQUEwQyxFQUMxQyxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsYUFBZ0MsRUFDaEMsb0JBQTBDLEVBQzFDLGVBQWdDO1FBTGhDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNC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Q3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQzFCO2dCQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLFVBQXNCO1FBQzNDLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzFFLElBQUksYUFBYSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7O3FIQWhPVSx3QkFBd0I7eUhBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvY2VkdXJlc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgQ2hhcmdlLCBDb21waWxlZFByaWNlUGxhbiwgQ29uZmlndXJhdGlvbkNvbnRleHQsIExpbmVJdGVtLCBNZXRyaWNSdWxlLCBRdW90ZURyYWZ0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3F1b3RlLWRyYWZ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgbXVsdGlwbHlMaW5lSXRlbXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9saW5lLWl0ZW0udXRpbHMnO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWd1cmF0aW9uUHJvcHMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1VwZGF0ZVBhcmFtcyB9IGZyb20gJy4uL3R5cGVzL3VwZGF0ZS50eXBlcyc7XG5pbXBvcnQgeyBGbG93VXBkYXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy11cGRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2Uge1xuICAvKipcbiAgICogQW4gZXZlbnQgYmVpbmcgZmlyZWQgd2hlbiBRdW90ZURyYWZ0IHdhcyB1cGRhdGVkXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlZCQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgcHJpdmF0ZSB1cGRhdGVkU3ViaiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcHJvY2VkdXJlc0FwaVNlcnZpY2U6IFByb2NlZHVyZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXBkYXRlU2VydmljZTogRmxvd1VwZGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy51cGRhdGVkJCA9IHRoaXMudXBkYXRlZFN1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZSQocXVvdGVEcmFmdDogUXVvdGVEcmFmdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmV4dGVuZGVkQXBwbHkkKHF1b3RlRHJhZnQpLnBpcGUoXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgLy8gc29ydCB0aGUgcmVzdWx0IGN1cnJlbnQgc3RhdGUgYmFzZWQgb24gdGhlIHF1b3RlIGRyYWZ0IGluaXRpYWwgc3RhdGVcbiAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlSWRzID0gcXVvdGVEcmFmdC5pbml0aWFsU3RhdGUubWFwKGxpbmVJdGVtID0+IGxpbmVJdGVtLmludGVncmF0aW9uSWQpO1xuICAgICAgICByZXN1bHQuY3VycmVudFN0YXRlID0gcmVzdWx0LmN1cnJlbnRTdGF0ZVxuICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGluaXRpYWxTdGF0ZUlkcy5pbmRleE9mKGEuaW50ZWdyYXRpb25JZCkgLSBpbml0aWFsU3RhdGVJZHMuaW5kZXhPZihiLmludGVncmF0aW9uSWQpKTtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVRdW90ZURyYWZ0KHJlc3VsdCk7XG4gICAgICB9KSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZShxdW90ZURyYWZ0OiBRdW90ZURyYWZ0KTogdm9pZCB7XG4gICAgdGhpcy5jYWxjdWxhdGUkKHF1b3RlRHJhZnQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZSQodXBkYXRlczogRmxvd1VwZGF0ZVBhcmFtc1tdKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSBjbG9uZURlZXAocXVvdGVEcmFmdC5jdXJyZW50U3RhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlcnZpY2UudXBkYXRlKHVwZGF0ZWRTdGF0ZSwgdXBkYXRlcywgcXVvdGVEcmFmdC5jaGFyZ2VzKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRTdGF0ZTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHVwZGF0ZWRTdGF0ZSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZSh1cGRhdGVzOiBGbG93VXBkYXRlUGFyYW1zW10pOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZSQodXBkYXRlcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmV2ZXJ0JChsaW5lSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFF1b3RlRHJhZnQgfCBudWxsPiB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBjb25zdCBpbml0aWFsQ3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5nZXRJbml0aWFsQ3VycmVudFN0YXRlKCk7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5jdXJyZW50U3RhdGU7XG5cbiAgICBjb25zdCBjdXJyZW50TGluZUl0ZW1JbmRleCA9IGN1cnJlbnRTdGF0ZS5maW5kSW5kZXgoKHsgaWQgfSkgPT4gaWQgPT09IGxpbmVJdGVtSWQpO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5lSXRlbSA9IGN1cnJlbnRTdGF0ZVtjdXJyZW50TGluZUl0ZW1JbmRleF07XG5cbiAgICBjb25zdCBpbml0aWFsTGluZUl0ZW0gPSBpbml0aWFsQ3VycmVudFN0YXRlLmZpbmQoXG4gICAgICAoeyBpbnRlZ3JhdGlvbklkIH0pID0+IGludGVncmF0aW9uSWQgPT09IGN1cnJlbnRMaW5lSXRlbT8uaW50ZWdyYXRpb25JZCxcbiAgICApO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0IHx8ICFjdXJyZW50TGluZUl0ZW0gfHwgIWluaXRpYWxMaW5lSXRlbSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IGNsb25lRGVlcChjdXJyZW50U3RhdGUpO1xuICAgIHVwZGF0ZWRTdGF0ZS5zcGxpY2UoY3VycmVudExpbmVJdGVtSW5kZXgsIDEsIGluaXRpYWxMaW5lSXRlbSk7XG5cbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnNldEN1cnJlbnRMaW5lSXRlbVN0YXRlKHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJldmVydChsaW5lSXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJldmVydCQobGluZUl0ZW1JZCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlJChpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5jdXJyZW50U3RhdGU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gaWRzLnJlZHVjZSgocmVzdWx0LCBpZCkgPT4gdGhpcy51cGRhdGVTZXJ2aWNlLmRlbGV0ZShyZXN1bHQsIGlkKSwgY3VycmVudFN0YXRlKSksXG4gICAgICBzd2l0Y2hNYXAodXBkYXRlZFN0YXRlID0+IHRoaXMuY2FsY3VsYXRlJCh7IC4uLnF1b3RlRHJhZnQsIGN1cnJlbnRTdGF0ZTogdXBkYXRlZFN0YXRlIH0pKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQpLFxuICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlZFN1YmokLm5leHQoKSksXG4gICAgICB0aGlzLmhhbmRsZUVycm9yQW5kQm91bmNlQmFjaygpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZSQoaWRzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUZXJtJCh0ZXJtOiBMaW5lSXRlbSk6IE9ic2VydmFibGU8UXVvdGVEcmFmdCB8IG51bGw+IHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZFN0YXRlID0gWy4uLnF1b3RlRHJhZnQuY3VycmVudFN0YXRlLCB0ZXJtXTtcblxuICAgIHJldHVybiBvZihbXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRvQ2FydCQocHJvcHM6IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpLnBpcGUoXG4gICAgICBtYXAobGluZUl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0UnVudGltZU1vZGVsKCk7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gbW9kZWw/LnR5cGVzLmZpbmQodHlwZSA9PiB0eXBlLm5hbWUgPT09IGxpbmVJdGVtLnR5cGUpPy5zcGxpdCA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgbGluZUl0ZW1zID0gbXVsdGlwbHlMaW5lSXRlbXMobGluZUl0ZW0sIHByb3BzLnF0eSA/PyAxLCBzcGxpdCk7XG5cbiAgICAgICAgcmV0dXJuIFsuLi5xdW90ZURyYWZ0LmN1cnJlbnRTdGF0ZSwgLi4ubGluZUl0ZW1zXTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHVwZGF0ZWRTdGF0ZSA9PiB0aGlzLmNhbGN1bGF0ZSQoeyAuLi5xdW90ZURyYWZ0LCBjdXJyZW50U3RhdGU6IHVwZGF0ZWRTdGF0ZSB9KSksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCkpLFxuICAgICAgdGhpcy5oYW5kbGVFcnJvckFuZEJvdW5jZUJhY2soKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuY3VycmVudFN0YXRlKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbmFwc2hvdCgpOiBMaW5lSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZT8uY3VycmVudFN0YXRlLnNsaWNlKCkgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYXJnZXMkKCk6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDaGFyZ2U+PiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShtYXAoKHsgY2hhcmdlcyB9KSA9PiBjaGFyZ2VzKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaWNlUGxhbnMkKCk6IE9ic2VydmFibGU8RGljdGlvbmFyeTxDb21waWxlZFByaWNlUGxhbj4+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcCgoeyBwcmljZVBsYW5zIH0pID0+IHByaWNlUGxhbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlTWV0cmljcyQoKTogT2JzZXJ2YWJsZTxNZXRyaWNSdWxlW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKG1hcCgoeyBhY3RpdmVNZXRyaWNzIH0pID0+IGFjdGl2ZU1ldHJpY3MpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q2hhcmdlPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY2hhcmdlcyA/PyB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJpY2VQbGFuc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5wcmljZVBsYW5zID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVNZXRyaWNzU25hcHNob3QoKTogTWV0cmljUnVsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5hY3RpdmVNZXRyaWNzID8/IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0U25hcHNob3QoKTogQ29uZmlndXJhdGlvbkNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGV4dCQoKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yQW5kQm91bmNlQmFjaygpIHtcbiAgICByZXR1cm4gPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgICAgLy8gYm91bmNlIGJhY2sgaWYgY29uZmlndXJhdGlvbiBjYWxsIGhhcyBmYWlsZWRcbiAgICAgICAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgICAgICAgIGlmIChxdW90ZURyYWZ0KSB7XG4gICAgICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnVwZGF0ZVF1b3RlRHJhZnQocXVvdGVEcmFmdCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRTdWJqJC5uZXh0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0ZW5kZWRBcHBseSQocXVvdGVEcmFmdDogUXVvdGVEcmFmdCk6IE9ic2VydmFibGU8UXVvdGVEcmFmdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7IC4uLnF1b3RlRHJhZnQgfTtcbiAgICBjb25zdCBwcm9jZWR1cmVOYW1lID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdz8ucHJvcGVydGllcy5wcm9jZWR1cmVOYW1lO1xuICAgIGlmIChwcm9jZWR1cmVOYW1lKSB7XG4gICAgICByZXF1ZXN0LnByb2NlZHVyZU5hbWUgPSBwcm9jZWR1cmVOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9jZWR1cmVzQXBpU2VydmljZS5hcHBseSQocmVxdWVzdCk7XG4gIH1cbn1cbiJdfQ==
|