@lowcodeunit/applications-flow-common 1.33.92-lets-get-social-ish → 1.33.98-lets-get-social-ish
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/bundles/lowcodeunit-applications-flow-common.umd.js +1157 -564
- package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -1
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js +2 -2
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -1
- package/esm2015/lcu.api.js +2 -1
- package/esm2015/lib/applications-flow.module.js +18 -6
- package/esm2015/lib/controls/build-pipeline-form/build-pipeline-form.component.js +79 -0
- package/esm2015/lib/controls/devops-source-control-form/devops-source-control-form.component.js +311 -0
- package/esm2015/lib/controls/processor-details-form/processor-details-form.component.js +56 -53
- package/esm2015/lib/controls/security-toggle/security-toggle.component.js +19 -19
- package/esm2015/lib/controls/source-control-form/source-control-form.component.js +59 -0
- package/esm2015/lib/elements/analytics-card/analytics-card.component.js +1 -1
- package/esm2015/lib/elements/base-form/base-form.component.js +5 -5
- package/esm2015/lib/elements/feed-card-sm/feed-card-sm.component.js +1 -1
- package/esm2015/lib/elements/gh-control/gh-control.component.js +1 -1
- package/esm2015/lib/elements/main-feed-card/main-feed-card.component.js +1 -1
- package/esm2015/lib/elements/project-info-card/project-info-card.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/builds/builds.component.js +4 -9
- package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +3 -6
- package/esm2015/lib/elements/projects/controls/header/header.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +8 -10
- package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +6 -6
- package/esm2015/lib/elements/projects/projects.component.js +16 -143
- package/esm2015/lib/elements/slotted-card/slotted-card.component.js +4 -3
- package/esm2015/lib/services/eac.service.js +217 -0
- package/esm2015/lowcodeunit-applications-flow-common.js +30 -28
- package/fesm2015/lowcodeunit-applications-flow-common.js +762 -315
- package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -1
- package/lcu.api.d.ts +1 -0
- package/lcu.api.d.ts.map +1 -1
- package/lib/applications-flow.module.d.ts.map +1 -1
- package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +32 -0
- package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts.map +1 -0
- package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +70 -0
- package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts.map +1 -0
- package/lib/controls/processor-details-form/processor-details-form.component.d.ts +3 -2
- package/lib/controls/processor-details-form/processor-details-form.component.d.ts.map +1 -1
- package/lib/controls/source-control-form/source-control-form.component.d.ts +26 -0
- package/lib/controls/source-control-form/source-control-form.component.d.ts.map +1 -0
- package/lib/elements/base-form/base-form.component.d.ts +3 -3
- package/lib/elements/base-form/base-form.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/builds/builds.component.d.ts +1 -3
- package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +3 -3
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +1 -3
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/header/header.component.d.ts +3 -3
- package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts +3 -3
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -1
- package/lib/elements/projects/projects.component.d.ts +4 -11
- package/lib/elements/projects/projects.component.d.ts.map +1 -1
- package/lib/elements/slotted-card/slotted-card.component.d.ts +1 -0
- package/lib/elements/slotted-card/slotted-card.component.d.ts.map +1 -1
- package/lib/services/eac.service.d.ts +54 -0
- package/lib/services/eac.service.d.ts.map +1 -0
- package/lowcodeunit-applications-flow-common.d.ts +29 -27
- package/lowcodeunit-applications-flow-common.d.ts.map +1 -1
- package/lowcodeunit-applications-flow-common.metadata.json +1 -1
- package/package.json +1 -1
- package/esm2015/lib/services/applications-flow-events.service.js +0 -83
- package/lib/services/applications-flow-events.service.d.ts +0 -58
- package/lib/services/applications-flow-events.service.d.ts.map +0 -1
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Component, Injector, } from '@angular/core';
|
|
3
3
|
import { LCUElementContext, LcuElementComponent, } from '@lcu/common';
|
|
4
|
-
import { ApplicationsFlowState } from './../../state/applications-flow.state';
|
|
5
4
|
import { ApplicationsFlowService } from '../../services/applications-flow.service';
|
|
6
|
-
import {
|
|
7
|
-
import { ApplicationsFlowEventsService, } from './../../services/applications-flow-events.service';
|
|
5
|
+
import { EaCService } from '../../services/eac.service';
|
|
8
6
|
export class ApplicationsFlowProjectsElementState {
|
|
9
7
|
}
|
|
10
8
|
export class ApplicationsFlowProjectsContext extends LCUElementContext {
|
|
@@ -12,14 +10,11 @@ export class ApplicationsFlowProjectsContext extends LCUElementContext {
|
|
|
12
10
|
export const SELECTOR_APPLICATIONS_FLOW_PROJECTS_ELEMENT = 'applications-flow-projects-element';
|
|
13
11
|
export class ApplicationsFlowProjectsElementComponent extends LcuElementComponent {
|
|
14
12
|
// Constructors
|
|
15
|
-
constructor(injector, appsFlowSvc,
|
|
13
|
+
constructor(injector, appsFlowSvc, eacSvc) {
|
|
16
14
|
super(injector);
|
|
17
15
|
this.injector = injector;
|
|
18
16
|
this.appsFlowSvc = appsFlowSvc;
|
|
19
|
-
this.
|
|
20
|
-
this.appsFlowEventsSvc = appsFlowEventsSvc;
|
|
21
|
-
this.State = new ApplicationsFlowState();
|
|
22
|
-
this.setServices();
|
|
17
|
+
this.eacSvc = eacSvc;
|
|
23
18
|
}
|
|
24
19
|
// Properties
|
|
25
20
|
get ActiveEnvironment() {
|
|
@@ -33,19 +28,22 @@ export class ApplicationsFlowProjectsElementComponent extends LcuElementComponen
|
|
|
33
28
|
return envLookups[0];
|
|
34
29
|
}
|
|
35
30
|
get CreatingProject() {
|
|
36
|
-
return this.
|
|
31
|
+
return this.eacSvc.CreatingProject;
|
|
37
32
|
}
|
|
38
33
|
get EditingProject() {
|
|
39
34
|
var _a, _b, _c, _d;
|
|
40
35
|
return ((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Projects) ? (_d = (_c = this.State) === null || _c === void 0 ? void 0 : _c.EaC) === null || _d === void 0 ? void 0 : _d.Projects[this.EditingProjectLookup] : null;
|
|
41
36
|
}
|
|
42
37
|
get EditingProjectLookup() {
|
|
43
|
-
return this.
|
|
38
|
+
return this.eacSvc.EditingProjectLookup;
|
|
44
39
|
}
|
|
45
40
|
get ProjectLookups() {
|
|
46
41
|
var _a, _b;
|
|
47
42
|
return Object.keys(((_b = (_a = this.State) === null || _a === void 0 ? void 0 : _a.EaC) === null || _b === void 0 ? void 0 : _b.Projects) || {});
|
|
48
43
|
}
|
|
44
|
+
get State() {
|
|
45
|
+
return this.eacSvc.State;
|
|
46
|
+
}
|
|
49
47
|
// Life Cycle
|
|
50
48
|
ngOnDestroy() { }
|
|
51
49
|
ngOnInit() {
|
|
@@ -56,7 +54,7 @@ export class ApplicationsFlowProjectsElementComponent extends LcuElementComponen
|
|
|
56
54
|
// API Methods
|
|
57
55
|
ActiveEnterpriseChanged(event) {
|
|
58
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
yield this.
|
|
57
|
+
yield this.eacSvc.SetActiveEnterprise(event.value);
|
|
60
58
|
});
|
|
61
59
|
}
|
|
62
60
|
ConfigureDevOpsAction(devOpsActionLookup) {
|
|
@@ -65,7 +63,7 @@ export class ApplicationsFlowProjectsElementComponent extends LcuElementComponen
|
|
|
65
63
|
.ConfigureDevOpsAction(devOpsActionLookup)
|
|
66
64
|
.subscribe((response) => {
|
|
67
65
|
if (response.Status.Code === 0) {
|
|
68
|
-
this.
|
|
66
|
+
this.eacSvc.LoadEnterpriseAsCode();
|
|
69
67
|
}
|
|
70
68
|
else {
|
|
71
69
|
this.State.Loading = false;
|
|
@@ -77,138 +75,14 @@ export class ApplicationsFlowProjectsElementComponent extends LcuElementComponen
|
|
|
77
75
|
var _a;
|
|
78
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
77
|
this.State.Loading = true;
|
|
80
|
-
yield this.
|
|
81
|
-
yield this.
|
|
82
|
-
yield this.
|
|
78
|
+
yield this.eacSvc.HasValidConnection();
|
|
79
|
+
yield this.eacSvc.EnsureUserEnterprise();
|
|
80
|
+
yield this.eacSvc.ListEnterprises();
|
|
83
81
|
if (((_a = this.State.Enterprises) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
84
|
-
yield this.
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
handleSaveApplication(req) {
|
|
89
|
-
var _a;
|
|
90
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
const saveEaC = {
|
|
92
|
-
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
93
|
-
Applications: {},
|
|
94
|
-
Projects: {},
|
|
95
|
-
};
|
|
96
|
-
const existingProj = Object.assign({}, this.State.EaC.Projects[req.ProjectLookup]);
|
|
97
|
-
if (((_a = existingProj.ApplicationLookups) === null || _a === void 0 ? void 0 : _a.indexOf(req.ApplicationLookup)) < 0) {
|
|
98
|
-
if (!existingProj.ApplicationLookups) {
|
|
99
|
-
existingProj.ApplicationLookups = [];
|
|
100
|
-
}
|
|
101
|
-
existingProj.ApplicationLookups.push(req.ApplicationLookup);
|
|
102
|
-
saveEaC.Projects[req.ProjectLookup] = existingProj;
|
|
103
|
-
}
|
|
104
|
-
if (req.Application) {
|
|
105
|
-
saveEaC.Applications[req.ApplicationLookup] = req.Application;
|
|
106
|
-
}
|
|
107
|
-
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
handleSaveDFSModifier(req) {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const saveEaC = {
|
|
113
|
-
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
114
|
-
Modifiers: {},
|
|
115
|
-
Projects: {},
|
|
116
|
-
};
|
|
117
|
-
if (req.Modifier) {
|
|
118
|
-
saveEaC.Modifiers[req.ModifierLookup] = req.Modifier;
|
|
119
|
-
}
|
|
120
|
-
if (req.ProjectLookup) {
|
|
121
|
-
saveEaC.Projects[req.ProjectLookup] = {
|
|
122
|
-
ModifierLookups: [req.ModifierLookup],
|
|
123
|
-
};
|
|
82
|
+
yield this.eacSvc.GetActiveEnterprise();
|
|
124
83
|
}
|
|
125
|
-
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
126
84
|
});
|
|
127
85
|
}
|
|
128
|
-
handleSaveEnvironment(req) {
|
|
129
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
-
const saveEaC = {
|
|
131
|
-
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
132
|
-
DataTokens: {},
|
|
133
|
-
Environments: {},
|
|
134
|
-
};
|
|
135
|
-
if (req.Environment) {
|
|
136
|
-
saveEaC.Environments[req.EnvironmentLookup] = req.Environment;
|
|
137
|
-
}
|
|
138
|
-
if (req.EnterpriseDataTokens) {
|
|
139
|
-
saveEaC.DataTokens = req.EnterpriseDataTokens;
|
|
140
|
-
}
|
|
141
|
-
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
handleSaveProject(projectLookup, project) {
|
|
145
|
-
var _a;
|
|
146
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
-
const projHosts = {};
|
|
148
|
-
(_a = project === null || project === void 0 ? void 0 : project.Hosts) === null || _a === void 0 ? void 0 : _a.forEach(host => {
|
|
149
|
-
projHosts[host] = this.State.EaC.Hosts[host];
|
|
150
|
-
});
|
|
151
|
-
const saveEaC = {
|
|
152
|
-
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
153
|
-
Enterprise: Object.assign(Object.assign({}, this.State.EaC.Enterprise), { PrimaryHost: project.Hosts[0] }),
|
|
154
|
-
Hosts: projHosts,
|
|
155
|
-
// Providers: this.State.EaC.Providers, // TODO: Remove after all providers ADB2C's have been upgraded
|
|
156
|
-
Projects: {},
|
|
157
|
-
};
|
|
158
|
-
saveEaC.Projects[projectLookup] = project;
|
|
159
|
-
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
160
|
-
this.appsFlowEventsSvc.SetEditProjectSettings(projectLookup);
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
setServices() {
|
|
164
|
-
this.appsFlowEventsSvc.DeleteApplicationEvent.subscribe((appLookup) => __awaiter(this, void 0, void 0, function* () {
|
|
165
|
-
yield this.projectService.DeleteApplication(this.State, appLookup);
|
|
166
|
-
}));
|
|
167
|
-
this.appsFlowEventsSvc.DeleteDevOpsActionEvent.subscribe((doaLookup) => __awaiter(this, void 0, void 0, function* () {
|
|
168
|
-
yield this.projectService.DeleteDevOpsAction(this.State, doaLookup);
|
|
169
|
-
}));
|
|
170
|
-
this.appsFlowEventsSvc.DeleteProjectEvent.subscribe((projectLookup) => __awaiter(this, void 0, void 0, function* () {
|
|
171
|
-
yield this.projectService.DeleteProject(this.State, projectLookup);
|
|
172
|
-
}));
|
|
173
|
-
this.appsFlowEventsSvc.DeleteSourceControlEvent.subscribe((scLookup) => __awaiter(this, void 0, void 0, function* () {
|
|
174
|
-
yield this.projectService.DeleteSourceControl(this.State, scLookup);
|
|
175
|
-
}));
|
|
176
|
-
this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(() => __awaiter(this, void 0, void 0, function* () {
|
|
177
|
-
yield this.projectService.EnsureUserEnterprise(this.State);
|
|
178
|
-
}));
|
|
179
|
-
// this.appsFlowEventsSvc.ListProjectsEvent.subscribe((withLoading) => {
|
|
180
|
-
// this.projectService.ListProjects(this.State, withLoading);
|
|
181
|
-
// });
|
|
182
|
-
this.appsFlowEventsSvc.LoadEnterpriseAsCodeEvent.subscribe(() => __awaiter(this, void 0, void 0, function* () {
|
|
183
|
-
yield this.projectService.LoadEnterpriseAsCode(this.State);
|
|
184
|
-
}));
|
|
185
|
-
this.appsFlowEventsSvc.SaveEnterpriseAsCodeEvent.subscribe((eac) => __awaiter(this, void 0, void 0, function* () {
|
|
186
|
-
yield this.projectService.SaveEnterpriseAsCode(this.State, eac);
|
|
187
|
-
}));
|
|
188
|
-
this.appsFlowEventsSvc.SaveApplicationAsCodeEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
|
|
189
|
-
yield this.handleSaveApplication(req);
|
|
190
|
-
}));
|
|
191
|
-
this.appsFlowEventsSvc.SaveDFSModifierEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
|
|
192
|
-
yield this.handleSaveDFSModifier(req);
|
|
193
|
-
}));
|
|
194
|
-
this.appsFlowEventsSvc.SaveEnvironmentAsCodeEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
|
|
195
|
-
yield this.handleSaveEnvironment(req);
|
|
196
|
-
}));
|
|
197
|
-
this.appsFlowEventsSvc.SaveProjectAsCodeEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
|
|
198
|
-
yield this.handleSaveProject(req.ProjectLookup, req.Project);
|
|
199
|
-
}));
|
|
200
|
-
this.appsFlowEventsSvc.SetCreatingProjectEvent.subscribe((creatingProject) => {
|
|
201
|
-
this.projectService.SetCreatingProject(creatingProject);
|
|
202
|
-
});
|
|
203
|
-
this.appsFlowEventsSvc.SetEditProjectSettingsEvent.subscribe((projectLookup) => __awaiter(this, void 0, void 0, function* () {
|
|
204
|
-
yield this.projectService.SetEditProjectSettings(this.State, projectLookup);
|
|
205
|
-
}));
|
|
206
|
-
this.appsFlowEventsSvc.UnpackLowCodeUnitEvent.subscribe((req) => __awaiter(this, void 0, void 0, function* () {
|
|
207
|
-
if (confirm(`Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`)) {
|
|
208
|
-
yield this.projectService.UnpackLowCodeUnit(this.State, req);
|
|
209
|
-
}
|
|
210
|
-
}));
|
|
211
|
-
}
|
|
212
86
|
}
|
|
213
87
|
ApplicationsFlowProjectsElementComponent.decorators = [
|
|
214
88
|
{ type: Component, args: [{
|
|
@@ -220,7 +94,6 @@ ApplicationsFlowProjectsElementComponent.decorators = [
|
|
|
220
94
|
ApplicationsFlowProjectsElementComponent.ctorParameters = () => [
|
|
221
95
|
{ type: Injector },
|
|
222
96
|
{ type: ApplicationsFlowService },
|
|
223
|
-
{ type:
|
|
224
|
-
{ type: ApplicationsFlowEventsService }
|
|
97
|
+
{ type: EaCService }
|
|
225
98
|
];
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL2FwcGxpY2F0aW9ucy1mbG93L2FwcGxpY2F0aW9ucy1mbG93L3Byb2plY3RzL2NvbW1vbi9zcmMvIiwic291cmNlcyI6WyJsaWIvZWxlbWVudHMvcHJvamVjdHMvcHJvamVjdHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFFBQVEsR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUVwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUNMLDZCQUE2QixHQUk5QixNQUFNLG1EQUFtRCxDQUFDO0FBVTNELE1BQU0sT0FBTyxvQ0FBb0M7Q0FBRztBQUVwRCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsaUJBQXVEO0NBQUc7QUFFL0csTUFBTSxDQUFDLE1BQU0sMkNBQTJDLEdBQ3RELG9DQUFvQyxDQUFDO0FBT3ZDLE1BQU0sT0FBTyx3Q0FDWCxTQUFRLG1CQUFvRDtJQXNDNUQsZ0JBQWdCO0lBQ2hCLFlBQ1ksUUFBa0IsRUFDbEIsV0FBb0MsRUFDcEMsY0FBOEIsRUFDOUIsaUJBQWdEO1FBRTFELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxOLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQStCO1FBSTFELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxxQkFBcUIs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QUU7WUFDdEIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUM5QyxJQUFJLENBQUMsS0FBSyxFQUNWLGFBQWEsQ0FDZCxDQUFDO1FBQ0osQ0FBQyxDQUFBLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBTyxHQUFHLEVBQUUsRUFBRTtZQUNwRSxJQUNFLE9BQU8sQ0FDTCxnREFDRSxHQUFHLENBQUMsZUFDTixtQkFBbUIsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUNuQyxFQUNEO2dCQUNBLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzlEO1FBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQTlSRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJDQUEyQztnQkFDckQsNnpHQUF3Qzs7YUFFekM7OztZQXZDQyxRQUFRO1lBV0QsdUJBQXVCO1lBQ3ZCLGNBQWM7WUFFckIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIEluamVjdG9yLFxyXG4gIFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHtcclxuICBMQ1VFbGVtZW50Q29udGV4dCxcclxuICBMY3VFbGVtZW50Q29tcG9uZW50LFxyXG4gIEJhc2VSZXNwb25zZSxcclxufSBmcm9tICdAbGN1L2NvbW1vbic7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB9IGZyb20gJy4vLi4vLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2plY3Quc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25zRmxvd0V2ZW50c1NlcnZpY2UsXHJcbiAgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0LFxyXG4gIFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdCxcclxuICBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3QsXHJcbn0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy1ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgRWFDRW52aXJvbm1lbnRBc0NvZGUsXHJcbiAgRWFDSG9zdCxcclxuICBFYUNQcm9qZWN0QXNDb2RlLFxyXG4gIEVudGVycHJpc2VBc0NvZGUsXHJcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcclxuXHJcbmRlY2xhcmUgdmFyIHdpbmRvdzogV2luZG93O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uc0Zsb3dQcm9qZWN0c0VsZW1lbnRTdGF0ZSB7fVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uc0Zsb3dQcm9qZWN0c0NvbnRleHQgZXh0ZW5kcyBMQ1VFbGVtZW50Q29udGV4dDxBcHBsaWNhdGlvbnNGbG93UHJvamVjdHNFbGVtZW50U3RhdGU+IHt9XHJcblxyXG5leHBvcnQgY29uc3QgU0VMRUNUT1JfQVBQTElDQVRJT05TX0ZMT1dfUFJPSkVDVFNfRUxFTUVOVCA9XHJcbiAgJ2FwcGxpY2F0aW9ucy1mbG93LXByb2plY3RzLWVsZW1lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFNFTEVDVE9SX0FQUExJQ0FUSU9OU19GTE9XX1BST0pFQ1RTX0VMRU1FTlQsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2plY3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9qZWN0cy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25zRmxvd1Byb2plY3RzRWxlbWVudENvbXBvbmVudFxyXG4gIGV4dGVuZHMgTGN1RWxlbWVudENvbXBvbmVudDxBcHBsaWNhdGlvbnNGbG93UHJvamVjdHNDb250ZXh0PlxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXRcclxue1xyXG4gIC8vICBGaWVsZHNcclxuICBwcm90ZWN0ZWQgcHJvak1vbjogTm9kZUpTLlRpbWVvdXQ7XHJcblxyXG4gIC8vICBQcm9wZXJ0aWVzXHJcbiAgcHVibGljIGdldCBBY3RpdmVFbnZpcm9ubWVudCgpOiBFYUNFbnZpcm9ubWVudEFzQ29kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5TdGF0ZT8uRWFDPy5FbnZpcm9ubWVudHNbdGhpcy5BY3RpdmVFbnZpcm9ubWVudExvb2t1cF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IEFjdGl2ZUVudmlyb25tZW50TG9va3VwKCk6IHN0cmluZyB7XHJcbiAgICAvLyAgVE9ETzogIEV2ZW50dWFsbHkgc3VwcG9ydCBtdWx0aXBsZSBlbnZpcm9ubWVudHNcclxuICAgIGNvbnN0IGVudkxvb2t1cHMgPSBPYmplY3Qua2V5cyh0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50cyB8fCB7fSk7XHJcblxyXG4gICAgcmV0dXJuIGVudkxvb2t1cHNbMF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IENyZWF0aW5nUHJvamVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByb2plY3RTZXJ2aWNlLkNyZWF0aW5nUHJvamVjdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgRWRpdGluZ1Byb2plY3QoKTogRWFDUHJvamVjdEFzQ29kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5TdGF0ZT8uRWFDPy5Qcm9qZWN0c1xyXG4gICAgICA/IHRoaXMuU3RhdGU/LkVhQz8uUHJvamVjdHNbdGhpcy5FZGl0aW5nUHJvamVjdExvb2t1cF1cclxuICAgICAgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBFZGl0aW5nUHJvamVjdExvb2t1cCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvamVjdFNlcnZpY2UuRWRpdGluZ1Byb2plY3RMb29rdXA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFByb2plY3RMb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuU3RhdGU/LkVhQz8uUHJvamVjdHMgfHwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGU7XHJcblxyXG4gIC8vICBDb25zdHJ1Y3RvcnNcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcm90ZWN0ZWQgYXBwc0Zsb3dTdmM6IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSxcclxuICAgIHByb3RlY3RlZCBhcHBzRmxvd0V2ZW50c1N2YzogQXBwbGljYXRpb25zRmxvd0V2ZW50c1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLlN0YXRlID0gbmV3IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSgpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VydmljZXMoKTtcclxuICB9XHJcblxyXG4gIC8vICBMaWZlIEN5Y2xlXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge31cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKCkudGhlbigoZWFjKSA9PiB7fSk7XHJcblxyXG4gICAgLy8gdGhpcy5zZXR1cFByb2plY3RNb25pdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLyAgQVBJIE1ldGhvZHNcclxuICBwdWJsaWMgYXN5bmMgQWN0aXZlRW50ZXJwcmlzZUNoYW5nZWQoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TZXRBY3RpdmVFbnRlcnByaXNlKHRoaXMuU3RhdGUsIGV2ZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb25maWd1cmVEZXZPcHNBY3Rpb24oZGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuU3RhdGUuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5hcHBzRmxvd1N2Y1xyXG4gICAgICAuQ29uZmlndXJlRGV2T3BzQWN0aW9uKGRldk9wc0FjdGlvbkxvb2t1cClcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IEJhc2VSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5TdGF0dXMuQ29kZSA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkRW50ZXJwcmlzZUFzQ29kZSh0aGlzLlN0YXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5TdGF0ZS5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vICBIZWxwZXJzXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVN0YXRlQ2hhbmdlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TdGF0ZS5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkhhc1ZhbGlkQ29ubmVjdGlvbih0aGlzLlN0YXRlKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVuc3VyZVVzZXJFbnRlcnByaXNlKHRoaXMuU3RhdGUpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuTGlzdEVudGVycHJpc2VzKHRoaXMuU3RhdGUpO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRlLkVudGVycHJpc2VzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuR2V0QWN0aXZlRW50ZXJwcmlzZSh0aGlzLlN0YXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQXBwbGljYXRpb24oXHJcbiAgICByZXE6IFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdFxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcclxuICAgICAgRW50ZXJwcmlzZUxvb2t1cDogdGhpcy5TdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcclxuICAgICAgQXBwbGljYXRpb25zOiB7fSxcclxuICAgICAgUHJvamVjdHM6IHt9LFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1Byb2ogPSB7XHJcbiAgICAgIC4uLnRoaXMuU3RhdGUuRWFDLlByb2plY3RzW3JlcS5Qcm9qZWN0TG9va3VwXSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nUHJvai5BcHBsaWNhdGlvbkxvb2t1cHM/LmluZGV4T2YocmVxLkFwcGxpY2F0aW9uTG9va3VwKSA8IDApIHtcclxuICAgICAgaWYgKCFleGlzdGluZ1Byb2ouQXBwbGljYXRpb25Mb29rdXBzKSB7XHJcbiAgICAgICAgZXhpc3RpbmdQcm9qLkFwcGxpY2F0aW9uTG9va3VwcyA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBleGlzdGluZ1Byb2ouQXBwbGljYXRpb25Mb29rdXBzLnB1c2gocmVxLkFwcGxpY2F0aW9uTG9va3VwKTtcclxuXHJcbiAgICAgIHNhdmVFYUMuUHJvamVjdHNbcmVxLlByb2plY3RMb29rdXBdID0gZXhpc3RpbmdQcm9qO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXEuQXBwbGljYXRpb24pIHtcclxuICAgICAgc2F2ZUVhQy5BcHBsaWNhdGlvbnNbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSA9IHJlcS5BcHBsaWNhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHRoaXMuU3RhdGUsIHNhdmVFYUMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVERlNNb2RpZmllcihcclxuICAgIHJlcTogU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0XHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xyXG4gICAgICBFbnRlcnByaXNlTG9va3VwOiB0aGlzLlN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxyXG4gICAgICBNb2RpZmllcnM6IHt9LFxyXG4gICAgICBQcm9qZWN0czoge30sXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChyZXEuTW9kaWZpZXIpIHtcclxuICAgICAgc2F2ZUVhQy5Nb2RpZmllcnNbcmVxLk1vZGlmaWVyTG9va3VwXSA9IHJlcS5Nb2RpZmllcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVxLlByb2plY3RMb29rdXApIHtcclxuICAgICAgc2F2ZUVhQy5Qcm9qZWN0c1tyZXEuUHJvamVjdExvb2t1cF0gPSB7XHJcbiAgICAgICAgTW9kaWZpZXJMb29rdXBzOiBbcmVxLk1vZGlmaWVyTG9va3VwXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHRoaXMuU3RhdGUsIHNhdmVFYUMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVFbnZpcm9ubWVudChcclxuICAgIHJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0XHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xyXG4gICAgICBFbnRlcnByaXNlTG9va3VwOiB0aGlzLlN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxyXG4gICAgICBEYXRhVG9rZW5zOiB7fSxcclxuICAgICAgRW52aXJvbm1lbnRzOiB7fSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHJlcS5FbnZpcm9ubWVudCkge1xyXG4gICAgICBzYXZlRWFDLkVudmlyb25tZW50c1tyZXEuRW52aXJvbm1lbnRMb29rdXBdID0gcmVxLkVudmlyb25tZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXEuRW50ZXJwcmlzZURhdGFUb2tlbnMpIHtcclxuICAgICAgc2F2ZUVhQy5EYXRhVG9rZW5zID0gcmVxLkVudGVycHJpc2VEYXRhVG9rZW5zO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUodGhpcy5TdGF0ZSwgc2F2ZUVhQyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZVByb2plY3QoXHJcbiAgICBwcm9qZWN0TG9va3VwOiBzdHJpbmcsXHJcbiAgICBwcm9qZWN0OiBFYUNQcm9qZWN0QXNDb2RlXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwcm9qSG9zdHM6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDSG9zdCB9ID0ge307XHJcblxyXG4gICAgcHJvamVjdD8uSG9zdHM/LmZvckVhY2goaG9zdCA9PiB7XHJcbiAgICAgIHByb2pIb3N0c1tob3N0XSA9IHRoaXMuU3RhdGUuRWFDLkhvc3RzW2hvc3RdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcclxuICAgICAgRW50ZXJwcmlzZUxvb2t1cDogdGhpcy5TdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcclxuICAgICAgRW50ZXJwcmlzZToge1xyXG4gICAgICAgIC4uLnRoaXMuU3RhdGUuRWFDLkVudGVycHJpc2UsXHJcbiAgICAgICAgUHJpbWFyeUhvc3Q6IHByb2plY3QuSG9zdHNbMF1cclxuICAgICAgfSxcclxuICAgICAgSG9zdHM6IHByb2pIb3N0cyxcclxuICAgICAgLy8gUHJvdmlkZXJzOiB0aGlzLlN0YXRlLkVhQy5Qcm92aWRlcnMsICAvLyAgVE9ETzogIFJlbW92ZSBhZnRlciBhbGwgcHJvdmlkZXJzIEFEQjJDJ3MgaGF2ZSBiZWVuIHVwZ3JhZGVkXHJcbiAgICAgIFByb2plY3RzOiB7fSxcclxuICAgIH07XHJcblxyXG4gICAgc2F2ZUVhQy5Qcm9qZWN0c1twcm9qZWN0TG9va3VwXSA9IHByb2plY3Q7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZSh0aGlzLlN0YXRlLCBzYXZlRWFDKTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNldEVkaXRQcm9qZWN0U2V0dGluZ3MocHJvamVjdExvb2t1cCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0U2VydmljZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLkRlbGV0ZUFwcGxpY2F0aW9uRXZlbnQuc3Vic2NyaWJlKFxyXG4gICAgICBhc3luYyAoYXBwTG9va3VwKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5EZWxldGVBcHBsaWNhdGlvbih0aGlzLlN0YXRlLCBhcHBMb29rdXApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuYXBwc0Zsb3dFdmVudHNTdmMuRGVsZXRlRGV2T3BzQWN0aW9uRXZlbnQuc3Vic2NyaWJlKFxyXG4gICAgICBhc3luYyAoZG9hTG9va3VwKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5EZWxldGVEZXZPcHNBY3Rpb24odGhpcy5TdGF0ZSwgZG9hTG9va3VwKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLkRlbGV0ZVByb2plY3RFdmVudC5zdWJzY3JpYmUoXHJcbiAgICAgIGFzeW5jIChwcm9qZWN0TG9va3VwKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5EZWxldGVQcm9qZWN0KHRoaXMuU3RhdGUsIHByb2plY3RMb29rdXApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuYXBwc0Zsb3dFdmVudHNTdmMuRGVsZXRlU291cmNlQ29udHJvbEV2ZW50LnN1YnNjcmliZShcclxuICAgICAgYXN5bmMgKHNjTG9va3VwKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5EZWxldGVTb3VyY2VDb250cm9sKHRoaXMuU3RhdGUsIHNjTG9va3VwKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLkVuc3VyZVVzZXJFbnRlcnByaXNlRXZlbnQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnN1cmVVc2VyRW50ZXJwcmlzZSh0aGlzLlN0YXRlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuYXBwc0Zsb3dFdmVudHNTdmMuTGlzdFByb2plY3RzRXZlbnQuc3Vic2NyaWJlKCh3aXRoTG9hZGluZykgPT4ge1xyXG4gICAgLy8gICB0aGlzLnByb2plY3RTZXJ2aWNlLkxpc3RQcm9qZWN0cyh0aGlzLlN0YXRlLCB3aXRoTG9hZGluZyk7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLkxvYWRFbnRlcnByaXNlQXNDb2RlRXZlbnQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkRW50ZXJwcmlzZUFzQ29kZSh0aGlzLlN0YXRlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXBwc0Zsb3dFdmVudHNTdmMuU2F2ZUVudGVycHJpc2VBc0NvZGVFdmVudC5zdWJzY3JpYmUoYXN5bmMgKGVhYykgPT4ge1xyXG4gICAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHRoaXMuU3RhdGUsIGVhYyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50LnN1YnNjcmliZShhc3luYyAocmVxKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZUFwcGxpY2F0aW9uKHJlcSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNhdmVERlNNb2RpZmllckV2ZW50LnN1YnNjcmliZShhc3luYyAocmVxKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZURGU01vZGlmaWVyKHJlcSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50LnN1YnNjcmliZShhc3luYyAocmVxKSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZUVudmlyb25tZW50KHJlcSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNhdmVQcm9qZWN0QXNDb2RlRXZlbnQuc3Vic2NyaWJlKGFzeW5jIChyZXEpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTYXZlUHJvamVjdChyZXEuUHJvamVjdExvb2t1cCwgcmVxLlByb2plY3QpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5TZXRDcmVhdGluZ1Byb2plY3RFdmVudC5zdWJzY3JpYmUoXHJcbiAgICAgIChjcmVhdGluZ1Byb2plY3QpID0+IHtcclxuICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLlNldENyZWF0aW5nUHJvamVjdChjcmVhdGluZ1Byb2plY3QpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuYXBwc0Zsb3dFdmVudHNTdmMuU2V0RWRpdFByb2plY3RTZXR0aW5nc0V2ZW50LnN1YnNjcmliZShcclxuICAgICAgYXN5bmMgKHByb2plY3RMb29rdXApID0+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNldEVkaXRQcm9qZWN0U2V0dGluZ3MoXHJcbiAgICAgICAgICB0aGlzLlN0YXRlLFxyXG4gICAgICAgICAgcHJvamVjdExvb2t1cFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5VbnBhY2tMb3dDb2RlVW5pdEV2ZW50LnN1YnNjcmliZShhc3luYyAocmVxKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjb25maXJtKFxyXG4gICAgICAgICAgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bnBhY2sgYXBwbGljYXRpb24gJyR7XHJcbiAgICAgICAgICAgIHJlcS5BcHBsaWNhdGlvbk5hbWVcclxuICAgICAgICAgIH0nIHdpdGggdmVyc2lvbiAnJHtyZXEuVmVyc2lvbn0nP2BcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuVW5wYWNrTG93Q29kZVVuaXQodGhpcy5TdGF0ZSwgcmVxKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL2FwcGxpY2F0aW9ucy1mbG93L2FwcGxpY2F0aW9ucy1mbG93L3Byb2plY3RzL2NvbW1vbi9zcmMvIiwic291cmNlcyI6WyJsaWIvZWxlbWVudHMvcHJvamVjdHMvcHJvamVjdHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFFBQVEsR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUVwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUtuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJeEQsTUFBTSxPQUFPLG9DQUFvQztDQUFHO0FBRXBELE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxpQkFBdUQ7Q0FBRztBQUUvRyxNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FDdEQsb0NBQW9DLENBQUM7QUFPdkMsTUFBTSxPQUFPLHdDQUNYLFNBQVEsbUJBQW9EO0lBd0M1RCxnQkFBZ0I7SUFDaEIsWUFDWSxRQUFrQixFQUNsQixXQUFvQyxFQUNwQyxNQUFrQjtRQUU1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKTixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFZO0lBRzlCLENBQUM7SUF6Q0QsY0FBYztJQUNkLElBQVcsaUJBQWlCOztRQUMxQixtQkFBTyxJQUFJLENBQUMsS0FBSywwQ0FBRSxHQUFHLDBDQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsQ0FBQztJQUVELElBQVcsdUJBQXVCOztRQUNoQyxtREFBbUQ7UUFDbkQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLEdBQUcsMENBQUUsWUFBWSxLQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxjQUFjOztRQUN2QixPQUFPLGFBQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsR0FBRywwQ0FBRSxRQUFRLEVBQzlCLENBQUMsYUFBQyxJQUFJLENBQUMsS0FBSywwQ0FBRSxHQUFHLDBDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQ3JELENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFXLGNBQWM7O1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLEdBQUcsMENBQUUsUUFBUSxLQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFXRCxjQUFjO0lBQ1AsV0FBVyxLQUFVLENBQUM7SUFFdEIsUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNDLDhCQUE4QjtJQUNoQyxDQUFDO0lBRUQsZUFBZTtJQUNGLHVCQUF1QixDQUFDLEtBQXNCOztZQUN6RCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUM7S0FBQTtJQUVNLHFCQUFxQixDQUFDLGtCQUEwQjtRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxDQUFDLFdBQVc7YUFDYixxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxRQUFzQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUNwQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO0lBQ0ssaUJBQWlCOzs7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRTFCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRXZDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBRXpDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUVwQyxJQUFJLE9BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQ3pDOztLQUNGOzs7WUFsR0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQ0FBMkM7Z0JBQ3JELDZ6R0FBd0M7O2FBRXpDOzs7WUEvQkMsUUFBUTtZQVdELHVCQUF1QjtZQUt2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIEluamVjdG9yLFxyXG4gIFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHtcclxuICBMQ1VFbGVtZW50Q29udGV4dCxcclxuICBMY3VFbGVtZW50Q29tcG9uZW50LFxyXG4gIEJhc2VSZXNwb25zZSxcclxufSBmcm9tICdAbGN1L2NvbW1vbic7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB9IGZyb20gJy4vLi4vLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEVhQ0Vudmlyb25tZW50QXNDb2RlLFxyXG4gIEVhQ1Byb2plY3RBc0NvZGUsXHJcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcclxuaW1wb3J0IHsgRWFDU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgdmFyIHdpbmRvdzogV2luZG93O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uc0Zsb3dQcm9qZWN0c0VsZW1lbnRTdGF0ZSB7fVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uc0Zsb3dQcm9qZWN0c0NvbnRleHQgZXh0ZW5kcyBMQ1VFbGVtZW50Q29udGV4dDxBcHBsaWNhdGlvbnNGbG93UHJvamVjdHNFbGVtZW50U3RhdGU+IHt9XHJcblxyXG5leHBvcnQgY29uc3QgU0VMRUNUT1JfQVBQTElDQVRJT05TX0ZMT1dfUFJPSkVDVFNfRUxFTUVOVCA9XHJcbiAgJ2FwcGxpY2F0aW9ucy1mbG93LXByb2plY3RzLWVsZW1lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFNFTEVDVE9SX0FQUExJQ0FUSU9OU19GTE9XX1BST0pFQ1RTX0VMRU1FTlQsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2plY3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9qZWN0cy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25zRmxvd1Byb2plY3RzRWxlbWVudENvbXBvbmVudFxyXG4gIGV4dGVuZHMgTGN1RWxlbWVudENvbXBvbmVudDxBcHBsaWNhdGlvbnNGbG93UHJvamVjdHNDb250ZXh0PlxyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXRcclxue1xyXG4gIC8vICBGaWVsZHNcclxuICBwcm90ZWN0ZWQgcHJvak1vbjogTm9kZUpTLlRpbWVvdXQ7XHJcblxyXG4gIC8vICBQcm9wZXJ0aWVzXHJcbiAgcHVibGljIGdldCBBY3RpdmVFbnZpcm9ubWVudCgpOiBFYUNFbnZpcm9ubWVudEFzQ29kZSB7XHJcbiAgICByZXR1cm4gdGhpcy5TdGF0ZT8uRWFDPy5FbnZpcm9ubWVudHNbdGhpcy5BY3RpdmVFbnZpcm9ubWVudExvb2t1cF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IEFjdGl2ZUVudmlyb25tZW50TG9va3VwKCk6IHN0cmluZyB7XHJcbiAgICAvLyAgVE9ETzogIEV2ZW50dWFsbHkgc3VwcG9ydCBtdWx0aXBsZSBlbnZpcm9ubWVudHNcclxuICAgIGNvbnN0IGVudkxvb2t1cHMgPSBPYmplY3Qua2V5cyh0aGlzLlN0YXRlPy5FYUM/LkVudmlyb25tZW50cyB8fCB7fSk7XHJcblxyXG4gICAgcmV0dXJuIGVudkxvb2t1cHNbMF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IENyZWF0aW5nUHJvamVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVhY1N2Yy5DcmVhdGluZ1Byb2plY3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IEVkaXRpbmdQcm9qZWN0KCk6IEVhQ1Byb2plY3RBc0NvZGUge1xyXG4gICAgcmV0dXJuIHRoaXMuU3RhdGU/LkVhQz8uUHJvamVjdHNcclxuICAgICAgPyB0aGlzLlN0YXRlPy5FYUM/LlByb2plY3RzW3RoaXMuRWRpdGluZ1Byb2plY3RMb29rdXBdXHJcbiAgICAgIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgRWRpdGluZ1Byb2plY3RMb29rdXAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVhY1N2Yy5FZGl0aW5nUHJvamVjdExvb2t1cDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgUHJvamVjdExvb2t1cHMoKTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5TdGF0ZT8uRWFDPy5Qcm9qZWN0cyB8fCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFN0YXRlKCk6IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5lYWNTdmMuU3RhdGU7XHJcbiAgfVxyXG5cclxuICAvLyAgQ29uc3RydWN0b3JzXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJvdGVjdGVkIGFwcHNGbG93U3ZjOiBBcHBsaWNhdGlvbnNGbG93U2VydmljZSxcclxuICAgIHByb3RlY3RlZCBlYWNTdmM6IEVhQ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICB9XHJcblxyXG4gIC8vICBMaWZlIEN5Y2xlXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge31cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKCkudGhlbigoZWFjKSA9PiB7fSk7XHJcblxyXG4gICAgLy8gdGhpcy5zZXR1cFByb2plY3RNb25pdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLyAgQVBJIE1ldGhvZHNcclxuICBwdWJsaWMgYXN5bmMgQWN0aXZlRW50ZXJwcmlzZUNoYW5nZWQoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5lYWNTdmMuU2V0QWN0aXZlRW50ZXJwcmlzZShldmVudC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29uZmlndXJlRGV2T3BzQWN0aW9uKGRldk9wc0FjdGlvbkxvb2t1cDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLlN0YXRlLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuYXBwc0Zsb3dTdmNcclxuICAgICAgLkNvbmZpZ3VyZURldk9wc0FjdGlvbihkZXZPcHNBY3Rpb25Mb29rdXApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBCYXNlUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuU3RhdHVzLkNvZGUgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZWFjU3ZjLkxvYWRFbnRlcnByaXNlQXNDb2RlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuU3RhdGUuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAgSGVscGVyc1xyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTdGF0ZUNoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU3RhdGUuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5lYWNTdmMuSGFzVmFsaWRDb25uZWN0aW9uKCk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5lYWNTdmMuRW5zdXJlVXNlckVudGVycHJpc2UoKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmVhY1N2Yy5MaXN0RW50ZXJwcmlzZXMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5TdGF0ZS5FbnRlcnByaXNlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCB0aGlzLmVhY1N2Yy5HZXRBY3RpdmVFbnRlcnByaXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -10,8 +10,8 @@ export class SlottedCardComponent {
|
|
|
10
10
|
SlottedCardComponent.decorators = [
|
|
11
11
|
{ type: Component, args: [{
|
|
12
12
|
selector: 'lcu-slotted-card',
|
|
13
|
-
template: "<mat-card class=\"col-info-card\">\n <mat-card-header fxLayoutAlign=\"space-between center\">\n <mat-card-title class=\"card-title\">{{ Title }}</mat-card-title>\n <mat-icon class=\"header-icon\">{{ Icon }}</mat-icon>\n </mat-card-header>\n \n <mat-card-content>\n\n <div class=\"slot-main-container\">\n\n <div class=\"header-description\">{{ MainSlotDescription }}</div>\n\n <div class=\"slot-main\">\n <ng-content></ng-content>\n </div>\n \n </div>\n\n <div *ngIf=\"SecondarySlotDescription\" class=\"slot-secondary-container\">\n\n <div class=\"header-description\">{{ SecondarySlotDescription }}</div>\n\n <div class=\"slot-secondary\">\n <ng-content select=\"[secondary]\"></ng-content>\n </div>\n \n </div>\n \n </mat-card-content>\n\n <mat-card-actions *ngIf=\"ActionText\" fxLayoutAlign=\"center\">\n <
|
|
14
|
-
styles: [".col-info-card{
|
|
13
|
+
template: "<mat-card class=\"col-info-card\">\n <mat-card-header fxLayoutAlign=\"space-between center\">\n <mat-card-title class=\"card-title\">{{ Title }}</mat-card-title>\n <mat-icon class=\"header-icon\">{{ Icon }}</mat-icon>\n </mat-card-header>\n \n <mat-card-content>\n\n <div class=\"slot-main-container\">\n\n <div class=\"header-description\">{{ MainSlotDescription }}</div>\n\n <div class=\"slot-main\">\n <ng-content></ng-content>\n </div>\n \n </div>\n\n <div *ngIf=\"SecondarySlotDescription\" class=\"slot-secondary-container\">\n\n <div class=\"header-description\">{{ SecondarySlotDescription }}</div>\n\n <div class=\"slot-secondary\">\n <ng-content select=\"[secondary]\"></ng-content>\n </div>\n \n </div>\n \n </mat-card-content>\n\n <mat-card-actions *ngIf=\"ActionText\" fxLayoutAlign=\"center\">\n <a mat-button class=\"slotted-card-action-btn\" [href]=\"ActionPath\">{{ ActionText }}</a>\n </mat-card-actions>\n\n </mat-card>\n\n\n",
|
|
14
|
+
styles: [".col-info-card{border:2px solid #d3d3d3;margin:20px;padding:0}.header-icon{margin-right:10px}.card-title{font-size:30px;margin-bottom:0}.header-description{background-color:#d3d3d3;margin-left:-2px;padding:10px}mat-card-actions{margin-bottom:0!important;margin-left:-1px!important;margin-right:0!important}.slotted-card-action-btn{border-radius:0 0 2px 2px;border-top:1px solid #d3d3d3;width:100%}"]
|
|
15
15
|
},] }
|
|
16
16
|
];
|
|
17
17
|
SlottedCardComponent.ctorParameters = () => [];
|
|
@@ -21,6 +21,7 @@ SlottedCardComponent.propDecorators = {
|
|
|
21
21
|
MainSlotDescription: [{ type: Input, args: ['main-slot-description',] }],
|
|
22
22
|
SecondarySlotDescription: [{ type: Input, args: ['secondary-slot-description',] }],
|
|
23
23
|
ActionText: [{ type: Input, args: ['action-text',] }],
|
|
24
|
+
ActionPath: [{ type: Input, args: ['action-path',] }],
|
|
24
25
|
MainActionClicked: [{ type: Output, args: ['main-action-clicked',] }]
|
|
25
26
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdHRlZC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hcHBsaWNhdGlvbnMtZmxvdy9hcHBsaWNhdGlvbnMtZmxvdy9wcm9qZWN0cy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnRzL3Nsb3R0ZWQtY2FyZC9zbG90dGVkLWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0UsTUFBTSxPQUFPLG9CQUFvQjtJQXlCL0IsZ0JBQWdCLENBQUM7SUFFVixRQUFRO0lBQ2YsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OztZQXJDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsZ25DQUE0Qzs7YUFFN0M7Ozs7b0JBSUUsS0FBSyxTQUFDLE9BQU87bUJBR2IsS0FBSyxTQUFDLE1BQU07a0NBR1osS0FBSyxTQUFDLHVCQUF1Qjt1Q0FHN0IsS0FBSyxTQUFDLDRCQUE0Qjt5QkFHbEMsS0FBSyxTQUFDLGFBQWE7eUJBR25CLEtBQUssU0FBQyxhQUFhO2dDQUduQixNQUFNLFNBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsY3Utc2xvdHRlZC1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Nsb3R0ZWQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Nsb3R0ZWQtY2FyZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNsb3R0ZWRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBcbiAgQElucHV0KCd0aXRsZScpIFxuICBwdWJsaWMgVGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoJ2ljb24nKSBcbiAgcHVibGljIEljb246IHN0cmluZztcblxuICBASW5wdXQoJ21haW4tc2xvdC1kZXNjcmlwdGlvbicpIFxuICBwdWJsaWMgTWFpblNsb3REZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgnc2Vjb25kYXJ5LXNsb3QtZGVzY3JpcHRpb24nKSBcbiAgcHVibGljIFNlY29uZGFyeVNsb3REZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgnYWN0aW9uLXRleHQnKSBcbiAgcHVibGljIEFjdGlvblRleHQ6IHN0cmluZztcblxuICBASW5wdXQoJ2FjdGlvbi1wYXRoJylcbiAgcHVibGljIEFjdGlvblBhdGg6IHN0cmluZztcblxuICBAT3V0cHV0KCdtYWluLWFjdGlvbi1jbGlja2VkJykgXG4gIHB1YmxpYyBNYWluQWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHt9PjtcblxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIE1haW5BY3Rpb25DbGlja0V2ZW50KCl7XG4gICAgdGhpcy5NYWluQWN0aW9uQ2xpY2tlZC5lbWl0KHt9KTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ProjectService } from './project.service';
|
|
4
|
+
import { ApplicationsFlowState, } from '../state/applications-flow.state';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./project.service";
|
|
7
|
+
export class SaveApplicationAsCodeEventRequest {
|
|
8
|
+
}
|
|
9
|
+
export class SaveDFSModifierEventRequest {
|
|
10
|
+
}
|
|
11
|
+
export class SaveEnvironmentAsCodeEventRequest {
|
|
12
|
+
}
|
|
13
|
+
export class SaveProjectAsCodeEventRequest {
|
|
14
|
+
}
|
|
15
|
+
export class EaCService {
|
|
16
|
+
// Constructors
|
|
17
|
+
constructor(projectService) {
|
|
18
|
+
this.projectService = projectService;
|
|
19
|
+
this.State = new ApplicationsFlowState();
|
|
20
|
+
}
|
|
21
|
+
// API Methods
|
|
22
|
+
get CreatingProject() {
|
|
23
|
+
return this.projectService.CreatingProject;
|
|
24
|
+
}
|
|
25
|
+
DeleteApplication(appLookup, appName) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
if (confirm(`Are you sure you want to delete application '${appName}'?`)) {
|
|
28
|
+
yield this.projectService.DeleteApplication(this.State, appLookup);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
DeleteDevOpsAction(doaLookup) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
if (confirm(`Are you sure you want to delete DevOps action '${doaLookup}'?`)) {
|
|
35
|
+
yield this.projectService.DeleteDevOpsAction(this.State, doaLookup);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
DeleteProject(projectLookup) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
if (confirm(`Are you sure you want to delete Project '${projectLookup}'?`)) {
|
|
42
|
+
yield this.projectService.DeleteProject(this.State, projectLookup);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
DeleteSourceControl(scLookup) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
if (confirm(`Are you sure you want to delete Source Control '${scLookup}'?`)) {
|
|
49
|
+
yield this.projectService.DeleteSourceControl(this.State, scLookup);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(async () => {
|
|
54
|
+
// await this.projectService.EnsureUserEnterprise(this.State);
|
|
55
|
+
// });
|
|
56
|
+
EnsureUserEnterprise() {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
yield this.projectService.EnsureUserEnterprise(this.State);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
GetActiveEnterprise() {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
yield this.projectService.GetActiveEnterprise(this.State);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
get EditingProjectLookup() {
|
|
67
|
+
return this.projectService.EditingProjectLookup;
|
|
68
|
+
}
|
|
69
|
+
HasValidConnection() {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
yield this.projectService.HasValidConnection(this.State);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
ListEnterprises() {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
yield this.projectService.ListEnterprises(this.State);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
LoadEnterpriseAsCode() {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
yield this.projectService.LoadEnterpriseAsCode(this.State);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
SaveApplicationAsCode(req) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
yield this.handleSaveApplication(req);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
SaveDFSModifier(req) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
yield this.handleSaveDFSModifier(req);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
SaveEnterpriseAsCode(eac) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
yield this.projectService.SaveEnterpriseAsCode(this.State, eac);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
SaveEnvironmentAsCode(req) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
yield this.handleSaveEnvironment(req);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
SaveProjectAsCode(req) {
|
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
yield this.handleSaveProject(req.ProjectLookup, req.Project);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
SetActiveEnterprise(eventValue) {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
this.projectService.SetActiveEnterprise(this.State, eventValue);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
SetCreatingProject(creatingProject) {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
this.projectService.SetCreatingProject(creatingProject);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
SetEditProjectSettings(projectLookup) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
yield this.projectService.SetEditProjectSettings(this.State, projectLookup);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
UnpackLowCodeUnit(req) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
if (confirm(`Are you sure you want to unpack application '${req.ApplicationName}' with version '${req.Version}'?`)) {
|
|
127
|
+
yield this.projectService.UnpackLowCodeUnit(this.State, req);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// Helpers
|
|
132
|
+
handleSaveApplication(req) {
|
|
133
|
+
var _a;
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
const saveEaC = {
|
|
136
|
+
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
137
|
+
Applications: {},
|
|
138
|
+
Projects: {},
|
|
139
|
+
};
|
|
140
|
+
const existingProj = Object.assign({}, this.State.EaC.Projects[req.ProjectLookup]);
|
|
141
|
+
if (((_a = existingProj.ApplicationLookups) === null || _a === void 0 ? void 0 : _a.indexOf(req.ApplicationLookup)) < 0) {
|
|
142
|
+
if (!existingProj.ApplicationLookups) {
|
|
143
|
+
existingProj.ApplicationLookups = [];
|
|
144
|
+
}
|
|
145
|
+
existingProj.ApplicationLookups.push(req.ApplicationLookup);
|
|
146
|
+
saveEaC.Projects[req.ProjectLookup] = existingProj;
|
|
147
|
+
}
|
|
148
|
+
if (req.Application) {
|
|
149
|
+
saveEaC.Applications[req.ApplicationLookup] = req.Application;
|
|
150
|
+
}
|
|
151
|
+
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
handleSaveDFSModifier(req) {
|
|
155
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
const saveEaC = {
|
|
157
|
+
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
158
|
+
Modifiers: {},
|
|
159
|
+
Projects: {},
|
|
160
|
+
};
|
|
161
|
+
if (req.Modifier) {
|
|
162
|
+
saveEaC.Modifiers[req.ModifierLookup] = req.Modifier;
|
|
163
|
+
}
|
|
164
|
+
if (req.ProjectLookup) {
|
|
165
|
+
saveEaC.Projects[req.ProjectLookup] = {
|
|
166
|
+
ModifierLookups: [req.ModifierLookup],
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
handleSaveEnvironment(req) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
const saveEaC = {
|
|
175
|
+
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
176
|
+
DataTokens: {},
|
|
177
|
+
Environments: {},
|
|
178
|
+
};
|
|
179
|
+
if (req.Environment) {
|
|
180
|
+
saveEaC.Environments[req.EnvironmentLookup] = req.Environment;
|
|
181
|
+
}
|
|
182
|
+
if (req.EnterpriseDataTokens) {
|
|
183
|
+
saveEaC.DataTokens = req.EnterpriseDataTokens;
|
|
184
|
+
}
|
|
185
|
+
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
handleSaveProject(projectLookup, project) {
|
|
189
|
+
var _a;
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
const projHosts = {};
|
|
192
|
+
(_a = project === null || project === void 0 ? void 0 : project.Hosts) === null || _a === void 0 ? void 0 : _a.forEach((host) => {
|
|
193
|
+
projHosts[host] = this.State.EaC.Hosts[host];
|
|
194
|
+
});
|
|
195
|
+
const saveEaC = {
|
|
196
|
+
EnterpriseLookup: this.State.EaC.EnterpriseLookup,
|
|
197
|
+
Enterprise: Object.assign(Object.assign({}, this.State.EaC.Enterprise), { PrimaryHost: project.Hosts[0] }),
|
|
198
|
+
Hosts: projHosts,
|
|
199
|
+
// Providers: this.State.EaC.Providers, // TODO: Remove after all providers ADB2C's have been upgraded
|
|
200
|
+
Projects: {},
|
|
201
|
+
};
|
|
202
|
+
saveEaC.Projects[projectLookup] = project;
|
|
203
|
+
yield this.projectService.SaveEnterpriseAsCode(this.State, saveEaC);
|
|
204
|
+
this.SetEditProjectSettings(projectLookup);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
EaCService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EaCService_Factory() { return new EaCService(i0.ɵɵinject(i1.ProjectService)); }, token: EaCService, providedIn: "root" });
|
|
209
|
+
EaCService.decorators = [
|
|
210
|
+
{ type: Injectable, args: [{
|
|
211
|
+
providedIn: 'root',
|
|
212
|
+
},] }
|
|
213
|
+
];
|
|
214
|
+
EaCService.ctorParameters = () => [
|
|
215
|
+
{ type: ProjectService }
|
|
216
|
+
];
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYXBwbGljYXRpb25zLWZsb3cvYXBwbGljYXRpb25zLWZsb3cvcHJvamVjdHMvY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9lYWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLGtDQUFrQyxDQUFDOzs7QUFXMUMsTUFBTSxPQUFPLGlDQUFpQztDQU03QztBQUVELE1BQU0sT0FBTywyQkFBMkI7Q0FNdkM7QUFFRCxNQUFNLE9BQU8saUNBQWlDO0NBTTdDO0FBRUQsTUFBTSxPQUFPLDZCQUE2QjtDQUl6QztBQUtELE1BQU0sT0FBTyxVQUFVO0lBSXJCLGdCQUFnQjtJQUNoQixZQUNZLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUV4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZTtJQUVmLElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO0lBQzdDLENBQUM7SUFFWSxpQkFBaUIsQ0FDNUIsU0FBaUIsRUFDakIsT0FBZTs7WUFFZixJQUFJLE9BQU8sQ0FBQyxnREFBZ0QsT0FBTyxJQUFJLENBQUMsRUFBRTtnQkFDeEUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDcEU7UUFDSCxDQUFDO0tBQUE7SUFFWSxrQkFBa0IsQ0FBQyxTQUFpQjs7WUFDL0MsSUFBSSxPQUFPLENBQUMsa0RBQWtELFNBQVMsSUFBSSxDQUFD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InNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuL3Byb2plY3Quc2VydmljZSc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gIFVucGFja0xvd0NvZGVVbml0UmVxdWVzdCxcbn0gZnJvbSAnLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xuaW1wb3J0IHtcbiAgRWFDQXBwbGljYXRpb25Bc0NvZGUsXG4gIEVhQ0RhdGFUb2tlbixcbiAgRWFDREZTTW9kaWZpZXIsXG4gIEVhQ0Vudmlyb25tZW50QXNDb2RlLFxuICBFYUNIb3N0LFxuICBFYUNQcm9qZWN0QXNDb2RlLFxuICBFbnRlcnByaXNlQXNDb2RlLFxufSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0IHtcbiAgcHVibGljIEFwcGxpY2F0aW9uPzogRWFDQXBwbGljYXRpb25Bc0NvZGU7XG5cbiAgcHVibGljIEFwcGxpY2F0aW9uTG9va3VwPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBQcm9qZWN0TG9va3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0IHtcbiAgcHVibGljIE1vZGlmaWVyOiBFYUNERlNNb2RpZmllcjtcblxuICBwdWJsaWMgTW9kaWZpZXJMb29rdXA6IHN0cmluZztcblxuICBwdWJsaWMgUHJvamVjdExvb2t1cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCB7XG4gIHB1YmxpYyBFbnRlcnByaXNlRGF0YVRva2Vucz86IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDRGF0YVRva2VuIH07XG5cbiAgcHVibGljIEVudmlyb25tZW50PzogRWFDRW52aXJvbm1lbnRBc0NvZGU7XG5cbiAgcHVibGljIEVudmlyb25tZW50TG9va3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2F2ZVByb2plY3RBc0NvZGVFdmVudFJlcXVlc3Qge1xuICBwdWJsaWMgUHJvamVjdD86IEVhQ1Byb2plY3RBc0NvZGU7XG5cbiAgcHVibGljIFByb2plY3RMb29rdXA/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFYUNTZXJ2aWNlIHtcbiAgLy8gIFByb3BlcnRpZXNcbiAgcHVibGljIFN0YXRlOiBBcHBsaWNhdGlvbnNGbG93U3RhdGU7XG5cbiAgLy8gIENvbnN0cnVjdG9yc1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuU3RhdGUgPSBuZXcgQXBwbGljYXRpb25zRmxvd1N0YXRlKCk7XG4gIH1cblxuICAvLyAgQVBJIE1ldGhvZHNcblxuICBwdWJsaWMgZ2V0IENyZWF0aW5nUHJvamVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5DcmVhdGluZ1Byb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgRGVsZXRlQXBwbGljYXRpb24oXG4gICAgYXBwTG9va3VwOiBzdHJpbmcsXG4gICAgYXBwTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFwcGxpY2F0aW9uICcke2FwcE5hbWV9Jz9gKSkge1xuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5EZWxldGVBcHBsaWNhdGlvbih0aGlzLlN0YXRlLCBhcHBMb29rdXApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBEZWxldGVEZXZPcHNBY3Rpb24oZG9hTG9va3VwOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBEZXZPcHMgYWN0aW9uICcke2RvYUxvb2t1cH0nP2ApKSB7XG5cbiAgICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRGVsZXRlRGV2T3BzQWN0aW9uKHRoaXMuU3RhdGUsIGRvYUxvb2t1cCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIERlbGV0ZVByb2plY3QocHJvamVjdExvb2t1cDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGNvbmZpcm0oYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgUHJvamVjdCAnJHtwcm9qZWN0TG9va3VwfSc/YCkpIHtcblxuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5EZWxldGVQcm9qZWN0KHRoaXMuU3RhdGUsIHByb2plY3RMb29rdXApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBEZWxldGVTb3VyY2VDb250cm9sKHNjTG9va3VwOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBTb3VyY2UgQ29udHJvbCAnJHtzY0xvb2t1cH0nP2ApKSB7XG5cbiAgICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRGVsZXRlU291cmNlQ29udHJvbCh0aGlzLlN0YXRlLCBzY0xvb2t1cCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5FbnN1cmVVc2VyRW50ZXJwcmlzZUV2ZW50LnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gIC8vICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnN1cmVVc2VyRW50ZXJwcmlzZSh0aGlzLlN0YXRlKTtcbiAgLy8gfSk7XG4gIFxuXG4gIHB1YmxpYyBhc3luYyBFbnN1cmVVc2VyRW50ZXJwcmlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVuc3VyZVVzZXJFbnRlcnByaXNlKHRoaXMuU3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIEdldEFjdGl2ZUVudGVycHJpc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5HZXRBY3RpdmVFbnRlcnByaXNlKHRoaXMuU3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBFZGl0aW5nUHJvamVjdExvb2t1cCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb2plY3RTZXJ2aWNlLkVkaXRpbmdQcm9qZWN0TG9va3VwO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIEhhc1ZhbGlkQ29ubmVjdGlvbigpOiBQcm9taXNlPHZvaWQ+e1xuICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuSGFzVmFsaWRDb25uZWN0aW9uKHRoaXMuU3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIExpc3RFbnRlcnByaXNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxpc3RFbnRlcnByaXNlcyh0aGlzLlN0YXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBMb2FkRW50ZXJwcmlzZUFzQ29kZSgpOiBQcm9taXNlPHZvaWQ+e1xuICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuTG9hZEVudGVycHJpc2VBc0NvZGUodGhpcy5TdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlKFxuICAgIHJlcTogU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZUFwcGxpY2F0aW9uKHJlcSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgU2F2ZURGU01vZGlmaWVyKHJlcTogU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVTYXZlREZTTW9kaWZpZXIocmVxKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBTYXZlRW50ZXJwcmlzZUFzQ29kZShlYWM6IEVudGVycHJpc2VBc0NvZGUpOiBQcm9taXNlPHZvaWQ+ICB7XG4gICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZSh0aGlzLlN0YXRlLCBlYWMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIFNhdmVFbnZpcm9ubWVudEFzQ29kZShyZXE6IFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCk6IFByb21pc2U8dm9pZD57XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVTYXZlRW52aXJvbm1lbnQocmVxKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBTYXZlUHJvamVjdEFzQ29kZShyZXE6IFNhdmVQcm9qZWN0QXNDb2RlRXZlbnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPntcbiAgICBhd2FpdCB0aGlzLmhhbmRsZVNhdmVQcm9qZWN0KHJlcS5Qcm9qZWN0TG9va3VwLCByZXEuUHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgU2V0QWN0aXZlRW50ZXJwcmlzZShldmVudFZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+e1xuICAgIHRoaXMucHJvamVjdFNlcnZpY2UuU2V0QWN0aXZlRW50ZXJwcmlzZSh0aGlzLlN0YXRlLCBldmVudFZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBTZXRDcmVhdGluZ1Byb2plY3QoY3JlYXRpbmdQcm9qZWN0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPntcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UuU2V0Q3JlYXRpbmdQcm9qZWN0KGNyZWF0aW5nUHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgU2V0RWRpdFByb2plY3RTZXR0aW5ncyhwcm9qZWN0TG9va3VwOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+e1xuICAgICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TZXRFZGl0UHJvamVjdFNldHRpbmdzKFxuICAgICAgICB0aGlzLlN0YXRlLFxuICAgICAgICBwcm9qZWN0TG9va3VwXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIFVucGFja0xvd0NvZGVVbml0KHJlcTogVW5wYWNrTG93Q29kZVVuaXRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKFxuICAgICAgY29uZmlybShcbiAgICAgICAgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bnBhY2sgYXBwbGljYXRpb24gJyR7cmVxLkFwcGxpY2F0aW9uTmFtZX0nIHdpdGggdmVyc2lvbiAnJHtyZXEuVmVyc2lvbn0nP2BcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuVW5wYWNrTG93Q29kZVVuaXQodGhpcy5TdGF0ZSwgcmVxKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vICBIZWxwZXJzXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQXBwbGljYXRpb24oXG4gICAgcmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3RcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgIEVudGVycHJpc2VMb29rdXA6IHRoaXMuU3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgUHJvamVjdHM6IHt9LFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ1Byb2ogPSB7XG4gICAgICAuLi50aGlzLlN0YXRlLkVhQy5Qcm9qZWN0c1tyZXEuUHJvamVjdExvb2t1cF0sXG4gICAgfTtcblxuICAgIGlmIChleGlzdGluZ1Byb2ouQXBwbGljYXRpb25Mb29rdXBzPy5pbmRleE9mKHJlcS5BcHBsaWNhdGlvbkxvb2t1cCkgPCAwKSB7XG4gICAgICBpZiAoIWV4aXN0aW5nUHJvai5BcHBsaWNhdGlvbkxvb2t1cHMpIHtcbiAgICAgICAgZXhpc3RpbmdQcm9qLkFwcGxpY2F0aW9uTG9va3VwcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBleGlzdGluZ1Byb2ouQXBwbGljYXRpb25Mb29rdXBzLnB1c2gocmVxLkFwcGxpY2F0aW9uTG9va3VwKTtcblxuICAgICAgc2F2ZUVhQy5Qcm9qZWN0c1tyZXEuUHJvamVjdExvb2t1cF0gPSBleGlzdGluZ1Byb2o7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5BcHBsaWNhdGlvbikge1xuICAgICAgc2F2ZUVhQy5BcHBsaWNhdGlvbnNbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSA9IHJlcS5BcHBsaWNhdGlvbjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHRoaXMuU3RhdGUsIHNhdmVFYUMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVERlNNb2RpZmllcihcbiAgICByZXE6IFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgRW50ZXJwcmlzZUxvb2t1cDogdGhpcy5TdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgIE1vZGlmaWVyczoge30sXG4gICAgICBQcm9qZWN0czoge30sXG4gICAgfTtcblxuICAgIGlmIChyZXEuTW9kaWZpZXIpIHtcbiAgICAgIHNhdmVFYUMuTW9kaWZpZXJzW3JlcS5Nb2RpZmllckxvb2t1cF0gPSByZXEuTW9kaWZpZXI7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5Qcm9qZWN0TG9va3VwKSB7XG4gICAgICBzYXZlRWFDLlByb2plY3RzW3JlcS5Qcm9qZWN0TG9va3VwXSA9IHtcbiAgICAgICAgTW9kaWZpZXJMb29rdXBzOiBbcmVxLk1vZGlmaWVyTG9va3VwXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZSh0aGlzLlN0YXRlLCBzYXZlRWFDKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlRW52aXJvbm1lbnQoXG4gICAgcmVxOiBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3RcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgIEVudGVycHJpc2VMb29rdXA6IHRoaXMuU3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICBEYXRhVG9rZW5zOiB7fSxcbiAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgfTtcblxuICAgIGlmIChyZXEuRW52aXJvbm1lbnQpIHtcbiAgICAgIHNhdmVFYUMuRW52aXJvbm1lbnRzW3JlcS5FbnZpcm9ubWVudExvb2t1cF0gPSByZXEuRW52aXJvbm1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5FbnRlcnByaXNlRGF0YVRva2Vucykge1xuICAgICAgc2F2ZUVhQy5EYXRhVG9rZW5zID0gcmVxLkVudGVycHJpc2VEYXRhVG9rZW5zO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUodGhpcy5TdGF0ZSwgc2F2ZUVhQyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZVByb2plY3QoXG4gICAgcHJvamVjdExvb2t1cDogc3RyaW5nLFxuICAgIHByb2plY3Q6IEVhQ1Byb2plY3RBc0NvZGVcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvakhvc3RzOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0hvc3QgfSA9IHt9O1xuXG4gICAgcHJvamVjdD8uSG9zdHM/LmZvckVhY2goKGhvc3QpID0+IHtcbiAgICAgIHByb2pIb3N0c1tob3N0XSA9IHRoaXMuU3RhdGUuRWFDLkhvc3RzW2hvc3RdO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgIEVudGVycHJpc2VMb29rdXA6IHRoaXMuU3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICBFbnRlcnByaXNlOiB7XG4gICAgICAgIC4uLnRoaXMuU3RhdGUuRWFDLkVudGVycHJpc2UsXG4gICAgICAgIFByaW1hcnlIb3N0OiBwcm9qZWN0Lkhvc3RzWzBdLFxuICAgICAgfSxcbiAgICAgIEhvc3RzOiBwcm9qSG9zdHMsXG4gICAgICAvLyBQcm92aWRlcnM6IHRoaXMuU3RhdGUuRWFDLlByb3ZpZGVycywgIC8vICBUT0RPOiAgUmVtb3ZlIGFmdGVyIGFsbCBwcm92aWRlcnMgQURCMkMncyBoYXZlIGJlZW4gdXBncmFkZWRcbiAgICAgIFByb2plY3RzOiB7fSxcbiAgICB9O1xuXG4gICAgc2F2ZUVhQy5Qcm9qZWN0c1twcm9qZWN0TG9va3VwXSA9IHByb2plY3Q7XG5cbiAgICBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHRoaXMuU3RhdGUsIHNhdmVFYUMpO1xuXG4gICAgdGhpcy5TZXRFZGl0UHJvamVjdFNldHRpbmdzKHByb2plY3RMb29rdXApO1xuICB9XG59XG4iXX0=
|