@bnsights/bbsf-admin-portal 1.0.78 → 1.0.80
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/README.md +9 -0
- package/{bnsights-bbsf-admin-portal-1.0.78.tgz → bnsights-bbsf-admin-portal-1.0.80.tgz} +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +263 -118
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/documents/document-template-info/document-template-info.component.js +6 -7
- package/esm2015/lib/Pages/shared/Enums/Enums.js +6 -1
- package/esm2015/lib/Pages/shared/components/survey/survey-info/survey-info.component.js +120 -87
- package/esm2015/lib/Pages/shared/components/survey/survey.component.js +12 -6
- package/esm2015/lib/Pages/shared/modules/survey.module.js +7 -1
- package/esm2015/lib/Pages/shared/word/constants.js +1 -1
- package/esm2015/lib/Pages/shared/word/docx-document.js +4 -1
- package/esm2015/lib/Pages/shared/word/helpers/index.js +1 -1
- package/esm2015/lib/Pages/shared/word/helpers/render-document-file.js +1 -1
- package/esm2015/lib/Pages/shared/word/helpers/xml-builder.js +1 -1
- package/esm2015/lib/Pages/shared/word/html-to-docx.js +12 -5
- package/esm2015/lib/Pages/shared/word/index.js +1 -1
- package/esm2015/lib/Pages/shared/word/namespaces.js +1 -1
- package/esm2015/lib/Pages/shared/word/schemas/content-types.js +24 -24
- package/esm2015/lib/Pages/shared/word/schemas/core.js +21 -21
- package/esm2015/lib/Pages/shared/word/schemas/document-rels.js +13 -13
- package/esm2015/lib/Pages/shared/word/schemas/document.template.js +103 -41
- package/esm2015/lib/Pages/shared/word/schemas/font-table.js +37 -37
- package/esm2015/lib/Pages/shared/word/schemas/generic-rels.js +9 -6
- package/esm2015/lib/Pages/shared/word/schemas/index.js +1 -1
- package/esm2015/lib/Pages/shared/word/schemas/numbering.js +14 -14
- package/esm2015/lib/Pages/shared/word/schemas/rels.js +8 -8
- package/esm2015/lib/Pages/shared/word/schemas/settings.js +10 -10
- package/esm2015/lib/Pages/shared/word/schemas/styles.js +143 -143
- package/esm2015/lib/Pages/shared/word/schemas/theme.js +195 -195
- package/esm2015/lib/Pages/shared/word/schemas/web-settings.js +6 -6
- package/esm2015/lib/Pages/shared/word/utils/color-conversion.js +1 -1
- package/esm2015/lib/Pages/shared/word/utils/list.js +1 -1
- package/esm2015/lib/Pages/shared/word/utils/unit-conversion.js +1 -1
- package/esm2015/lib/Pages/shared/word/utils/url.js +1 -1
- package/esm2015/lib/Pages/shared/word/utils/vnode.js +1 -1
- package/esm2015/lib/Pages/shared/word/word-work/templates/documentTemplate.js +42 -42
- package/esm2015/lib/Pages/shared/word/word-work/templates/index.js +1 -1
- package/esm2015/lib/Pages/shared/word/word-work/templates/mhtDocumentTemplate.js +19 -18
- package/esm2015/lib/Pages/shared/word/word-work/templates/mhtPartTemplate.js +7 -7
- package/esm2015/lib/Pages/shared/word/word-work/utils.js +3 -1
- package/esm2015/public-api.js +2 -1
- package/fesm2015/bnsights-bbsf-admin-portal.js +1617 -1359
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/shared/Enums/Enums.d.ts +4 -0
- package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +1 -0
- package/lib/Pages/shared/components/survey/survey.component.d.ts +1 -0
- package/lib/Pages/shared/modules/survey.module.d.ts +3 -0
- package/lib/Pages/shared/word/schemas/content-types.d.ts +1 -1
- package/lib/Pages/shared/word/schemas/document.template.d.ts +3 -2
- package/lib/Pages/shared/word/schemas/generic-rels.d.ts +1 -1
- package/package.json +6 -1
- package/public-api.d.ts +1 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
|
-
import { Component, Inject, PLATFORM_ID, ViewChild } from '@angular/core';
|
|
3
|
-
import { AppBaseComponent, BreadCrumb, ControlLayout, DropdownActionItem, FilterItem, FilterType, ForceDirection, InputType, PageHeaderOptions, PagingOptions, TextBoxOptions } from '@bnsights/bbsf-controls';
|
|
2
|
+
import { Component, Inject, PLATFORM_ID, ViewChild, } from '@angular/core';
|
|
3
|
+
import { AppBaseComponent, BreadCrumb, ControlLayout, DropdownActionItem, FilterItem, FilterType, ForceDirection, InputType, PageHeaderOptions, PagingOptions, TextBoxOptions, } from '@bnsights/bbsf-controls';
|
|
4
4
|
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
5
|
-
import { isPlatformBrowser } from
|
|
6
|
-
import * as am5 from
|
|
7
|
-
import * as am5xy from
|
|
8
|
-
import am5themes_Animated from
|
|
9
|
-
import { AudienceType, SurveyOptionType, SurveyStatusEnum } from '../../../Enums/Enums';
|
|
5
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
6
|
+
import * as am5 from '@amcharts/amcharts5';
|
|
7
|
+
import * as am5xy from '@amcharts/amcharts5/xy';
|
|
8
|
+
import am5themes_Animated from '@amcharts/amcharts5/themes/Animated';
|
|
9
|
+
import { AudienceType, SurveyMode, SurveyOptionType, SurveyStatusEnum, } from '../../../Enums/Enums';
|
|
10
|
+
import { SurveyModule } from '../../../modules/survey.module';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
import * as i1 from "@angular/router";
|
|
12
13
|
import * as i2 from "@bnsights/bbsf-utilities";
|
|
@@ -41,6 +42,7 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
41
42
|
this.surveyQuestionService = surveyQuestionService;
|
|
42
43
|
this.activatedRoute = activatedRoute;
|
|
43
44
|
this.surveyForm = new FormGroup({});
|
|
45
|
+
this.enableActions = false;
|
|
44
46
|
this.urlForm = new FormGroup({});
|
|
45
47
|
this.SearchTextBox = new FormGroup({});
|
|
46
48
|
this.loadInfo = false;
|
|
@@ -73,26 +75,28 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
73
75
|
this.router.navigate(['../../info/preview', this.surveyID, this.survey.audienceItemID], { relativeTo: this.activatedRoute });
|
|
74
76
|
};
|
|
75
77
|
this.takeSurvey = () => {
|
|
76
|
-
this.router.navigate(['../../info/submission', this.surveyID], {
|
|
78
|
+
this.router.navigate(['../../info/submission', this.surveyID], {
|
|
79
|
+
relativeTo: this.activatedRoute,
|
|
80
|
+
});
|
|
77
81
|
};
|
|
78
82
|
this.onSuccessHandler = (success) => {
|
|
79
|
-
this.utilityService.notifySuccessMessage(this.l(
|
|
83
|
+
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
80
84
|
this.masterLayoutService.reloadComponent();
|
|
81
85
|
};
|
|
82
86
|
this.onSuccessDeleteHandler = (success) => {
|
|
83
|
-
this.utilityService.notifySuccessMessage(this.l(
|
|
84
|
-
this.router.navigate([
|
|
87
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
88
|
+
this.router.navigate(['../../'], { relativeTo: this.activatedRoute });
|
|
85
89
|
};
|
|
86
90
|
this.onSuccessAddQuestionHandler = (success) => {
|
|
87
|
-
this.utilityService.notifySuccessMessage(this.l(
|
|
91
|
+
this.utilityService.notifySuccessMessage(this.l('RecordAdded'), null, null, false);
|
|
88
92
|
this.masterLayoutService.reloadComponent();
|
|
89
93
|
};
|
|
90
94
|
this.onSuccessEditQuestionHandler = (success) => {
|
|
91
|
-
this.utilityService.notifySuccessMessage(this.l(
|
|
95
|
+
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
92
96
|
this.masterLayoutService.reloadComponent();
|
|
93
97
|
};
|
|
94
98
|
this.onSuccessDeleteQuestionHandler = (success) => {
|
|
95
|
-
this.utilityService.notifySuccessMessage(this.l(
|
|
99
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
96
100
|
this.masterLayoutService.reloadComponent();
|
|
97
101
|
};
|
|
98
102
|
this.showDeleteSubmissionModal = (id) => {
|
|
@@ -105,18 +109,16 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
105
109
|
this.unEliminateSubmissionConfirmationModalControl.showUnEliminateModal(id);
|
|
106
110
|
};
|
|
107
111
|
this.onSuccessDeleteHandlerSubmission = (success) => {
|
|
108
|
-
this.utilityService.notifySuccessMessage(this.l(
|
|
112
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
109
113
|
this.loadSubmissionSection();
|
|
110
114
|
};
|
|
111
115
|
this.export = () => {
|
|
112
|
-
this.surveyService
|
|
113
|
-
.
|
|
114
|
-
.subscribe((result) => {
|
|
115
|
-
this.download(result, this.pageTitle + ".xlsx");
|
|
116
|
+
this.surveyService.export(this.surveyID).subscribe((result) => {
|
|
117
|
+
this.download(result, this.pageTitle + '.xlsx');
|
|
116
118
|
});
|
|
117
119
|
};
|
|
118
120
|
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
|
|
119
|
-
this.surveyID = this.activatedRoute.snapshot.params[
|
|
121
|
+
this.surveyID = this.activatedRoute.snapshot.params['id'];
|
|
120
122
|
}
|
|
121
123
|
// Run the function only in the browser
|
|
122
124
|
browserOnly(f) {
|
|
@@ -126,8 +128,7 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
126
128
|
});
|
|
127
129
|
}
|
|
128
130
|
}
|
|
129
|
-
ngAfterViewInit() {
|
|
130
|
-
}
|
|
131
|
+
ngAfterViewInit() { }
|
|
131
132
|
maybeDisposeRoot(divId) {
|
|
132
133
|
am5.array.each(am5.registry.rootElements, (root) => {
|
|
133
134
|
if (root) {
|
|
@@ -137,7 +138,6 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
137
138
|
}
|
|
138
139
|
});
|
|
139
140
|
}
|
|
140
|
-
;
|
|
141
141
|
loadChart(item) {
|
|
142
142
|
// Chart code goes in here
|
|
143
143
|
this.browserOnly(() => {
|
|
@@ -155,32 +155,37 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
155
155
|
layout: root.verticalLayout,
|
|
156
156
|
}));
|
|
157
157
|
// Define data
|
|
158
|
-
let data = item.options.map(value => {
|
|
158
|
+
let data = item.options.map((value) => {
|
|
159
|
+
return {
|
|
160
|
+
name: value.localizedTitle,
|
|
161
|
+
value: value.numberOfSelectedTime,
|
|
162
|
+
};
|
|
163
|
+
});
|
|
159
164
|
// Create Y-axis
|
|
160
165
|
let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {
|
|
161
166
|
baseValue: 0,
|
|
162
167
|
maxPrecision: 0,
|
|
163
168
|
min: 0,
|
|
164
169
|
extraTooltipPrecision: 100,
|
|
165
|
-
renderer: am5xy.AxisRendererY.new(root, {})
|
|
170
|
+
renderer: am5xy.AxisRendererY.new(root, {}),
|
|
166
171
|
}));
|
|
167
172
|
// Create X-Axis
|
|
168
173
|
let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {
|
|
169
174
|
renderer: am5xy.AxisRendererX.new(root, {}),
|
|
170
|
-
categoryField:
|
|
175
|
+
categoryField: 'name',
|
|
171
176
|
}));
|
|
172
177
|
xAxis.data.setAll(data);
|
|
173
178
|
// Create series
|
|
174
179
|
let series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
175
|
-
name:
|
|
180
|
+
name: 'Question Options',
|
|
176
181
|
xAxis: xAxis,
|
|
177
182
|
yAxis: yAxis,
|
|
178
|
-
valueYField:
|
|
179
|
-
categoryXField:
|
|
183
|
+
valueYField: 'value',
|
|
184
|
+
categoryXField: 'name',
|
|
180
185
|
}));
|
|
181
186
|
series1.data.setAll(data);
|
|
182
|
-
series1.set(
|
|
183
|
-
series1.set(
|
|
187
|
+
series1.set('fill', am5.color('#b68a35')); // set Series color to red
|
|
188
|
+
series1.set('stroke', am5.color('#b68a35')); // set Series color to red
|
|
184
189
|
// Add legend
|
|
185
190
|
let legend = chart.children.push(am5.Legend.new(root, {}));
|
|
186
191
|
legend.data.push(series1);
|
|
@@ -190,8 +195,8 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
190
195
|
x: 50,
|
|
191
196
|
});
|
|
192
197
|
legend.valueLabels.template.setAll({
|
|
193
|
-
textAlign:
|
|
194
|
-
paddingRight: 15
|
|
198
|
+
textAlign: 'right',
|
|
199
|
+
paddingRight: 15,
|
|
195
200
|
});
|
|
196
201
|
legend.itemContainers.template.setAll({
|
|
197
202
|
reverseChildren: true,
|
|
@@ -207,7 +212,7 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
207
212
|
root.setThemes([am5themes_Animated.new(root)]);
|
|
208
213
|
let chart = root.container.children.push(am5xy.XYChart.new(root, {
|
|
209
214
|
panY: false,
|
|
210
|
-
layout: root.verticalLayout
|
|
215
|
+
layout: root.verticalLayout,
|
|
211
216
|
}));
|
|
212
217
|
// Define data
|
|
213
218
|
let data = [];
|
|
@@ -215,8 +220,8 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
215
220
|
if (Object.prototype.hasOwnProperty.call(item.results, key)) {
|
|
216
221
|
const value = item.results[key];
|
|
217
222
|
let object = {
|
|
218
|
-
category:
|
|
219
|
-
value: value
|
|
223
|
+
category: '<=' + key,
|
|
224
|
+
value: value,
|
|
220
225
|
};
|
|
221
226
|
data.push(object);
|
|
222
227
|
}
|
|
@@ -227,25 +232,25 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
227
232
|
maxPrecision: 0,
|
|
228
233
|
min: 0,
|
|
229
234
|
extraTooltipPrecision: 100,
|
|
230
|
-
renderer: am5xy.AxisRendererY.new(root, {})
|
|
235
|
+
renderer: am5xy.AxisRendererY.new(root, {}),
|
|
231
236
|
}));
|
|
232
237
|
// Create X-Axis
|
|
233
238
|
let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {
|
|
234
239
|
renderer: am5xy.AxisRendererX.new(root, {}),
|
|
235
|
-
categoryField:
|
|
240
|
+
categoryField: 'category',
|
|
236
241
|
}));
|
|
237
242
|
xAxis.data.setAll(data);
|
|
238
243
|
// Create series
|
|
239
244
|
let series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
240
|
-
name:
|
|
245
|
+
name: 'Score',
|
|
241
246
|
xAxis: xAxis,
|
|
242
247
|
yAxis: yAxis,
|
|
243
|
-
valueYField:
|
|
244
|
-
categoryXField:
|
|
248
|
+
valueYField: 'value',
|
|
249
|
+
categoryXField: 'category',
|
|
245
250
|
}));
|
|
246
251
|
series1.data.setAll(data);
|
|
247
|
-
series1.set(
|
|
248
|
-
series1.set(
|
|
252
|
+
series1.set('fill', am5.color('#b68a35')); // set Series color to red
|
|
253
|
+
series1.set('stroke', am5.color('#b68a35')); // set Series color to red
|
|
249
254
|
// Add legend
|
|
250
255
|
let legend = chart.children.push(am5.Legend.new(root, {}));
|
|
251
256
|
legend.data.setAll(chart.series.values);
|
|
@@ -255,8 +260,8 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
255
260
|
x: 50,
|
|
256
261
|
});
|
|
257
262
|
legend.valueLabels.template.setAll({
|
|
258
|
-
textAlign:
|
|
259
|
-
paddingRight: 15
|
|
263
|
+
textAlign: 'right',
|
|
264
|
+
paddingRight: 15,
|
|
260
265
|
});
|
|
261
266
|
legend.itemContainers.template.setAll({
|
|
262
267
|
reverseChildren: true,
|
|
@@ -274,45 +279,58 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
274
279
|
});
|
|
275
280
|
}
|
|
276
281
|
ngOnInit() {
|
|
277
|
-
|
|
282
|
+
if (SurveyModule.surveyMode == SurveyMode.Survey_Full_Access)
|
|
283
|
+
this.enableActions = true;
|
|
284
|
+
this.surveyService.getInfo(this.surveyID).subscribe((result) => {
|
|
278
285
|
this.survey = result;
|
|
279
286
|
this.TextBoxWithExternalURL = new TextBoxOptions();
|
|
280
|
-
this.TextBoxWithExternalURL.Name =
|
|
281
|
-
this.TextBoxWithExternalURL.LabelKey =
|
|
287
|
+
this.TextBoxWithExternalURL.Name = 'TextBoxWithExternalURL';
|
|
288
|
+
this.TextBoxWithExternalURL.LabelKey = 'External_URL';
|
|
282
289
|
this.TextBoxWithExternalURL.Type = InputType.Text;
|
|
283
290
|
this.TextBoxWithExternalURL.ViewType = ControlLayout.Vertical;
|
|
284
291
|
this.TextBoxWithExternalURL.ForceDirection = ForceDirection.English;
|
|
285
292
|
this.TextBoxWithExternalURL.EnableCopyToClipboard = true;
|
|
286
293
|
this.TextBoxWithExternalURL.Value = this.survey.externalURL;
|
|
287
294
|
this.TextBoxWithInternalURL = new TextBoxOptions();
|
|
288
|
-
this.TextBoxWithInternalURL.Name =
|
|
289
|
-
this.TextBoxWithInternalURL.LabelKey =
|
|
295
|
+
this.TextBoxWithInternalURL.Name = 'TextBoxWithInternalURL';
|
|
296
|
+
this.TextBoxWithInternalURL.LabelKey = 'Internal_URL';
|
|
290
297
|
this.TextBoxWithInternalURL.Type = InputType.Text;
|
|
291
298
|
this.TextBoxWithInternalURL.ViewType = ControlLayout.Vertical;
|
|
292
299
|
this.TextBoxWithInternalURL.ForceDirection = ForceDirection.English;
|
|
293
300
|
this.TextBoxWithInternalURL.EnableCopyToClipboard = true;
|
|
294
301
|
this.TextBoxWithInternalURL.Value = this.survey.internalURL;
|
|
295
302
|
this.breadCrumb = [];
|
|
296
|
-
this.breadCrumb.push(new BreadCrumb(this.l(
|
|
303
|
+
this.breadCrumb.push(new BreadCrumb(this.l('Home'), false, '/'), new BreadCrumb(this.l('Surveys_Header'), false, '../../'), new BreadCrumb(this.l('Survey_Details'), true));
|
|
297
304
|
this.pageHeaderOptions = new PageHeaderOptions();
|
|
298
305
|
this.pageHeaderOptions.TitleValue = this.survey.localizedTitle;
|
|
299
306
|
this.pageHeaderOptions.SearchTextBox.Active = false;
|
|
300
307
|
this.pageHeaderOptions.BreadCrumb.Active = true;
|
|
301
308
|
this.pageHeaderOptions.BreadCrumb.BreadCrumbItems = this.breadCrumb;
|
|
302
309
|
this.pageHeaderOptions.DropDownActions.Active = true;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
310
|
+
if (this.enableActions)
|
|
311
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Delete'), '/assets/images/Trash.svg', this.showDeleteModal));
|
|
312
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Export'), '/assets/images/export.svg', this.export));
|
|
313
|
+
if (this.enableActions) {
|
|
314
|
+
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
315
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase() ||
|
|
316
|
+
this.survey.statusItemID.toLocaleLowerCase() ==
|
|
317
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Upcoming.toLocaleLowerCase())
|
|
318
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Edit'), '/assets/images/Edit.svg', this.showEditModal));
|
|
319
|
+
}
|
|
307
320
|
if (this.survey.totalQuestionCount > 0)
|
|
308
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l(
|
|
309
|
-
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
321
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Preview'), '/assets/images/views.svg', this.previewSurvey));
|
|
322
|
+
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
323
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Published.toLocaleLowerCase())
|
|
310
324
|
this.canTakeSurvey = true;
|
|
311
|
-
if (this.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
325
|
+
if (this.enableActions) {
|
|
326
|
+
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
327
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase() ||
|
|
328
|
+
this.survey.statusItemID.toLocaleLowerCase() ==
|
|
329
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Closed.toLocaleLowerCase())
|
|
330
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Publish'), '/assets/images/Submit.svg', this.showPublishModal));
|
|
331
|
+
else
|
|
332
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('UnPublish'), '/assets/images/unlink.svg', this.showUnPublishModal));
|
|
333
|
+
}
|
|
316
334
|
this.EN = this.utilityService.isCurrentLanguageEnglish();
|
|
317
335
|
this.loadQuestionSection();
|
|
318
336
|
this.loadSubmissionSection();
|
|
@@ -332,7 +350,9 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
332
350
|
for (let index = 0; index < this.pagingQuestionResult.length; index++) {
|
|
333
351
|
this.pagingQuestionResult[index].displayOrder = index + 1;
|
|
334
352
|
}
|
|
335
|
-
this.surveyQuestionService
|
|
353
|
+
this.surveyQuestionService
|
|
354
|
+
.updateDisplayOrder(this.pagingQuestionResult)
|
|
355
|
+
.subscribe((e) => {
|
|
336
356
|
this.utilityService.stopBlockUI();
|
|
337
357
|
});
|
|
338
358
|
}
|
|
@@ -370,25 +390,27 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
370
390
|
}
|
|
371
391
|
loadQuestionSection() {
|
|
372
392
|
this.SearchTextBoxOptions = new TextBoxOptions();
|
|
373
|
-
this.SearchTextBoxOptions.Name =
|
|
393
|
+
this.SearchTextBoxOptions.Name = 'SearchTextBox';
|
|
374
394
|
this.SearchTextBoxOptions.Type = InputType.Text;
|
|
375
395
|
this.SearchTextBoxOptions.TrimTextOnChange = true;
|
|
376
|
-
this.SearchTextBoxOptions.Placeholder = this.l(
|
|
377
|
-
this.SearchTextBoxOptions.ExtraClasses =
|
|
396
|
+
this.SearchTextBoxOptions.Placeholder = this.l('Search');
|
|
397
|
+
this.SearchTextBoxOptions.ExtraClasses =
|
|
398
|
+
'form-control form-control-sm form-control-solid search-box';
|
|
378
399
|
this.SearchTextBoxOptions.HideLabel = true;
|
|
379
|
-
this.SearchTextBoxOptions.Icon =
|
|
400
|
+
this.SearchTextBoxOptions.Icon = '../../../assets/images/search.svg';
|
|
380
401
|
this.SurveyIDOptions = new TextBoxOptions();
|
|
381
|
-
this.SurveyIDOptions.Name =
|
|
402
|
+
this.SurveyIDOptions.Name = 'SurveyID';
|
|
382
403
|
this.SurveyIDOptions.Value = this.surveyID;
|
|
383
404
|
this.searchSurveyIDFilter = new FilterItem();
|
|
384
405
|
this.searchSurveyIDFilter.FormControlName = this.SurveyIDOptions.Name;
|
|
385
|
-
this.searchSurveyIDFilter.ActionParameterName =
|
|
406
|
+
this.searchSurveyIDFilter.ActionParameterName = 'SurveyID';
|
|
386
407
|
this.searchSurveyIDFilter.IsFormControl = true;
|
|
387
408
|
this.searchSurveyIDFilter.FilterType = FilterType.TextBox;
|
|
388
409
|
this.pagingQuestionOptions = new PagingOptions();
|
|
389
410
|
this.pagingQuestionOptions.PageSize = 1000;
|
|
390
411
|
this.pagingQuestionOptions.DisableBlockUI = true;
|
|
391
|
-
this.pagingQuestionOptions.ActionPostURL =
|
|
412
|
+
this.pagingQuestionOptions.ActionPostURL =
|
|
413
|
+
this.apiQuestionURL + 'GetAllQuestions';
|
|
392
414
|
this.pagingQuestionOptions.Filters = [this.searchSurveyIDFilter];
|
|
393
415
|
}
|
|
394
416
|
setQuestionListingResult(result) {
|
|
@@ -396,38 +418,49 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
396
418
|
this.pagingQuestionResultOriginal = result;
|
|
397
419
|
this.showPageContent = true;
|
|
398
420
|
this.utilityService.stopBlockUI();
|
|
399
|
-
let overviewQuestions = this.pagingQuestionResultOriginal.filter(item => item.questionTypeItemID == SurveyOptionType.RadioButton ||
|
|
421
|
+
let overviewQuestions = this.pagingQuestionResultOriginal.filter((item) => item.questionTypeItemID == SurveyOptionType.RadioButton ||
|
|
422
|
+
item.questionTypeItemID == SurveyOptionType.SingleSelect ||
|
|
423
|
+
item.questionTypeItemID == SurveyOptionType.MultipleSelect);
|
|
400
424
|
if (overviewQuestions.length > 0)
|
|
401
425
|
this.loadSurveyOverview();
|
|
402
426
|
}
|
|
403
427
|
loadSubmissionSection() {
|
|
404
428
|
this.SearchTextBoxOptions = new TextBoxOptions();
|
|
405
|
-
this.SearchTextBoxOptions.Name =
|
|
429
|
+
this.SearchTextBoxOptions.Name = 'SearchTextBox';
|
|
406
430
|
this.SearchTextBoxOptions.Type = InputType.Text;
|
|
407
431
|
this.SearchTextBoxOptions.TrimTextOnChange = true;
|
|
408
|
-
this.SearchTextBoxOptions.Placeholder = this.l(
|
|
409
|
-
this.SearchTextBoxOptions.ExtraClasses =
|
|
432
|
+
this.SearchTextBoxOptions.Placeholder = this.l('Search');
|
|
433
|
+
this.SearchTextBoxOptions.ExtraClasses =
|
|
434
|
+
'form-control form-control-sm form-control-solid search-box';
|
|
410
435
|
this.SearchTextBoxOptions.HideLabel = true;
|
|
411
|
-
this.SearchTextBoxOptions.Icon =
|
|
436
|
+
this.SearchTextBoxOptions.Icon = '../../../assets/images/search.svg';
|
|
412
437
|
this.searchSubmissionTextFilter = new FilterItem();
|
|
413
|
-
this.searchSubmissionTextFilter.FormControlName =
|
|
414
|
-
|
|
438
|
+
this.searchSubmissionTextFilter.FormControlName =
|
|
439
|
+
this.SearchTextBoxOptions.Name;
|
|
440
|
+
this.searchSubmissionTextFilter.ActionParameterName = 'SearchText';
|
|
415
441
|
this.searchSubmissionTextFilter.IsFormControl = true;
|
|
416
442
|
this.searchSubmissionTextFilter.FilterType = FilterType.TextBox;
|
|
417
443
|
this.SurveyIDOptions = new TextBoxOptions();
|
|
418
|
-
this.SurveyIDOptions.Name =
|
|
444
|
+
this.SurveyIDOptions.Name = 'SurveyID';
|
|
419
445
|
this.SurveyIDOptions.Value = this.surveyID;
|
|
420
446
|
this.searchSurveySubmissionIDFilter = new FilterItem();
|
|
421
|
-
this.searchSurveySubmissionIDFilter.FormControlName =
|
|
422
|
-
|
|
447
|
+
this.searchSurveySubmissionIDFilter.FormControlName =
|
|
448
|
+
this.SurveyIDOptions.Name;
|
|
449
|
+
this.searchSurveySubmissionIDFilter.ActionParameterName = 'SurveyID';
|
|
423
450
|
this.searchSurveySubmissionIDFilter.IsFormControl = true;
|
|
424
451
|
this.searchSurveySubmissionIDFilter.FilterType = FilterType.TextBox;
|
|
425
452
|
this.pagingSubmissionOptions = new PagingOptions();
|
|
426
453
|
this.pagingSubmissionOptions.PageSize = 10;
|
|
427
454
|
this.pagingSubmissionOptions.DisableBlockUI = true;
|
|
428
|
-
this.pagingSubmissionOptions.ActionPostURL =
|
|
429
|
-
|
|
430
|
-
this.pagingSubmissionOptions.
|
|
455
|
+
this.pagingSubmissionOptions.ActionPostURL =
|
|
456
|
+
this.surveyService.apiURL + 'GetAllSurveySubmission';
|
|
457
|
+
this.pagingSubmissionOptions.OnKeyPressFiltersControlNames = [
|
|
458
|
+
this.SearchTextBoxOptions.Name,
|
|
459
|
+
];
|
|
460
|
+
this.pagingSubmissionOptions.Filters = [
|
|
461
|
+
this.searchSurveySubmissionIDFilter,
|
|
462
|
+
this.searchSubmissionTextFilter,
|
|
463
|
+
];
|
|
431
464
|
}
|
|
432
465
|
setSubmissionListingResult(result) {
|
|
433
466
|
this.pagingSubmissionResult = result;
|
|
@@ -443,19 +476,19 @@ export class SurveyInfoComponent extends AppBaseComponent {
|
|
|
443
476
|
}
|
|
444
477
|
searchInQuestionList(value) {
|
|
445
478
|
if (value)
|
|
446
|
-
this.pagingQuestionResult = this.pagingQuestionResultOriginal.filter(item => item.localizedText.toLowerCase().includes(value.toLowerCase()));
|
|
479
|
+
this.pagingQuestionResult = this.pagingQuestionResultOriginal.filter((item) => item.localizedText.toLowerCase().includes(value.toLowerCase()));
|
|
447
480
|
else
|
|
448
481
|
this.pagingQuestionResult = this.pagingQuestionResultOriginal;
|
|
449
482
|
}
|
|
450
483
|
}
|
|
451
484
|
SurveyInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SurveyInfoComponent, deps: [{ token: i0.Injector }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.Router }, { token: i2.MasterLayoutService }, { token: i3.SurveyService }, { token: i4.SurveyQuestionService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
452
|
-
SurveyInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SurveyInfoComponent, selector: "app-survey-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "editModal", first: true, predicate: ["editModal"], descendants: true }, { propertyName: "editQuestionModal", first: true, predicate: ["editQuestionModal"], descendants: true }, { propertyName: "deleteQuestionConfirmationModalControl", first: true, predicate: ["deleteQuestionModal"], descendants: true }, { propertyName: "AddQuestionComponent", first: true, predicate: ["addQuestionModal"], descendants: true }, { propertyName: "addPublishModal", first: true, predicate: ["addPublishModal"], descendants: true }, { propertyName: "addUnPublishModal", first: true, predicate: ["addUnPublishModal"], descendants: true }, { propertyName: "deleteSubmissionConfirmationModalControl", first: true, predicate: ["deleteSubmissionModal"], descendants: true }, { propertyName: "eliminateSubmissionConfirmationModalControl", first: true, predicate: ["eliminateModal"], descendants: true }, { propertyName: "unEliminateSubmissionConfirmationModalControl", first: true, predicate: ["unEliminateModal"], descendants: true }, { propertyName: "pagingQuestionElement", first: true, predicate: ["pagingQuestionViewElement"], descendants: true }, { propertyName: "pagingSubmissionElement", first: true, predicate: ["pagingSubmissionViewElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n", styles: [""], components: [{ type: i5.PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: ["group", "options"] }, { type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i5.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.NoResultsComponent, selector: "app-no-results" }, { type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i8.EditSurveyComponent, selector: "app-edit-survey", inputs: ["pagingElement", "onSuccessHandler"] }, { type: i9.DeleteSurveyComponent, selector: "app-delete-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i10.AddQuestionComponent, selector: "app-add-question", inputs: ["pagingElement", "onSuccessAddHandler"] }, { type: i11.EditQuestionComponent, selector: "app-edit-question", inputs: ["pagingElement", "onSuccessEditHandler"] }, { type: i12.DeleteQuestionComponent, selector: "app-delete-question", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i13.PublishSurveyComponent, selector: "app-publish-survey", inputs: ["pagingElement", "showToggle", "onSuccessHandler"] }, { type: i14.UnPublishSurveyComponent, selector: "app-unpublish-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i15.DeleteSubmissionComponent, selector: "app-delete-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i16.EliminateSubmissionComponent, selector: "app-eliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i17.UnEliminateSubmissionComponent, selector: "app-unEliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i19.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i18.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i20.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i18.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i20.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i20.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "surveyDate": i21.SurveyDatePipe } });
|
|
485
|
+
SurveyInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SurveyInfoComponent, selector: "app-survey-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "editModal", first: true, predicate: ["editModal"], descendants: true }, { propertyName: "editQuestionModal", first: true, predicate: ["editQuestionModal"], descendants: true }, { propertyName: "deleteQuestionConfirmationModalControl", first: true, predicate: ["deleteQuestionModal"], descendants: true }, { propertyName: "AddQuestionComponent", first: true, predicate: ["addQuestionModal"], descendants: true }, { propertyName: "addPublishModal", first: true, predicate: ["addPublishModal"], descendants: true }, { propertyName: "addUnPublishModal", first: true, predicate: ["addUnPublishModal"], descendants: true }, { propertyName: "deleteSubmissionConfirmationModalControl", first: true, predicate: ["deleteSubmissionModal"], descendants: true }, { propertyName: "eliminateSubmissionConfirmationModalControl", first: true, predicate: ["eliminateModal"], descendants: true }, { propertyName: "unEliminateSubmissionConfirmationModalControl", first: true, predicate: ["unEliminateModal"], descendants: true }, { propertyName: "pagingQuestionElement", first: true, predicate: ["pagingQuestionViewElement"], descendants: true }, { propertyName: "pagingSubmissionElement", first: true, predicate: ["pagingSubmissionViewElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion&&enableActions\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" *ngIf=\"enableActions\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\" *ngIf=\"enableActions\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\" *ngIf=\"enableActions\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n", styles: [""], components: [{ type: i5.PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: ["group", "options"] }, { type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i5.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.NoResultsComponent, selector: "app-no-results" }, { type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i8.EditSurveyComponent, selector: "app-edit-survey", inputs: ["pagingElement", "onSuccessHandler"] }, { type: i9.DeleteSurveyComponent, selector: "app-delete-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i10.AddQuestionComponent, selector: "app-add-question", inputs: ["pagingElement", "onSuccessAddHandler"] }, { type: i11.EditQuestionComponent, selector: "app-edit-question", inputs: ["pagingElement", "onSuccessEditHandler"] }, { type: i12.DeleteQuestionComponent, selector: "app-delete-question", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i13.PublishSurveyComponent, selector: "app-publish-survey", inputs: ["pagingElement", "showToggle", "onSuccessHandler"] }, { type: i14.UnPublishSurveyComponent, selector: "app-unpublish-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i15.DeleteSubmissionComponent, selector: "app-delete-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i16.EliminateSubmissionComponent, selector: "app-eliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { type: i17.UnEliminateSubmissionComponent, selector: "app-unEliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i19.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i18.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i20.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i18.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i20.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i20.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "surveyDate": i21.SurveyDatePipe } });
|
|
453
486
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SurveyInfoComponent, decorators: [{
|
|
454
487
|
type: Component,
|
|
455
488
|
args: [{
|
|
456
489
|
selector: 'app-survey-info',
|
|
457
490
|
templateUrl: './survey-info.component.html',
|
|
458
|
-
styleUrls: ['./survey-info.component.css']
|
|
491
|
+
styleUrls: ['./survey-info.component.css'],
|
|
459
492
|
}]
|
|
460
493
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
461
494
|
type: Inject,
|
|
@@ -500,4 +533,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
500
533
|
type: ViewChild,
|
|
501
534
|
args: ['pagingSubmissionViewElement', { static: false }]
|
|
502
535
|
}] } });
|
|
503
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUE0QixXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBbUIsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hPLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssR0FBRyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxrQkFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQU9yRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7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LE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0wsMkNBQTJDO3NCQUExRixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSSw2Q0FBNkM7c0JBQTlGLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW1CVyxxQkFBcUI7c0JBQS9FLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWNJLHVCQUF1QjtzQkFBbkYsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdWJsaXNoU3VydmV5Q29tcG9uZW50IH0gZnJvbSAnLi9wdWJsaXNoLXN1cnZleS9wdWJsaXNoLXN1cnZleS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBZGRRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZGVsZXRlLXF1ZXN0aW9uL2RlbGV0ZS1xdWVzdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2VkaXQtcXVlc3Rpb24vZWRpdC1xdWVzdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFZGl0U3VydmV5Q29tcG9uZW50IH0gZnJvbSAnLi8uLi9lZGl0LXN1cnZleS9lZGl0LXN1cnZleS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWxldGVTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuLy4uL2RlbGV0ZS1zdXJ2ZXkvZGVsZXRlLXN1cnZleS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgTmdab25lLCBPbkluaXQsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCwgQnJlYWRDcnVtYiwgQ29udHJvbExheW91dCwgRHJvcGRvd25BY3Rpb25JdGVtLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBGb3JjZURpcmVjdGlvbiwgSW5wdXRUeXBlLCBQYWdlSGVhZGVyT3B0aW9ucywgUGFnaW5nQ29tcG9uZW50LCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0ICogYXMgYW01IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1XCI7XHJcbmltcG9ydCAqIGFzIGFtNXh5IGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM1L3h5XCI7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvdGhlbWVzL0FuaW1hdGVkXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgVW5QdWJsaXNoU3VydmV5Q29tcG9uZW50IH0gZnJvbSAnLi91bnB1Ymxpc2gtc3VydmV5L3VucHVibGlzaC1zdXJ2ZXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVsZXRlU3VibWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N1Ym1pc3Npb25zL2RlbGV0ZS1zdWJtaXNzaW9uL2RlbGV0ZS1zdWJtaXNzaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQgfSBmcm9tICcuLi9zdWJtaXNzaW9ucy9lbGltaW5hdGUtc3VibWlzc2lvbi9lbGltaW5hdGUtc3VibWlzc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVbkVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQgfSBmcm9tICcuLi9zdWJtaXNzaW9ucy91bmVsaW1pbmF0ZS1zdWJtaXNzaW9uL3VuZWxpbWluYXRlLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlLCBTdXJ2ZXlTdGF0dXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvc3VydmV5LXF1ZXN0aW9uLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXN1cnZleS1pbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1cnZleS1pbmZvLmNvbXBvbmVudC5jc3MnXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cnZleUluZm9Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwYWdlSGVhZGVyT3B0aW9uczogUGFnZUhlYWRlck9wdGlvbnM7XHJcbiAgYnJlYWRDcnVtYjogQnJlYWRDcnVtYltdO1xyXG4gIHN1cnZleUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBAVmlld0NoaWxkKCdwYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBAVmlld0NoaWxkKCdkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRNb2RhbDogRWRpdFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlZGl0UXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0UXVlc3Rpb25Nb2RhbDogRWRpdFF1ZXN0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZVF1ZXN0aW9uTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVsZXRlUXVlc3Rpb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IERlbGV0ZVF1ZXN0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FkZFF1ZXN0aW9uTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgQWRkUXVlc3Rpb25Db21wb25lbnQ6IEFkZFF1ZXN0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FkZFB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZGRQdWJsaXNoTW9kYWw6IFB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnYWRkVW5QdWJsaXNoTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWRkVW5QdWJsaXNoTW9kYWw6IFVuUHVibGlzaFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdkZWxldGVTdWJtaXNzaW9uTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVsZXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogRGVsZXRlU3VibWlzc2lvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBlbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBFbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3VuRWxpbWluYXRlTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgdW5FbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBVbkVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQ7XHJcblxyXG4gIFRleHRCb3hXaXRoRXh0ZXJuYWxVUkw6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRCb3hXaXRoSW50ZXJuYWxVUkw6IFRleHRCb3hPcHRpb25zO1xyXG4gIHVybEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBTZWFyY2hUZXh0Qm94ID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRU46IGJvb2xlYW47XHJcbiAgU2VhcmNoVGV4dEJveE9wdGlvbnM6IFRleHRCb3hPcHRpb25zO1xyXG4gIHByaXZhdGUgcm9vdCE6IGFtNS5Sb290O1xyXG4gIHN1cnZleUlEOiBhbnk7XHJcbiAgc3VydmV5OiBhbnk7XHJcbiAgbG9hZEluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgU3VydmV5U3RhdHVzRW51bSA9IFN1cnZleVN0YXR1c0VudW07XHJcbiAgcHVibGljIEF1ZGllbmNlVHlwZUVudW0gPSBBdWRpZW5jZVR5cGU7XHJcbiAgc3VydmV5UXVlc3Rpb25zOiBTdXJ2ZXlRdWVzdGlvbkRUT1tdID0gW107XHJcbiAgYXBpUXVlc3Rpb25VUkwgPSB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZS5hcGlVUkw7XHJcbiAgZmlsdGVyc1F1ZXN0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGNhblRha2VTdXJ2ZXk6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIC8vUXVlc3Rpb25zIFNlY3Rpb25cclxuICBAVmlld0NoaWxkKCdwYWdpbmdRdWVzdGlvblZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ1F1ZXN0aW9uRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgcGFnaW5nUXVlc3Rpb25SZXN1bHQ6IGFueVtdID0gW107XHJcbiAgcGFnaW5nUXVlc3Rpb25PcHRpb25zOiBQYWdpbmdPcHRpb25zO1xyXG4gIHNob3dQYWdlQ29udGVudDogYm9vbGVhbjtcclxuICBjYW5FZGl0UXVlc3Rpb246IGJvb2xlYW47XHJcbiAgY2FuQWRkUXVlc3Rpb246IGJvb2xlYW47XHJcbiAgY2FuRGVsZXRlUXVlc3Rpb246IGJvb2xlYW47XHJcbiAgc2VhcmNoUXVlc3Rpb25UZXh0RmlsdGVyOiBhbnk7XHJcbiAgU3VydmV5SURPcHRpb25zOiBhbnk7XHJcbiAgc2VhcmNoU3VydmV5SURGaWx0ZXI6IEZpbHRlckl0ZW07XHJcblxyXG5cclxuICAvL1N1Ym1pc3Npb24gU2VjdGlvblxyXG4gIGZpbHRlcnNTdWJtaXNzaW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1N1Ym1pc3Npb25WaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdTdWJtaXNzaW9uRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgcGFnaW5nU3VibWlzc2lvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdTdWJtaXNzaW9uT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICBzaG93U3VibWlzc2lvblBhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIHNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlcjogRmlsdGVySXRlbTtcclxuICBxdWVzdGlvbk92ZXJ2aWV3UmVzdWx0OiBhbnk7XHJcbiAgcGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDogYW55O1xyXG4gIHNob3dPdmVydmlldzogYm9vbGVhbjtcclxuICBzaG93TmF2OiBib29sZWFuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZCwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICAgICwgcHJpdmF0ZSBtYXN0ZXJMYXlvdXRTZXJ2aWNlOiBNYXN0ZXJMYXlvdXRTZXJ2aWNlLCBwcml2YXRlIHN1cnZleVNlcnZpY2U6IFN1cnZleVNlcnZpY2UsIHByaXZhdGUgc3VydmV5UXVlc3Rpb25TZXJ2aWNlOiBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UsIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB0aGlzLnJvdXRlci5yb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkUmV1c2VSb3V0ZSA9ICgpID0+IGZhbHNlO1xyXG4gICAgdGhpcy5zdXJ2ZXlJRCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zW1wiaWRcIl07XHJcbiAgfVxyXG4gIC8vIFJ1biB0aGUgZnVuY3Rpb24gb25seSBpbiB0aGUgYnJvd3NlclxyXG4gIGJyb3dzZXJPbmx5KGY6ICgpID0+IHZvaWQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgZigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICBtYXliZURpc3Bvc2VSb290KGRpdklkKSB7XHJcbiAgICBhbTUuYXJyYXkuZWFjaChhbTUucmVnaXN0cnkucm9vdEVsZW1lbnRzLCAocm9vdCkgPT4ge1xyXG4gICAgICBpZiAocm9vdCkge1xyXG4gICAgICAgIGlmIChyb290LmRvbS5pZCA9PSBkaXZJZCkge1xyXG4gICAgICAgICAgcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfTtcclxuXHJcbiAgbG9hZENoYXJ0KGl0ZW0pIHtcclxuXHJcbiAgICAvLyBDaGFydCBjb2RlIGdvZXMgaW4gaGVyZVxyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7XHJcbiAgICAgIGxldCBuYW1lID0gYGNoYXJ0ZGl2YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWUpXHJcbiAgICAgIGxldCByb290ID0gYW01LlJvb3QubmV3KG5hbWUpO1xyXG4gICAgICByb290LnNldFRoZW1lcyhbYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KV0pO1xyXG5cclxuICAgICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgICBwYW5YOiBmYWxzZSxcclxuICAgICAgICAgIHBhblk6IGZhbHNlLFxyXG4gICAgICAgICAgd2hlZWxYOiAnbm9uZScsXHJcbiAgICAgICAgICB3aGVlbFk6ICdub25lJyxcclxuICAgICAgICAgIHBhZGRpbmdCb3R0b206IDUwLFxyXG4gICAgICAgICAgcGFkZGluZ1RvcDogNDAsXHJcbiAgICAgICAgICBsYXlvdXQ6IHJvb3QudmVydGljYWxMYXlvdXQsXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBEZWZpbmUgZGF0YVxyXG4gICAgICBsZXQgZGF0YSA9IGl0ZW0ub3B0aW9ucy5tYXAodmFsdWUgPT4geyByZXR1cm4geyAnbmFtZSc6IHZhbHVlLmxvY2FsaXplZFRpdGxlLCAndmFsdWUnOiB2YWx1ZS5udW1iZXJPZlNlbGVjdGVkVGltZSB9IH0pXHJcbiAgICAgIC8vIENyZWF0ZSBZLWF4aXNcclxuICAgICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIGJhc2VWYWx1ZTogMCxcclxuICAgICAgICAgIG1heFByZWNpc2lvbjogMCxcclxuICAgICAgICAgIG1pbjowLFxyXG4gICAgICAgICAgZXh0cmFUb29sdGlwUHJlY2lzaW9uOiAxMDAsXHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwge30pXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBYLUF4aXNcclxuICAgICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5DYXRlZ29yeUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgICBjYXRlZ29yeUZpZWxkOiBcIm5hbWVcIlxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHhBeGlzLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgICBsZXQgc2VyaWVzMSA9IGNoYXJ0LnNlcmllcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNvbHVtblNlcmllcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgbmFtZTogXCJRdWVzdGlvbiBPcHRpb25zXCIsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgY2F0ZWdvcnlYRmllbGQ6IFwibmFtZVwiLFxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuXHJcbiAgICAgIHNlcmllczEuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICAgIHNlcmllczEuc2V0KFwiZmlsbFwiLCBhbTUuY29sb3IoXCIjYjY4YTM1XCIpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgc2VyaWVzMS5zZXQoXCJzdHJva2VcIiwgYW01LmNvbG9yKFwiI2I2OGEzNVwiKSk7IC8vIHNldCBTZXJpZXMgY29sb3IgdG8gcmVkXHJcblxyXG4gICAgICAvLyBBZGQgbGVnZW5kXHJcbiAgICAgIGxldCBsZWdlbmQgPSBjaGFydC5jaGlsZHJlbi5wdXNoKGFtNS5MZWdlbmQubmV3KHJvb3QsIHt9KSk7XHJcbiAgICAgIGxlZ2VuZC5kYXRhLnB1c2goc2VyaWVzMSk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuRU4pIHtcclxuICAgICAgICBsZWdlbmQubGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgICB4OiA1MCxcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZWdlbmQudmFsdWVMYWJlbHMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICAgdGV4dEFsaWduOlwicmlnaHRcIixcclxuICAgICAgICAgcGFkZGluZ1JpZ2h0OjE1XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgIHJldmVyc2VDaGlsZHJlbjogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb290ID0gcm9vdDtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAvL2NoYXJ0IG92ZXJ2aWV3XHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWVPdmVyVmlldyA9IGBjaGFydE92ZXJ2aWV3YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWVPdmVyVmlldylcclxuICAgICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcobmFtZU92ZXJWaWV3KTtcclxuXHJcbiAgICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHBhblk6IGZhbHNlLFxyXG4gICAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcblxyXG4gICAgICAvLyBEZWZpbmUgZGF0YVxyXG5cclxuICAgICAgbGV0IGRhdGEgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gaXRlbS5yZXN1bHRzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLnJlc3VsdHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbS5yZXN1bHRzW2tleV07XHJcbiAgICAgICAgICBsZXQgb2JqZWN0ID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCI8PVwiICsga2V5LFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGEucHVzaChvYmplY3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDcmVhdGUgWS1heGlzXHJcbiAgICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBiYXNlVmFsdWU6IDAsXHJcbiAgICAgICAgICBtYXhQcmVjaXNpb246IDAsXHJcbiAgICAgICAgICBtaW46MCxcclxuICAgICAgICAgIGV4dHJhVG9vbHRpcFByZWNpc2lvbjogMTAwLFxyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHt9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgWC1BeGlzXHJcbiAgICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ2F0ZWdvcnlBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWC5uZXcocm9vdCwge30pLFxyXG4gICAgICAgICAgY2F0ZWdvcnlGaWVsZDogXCJjYXRlZ29yeVwiXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgeEF4aXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICAgIGxldCBzZXJpZXMxID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ29sdW1uU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBuYW1lOiBcIlNjb3JlXCIsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgY2F0ZWdvcnlYRmllbGQ6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBzZXJpZXMxLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgICBzZXJpZXMxLnNldChcImZpbGxcIiwgYW01LmNvbG9yKFwiI2I2OGEzNVwiKSk7IC8vIHNldCBTZXJpZXMgY29sb3IgdG8gcmVkXHJcbiAgICAgIHNlcmllczEuc2V0KFwic3Ryb2tlXCIsIGFtNS5jb2xvcihcIiNiNjhhMzVcIikpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICAvLyBBZGQgbGVnZW5kXHJcbiAgICAgIGxldCBsZWdlbmQgPSBjaGFydC5jaGlsZHJlbi5wdXNoKGFtNS5MZWdlbmQubmV3KHJvb3QsIHt9KSk7XHJcbiAgICAgIGxlZ2VuZC5kYXRhLnNldEFsbChjaGFydC5zZXJpZXMudmFsdWVzKTtcclxuICAgICAgaWYgKCF0aGlzLkVOKSB7XHJcbiAgICAgICAgbGVnZW5kLmxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgICAgeDogNTAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGVnZW5kLnZhbHVlTGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgIHRleHRBbGlnbjpcInJpZ2h0XCIsXHJcbiAgICAgICAgIHBhZGRpbmdSaWdodDoxNVxyXG4gICAgICAgIH0pO1xyXG4gICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICByZXZlcnNlQ2hpbGRyZW46IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgcm9vdCBlbGVtZW50IHdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW1vdmVkXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucm9vdCkge1xyXG4gICAgICAgIHRoaXMucm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2UuZ2V0SW5mbyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5zdXJ2ZXkgPSByZXN1bHQ7XHJcblxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLk5hbWUgPSBcIlRleHRCb3hXaXRoRXh0ZXJuYWxVUkxcIlxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuTGFiZWxLZXkgPSBcIkV4dGVybmFsX1VSTFwiXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbi5FbmdsaXNoXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5WYWx1ZSA9IHRoaXMuc3VydmV5LmV4dGVybmFsVVJMXHJcblxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLk5hbWUgPSBcIlRleHRCb3hXaXRoSW50ZXJuYWxVUkxcIlxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuTGFiZWxLZXkgPSBcIkludGVybmFsX1VSTFwiXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbFxyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuRm9yY2VEaXJlY3Rpb24gPSBGb3JjZURpcmVjdGlvbi5FbmdsaXNoXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5WYWx1ZSA9IHRoaXMuc3VydmV5LmludGVybmFsVVJMXHJcblxyXG5cclxuICAgICAgdGhpcy5icmVhZENydW1iID0gW107XHJcbiAgICAgIHRoaXMuYnJlYWRDcnVtYi5wdXNoKG5ldyBCcmVhZENydW1iKHRoaXMubChcIkhvbWVcIiksIGZhbHNlLCBcIi9cIiksIG5ldyBCcmVhZENydW1iKHRoaXMubChcIlN1cnZleXNfSGVhZGVyXCIpLCBmYWxzZSwgJy4uLy4uLycpLCBuZXcgQnJlYWRDcnVtYih0aGlzLmwoXCJTdXJ2ZXlfRGV0YWlsc1wiKSwgdHJ1ZSkpO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zID0gbmV3IFBhZ2VIZWFkZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuVGl0bGVWYWx1ZSA9dGhpcy5zdXJ2ZXkubG9jYWxpemVkVGl0bGU7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuU2VhcmNoVGV4dEJveC5BY3RpdmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5CcmVhZENydW1iLkFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuQnJlYWRDcnVtYi5CcmVhZENydW1iSXRlbXMgPSB0aGlzLmJyZWFkQ3J1bWI7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIkRlbGV0ZVwiKSwgJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZycsIHRoaXMuc2hvd0RlbGV0ZU1vZGFsKSxcclxuICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIkV4cG9ydFwiKSwgJy9hc3NldHMvaW1hZ2VzL2V4cG9ydC5zdmcnLCB0aGlzLmV4cG9ydClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9EcmFmdC50b0xvY2FsZUxvd2VyQ2FzZSgpXHJcbiAgICAgICAgfHwgdGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9VcGNvbWluZy50b0xvY2FsZUxvd2VyQ2FzZSgpKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChuZXcgRHJvcGRvd25BY3Rpb25JdGVtKHRoaXMubChcIkVkaXRcIiksIFwiL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmdcIiwgdGhpcy5zaG93RWRpdE1vZGFsKSlcclxuXHJcbiAgICAgIGlmICh0aGlzLnN1cnZleS50b3RhbFF1ZXN0aW9uQ291bnQgPiAwKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oIHRoaXMubChcIlByZXZpZXdcIiksICcvYXNzZXRzL2ltYWdlcy92aWV3cy5zdmcnLCB0aGlzLnByZXZpZXdTdXJ2ZXkpKTtcclxuICAgICAgaWYgKHRoaXMuc3VydmV5LnN0YXR1c0l0ZW1JRC50b0xvY2FsZUxvd2VyQ2FzZSgpID09IHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fUHVibGlzaGVkLnRvTG9jYWxlTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgdGhpcy5jYW5UYWtlU3VydmV5ID0gdHJ1ZVxyXG5cclxuICAgICAgaWYgKHRoaXMuc3VydmV5LnN0YXR1c0l0ZW1JRC50b0xvY2FsZUxvd2VyQ2FzZSgpID09IHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fRHJhZnQudG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICAgIHx8IHRoaXMuc3VydmV5LnN0YXR1c0l0ZW1JRC50b0xvY2FsZUxvd2VyQ2FzZSgpID09IHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fQ2xvc2VkLnRvTG9jYWxlTG93ZXJDYXNlKCkpXHJcbiAgICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0odGhpcy5sKFwiUHVibGlzaFwiKSwgJy9hc3NldHMvaW1hZ2VzL1N1Ym1pdC5zdmcnLCB0aGlzLnNob3dQdWJsaXNoTW9kYWwpKVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0odGhpcy5sKFwiVW5QdWJsaXNoXCIpLCAnL2Fzc2V0cy9pbWFnZXMvdW5saW5rLnN2ZycsIHRoaXMuc2hvd1VuUHVibGlzaE1vZGFsKSwpXHJcblxyXG4gICAgICB0aGlzLkVOID0gdGhpcy51dGlsaXR5U2VydmljZS5pc0N1cnJlbnRMYW5ndWFnZUVuZ2xpc2goKTtcclxuICAgICAgdGhpcy5sb2FkUXVlc3Rpb25TZWN0aW9uKCk7XHJcbiAgICAgIHRoaXMubG9hZFN1Ym1pc3Npb25TZWN0aW9uKCk7XHJcbiAgICAgIHRoaXMucGFnZVRpdGxlID0gdGhpcy5zdXJ2ZXkubG9jYWxpemVkVGl0bGVcclxuICAgICAgdGhpcy51cGRhdGVQYWdlVGl0bGUodGhpcy5zdXJ2ZXkubG9jYWxpemVkVGl0bGUpO1xyXG4gICAgICB0aGlzLmxvYWRJbmZvID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNob3dFZGl0TW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmVkaXRNb2RhbC5zaG93RWRpdE1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH1cclxuICBzaG93RGVsZXRlTW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RGVsZXRlTW9kYWwodGhpcy5zdXJ2ZXlJRCk7XHJcblxyXG4gIH1cclxuICBzaG93RWRpdFF1ZXN0aW9uTW9kYWwoaWQsaXNWaWV3T25seSkge1xyXG4gICAgdGhpcy5lZGl0UXVlc3Rpb25Nb2RhbC5lZGl0TW9kYWwoaWQsIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlELGlzVmlld09ubHkpO1xyXG5cclxuICB9XHJcbiAgc2hvd0FkZFF1ZXN0aW9uTW9kYWwoKSB7XHJcbiAgICB0aGlzLkFkZFF1ZXN0aW9uQ29tcG9uZW50LmFkZE1vZGFsKHRoaXMuc3VydmV5SUQsIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlEKTtcclxuXHJcbiAgfVxyXG4gIHNob3dEZWxldGVRdWVzdGlvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLmRlbGV0ZVF1ZXN0aW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dEZWxldGVNb2RhbChpZCk7XHJcblxyXG4gIH1cclxuICBzaG93UHVibGlzaE1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5hZGRQdWJsaXNoTW9kYWwucHVibGlzaE1vZGFsKHRoaXMuc3VydmV5SUQsIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQpO1xyXG5cclxuICB9XHJcbiAgc2hvd1VuUHVibGlzaE1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5hZGRVblB1Ymxpc2hNb2RhbC5zaG93Q29uZmlybWF0aW9uTW9kYWwodGhpcy5zdXJ2ZXlJRCk7XHJcblxyXG4gIH1cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRbaW5kZXhdLmRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgIH1cclxuICAgIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLnVwZGF0ZURpc3BsYXlPcmRlcih0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0KS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcmV2aWV3U3VydmV5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8uLi9pbmZvL3ByZXZpZXcnLCB0aGlzLnN1cnZleUlELCB0aGlzLnN1cnZleS5hdWRpZW5jZUl0ZW1JRF0sIHtyZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlfSk7XHJcbiAgfVxyXG4gIHRha2VTdXJ2ZXkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLy4uL2luZm8vc3VibWlzc2lvbicsIHRoaXMuc3VydmV5SURdLCB7cmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZX0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzKHN0YXR1cykge1xyXG4gICAgdmFyIFN0YXR1c2VzID0gJyc7XHJcbiAgICBzd2l0Y2ggKHN0YXR1cy50b0xvY2FsZUxvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9EcmFmdC50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXNlY29uZGFyeSc7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fQ2xvc2VkLnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2UtZGFuZ2VyJztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9QdWJsaXNoZWQudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1zdWNjZXNzJztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbkFkZFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9VcGNvbWluZy50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXN1Y2Nlc3MnO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkRlbGV0ZVF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkFkZFF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RhdHVzZXM7XHJcbiAgfVxyXG5cclxuICBsb2FkUXVlc3Rpb25TZWN0aW9uKCkge1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lID0gXCJTZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHJpbVRleHRPbkNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlBsYWNlaG9sZGVyID0gdGhpcy5sKFwiU2VhcmNoXCIpO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5FeHRyYUNsYXNzZXMgPSBcImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZm9ybS1jb250cm9sLXNvbGlkIHNlYXJjaC1ib3hcIjtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuSWNvbiA9IFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9zZWFyY2guc3ZnXCJcclxuXHJcblxyXG5cclxuXHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZSA9IFwiU3VydmV5SURcIjtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLlZhbHVlID0gdGhpcy5zdXJ2ZXlJRDtcclxuXHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiU3VydmV5SURcIjtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uT3B0aW9ucyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uT3B0aW9ucy5QYWdlU2l6ZSA9IDEwMDA7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uT3B0aW9ucy5EaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uT3B0aW9ucy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5hcGlRdWVzdGlvblVSTCArICdHZXRBbGxRdWVzdGlvbnMnO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuRmlsdGVycyA9IFt0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyXTtcclxuXHJcblxyXG5cclxuICB9XHJcbiAgc2V0UXVlc3Rpb25MaXN0aW5nUmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbCA9IHJlc3VsdDtcclxuICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIGxldCBvdmVydmlld1F1ZXN0aW9ucyA9IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbC5maWx0ZXIoaXRlbSA9PiBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLlJhZGlvQnV0dG9uIHx8IGl0ZW0ucXVlc3Rpb25UeXBlSXRlbUlEID09IFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0IHx8IGl0ZW0ucXVlc3Rpb25UeXBlSXRlbUlEID09IFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3QpXHJcbiAgICBpZiAob3ZlcnZpZXdRdWVzdGlvbnMubGVuZ3RoID4gMClcclxuICAgICAgdGhpcy5sb2FkU3VydmV5T3ZlcnZpZXcoKTtcclxuICB9XHJcblxyXG5cclxuICBvblN1Y2Nlc3NIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSh0aGlzLmwoXCJSZWNvcmRVcGRhdGVkXCIpLCBudWxsLCBudWxsLCBmYWxzZSk7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Y2Nlc3NEZWxldGVIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSh0aGlzLmwoXCJSZWNvcmREZWxldGVkXCIpLCBudWxsLCBudWxsLCBmYWxzZSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIuLi8uLi9cIl0sIHtyZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlfSk7XHJcbiAgfVxyXG5cclxuICBvblN1Y2Nlc3NBZGRRdWVzdGlvbkhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZEFkZGVkXCIpLCBudWxsLCBudWxsLCBmYWxzZSk7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfVxyXG4gIG9uU3VjY2Vzc0VkaXRRdWVzdGlvbkhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZFVwZGF0ZWRcIiksIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZVF1ZXN0aW9uSGFuZGxlciA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UodGhpcy5sKFwiUmVjb3JkRGVsZXRlZFwiKSwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBzaG93RGVsZXRlU3VibWlzc2lvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLmRlbGV0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKGlkKTtcclxuXHJcbiAgfVxyXG4gIHNob3dFbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RWxpbWluYXRlTW9kYWwoaWQpO1xyXG4gIH1cclxuICBzaG93VW5FbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMudW5FbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dVbkVsaW1pbmF0ZU1vZGFsKGlkKTtcclxuICB9XHJcbiAgb25TdWNjZXNzRGVsZXRlSGFuZGxlclN1Ym1pc3Npb24gPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMubChcIlJlY29yZERlbGV0ZWRcIiksIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgIHRoaXMubG9hZFN1Ym1pc3Npb25TZWN0aW9uKCk7XHJcbiAgfVxyXG4gIGxvYWRTdWJtaXNzaW9uU2VjdGlvbigpIHtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZSA9IFwiU2VhcmNoVGV4dEJveFwiO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlRyaW1UZXh0T25DaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5QbGFjZWhvbGRlciA9IHRoaXMubChcIlNlYXJjaFwiKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGZvcm0tY29udHJvbC1zb2xpZCBzZWFyY2gtYm94XCI7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkljb24gPSBcIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvc2VhcmNoLnN2Z1wiXHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwiU2VhcmNoVGV4dFwiO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcblxyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWUgPSBcIlN1cnZleUlEXCI7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5WYWx1ZSA9IHRoaXMuc3VydmV5SUQ7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcIlN1cnZleUlEXCI7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuUGFnZVNpemUgPSAxMDtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5zdXJ2ZXlTZXJ2aWNlLmFwaVVSTCArICdHZXRBbGxTdXJ2ZXlTdWJtaXNzaW9uJztcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lXTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRmlsdGVycyA9IFt0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlciwgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlcl07XHJcblxyXG5cclxuXHJcbiAgfVxyXG4gIHNldFN1Ym1pc3Npb25MaXN0aW5nUmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93U3VibWlzc2lvblBhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcbiAgbG9hZFN1cnZleU92ZXJ2aWV3KCkge1xyXG4gICAgdGhpcy5zdXJ2ZXlTZXJ2aWNlLmdldFN1cnZleU92ZXJ2aWV3KHRoaXMuc3VydmV5SUQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMucXVlc3Rpb25PdmVydmlld1Jlc3VsdCA9IHJlcyBhcyBhbnlcclxuICAgICAgdGhpcy5zaG93T3ZlcnZpZXcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRDaGFydCh0aGlzLnF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHRbMF0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGV4cG9ydCA9ICgpID0+IHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZVxyXG4gICAgICAuZXhwb3J0KHRoaXMuc3VydmV5SUQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoKHJlc3VsdCBhcyBhbnkpIGFzIEJsb2IsIHRoaXMucGFnZVRpdGxlICsgXCIueGxzeFwiKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hJblF1ZXN0aW9uTGlzdCh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlKVxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsLmZpbHRlcihpdGVtID0+IGl0ZW0ubG9jYWxpemVkVGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLXRvb2xiYXItLT5cclxuPGRpdiAqbmdJZj1cImxvYWRJbmZvXCI+XHJcbiAgPGJic2YtcGFnZS1oZWFkZXItY29tcG9uZW50IFtvcHRpb25zXT1cInBhZ2VIZWFkZXJPcHRpb25zXCI+PC9iYnNmLXBhZ2UtaGVhZGVyLWNvbXBvbmVudD5cclxuPC9kaXY+XHJcbjwhLS1lbmQgdG9vbGJhci0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLXh4bFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiICpuZ0lmPVwibG9hZEluZm9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLW1hcmdpbi1ib3R0b21cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmVyeS1kYXRlIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ib3hlcyBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYlRvb2x0aXA9XCJ7e2woJ0RhdGUnKX19XCIgY2xhc3M9XCJpY29uLWJveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhbGVuZGFyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIiAqbmdJZj1cInN1cnZleS5zdGFydERhdGU9PW51bGxcIj5cclxuICAgICAgICAgICAgICAgIHt7bCgnTm90U3RhcnRlZFlldCcpfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdXJ2ZXktY291bnRlci10aXRsZSBkLWZsZXggZmxleC1zdGFja1wiICpuZ0lmPVwic3VydmV5LnN0YXJ0RGF0ZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAge3tzdXJ2ZXkuc3RhcnREYXRlIHxzdXJ2ZXlEYXRlfX0gLSB7e3N1cnZleS5lbmREYXRlIT1udWxsPyhzdXJ2ZXkuZW5kRGF0ZXxzdXJ2ZXlEYXRlKTpcIlwifX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHRcIiAqbmdJZj1cInN1cnZleS5lbmREYXRlPT1udWxsXCI+e3tsKCdIYXNOb0VuZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzKHN1cnZleS5zdGF0dXNJdGVtSUQpXCI+e3tzdXJ2ZXkubG9jYWxpemVkU3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBuZ2JUb29sdGlwPVwie3tsKCdBdWRpZW5jZScpfX1cIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG14LTJcIj57e3N1cnZleS5sb2NhbGl6ZWRBdWRpZW5jZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBjYXJkLWRhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5JbnRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiVGV4dEJveFdpdGhJbnRlcm5hbFVSTFwiIFtncm91cF09XCJ1cmxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAqbmdJZj1cImNhblRha2VTdXJ2ZXkmJiAoc3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkV4dGVybmFsfHxzdXJ2ZXkuYXVkaWVuY2VJdGVtSUQ9PUF1ZGllbmNlVHlwZUVudW0uQm90aClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJUZXh0Qm94V2l0aEV4dGVybmFsVVJMXCIgW2dyb3VwXT1cInVybEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxwIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiICpuZ0lmPVwic3VydmV5LmxvY2FsaXplZERlc2NcIj5cclxuICAgICAgICB7e3N1cnZleS5sb2NhbGl6ZWREZXNjfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWN1c3RvbVwiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluaz5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bCgnUXVlc3Rpb25zJyl9fVxyXG4gICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1zZWFyY2ggcGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPbkNoYW5nZSk9XCJzZWFyY2hJblF1ZXN0aW9uTGlzdCgkZXZlbnQpXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5BZGRRdWVzdGlvblwiIGNsYXNzPVwiYnRuIGJ0bi1icmFuZCBidG4tc20gc3ViaGVhZGVyLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93QWRkUXVlc3Rpb25Nb2RhbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7bCgnQWRkJyl9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYk5hdkNvbnRlbnQgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWluZm9cIiBbY2RrRHJhZ0Rpc2FibGVkXT1cImNhblRha2VTdXJ2ZXlcIiBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5nUXVlc3Rpb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMjVweCBtZS00XCIgY2RrRHJhZ0hhbmRsZSAqbmdJZj1cIiFjYW5UYWtlU3VydmV5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTdcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9yZW9yZGVyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnVHlwZScpfX1cIj57e2l0ZW0ubG9jYWxpemVkUXVlc3Rpb25UeXBlSXRlbX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnQXVkaWVuY2UnKX19XCI+e3tpdGVtLmxvY2FsaXplZEF1ZGllbmNlVHlwZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtYnJhbmQtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzUmVsYXRlZFRvU3VydmV5UXVlc3Rpb25cIj57e2woJ0xpbmtlZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBteC0yXCIgKm5nSWY9XCIhaXRlbS5pc1Zpc2libGVcIiBuZ2JUb29sdGlwPVwie3tsKCdOb3RWaXNpYmxlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsKFwiTm90VmlzaWJsZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZHJvcGRvd24tY3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiRU4gPyAnYm90dG9tLXJpZ2h0JyA6ICdib3R0b20tbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlLWN1c3RvbSBidG4gYnRuLWNsZWFyXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhcmQtZHJvcGRvd24uc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51LWN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIShjYW5FZGl0UXVlc3Rpb24mJmNhbkRlbGV0ZVF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0UXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQsdHJ1ZSlcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkRldGFpbHNcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5FZGl0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd0VkaXRRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRCxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayB0eXBlPVwiYnV0dG9uXCIgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkVkaXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5EZWxldGVRdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRClcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIj48L3NwYW4+IHt7bChcIkRlbGV0ZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktY291bnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIj57e2l0ZW0ubG9jYWxpemVkVGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtYnJhbmQgYmFkZ2Utc3F1YXJlIG1zLTIgbWUtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+e3tpdGVtLnRvdGFsU2NvcmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UXVlc3Rpb25MaXN0aW5nUmVzdWx0KCRldmVudClcIiBbb3B0aW9uc109XCJwYWdpbmdRdWVzdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgI3BhZ2luZ1F1ZXN0aW9uVmlld0VsZW1lbnQ+PC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tcmVzdWx0cyAqbmdJZj1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+PC9hcHAtbm8tcmVzdWx0cz5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKCdTdWJtaXNzaW9ucycpfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1zZWFyY2ggcGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzU3VibWlzc2lvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tY29udGFpbmVyXCIgW2hpZGRlbl09XCJwYWdpbmdTdWJtaXNzaW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiB7e2woJ05hbWUnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnRW1haWwnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnVHlwZScpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3tsKCdDcmVhdGVkJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ1Njb3JlJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRhYmxlLWFjdGlvblwiPnt7bChcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5nU3VibWlzc2lvblJlc3VsdDsgbGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS1jbGFtcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0ubG9jYWxpemVkTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWRhbmdlciBteC0yXCIgKm5nSWY9XCJpdGVtLmlzRWxpbWluYXRlZCYmaXRlbS5hbGxvd0VsaW1pbmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bCgnRWxpbWluYXRlZCcpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uZW1haWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaXNJbnRlcm5hbFVzZXI/IGwoJ0ludGVybmFsVXNlcnMnKTpsKCdFeHRlcm5hbFVzZXJzJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLmNyZWF0ZWR8c3VydmV5RGF0ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS50b3RhbFNjb3JlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS1hY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JUb29sdGlwPVwie3tsKCdQcmV2aWV3Jyl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy4uLy4uL2luZm8vcmVzdWx0JywgaXRlbS5pRF9HVUlEXVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9hbnN3ZXJzLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIWl0ZW0uaXNFbGltaW5hdGVkJiZpdGVtLmFsbG93RWxpbWluYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7dGhpcy5sKCdFbGltaW5hdGVIaW50Jyl9fVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIChjbGljayk9XCJzaG93RWxpbWluYXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy91bmxpbmsuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJpdGVtLmlzRWxpbWluYXRlZCYmaXRlbS5hbGxvd0VsaW1pbmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e3RoaXMubCgnVW5FbGltaW5hdGUnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgKGNsaWNrKT1cInNob3dVbkVsaW1pbmF0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9saW5rLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ0RlbGV0ZScpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIiAoY2xpY2spPVwic2hvd0RlbGV0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRTdWJtaXNzaW9uTGlzdGluZ1Jlc3VsdCgkZXZlbnQpXCIgW29wdGlvbnNdPVwicGFnaW5nU3VibWlzc2lvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCIgI3BhZ2luZ1N1Ym1pc3Npb25WaWV3RWxlbWVudD48L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1uby1yZXN1bHRzICpuZ0lmPVwicGFnaW5nU3VibWlzc2lvblJlc3VsdC5sZW5ndGggPT0gMFwiPjwvYXBwLW5vLXJlc3VsdHM+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInNob3dPdmVydmlld1wiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rIChjbGljayk9XCJsb2FkU3VydmV5T3ZlcnZpZXcoKVwiPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKFwiT3ZlcnZpZXdcIikgfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdGl0bGVcIj4ge3tsKFwiUXVlc3Rpb25zXCIpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtcGlsbHMgY3VzdG9tLW5hdnNcIiBvcmllbnRhdGlvbj1cInZlcnRpY2FsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgbmdiTmF2SXRlbT1cInt7aXRlbS5sb2NhbGl6ZWRUaXRsZX19XCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb25PdmVydmlld1Jlc3VsdFwiIChjbGljayk9XCJsb2FkQ2hhcnQoaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmdiTmF2TGluaz57e2l0ZW0ubG9jYWxpemVkVGl0bGV9fTwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdGl0bGVcIj57e2woXCJPdmVydmlld1wiKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjaGFydGRpdlwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNDAwcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1sb2dvXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LXRpdGxlXCI+e3tsKFwiU2NvcmVcIikgfX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImNoYXJ0T3ZlcnZpZXdcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwMHB4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGUtbG9nb1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuXHJcblxyXG4gICAgICA8ZGl2IFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gIDxhcHAtZWRpdC1zdXJ2ZXkgI2VkaXRNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPjwvYXBwLWVkaXQtc3VydmV5PlxyXG4gIDxhcHAtZGVsZXRlLXN1cnZleSAjZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NEZWxldGVIYW5kbGVyXCI+PC9hcHAtZGVsZXRlLXN1cnZleT5cclxuICA8YXBwLWFkZC1xdWVzdGlvbiAjYWRkUXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIiBbb25TdWNjZXNzQWRkSGFuZGxlcl09XCJvblN1Y2Nlc3NBZGRRdWVzdGlvbkhhbmRsZXJcIj48L2FwcC1hZGQtcXVlc3Rpb24+XHJcbiAgPGFwcC1lZGl0LXF1ZXN0aW9uICNlZGl0UXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIiBbb25TdWNjZXNzRWRpdEhhbmRsZXJdPVwib25TdWNjZXNzRWRpdFF1ZXN0aW9uSGFuZGxlclwiPjwvYXBwLWVkaXQtcXVlc3Rpb24+XHJcbiAgPGFwcC1kZWxldGUtcXVlc3Rpb24gI2RlbGV0ZVF1ZXN0aW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nUXVlc3Rpb25FbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzRGVsZXRlUXVlc3Rpb25IYW5kbGVyXCI+PC9hcHAtZGVsZXRlLXF1ZXN0aW9uPlxyXG4gIDxhcHAtcHVibGlzaC1zdXJ2ZXkgI2FkZFB1Ymxpc2hNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiICpuZ0lmPVwibG9hZEluZm9cIiBbc2hvd1RvZ2dsZV09XCJzdXJ2ZXkuaXNTaG93VG9nZ2xlT2ZTY29yZVJlc3VsdEFmdGVyU3VibWlzc2lvblwiPlxyXG4gIDwvYXBwLXB1Ymxpc2gtc3VydmV5PlxyXG4gIDxhcHAtdW5wdWJsaXNoLXN1cnZleSAjYWRkVW5QdWJsaXNoTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj5cclxuICA8L2FwcC11bnB1Ymxpc2gtc3VydmV5PlxyXG4gIDxhcHAtZGVsZXRlLXN1Ym1pc3Npb24gI2RlbGV0ZVN1Ym1pc3Npb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdTdWJtaXNzaW9uRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NEZWxldGVIYW5kbGVyU3VibWlzc2lvblwiPjwvYXBwLWRlbGV0ZS1zdWJtaXNzaW9uPlxyXG4gIDxhcHAtZWxpbWluYXRlLXN1Ym1pc3Npb24gI2VsaW1pbmF0ZU1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC1lbGltaW5hdGUtc3VibWlzc2lvbj5cclxuICA8YXBwLXVuRWxpbWluYXRlLXN1Ym1pc3Npb24gI3VuRWxpbWluYXRlTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nU3VibWlzc2lvbkVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCI+PC9hcHAtdW5FbGltaW5hdGUtc3VibWlzc2lvbj5cclxuIl19
|
|
536
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUlOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsVUFBVSxFQUNWLGNBQWMsRUFDZCxTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFPckUsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLHNCQUFz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QVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRXpDLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2pELHNDQUFzQztzQkFEckMsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR25ELG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2hELGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRy9DLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2pELHdDQUF3QztzQkFEdkMsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3JELDJDQUEyQztzQkFEMUMsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRzlDLDZDQUE2QztzQkFENUMsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBc0JoRCxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWV6RCx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVibGlzaFN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vcHVibGlzaC1zdXJ2ZXkvcHVibGlzaC1zdXJ2ZXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWRkUXVlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2RlbGV0ZS1xdWVzdGlvbi9kZWxldGUtcXVlc3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdFF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0LXF1ZXN0aW9uL2VkaXQtcXVlc3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdFN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vLi4vZWRpdC1zdXJ2ZXkvZWRpdC1zdXJ2ZXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVsZXRlU3VydmV5Q29tcG9uZW50IH0gZnJvbSAnLi8uLi9kZWxldGUtc3VydmV5L2RlbGV0ZS1zdXJ2ZXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgTmdab25lLFxyXG4gIE9uSW5pdCxcclxuICBQTEFURk9STV9JRCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQXBwQmFzZUNvbXBvbmVudCxcclxuICBCcmVhZENydW1iLFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgRHJvcGRvd25BY3Rpb25JdGVtLFxyXG4gIEZpbHRlckl0ZW0sXHJcbiAgRmlsdGVyVHlwZSxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBJbnB1dFR5cGUsXHJcbiAgUGFnZUhlYWRlck9wdGlvbnMsXHJcbiAgUGFnaW5nQ29tcG9uZW50LFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgVGV4dEJveE9wdGlvbnMsXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0ICogYXMgYW01IGZyb20gJ0BhbWNoYXJ0cy9hbWNoYXJ0czUnO1xyXG5pbXBvcnQgKiBhcyBhbTV4eSBmcm9tICdAYW1jaGFydHMvYW1jaGFydHM1L3h5JztcclxuaW1wb3J0IGFtNXRoZW1lc19BbmltYXRlZCBmcm9tICdAYW1jaGFydHMvYW1jaGFydHM1L3RoZW1lcy9BbmltYXRlZCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgVW5QdWJsaXNoU3VydmV5Q29tcG9uZW50IH0gZnJvbSAnLi91bnB1Ymxpc2gtc3VydmV5L3VucHVibGlzaC1zdXJ2ZXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVsZXRlU3VibWlzc2lvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N1Ym1pc3Npb25zL2RlbGV0ZS1zdWJtaXNzaW9uL2RlbGV0ZS1zdWJtaXNzaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQgfSBmcm9tICcuLi9zdWJtaXNzaW9ucy9lbGltaW5hdGUtc3VibWlzc2lvbi9lbGltaW5hdGUtc3VibWlzc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVbkVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQgfSBmcm9tICcuLi9zdWJtaXNzaW9ucy91bmVsaW1pbmF0ZS1zdWJtaXNzaW9uL3VuZWxpbWluYXRlLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBBdWRpZW5jZVR5cGUsXHJcbiAgU3VydmV5TW9kZSxcclxuICBTdXJ2ZXlPcHRpb25UeXBlLFxyXG4gIFN1cnZleVN0YXR1c0VudW0sXHJcbn0gZnJvbSAnLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvc3VydmV5LXF1ZXN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL3N1cnZleS5tb2R1bGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VydmV5LWluZm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXJ2ZXktaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3VydmV5LWluZm8uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5SW5mb0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHBhZ2VIZWFkZXJPcHRpb25zOiBQYWdlSGVhZGVyT3B0aW9ucztcclxuICBicmVhZENydW1iOiBCcmVhZENydW1iW107XHJcbiAgc3VydmV5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRNb2RhbDogRWRpdFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlZGl0UXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVkaXRRdWVzdGlvbk1vZGFsOiBFZGl0UXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRlbGV0ZVF1ZXN0aW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVRdWVzdGlvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRRdWVzdGlvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgQWRkUXVlc3Rpb25Db21wb25lbnQ6IEFkZFF1ZXN0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FkZFB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFkZFB1Ymxpc2hNb2RhbDogUHVibGlzaFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRVblB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFkZFVuUHVibGlzaE1vZGFsOiBVblB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlU3VibWlzc2lvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGVsZXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogRGVsZXRlU3VibWlzc2lvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgndW5FbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHVuRWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogVW5FbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50O1xyXG4gIGVuYWJsZUFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgVGV4dEJveFdpdGhFeHRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVGV4dEJveFdpdGhJbnRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdXJsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlYXJjaFRleHRCb3ggPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFTjogYm9vbGVhbjtcclxuICBTZWFyY2hUZXh0Qm94T3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgcHJpdmF0ZSByb290ITogYW01LlJvb3Q7XHJcbiAgc3VydmV5SUQ6IGFueTtcclxuICBzdXJ2ZXk6IGFueTtcclxuICBsb2FkSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBTdXJ2ZXlTdGF0dXNFbnVtID0gU3VydmV5U3RhdHVzRW51bTtcclxuICBwdWJsaWMgQXVkaWVuY2VUeXBlRW51bSA9IEF1ZGllbmNlVHlwZTtcclxuICBzdXJ2ZXlRdWVzdGlvbnM6IFN1cnZleVF1ZXN0aW9uRFRPW10gPSBbXTtcclxuICBhcGlRdWVzdGlvblVSTCA9IHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFwaVVSTDtcclxuICBmaWx0ZXJzUXVlc3Rpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgY2FuVGFrZVN1cnZleTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vUXVlc3Rpb25zIFNlY3Rpb25cclxuICBAVmlld0NoaWxkKCdwYWdpbmdRdWVzdGlvblZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcGFnaW5nUXVlc3Rpb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdRdWVzdGlvbk9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIGNhbkVkaXRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5BZGRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5EZWxldGVRdWVzdGlvbjogYm9vbGVhbjtcclxuICBzZWFyY2hRdWVzdGlvblRleHRGaWx0ZXI6IGFueTtcclxuICBTdXJ2ZXlJRE9wdGlvbnM6IGFueTtcclxuICBzZWFyY2hTdXJ2ZXlJREZpbHRlcjogRmlsdGVySXRlbTtcclxuXHJcbiAgLy9TdWJtaXNzaW9uIFNlY3Rpb25cclxuICBmaWx0ZXJzU3VibWlzc2lvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBAVmlld0NoaWxkKCdwYWdpbmdTdWJtaXNzaW9uVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwYWdpbmdTdWJtaXNzaW9uRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgcGFnaW5nU3VibWlzc2lvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdTdWJtaXNzaW9uT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICBzaG93U3VibWlzc2lvblBhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIHNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlcjogRmlsdGVySXRlbTtcclxuICBxdWVzdGlvbk92ZXJ2aWV3UmVzdWx0OiBhbnk7XHJcbiAgcGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDogYW55O1xyXG4gIHNob3dPdmVydmlldzogYm9vbGVhbjtcclxuICBzaG93TmF2OiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1cnZleVNlcnZpY2U6IFN1cnZleVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcbiAgfVxyXG4gIC8vIFJ1biB0aGUgZnVuY3Rpb24gb25seSBpbiB0aGUgYnJvd3NlclxyXG4gIGJyb3dzZXJPbmx5KGY6ICgpID0+IHZvaWQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgZigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XHJcblxyXG4gIG1heWJlRGlzcG9zZVJvb3QoZGl2SWQpIHtcclxuICAgIGFtNS5hcnJheS5lYWNoKGFtNS5yZWdpc3RyeS5yb290RWxlbWVudHMsIChyb290KSA9PiB7XHJcbiAgICAgIGlmIChyb290KSB7XHJcbiAgICAgICAgaWYgKHJvb3QuZG9tLmlkID09IGRpdklkKSB7XHJcbiAgICAgICAgICByb290LmRpc3Bvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZENoYXJ0KGl0ZW0pIHtcclxuICAgIC8vIENoYXJ0IGNvZGUgZ29lcyBpbiBoZXJlXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWUgPSBgY2hhcnRkaXZgO1xyXG4gICAgICB0aGlzLm1heWJlRGlzcG9zZVJvb3QobmFtZSk7XHJcbiAgICAgIGxldCByb290ID0gYW01LlJvb3QubmV3KG5hbWUpO1xyXG4gICAgICByb290LnNldFRoZW1lcyhbYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KV0pO1xyXG5cclxuICAgICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgICBwYW5YOiBmYWxzZSxcclxuICAgICAgICAgIHBhblk6IGZhbHNlLFxyXG4gICAgICAgICAgd2hlZWxYOiAnbm9uZScsXHJcbiAgICAgICAgICB3aGVlbFk6ICdub25lJyxcclxuICAgICAgICAgIHBhZGRpbmdCb3R0b206IDUwLFxyXG4gICAgICAgICAgcGFkZGluZ1RvcDogNDAsXHJcbiAgICAgICAgICBsYXlvdXQ6IHJvb3QudmVydGljYWxMYXlvdXQsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIERlZmluZSBkYXRhXHJcbiAgICAgIGxldCBkYXRhID0gaXRlbS5vcHRpb25zLm1hcCgodmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogdmFsdWUubG9jYWxpemVkVGl0bGUsXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUubnVtYmVyT2ZTZWxlY3RlZFRpbWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIENyZWF0ZSBZLWF4aXNcclxuICAgICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIGJhc2VWYWx1ZTogMCxcclxuICAgICAgICAgIG1heFByZWNpc2lvbjogMCxcclxuICAgICAgICAgIG1pbjogMCxcclxuICAgICAgICAgIGV4dHJhVG9vbHRpcFByZWNpc2lvbjogMTAwLFxyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIFgtQXhpc1xyXG4gICAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNhdGVnb3J5QXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICAgIGNhdGVnb3J5RmllbGQ6ICduYW1lJyxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICB4QXhpcy5kYXRhLnNldEFsbChkYXRhKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBzZXJpZXNcclxuICAgICAgbGV0IHNlcmllczEgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgICBhbTV4eS5Db2x1bW5TZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIG5hbWU6ICdRdWVzdGlvbiBPcHRpb25zJyxcclxuICAgICAgICAgIHhBeGlzOiB4QXhpcyxcclxuICAgICAgICAgIHlBeGlzOiB5QXhpcyxcclxuICAgICAgICAgIHZhbHVlWUZpZWxkOiAndmFsdWUnLFxyXG4gICAgICAgICAgY2F0ZWdvcnlYRmllbGQ6ICduYW1lJyxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgc2VyaWVzMS5kYXRhLnNldEFsbChkYXRhKTtcclxuICAgICAgc2VyaWVzMS5zZXQoJ2ZpbGwnLCBhbTUuY29sb3IoJyNiNjhhMzUnKSk7IC8vIHNldCBTZXJpZXMgY29sb3IgdG8gcmVkXHJcbiAgICAgIHNlcmllczEuc2V0KCdzdHJva2UnLCBhbTUuY29sb3IoJyNiNjhhMzUnKSk7IC8vIHNldCBTZXJpZXMgY29sb3IgdG8gcmVkXHJcblxyXG4gICAgICAvLyBBZGQgbGVnZW5kXHJcbiAgICAgIGxldCBsZWdlbmQgPSBjaGFydC5jaGlsZHJlbi5wdXNoKGFtNS5MZWdlbmQubmV3KHJvb3QsIHt9KSk7XHJcbiAgICAgIGxlZ2VuZC5kYXRhLnB1c2goc2VyaWVzMSk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuRU4pIHtcclxuICAgICAgICBsZWdlbmQubGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgICB4OiA1MCxcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZWdlbmQudmFsdWVMYWJlbHMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgICAgIHBhZGRpbmdSaWdodDogMTUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgICByZXZlcnNlQ2hpbGRyZW46IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIC8vY2hhcnQgb3ZlcnZpZXdcclxuICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4ge1xyXG4gICAgICBsZXQgbmFtZU92ZXJWaWV3ID0gYGNoYXJ0T3ZlcnZpZXdgO1xyXG4gICAgICB0aGlzLm1heWJlRGlzcG9zZVJvb3QobmFtZU92ZXJWaWV3KTtcclxuICAgICAgbGV0IHJvb3QgPSBhbTUuUm9vdC5uZXcobmFtZU92ZXJWaWV3KTtcclxuXHJcbiAgICAgIHJvb3Quc2V0VGhlbWVzKFthbTV0aGVtZXNfQW5pbWF0ZWQubmV3KHJvb3QpXSk7XHJcblxyXG4gICAgICBsZXQgY2hhcnQgPSByb290LmNvbnRhaW5lci5jaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlhZQ2hhcnQubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHBhblk6IGZhbHNlLFxyXG4gICAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBEZWZpbmUgZGF0YVxyXG5cclxuICAgICAgbGV0IGRhdGEgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gaXRlbS5yZXN1bHRzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLnJlc3VsdHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbS5yZXN1bHRzW2tleV07XHJcbiAgICAgICAgICBsZXQgb2JqZWN0ID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogJzw9JyArIGtleSxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGRhdGEucHVzaChvYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ3JlYXRlIFktYXhpc1xyXG4gICAgICBsZXQgeUF4aXMgPSBjaGFydC55QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LlZhbHVlQXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgYmFzZVZhbHVlOiAwLFxyXG4gICAgICAgICAgbWF4UHJlY2lzaW9uOiAwLFxyXG4gICAgICAgICAgbWluOiAwLFxyXG4gICAgICAgICAgZXh0cmFUb29sdGlwUHJlY2lzaW9uOiAxMDAsXHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWS5uZXcocm9vdCwge30pLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgWC1BeGlzXHJcbiAgICAgIGxldCB4QXhpcyA9IGNoYXJ0LnhBeGVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ2F0ZWdvcnlBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICByZW5kZXJlcjogYW01eHkuQXhpc1JlbmRlcmVyWC5uZXcocm9vdCwge30pLFxyXG4gICAgICAgICAgY2F0ZWdvcnlGaWVsZDogJ2NhdGVnb3J5JyxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICB4QXhpcy5kYXRhLnNldEFsbChkYXRhKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBzZXJpZXNcclxuICAgICAgbGV0IHNlcmllczEgPSBjaGFydC5zZXJpZXMucHVzaChcclxuICAgICAgICBhbTV4eS5Db2x1bW5TZXJpZXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIG5hbWU6ICdTY29yZScsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgIGNhdGVnb3J5WEZpZWxkOiAnY2F0ZWdvcnknLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHNlcmllczEuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICAgIHNlcmllczEuc2V0KCdmaWxsJywgYW01LmNvbG9yKCcjYjY4YTM1JykpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICBzZXJpZXMxLnNldCgnc3Ryb2tlJywgYW01LmNvbG9yKCcjYjY4YTM1JykpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICAvLyBBZGQgbGVnZW5kXHJcbiAgICAgIGxldCBsZWdlbmQgPSBjaGFydC5jaGlsZHJlbi5wdXNoKGFtNS5MZWdlbmQubmV3KHJvb3QsIHt9KSk7XHJcbiAgICAgIGxlZ2VuZC5kYXRhLnNldEFsbChjaGFydC5zZXJpZXMudmFsdWVzKTtcclxuICAgICAgaWYgKCF0aGlzLkVOKSB7XHJcbiAgICAgICAgbGVnZW5kLmxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgICAgeDogNTAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGVnZW5kLnZhbHVlTGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDE1LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgcmV2ZXJzZUNoaWxkcmVuOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCByb290IGVsZW1lbnQgd2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbW92ZWRcclxuICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5yb290KSB7XHJcbiAgICAgICAgdGhpcy5yb290LmRpc3Bvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmIChTdXJ2ZXlNb2R1bGUuc3VydmV5TW9kZSA9PSBTdXJ2ZXlNb2RlLlN1cnZleV9GdWxsX0FjY2VzcylcclxuICAgICAgdGhpcy5lbmFibGVBY3Rpb25zID0gdHJ1ZTtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5nZXRJbmZvKHRoaXMuc3VydmV5SUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuc3VydmV5ID0gcmVzdWx0O1xyXG5cclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5OYW1lID0gJ1RleHRCb3hXaXRoRXh0ZXJuYWxVUkwnO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuTGFiZWxLZXkgPSAnRXh0ZXJuYWxfVVJMJztcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaDtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLkVuYWJsZUNvcHlUb0NsaXBib2FyZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5WYWx1ZSA9IHRoaXMuc3VydmV5LmV4dGVybmFsVVJMO1xyXG5cclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5OYW1lID0gJ1RleHRCb3hXaXRoSW50ZXJuYWxVUkwnO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuTGFiZWxLZXkgPSAnSW50ZXJuYWxfVVJMJztcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLkZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaDtcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLkVuYWJsZUNvcHlUb0NsaXBib2FyZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5WYWx1ZSA9IHRoaXMuc3VydmV5LmludGVybmFsVVJMO1xyXG5cclxuICAgICAgdGhpcy5icmVhZENydW1iID0gW107XHJcbiAgICAgIHRoaXMuYnJlYWRDcnVtYi5wdXNoKFxyXG4gICAgICAgIG5ldyBCcmVhZENydW1iKHRoaXMubCgnSG9tZScpLCBmYWxzZSwgJy8nKSxcclxuICAgICAgICBuZXcgQnJlYWRDcnVtYih0aGlzLmwoJ1N1cnZleXNfSGVhZGVyJyksIGZhbHNlLCAnLi4vLi4vJyksXHJcbiAgICAgICAgbmV3IEJyZWFkQ3J1bWIodGhpcy5sKCdTdXJ2ZXlfRGV0YWlscycpLCB0cnVlKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zID0gbmV3IFBhZ2VIZWFkZXJPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuVGl0bGVWYWx1ZSA9IHRoaXMuc3VydmV5LmxvY2FsaXplZFRpdGxlO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLlNlYXJjaFRleHRCb3guQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuQnJlYWRDcnVtYi5BY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkJyZWFkQ3J1bWIuQnJlYWRDcnVtYkl0ZW1zID0gdGhpcy5icmVhZENydW1iO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5BY3RpdmUgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVBY3Rpb25zKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMubCgnRGVsZXRlJyksXHJcbiAgICAgICAgICAgICcvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnLFxyXG4gICAgICAgICAgICB0aGlzLnNob3dEZWxldGVNb2RhbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2goXHJcbiAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgIHRoaXMubCgnRXhwb3J0JyksXHJcbiAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvZXhwb3J0LnN2ZycsXHJcbiAgICAgICAgICB0aGlzLmV4cG9ydFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZUFjdGlvbnMpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgICAgICB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0RyYWZ0LnRvTG9jYWxlTG93ZXJDYXNlKCkgfHxcclxuICAgICAgICAgIHRoaXMuc3VydmV5LnN0YXR1c0l0ZW1JRC50b0xvY2FsZUxvd2VyQ2FzZSgpID09XHJcbiAgICAgICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fVXBjb21pbmcudG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgICAgICB0aGlzLmwoJ0VkaXQnKSxcclxuICAgICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0VkaXRNb2RhbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnN1cnZleS50b3RhbFF1ZXN0aW9uQ291bnQgPiAwKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMubCgnUHJldmlldycpLFxyXG4gICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvdmlld3Muc3ZnJyxcclxuICAgICAgICAgICAgdGhpcy5wcmV2aWV3U3VydmV5XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fUHVibGlzaGVkLnRvTG9jYWxlTG93ZXJDYXNlKClcclxuICAgICAgKVxyXG4gICAgICAgIHRoaXMuY2FuVGFrZVN1cnZleSA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZUFjdGlvbnMpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgICAgICB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0RyYWZ0LnRvTG9jYWxlTG93ZXJDYXNlKCkgfHxcclxuICAgICAgICAgIHRoaXMuc3VydmV5LnN0YXR1c0l0ZW1JRC50b0xvY2FsZUxvd2VyQ2FzZSgpID09XHJcbiAgICAgICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fQ2xvc2VkLnRvTG9jYWxlTG93ZXJDYXNlKClcclxuICAgICAgICApXHJcbiAgICAgICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2goXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICAgICAgdGhpcy5sKCdQdWJsaXNoJyksXHJcbiAgICAgICAgICAgICAgJy9hc3NldHMvaW1hZ2VzL1N1Ym1pdC5zdmcnLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1B1Ymxpc2hNb2RhbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgICAgICB0aGlzLmwoJ1VuUHVibGlzaCcpLFxyXG4gICAgICAgICAgICAgICcvYXNzZXRzL2ltYWdlcy91bmxpbmsuc3ZnJyxcclxuICAgICAgICAgICAgICB0aGlzLnNob3dVblB1Ymxpc2hNb2RhbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuRU4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmlzQ3VycmVudExhbmd1YWdlRW5nbGlzaCgpO1xyXG4gICAgICB0aGlzLmxvYWRRdWVzdGlvblNlY3Rpb24oKTtcclxuICAgICAgdGhpcy5sb2FkU3VibWlzc2lvblNlY3Rpb24oKTtcclxuICAgICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZTtcclxuICAgICAgdGhpcy51cGRhdGVQYWdlVGl0bGUodGhpcy5zdXJ2ZXkubG9jYWxpemVkVGl0bGUpO1xyXG4gICAgICB0aGlzLmxvYWRJbmZvID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzaG93RWRpdE1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5lZGl0TW9kYWwuc2hvd0VkaXRNb2RhbCh0aGlzLnN1cnZleUlEKTtcclxuICB9O1xyXG4gIHNob3dEZWxldGVNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dEZWxldGVNb2RhbCh0aGlzLnN1cnZleUlEKTtcclxuICB9O1xyXG4gIHNob3dFZGl0UXVlc3Rpb25Nb2RhbChpZCwgaXNWaWV3T25seSkge1xyXG4gICAgdGhpcy5lZGl0UXVlc3Rpb25Nb2RhbC5lZGl0TW9kYWwoXHJcbiAgICAgIGlkLFxyXG4gICAgICB0aGlzLnN1cnZleS5hdWRpZW5jZUl0ZW1JRCxcclxuICAgICAgaXNWaWV3T25seVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2hvd0FkZFF1ZXN0aW9uTW9kYWwoKSB7XHJcbiAgICB0aGlzLkFkZFF1ZXN0aW9uQ29tcG9uZW50LmFkZE1vZGFsKFxyXG4gICAgICB0aGlzLnN1cnZleUlELFxyXG4gICAgICB0aGlzLnN1cnZleS5hdWRpZW5jZUl0ZW1JRFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2hvd0RlbGV0ZVF1ZXN0aW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZGVsZXRlUXVlc3Rpb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKGlkKTtcclxuICB9O1xyXG4gIHNob3dQdWJsaXNoTW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFkZFB1Ymxpc2hNb2RhbC5wdWJsaXNoTW9kYWwodGhpcy5zdXJ2ZXlJRCwgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCk7XHJcbiAgfTtcclxuICBzaG93VW5QdWJsaXNoTW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFkZFVuUHVibGlzaE1vZGFsLnNob3dDb25maXJtYXRpb25Nb2RhbCh0aGlzLnN1cnZleUlEKTtcclxuICB9O1xyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0LFxyXG4gICAgICBldmVudC5wcmV2aW91c0luZGV4LFxyXG4gICAgICBldmVudC5jdXJyZW50SW5kZXhcclxuICAgICk7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdFtpbmRleF0uZGlzcGxheU9yZGVyID0gaW5kZXggKyAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2VcclxuICAgICAgLnVwZGF0ZURpc3BsYXlPcmRlcih0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0KVxyXG4gICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcHJldmlld1N1cnZleSA9ICgpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICBbJy4uLy4uL2luZm8vcHJldmlldycsIHRoaXMuc3VydmV5SUQsIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlEXSxcclxuICAgICAgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH1cclxuICAgICk7XHJcbiAgfTtcclxuICB0YWtlU3VydmV5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8uLi9pbmZvL3N1Ym1pc3Npb24nLCB0aGlzLnN1cnZleUlEXSwge1xyXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0U3RhdHVzKHN0YXR1cykge1xyXG4gICAgdmFyIFN0YXR1c2VzID0gJyc7XHJcbiAgICBzd2l0Y2ggKHN0YXR1cy50b0xvY2FsZUxvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9EcmFmdC50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXNlY29uZGFyeSc7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fQ2xvc2VkLnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2UtZGFuZ2VyJztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9QdWJsaXNoZWQudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1zdWNjZXNzJztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbkFkZFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9VcGNvbWluZy50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXN1Y2Nlc3MnO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkRlbGV0ZVF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhbkFkZFF1ZXN0aW9uID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RhdHVzZXM7XHJcbiAgfVxyXG5cclxuICBsb2FkUXVlc3Rpb25TZWN0aW9uKCkge1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lID0gJ1NlYXJjaFRleHRCb3gnO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlRyaW1UZXh0T25DaGFuZ2UgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5QbGFjZWhvbGRlciA9IHRoaXMubCgnU2VhcmNoJyk7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkV4dHJhQ2xhc3NlcyA9XHJcbiAgICAgICdmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGZvcm0tY29udHJvbC1zb2xpZCBzZWFyY2gtYm94JztcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuSWNvbiA9ICcuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3NlYXJjaC5zdmcnO1xyXG5cclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5OYW1lID0gJ1N1cnZleUlEJztcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLlZhbHVlID0gdGhpcy5zdXJ2ZXlJRDtcclxuXHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9ICdTdXJ2ZXlJRCc7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLlBhZ2VTaXplID0gMTAwMDtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkRpc2FibGVCbG9ja1VJID0gdHJ1ZTtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkFjdGlvblBvc3RVUkwgPVxyXG4gICAgICB0aGlzLmFwaVF1ZXN0aW9uVVJMICsgJ0dldEFsbFF1ZXN0aW9ucyc7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uT3B0aW9ucy5GaWx0ZXJzID0gW3RoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXJdO1xyXG4gIH1cclxuICBzZXRRdWVzdGlvbkxpc3RpbmdSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgbGV0IG92ZXJ2aWV3UXVlc3Rpb25zID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsLmZpbHRlcihcclxuICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5SYWRpb0J1dHRvbiB8fFxyXG4gICAgICAgIGl0ZW0ucXVlc3Rpb25UeXBlSXRlbUlEID09IFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0IHx8XHJcbiAgICAgICAgaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdFxyXG4gICAgKTtcclxuICAgIGlmIChvdmVydmlld1F1ZXN0aW9ucy5sZW5ndGggPiAwKSB0aGlzLmxvYWRTdXJ2ZXlPdmVydmlldygpO1xyXG4gIH1cclxuXHJcbiAgb25TdWNjZXNzSGFuZGxlciA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UoXHJcbiAgICAgIHRoaXMubCgnUmVjb3JkVXBkYXRlZCcpLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9O1xyXG5cclxuICBvblN1Y2Nlc3NEZWxldGVIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmREZWxldGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8uLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0FkZFF1ZXN0aW9uSGFuZGxlciA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UoXHJcbiAgICAgIHRoaXMubCgnUmVjb3JkQWRkZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfTtcclxuICBvblN1Y2Nlc3NFZGl0UXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRVcGRhdGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZVF1ZXN0aW9uSGFuZGxlciA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UoXHJcbiAgICAgIHRoaXMubCgnUmVjb3JkRGVsZXRlZCcpLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9O1xyXG5cclxuICBzaG93RGVsZXRlU3VibWlzc2lvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLmRlbGV0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKGlkKTtcclxuICB9O1xyXG4gIHNob3dFbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RWxpbWluYXRlTW9kYWwoaWQpO1xyXG4gIH07XHJcbiAgc2hvd1VuRWxpbWluYXRlU3VibWlzc2lvbk1vZGFsID0gKGlkKSA9PiB7XHJcbiAgICB0aGlzLnVuRWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93VW5FbGltaW5hdGVNb2RhbChpZCk7XHJcbiAgfTtcclxuICBvblN1Y2Nlc3NEZWxldGVIYW5kbGVyU3VibWlzc2lvbiA9IChzdWNjZXNzOiBhbnkpID0+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UoXHJcbiAgICAgIHRoaXMubCgnUmVjb3JkRGVsZXRlZCcpLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICAgIHRoaXMubG9hZFN1Ym1pc3Npb25TZWN0aW9uKCk7XHJcbiAgfTtcclxuICBsb2FkU3VibWlzc2lvblNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLk5hbWUgPSAnU2VhcmNoVGV4dEJveCc7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHJpbVRleHRPbkNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlBsYWNlaG9sZGVyID0gdGhpcy5sKCdTZWFyY2gnKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuRXh0cmFDbGFzc2VzID1cclxuICAgICAgJ2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZm9ybS1jb250cm9sLXNvbGlkIHNlYXJjaC1ib3gnO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5JY29uID0gJy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvc2VhcmNoLnN2Zyc7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9XHJcbiAgICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9ICdTZWFyY2hUZXh0JztcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWUgPSAnU3VydmV5SUQnO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuVmFsdWUgPSB0aGlzLnN1cnZleUlEO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkZvcm1Db250cm9sTmFtZSA9XHJcbiAgICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gJ1N1cnZleUlEJztcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuUGFnZVNpemUgPSAxMDtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5BY3Rpb25Qb3N0VVJMID1cclxuICAgICAgdGhpcy5zdXJ2ZXlTZXJ2aWNlLmFwaVVSTCArICdHZXRBbGxTdXJ2ZXlTdWJtaXNzaW9uJztcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXHJcbiAgICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZSxcclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLkZpbHRlcnMgPSBbXHJcbiAgICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLFxyXG4gICAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyLFxyXG4gICAgXTtcclxuICB9XHJcbiAgc2V0U3VibWlzc2lvbkxpc3RpbmdSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25SZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dTdWJtaXNzaW9uUGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuICBsb2FkU3VydmV5T3ZlcnZpZXcoKSB7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2UuZ2V0U3VydmV5T3ZlcnZpZXcodGhpcy5zdXJ2ZXlJRCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5xdWVzdGlvbk92ZXJ2aWV3UmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgdGhpcy5zaG93T3ZlcnZpZXcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRDaGFydCh0aGlzLnF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHRbMF0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2UuZXhwb3J0KHRoaXMuc3VydmV5SUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZG93bmxvYWQocmVzdWx0IGFzIGFueSBhcyBCbG9iLCB0aGlzLnBhZ2VUaXRsZSArICcueGxzeCcpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgc2VhcmNoSW5RdWVzdGlvbkxpc3QodmFsdWUpIHtcclxuICAgIGlmICh2YWx1ZSlcclxuICAgICAgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCA9IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbC5maWx0ZXIoXHJcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubG9jYWxpemVkVGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICk7XHJcbiAgICBlbHNlIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQgPSB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWw7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS10b29sYmFyLS0+XHJcbjxkaXYgKm5nSWY9XCJsb2FkSW5mb1wiPlxyXG4gIDxiYnNmLXBhZ2UtaGVhZGVyLWNvbXBvbmVudCBbb3B0aW9uc109XCJwYWdlSGVhZGVyT3B0aW9uc1wiPjwvYmJzZi1wYWdlLWhlYWRlci1jb21wb25lbnQ+XHJcbjwvZGl2PlxyXG48IS0tZW5kIHRvb2xiYXItLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci14eGxcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5mby1jb250YWluZXJcIiAqbmdJZj1cImxvYWRJbmZvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZlcnktZGF0ZSBib3JkZXItMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYm94ZXMgYWxpZ24taXRlbXMtYmFzZWxpbmVcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JUb29sdGlwPVwie3tsKCdEYXRlJyl9fVwiIGNsYXNzPVwiaWNvbi1ib3hcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jYWxlbmRhci5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1cnZleS1jb3VudGVyLXRpdGxlXCIgKm5nSWY9XCJzdXJ2ZXkuc3RhcnREYXRlPT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICB7e2woJ05vdFN0YXJ0ZWRZZXQnKX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGUgZC1mbGV4IGZsZXgtc3RhY2tcIiAqbmdJZj1cInN1cnZleS5zdGFydERhdGUhPW51bGxcIj5cclxuICAgICAgICAgICAgICAgIHt7c3VydmV5LnN0YXJ0RGF0ZSB8c3VydmV5RGF0ZX19IC0ge3tzdXJ2ZXkuZW5kRGF0ZSE9bnVsbD8oc3VydmV5LmVuZERhdGV8c3VydmV5RGF0ZSk6XCJcIn19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCIgKm5nSWY9XCJzdXJ2ZXkuZW5kRGF0ZT09bnVsbFwiPnt7bCgnSGFzTm9FbmQnKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiIFtuZ0NsYXNzXT1cImdldFN0YXR1cyhzdXJ2ZXkuc3RhdHVzSXRlbUlEKVwiPnt7c3VydmV5LmxvY2FsaXplZFN0YXR1c319PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gbmdiVG9vbHRpcD1cInt7bCgnQXVkaWVuY2UnKX19XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBteC0yXCI+e3tzdXJ2ZXkubG9jYWxpemVkQXVkaWVuY2V9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY2FyZC1kYXRhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94ICpuZ0lmPVwiY2FuVGFrZVN1cnZleSYmIChzdXJ2ZXkuYXVkaWVuY2VJdGVtSUQ9PUF1ZGllbmNlVHlwZUVudW0uSW50ZXJuYWx8fHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5Cb3RoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlRleHRCb3hXaXRoSW50ZXJuYWxVUkxcIiBbZ3JvdXBdPVwidXJsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5FeHRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiVGV4dEJveFdpdGhFeHRlcm5hbFVSTFwiIFtncm91cF09XCJ1cmxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cImNhcmQtZGVzY3JpcHRpb25cIiAqbmdJZj1cInN1cnZleS5sb2NhbGl6ZWREZXNjXCI+XHJcbiAgICAgICAge3tzdXJ2ZXkubG9jYWxpemVkRGVzY319XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tbWFyZ2luLWJvdHRvbVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1jdXN0b21cIj5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtXCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIG5nYk5hdkxpbms+XHJcbiAgICAgICAgICAgIDxoND5cclxuICAgICAgICAgICAgICB7e2woJ1F1ZXN0aW9ucycpfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnMtc2VhcmNoIHBhZ2Utc3ViaGVhZGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlNlYXJjaFRleHRCb3hPcHRpb25zXCIgW2dyb3VwXT1cImZpbHRlcnNRdWVzdGlvbkZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT25DaGFuZ2UpPVwic2VhcmNoSW5RdWVzdGlvbkxpc3QoJGV2ZW50KVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJTdXJ2ZXlJRE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiY2FuQWRkUXVlc3Rpb24mJmVuYWJsZUFjdGlvbnNcIiBjbGFzcz1cImJ0biBidG4tYnJhbmQgYnRuLXNtIHN1YmhlYWRlci1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0FkZFF1ZXN0aW9uTW9kYWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2woJ0FkZCcpfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCJwYWdpbmdRdWVzdGlvblJlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JOYXZDb250ZW50IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbi1pbmZvXCIgW2Nka0RyYWdEaXNhYmxlZF09XCJjYW5UYWtlU3VydmV5XCIgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luZ1F1ZXN0aW9uUmVzdWx0OyBsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTI1cHggbWUtNFwiIGNka0RyYWdIYW5kbGUgKm5nSWY9XCIhY2FuVGFrZVN1cnZleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi03XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvcmVvcmRlci5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWxpc3RpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e2woJ1R5cGUnKX19XCI+e3tpdGVtLmxvY2FsaXplZFF1ZXN0aW9uVHlwZUl0ZW19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e2woJ0F1ZGllbmNlJyl9fVwiPnt7aXRlbS5sb2NhbGl6ZWRBdWRpZW5jZVR5cGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWJyYW5kLWxpZ2h0IG14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc1JlbGF0ZWRUb1N1cnZleVF1ZXN0aW9uXCI+e3tsKCdMaW5rZWQnKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbXgtMlwiICpuZ0lmPVwiIWl0ZW0uaXNWaXNpYmxlXCIgbmdiVG9vbHRpcD1cInt7bCgnTm90VmlzaWJsZScpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIk5vdFZpc2libGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiAqbmdJZj1cImVuYWJsZUFjdGlvbnNcIiBjbGFzcz1cImRyb3Bkb3duLWN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIkVOID8gJ2JvdHRvbS1yaWdodCcgOiAnYm90dG9tLWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZS1jdXN0b20gYnRuIGJ0bi1jbGVhclwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jYXJkLWRyb3Bkb3duLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudS1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiEoY2FuRWRpdFF1ZXN0aW9uJiZjYW5EZWxldGVRdWVzdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFF1ZXN0aW9uTW9kYWwoaXRlbS5pRF9HVUlELHRydWUpXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2luZm8uc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woXCJEZXRhaWxzXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuRWRpdFF1ZXN0aW9uXCIgKGNsaWNrKT1cInNob3dFZGl0UXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQsZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgdHlwZT1cImJ1dHRvblwiIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL0VkaXQuc3ZnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woXCJFZGl0XCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiY2FuRGVsZXRlUXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlUXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQpXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCI+PC9zcGFuPiB7e2woXCJEZWxldGVcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWNvdW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1cnZleS1jb3VudGVyLXRpdGxlXCI+e3tpdGVtLmxvY2FsaXplZFRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWJyYW5kIGJhZGdlLXNxdWFyZSBtcy0yIG1lLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e2woJ1Njb3JlJyl9fVwiPnt7aXRlbS50b3RhbFNjb3JlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFF1ZXN0aW9uTGlzdGluZ1Jlc3VsdCgkZXZlbnQpXCIgW29wdGlvbnNdPVwicGFnaW5nUXVlc3Rpb25PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiICNwYWdpbmdRdWVzdGlvblZpZXdFbGVtZW50PjwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLW5vLXJlc3VsdHMgKm5nSWY9XCJwYWdpbmdRdWVzdGlvblJlc3VsdC5sZW5ndGggPT0gMFwiPjwvYXBwLW5vLXJlc3VsdHM+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluaz5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bCgnU3VibWlzc2lvbnMnKX19XHJcbiAgICAgICAgICAgIDwvaDQ+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taW5mb1wiIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYnMtc2VhcmNoIHBhZ2Utc3ViaGVhZGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlNlYXJjaFRleHRCb3hPcHRpb25zXCIgW2dyb3VwXT1cImZpbHRlcnNTdWJtaXNzaW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJTdXJ2ZXlJRE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiIFtoaWRkZW5dPVwicGFnaW5nU3VibWlzc2lvblJlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtY3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4ge3tsKCdOYW1lJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ0VtYWlsJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ1R5cGUnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnQ3JlYXRlZCcpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3tsKCdTY29yZScpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0YWJsZS1hY3Rpb25cIiAgKm5nSWY9XCJlbmFibGVBY3Rpb25zXCI+e3tsKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdpbmdTdWJtaXNzaW9uUmVzdWx0OyBsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaW5lLWNsYW1wLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5sb2NhbGl6ZWROYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtZGFuZ2VyIG14LTJcIiAqbmdJZj1cIml0ZW0uaXNFbGltaW5hdGVkJiZpdGVtLmFsbG93RWxpbWluYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsKCdFbGltaW5hdGVkJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5lbWFpbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5pc0ludGVybmFsVXNlcj8gbCgnSW50ZXJuYWxVc2VycycpOmwoJ0V4dGVybmFsVXNlcnMnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uY3JlYXRlZHxzdXJ2ZXlEYXRlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnRvdGFsU2NvcmV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLWFjdGlvblwiICAqbmdJZj1cImVuYWJsZUFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuZ2JUb29sdGlwPVwie3tsKCdQcmV2aWV3Jyl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy4uLy4uL2luZm8vcmVzdWx0JywgaXRlbS5pRF9HVUlEXVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9hbnN3ZXJzLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIWl0ZW0uaXNFbGltaW5hdGVkJiZpdGVtLmFsbG93RWxpbWluYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7dGhpcy5sKCdFbGltaW5hdGVIaW50Jyl9fVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIChjbGljayk9XCJzaG93RWxpbWluYXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy91bmxpbmsuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJpdGVtLmlzRWxpbWluYXRlZCYmaXRlbS5hbGxvd0VsaW1pbmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7e3RoaXMubCgnVW5FbGltaW5hdGUnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgKGNsaWNrKT1cInNob3dVbkVsaW1pbmF0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9saW5rLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ0RlbGV0ZScpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIiAoY2xpY2spPVwic2hvd0RlbGV0ZVN1Ym1pc3Npb25Nb2RhbChpdGVtLmlEX0dVSUQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPEJCU0YtUGFnaW5nIChJdGVtcyk9XCJzZXRTdWJtaXNzaW9uTGlzdGluZ1Jlc3VsdCgkZXZlbnQpXCIgW29wdGlvbnNdPVwicGFnaW5nU3VibWlzc2lvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCIgI3BhZ2luZ1N1Ym1pc3Npb25WaWV3RWxlbWVudD48L0JCU0YtUGFnaW5nPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1uby1yZXN1bHRzICpuZ0lmPVwicGFnaW5nU3VibWlzc2lvblJlc3VsdC5sZW5ndGggPT0gMFwiPjwvYXBwLW5vLXJlc3VsdHM+XHJcblxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInNob3dPdmVydmlld1wiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rIChjbGljayk9XCJsb2FkU3VydmV5T3ZlcnZpZXcoKVwiPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKFwiT3ZlcnZpZXdcIikgfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdGl0bGVcIj4ge3tsKFwiUXVlc3Rpb25zXCIpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtcGlsbHMgY3VzdG9tLW5hdnNcIiBvcmllbnRhdGlvbj1cInZlcnRpY2FsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgbmdiTmF2SXRlbT1cInt7aXRlbS5sb2NhbGl6ZWRUaXRsZX19XCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlc3Rpb25PdmVydmlld1Jlc3VsdFwiIChjbGljayk9XCJsb2FkQ2hhcnQoaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmdiTmF2TGluaz57e2l0ZW0ubG9jYWxpemVkVGl0bGV9fTwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdGl0bGVcIj57e2woXCJPdmVydmlld1wiKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjaGFydGRpdlwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNDAwcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1sb2dvXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LXRpdGxlXCI+e3tsKFwiU2NvcmVcIikgfX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImNoYXJ0T3ZlcnZpZXdcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwMHB4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGUtbG9nb1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuXHJcblxyXG4gICAgICA8ZGl2IFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gIDxhcHAtZWRpdC1zdXJ2ZXkgI2VkaXRNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPjwvYXBwLWVkaXQtc3VydmV5PlxyXG4gIDxhcHAtZGVsZXRlLXN1cnZleSAjZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NEZWxldGVIYW5kbGVyXCI+PC9hcHAtZGVsZXRlLXN1cnZleT5cclxuICA8YXBwLWFkZC1xdWVzdGlvbiAjYWRkUXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIiBbb25TdWNjZXNzQWRkSGFuZGxlcl09XCJvblN1Y2Nlc3NBZGRRdWVzdGlvbkhhbmRsZXJcIj48L2FwcC1hZGQtcXVlc3Rpb24+XHJcbiAgPGFwcC1lZGl0LXF1ZXN0aW9uICNlZGl0UXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIiBbb25TdWNjZXNzRWRpdEhhbmRsZXJdPVwib25TdWNjZXNzRWRpdFF1ZXN0aW9uSGFuZGxlclwiPjwvYXBwLWVkaXQtcXVlc3Rpb24+XHJcbiAgPGFwcC1kZWxldGUtcXVlc3Rpb24gI2RlbGV0ZVF1ZXN0aW9uTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nUXVlc3Rpb25FbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzRGVsZXRlUXVlc3Rpb25IYW5kbGVyXCI+PC9hcHAtZGVsZXRlLXF1ZXN0aW9uPlxyXG4gIDxhcHAtcHVibGlzaC1zdXJ2ZXkgI2FkZFB1Ymxpc2hNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiICpuZ0lmPVwibG9hZEluZm9cIiBbc2hvd1RvZ2dsZV09XCJzdXJ2ZXkuaXNTaG93VG9nZ2xlT2ZTY29yZVJlc3VsdEFmdGVyU3VibWlzc2lvblwiPlxyXG4gIDwvYXBwLXB1Ymxpc2gtc3VydmV5PlxyXG4gIDxhcHAtdW5wdWJsaXNoLXN1cnZleSAjYWRkVW5QdWJsaXNoTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj5cclxuICA8L2FwcC11bnB1Ymxpc2gtc3VydmV5PlxyXG4gIDxhcHAtZGVsZXRlLXN1Ym1pc3Npb24gI2RlbGV0ZVN1Ym1pc3Npb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdTdWJtaXNzaW9uRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NEZWxldGVIYW5kbGVyU3VibWlzc2lvblwiPjwvYXBwLWRlbGV0ZS1zdWJtaXNzaW9uPlxyXG4gIDxhcHAtZWxpbWluYXRlLXN1Ym1pc3Npb24gI2VsaW1pbmF0ZU1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC1lbGltaW5hdGUtc3VibWlzc2lvbj5cclxuICA8YXBwLXVuRWxpbWluYXRlLXN1Ym1pc3Npb24gI3VuRWxpbWluYXRlTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nU3VibWlzc2lvbkVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCI+PC9hcHAtdW5FbGltaW5hdGUtc3VibWlzc2lvbj5cclxuIl19
|