@piserve-tech/form-submission 1.2.7 → 1.2.9

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.
Files changed (35) hide show
  1. package/element-type/form-elements/form-elements.component.d.ts +4 -1
  2. package/esm2022/element-type/form-elements/form-elements.component.mjs +10 -4
  3. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +1 -1
  4. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +1 -1
  5. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +1 -1
  6. package/esm2022/form-fields/password-fields/password-fields.component.mjs +9 -7
  7. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +3 -3
  8. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +3 -2
  9. package/esm2022/form-fields/text-fields/text-fields.component.mjs +1 -1
  10. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +4 -1
  11. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +9 -3
  12. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +9 -3
  13. package/esm2022/form-submission/submit-form/submit-form.component.mjs +60 -31
  14. package/esm2022/models/answer.model.mjs +2 -0
  15. package/esm2022/models/subForm.model.mjs +1 -1
  16. package/esm2022/models/submission.model.mjs +2 -0
  17. package/esm2022/services/mapper.service.mjs +17 -1
  18. package/esm2022/sub-form/multiple-subform/multiple-subform.component.mjs +125 -0
  19. package/esm2022/sub-form/sub-form/sub-form.component.mjs +39 -4
  20. package/esm2022/sub-form/sub-form.module.mjs +11 -5
  21. package/esm2022/sub-form/submission-modal/submission-modal.component.mjs +51 -0
  22. package/fesm2022/piserve-tech-form-submission.mjs +303 -51
  23. package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
  24. package/form-fields/password-fields/password-fields.component.d.ts +1 -0
  25. package/form-submission/navigation-tabs/navigation-tabs.component.d.ts +3 -1
  26. package/form-submission/next-prev-navigation/next-prev-navigation.component.d.ts +3 -1
  27. package/form-submission/submit-form/submit-form.component.d.ts +3 -6
  28. package/models/answer.model.d.ts +7 -0
  29. package/models/subForm.model.d.ts +4 -1
  30. package/models/submission.model.d.ts +5 -0
  31. package/package.json +1 -1
  32. package/sub-form/multiple-subform/multiple-subform.component.d.ts +34 -0
  33. package/sub-form/sub-form/sub-form.component.d.ts +8 -2
  34. package/sub-form/sub-form.module.d.ts +7 -4
  35. package/sub-form/submission-modal/submission-modal.component.d.ts +13 -0
@@ -3,16 +3,14 @@ import * as mapper from '../../services/mapper.service';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../services/form.service";
5
5
  import * as i2 from "ngx-toastr";
6
- import * as i3 from "@angular/router";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "../header/header.component";
9
- import * as i6 from "../navigation-tabs/navigation-tabs.component";
10
- import * as i7 from "../next-prev-navigation/next-prev-navigation.component";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "../header/header.component";
8
+ import * as i5 from "../navigation-tabs/navigation-tabs.component";
9
+ import * as i6 from "../next-prev-navigation/next-prev-navigation.component";
11
10
  export class SubmitFormComponent {
12
- constructor(formService, toastr, router) {
11
+ constructor(formService, toastr) {
13
12
  this.formService = formService;
14
13
  this.toastr = toastr;
15
- this.router = router;
16
14
  this.question = null;
17
15
  this.moduleName = '';
18
16
  this.edit = false;
@@ -41,9 +39,29 @@ export class SubmitFormComponent {
41
39
  this.lastTab = false;
42
40
  this.questionAnswers = { answers: [], forms: [] };
43
41
  this.files = [];
44
- this.submission = {};
45
- const navigation = this.router.getCurrentNavigation();
46
- this.submission = navigation?.extras.state?.['submission'];
42
+ this.updateSubForm = (pages, updatedSubForm) => {
43
+ pages.forEach(page => {
44
+ page.rows.forEach((row) => {
45
+ row.grid.forEach((element) => {
46
+ if (element.entityType === 'SUBFORM' && element.element.id === updatedSubForm.formId) {
47
+ // Update the existing subform with the new data
48
+ element.element = updatedSubForm;
49
+ }
50
+ else if (element.entityType === 'SUBFORM' && element.element.id !== updatedSubForm.formId) {
51
+ // Handle multiple subforms logic here if needed
52
+ }
53
+ else if (element.entityType === 'QUESTION' && element.element.childLogics) {
54
+ // Recursively update child logics
55
+ element.element.childLogics.forEach((logic) => {
56
+ if (logic.showLogic) {
57
+ this.updateSubForm(logic.formElements, updatedSubForm);
58
+ }
59
+ });
60
+ }
61
+ });
62
+ });
63
+ });
64
+ };
47
65
  }
48
66
  ngOnInit() {
49
67
  if (this.edit && this.submissionId) {
@@ -53,12 +71,6 @@ export class SubmitFormComponent {
53
71
  this.getFormData();
54
72
  }
55
73
  }
56
- objectKeys(obj) {
57
- return obj ? Object.keys(obj) : [];
58
- }
59
- isImageUrl(url) {
60
- return url.match(/\.(jpeg|jpg|gif|png)$/) != null;
61
- }
62
74
  getFormData() {
63
75
  this.formService.getQuestions(this.moduleName).subscribe((response) => {
64
76
  this.question = mapper.mapPublicFormToModel(response);
@@ -203,16 +215,29 @@ export class SubmitFormComponent {
203
215
  }
204
216
  else if (element.entityType === 'SUBFORM') {
205
217
  const subformId = element.element.id;
206
- const subformQuestions = extractQuestions(element.element.formElements, subformId, true, forms.length);
207
- const subform = {
208
- formId: subformId,
209
- deletedSubmissions: [],
210
- submissions: [{
211
- submissionId: '',
212
- answers: subformQuestions.answers
213
- }]
214
- };
215
- forms.push(subform);
218
+ const submissionId = element.element.submissionId;
219
+ if (element.element.subFormStructure === 'single') {
220
+ const subformQuestions = extractQuestions(element.element.formElements, subformId, true, forms.length);
221
+ const subform = {
222
+ formId: subformId,
223
+ deletedSubmissions: [],
224
+ submissions: [{
225
+ submissionId: submissionId,
226
+ answers: subformQuestions.answers
227
+ }]
228
+ };
229
+ forms.push(subform);
230
+ }
231
+ else if (element.element.subFormStructure === 'multiple') {
232
+ const subformQuestions = extractQuestions(element.element.formElements, subformId, true, forms.length);
233
+ const existingSubform = forms.find(form => form.formId === subformId);
234
+ const subform = {
235
+ formId: subformId,
236
+ deletedSubmissions: element.element.deletedSubmissions,
237
+ submissions: element.element.submissions
238
+ };
239
+ forms.push(subform);
240
+ }
216
241
  }
217
242
  });
218
243
  return { answers: questions, forms: forms };
@@ -236,6 +261,7 @@ export class SubmitFormComponent {
236
261
  };
237
262
  }
238
263
  submitForm() {
264
+ console.log('pages', this.pages);
239
265
  let validationResponse = this.validateForm(this.pages);
240
266
  this.generateQuestionAnswers();
241
267
  if (validationResponse.isValid) {
@@ -408,13 +434,16 @@ export class SubmitFormComponent {
408
434
  }
409
435
  return { isValid: true, message: 'All required questions are answered.' };
410
436
  }
411
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, deps: [{ token: i1.FormService }, { token: i2.ToastrService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
412
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmitFormComponent, selector: "lib-submit-form", inputs: { moduleName: "moduleName", edit: "edit", submissionId: "submissionId" }, outputs: { submit: "submit" }, ngImport: i0, template: "<div class=\"outer-container\">\n <div class=\"submission-container container mb-2\">\n <div *ngFor=\"let key of objectKeys(submission?.answerMap)\" class=\"submission-item\">\n <div class=\"key\">{{ key }}</div>\n <div class=\"value\">\n <ng-container *ngIf=\"isImageUrl(submission?.answerMap[key]); else text\">\n <img [src]=\"submission?.answerMap[key]\" alt=\"{{ key }}\" class=\"image\">\n </ng-container>\n <ng-template #text>{{ submission.answerMap[key] }}</ng-template>\n </div>\n </div>\n </div>\n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.submission-container{display:flex;flex-wrap:wrap;box-shadow:0 4px 4px #00000040;border-radius:6px}.submission-item{flex:1 0 21%;margin:5px;padding:10px;border-radius:4px;display:flex;flex-direction:column}.key{font-weight:700;margin-bottom:5px}.value{word-break:break-word}.image{max-width:100%;height:auto;max-height:150px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.HeaderComponent, selector: "lib-header", inputs: ["name"] }, { kind: "component", type: i6.NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: ["pages", "currentPageIndex", "edit"], outputs: ["pageChanged", "submitEmit"] }, { kind: "component", type: i7.NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: ["currentPageIndex", "pages", "previousPage", "nextPage", "currentPage", "edit"], outputs: ["navigateNext", "navigatePrevious", "submitEmit"] }] }); }
437
+ updateSubFormWithSubmissions(event) {
438
+ this.updateSubForm(this.pages, event);
439
+ }
440
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, deps: [{ token: i1.FormService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Component }); }
441
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SubmitFormComponent, selector: "lib-submit-form", inputs: { moduleName: "moduleName", edit: "edit", submissionId: "submissionId" }, outputs: { submit: "submit" }, ngImport: i0, template: "<div class=\"outer-container\">\n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.HeaderComponent, selector: "lib-header", inputs: ["name"] }, { kind: "component", type: i5.NavigationTabsComponent, selector: "lib-navigation-tabs", inputs: ["pages", "currentPageIndex", "edit"], outputs: ["pageChanged", "submitEmit", "subFormChange"] }, { kind: "component", type: i6.NextPrevNavigationComponent, selector: "lib-next-prev-navigation", inputs: ["currentPageIndex", "pages", "previousPage", "nextPage", "currentPage", "edit"], outputs: ["navigateNext", "navigatePrevious", "submitEmit", "subFormChange"] }] }); }
413
442
  }
414
443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SubmitFormComponent, decorators: [{
415
444
  type: Component,
416
- args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\n <div class=\"submission-container container mb-2\">\n <div *ngFor=\"let key of objectKeys(submission?.answerMap)\" class=\"submission-item\">\n <div class=\"key\">{{ key }}</div>\n <div class=\"value\">\n <ng-container *ngIf=\"isImageUrl(submission?.answerMap[key]); else text\">\n <img [src]=\"submission?.answerMap[key]\" alt=\"{{ key }}\" class=\"image\">\n </ng-container>\n <ng-template #text>{{ submission.answerMap[key] }}</ng-template>\n </div>\n </div>\n </div>\n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}.submission-container{display:flex;flex-wrap:wrap;box-shadow:0 4px 4px #00000040;border-radius:6px}.submission-item{flex:1 0 21%;margin:5px;padding:10px;border-radius:4px;display:flex;flex-direction:column}.key{font-weight:700;margin-bottom:5px}.value{word-break:break-word}.image{max-width:100%;height:auto;max-height:150px}\n"] }]
417
- }], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.ToastrService }, { type: i3.Router }]; }, propDecorators: { moduleName: [{
445
+ args: [{ selector: 'lib-submit-form', template: "<div class=\"outer-container\">\n <div class=\"head container\">\n <lib-header [name]=\"name\"></lib-header>\n </div>\n <div class=\"body container\">\n <lib-navigation-tabs\n *ngIf=\"navigation == 'TAB'\"\n [pages]=\"pages\"\n [currentPageIndex]=\"currentPageIndex\"\n (pageChanged)=\"setCurrentPage($event)\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-navigation-tabs>\n <lib-next-prev-navigation\n *ngIf=\"navigation == 'NEXT_AND_PREVIOUS_BUTTON'\"\n [currentPageIndex]=\"currentPageIndex\"\n [pages]=\"pages\"\n [previousPage]=\"previousPage\"\n [currentPage]=\"currentPage\"\n [nextPage]=\"nextPage\"\n (navigateNext)=\"navigateToNextPage()\"\n (navigatePrevious)=\"navigateToPreviousPage()\"\n (submitEmit)=\"submitForm()\"\n [edit]=\"edit\"\n (subFormChange)=\"updateSubFormWithSubmissions($event)\"\n ></lib-next-prev-navigation>\n </div>\n</div>\n", styles: [".outer-container{background-color:#fff;padding:20px;position:relative;margin-top:25px}@media (max-width: 576px){.outer-container{padding:8px}}.head{background-color:#fff;padding:0!important}.body{position:relative;z-index:1;background:#efefef;border-radius:6px}\n"] }]
446
+ }], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.ToastrService }]; }, propDecorators: { moduleName: [{
418
447
  type: Input
419
448
  }], edit: [{
420
449
  type: Input
@@ -423,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
423
452
  }], submit: [{
424
453
  type: Output
425
454
  }] } });
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFpQ3hELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQ1UsV0FBd0IsRUFDeEIsTUFBcUIsRUFDckIsTUFBYztRQUZkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWxDeEIsYUFBUSxHQUFzQixJQUFJLENBQUM7UUFDMUIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixTQUFJLEdBQVksS0FBSyxDQUFDO1FBQ3RCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFdBQU0sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFX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QUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDbkIsT0FBTyxNQUFNLENBQUM7YUFDZjtTQUNGO1FBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLENBQUM7SUFDNUUsQ0FBQzsrR0FqYVUsbUJBQW1CO21HQUFuQixtQkFBbUIsd0tDbkNoQyxnNkNBc0NBOzs0RkRIYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO21KQU1sQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1hcHBlciBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW50ZXJmYWNlIEFuc3dlciB7XG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgYW5zd2VyOiBhbnk7XG4gIGFuc3dlcklkPzogc3RyaW5nO1xuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU3VibWlzc2lvbiB7XG4gIHN1Ym1pc3Npb25JZDogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbn1cblxuaW50ZXJmYWNlIEZvcm0ge1xuICBmb3JtSWQ6IHN0cmluZztcbiAgZGVsZXRlZFN1Ym1pc3Npb25zOiBhbnlbXTtcbiAgc3VibWlzc2lvbnM6IFN1Ym1pc3Npb25bXTtcbn1cblxuaW50ZXJmYWNlIFF1ZXN0aW9uQW5zd2Vyc1dyYXBwZXIge1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbiAgZm9ybXM6IEZvcm1bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN1Ym1pdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VibWl0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3VibWl0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHF1ZXN0aW9uOiBQdWJsaWNGb3JtIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1vZHVsZU5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JZDogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgbmFtZTogc3RyaW5nID0gJyc7XG4gIHNhdmVBdXRvbWF0aWNhbGx5OiBib29sZWFuID0gZmFsc2U7XG4gIHNhdmVJbnRlcnZhbDogbnVtYmVyID0gMDtcbiAgY3VzdG9taXplRm9udDogYm9vbGVhbiA9IGZhbHNlO1xuICBmb250RmFtaWx5OiBzdHJpbmcgPSAnJztcbiAgZm9udFNpemU6IG51bWJlciA9IDA7XG4gIGVuYWJsZURhdGFFeHBvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsZUZvcm1hdHM6IHN0cmluZ1tdID0gW107XG4gIGVuYWJsZVF1ZXN0aW9uTnVtYmVyaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXN0aW9uTnVtYmVyaW5nOiBzdHJpbmcgPSAnJztcbiAgZW5hYmxlR29vZ2xlUmVjYXB0Y2hhOiBib29sZWFuID0gZmFsc2U7XG4gIGdvb2dsZVJlY2FwdGNoYUtleTogc3RyaW5nID0gJyc7XG4gIGdvb2dsZVJlY2FwdGNoYVNlY3JldDogc3RyaW5nID0gJyc7XG4gIG5hdmlnYXRpb246IHN0cmluZyA9ICcnO1xuICBtYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYWdlczogYW55ID0gW107XG4gIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XG4gIHByZXZpb3VzUGFnZTogYW55ID0ge307XG4gIGN1cnJlbnRQYWdlOiBhbnkgPSB7fTtcbiAgbmV4dFBhZ2U6IGFueSA9IHt9O1xuICBsYXN0VGFiOiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXN0aW9uQW5zd2VyczogUXVlc3Rpb25BbnN3ZXJzV3JhcHBlciA9IHsgYW5zd2VyczogW10sIGZvcm1zOiBbXSB9O1xuICBmaWxlczogeyBxdWVzdGlvbklkOiBzdHJpbmc7IGZpbGU6IGFueSB9W10gPSBbXTtcbiAgc3VibWlzc2lvbjphbnk9e307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICB0aGlzLnN1Ym1pc3Npb249IG5hdmlnYXRpb24/LmV4dHJhcy5zdGF0ZT8uWydzdWJtaXNzaW9uJ10gXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBvYmplY3RLZXlzKG9iajogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBvYmogPyBPYmplY3Qua2V5cyhvYmopIDogW107XG4gIH1cblxuICBpc0ltYWdlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHVybC5tYXRjaCgvXFwuKGpwZWd8anBnfGdpZnxwbmcpJC8pICE9IG51bGw7XG4gIH1cblxuICBnZXRGb3JtRGF0YSgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xuICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRGb3JtRGF0YSgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFN1Ym1pdHRlZEZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5xdWVzdGlvbiA9IG1hcHBlci5tYXBQdWJsaWNGb3JtVG9Nb2RlbChyZXNwb25zZSk7XG4gICAgICB0aGlzLmFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyh0aGlzLnF1ZXN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkge1xuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy5wYWdlcyA9IHF1ZXN0aW9uLnBhZ2VzO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xuICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzWzFdO1xuICAgIHRoaXMuc2F2ZUF1dG9tYXRpY2FsbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5zYXZlQXV0b21hdGljYWxseTtcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcbiAgICB0aGlzLmN1c3RvbWl6ZUZvbnQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5jdXN0b21pemVGb250O1xuICAgIHRoaXMuZm9udEZhbWlseSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRGYW1pbHk7XG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xuICAgIHRoaXMuZW5hYmxlRGF0YUV4cG9ydCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZURhdGFFeHBvcnQ7XG4gICAgdGhpcy5maWxlRm9ybWF0cyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZpbGVGb3JtYXRzO1xuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVRdWVzdGlvbk51bWJlcmluZztcbiAgICB0aGlzLnF1ZXN0aW9uTnVtYmVyaW5nID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ucXVlc3Rpb25OdW1iZXJpbmc7XG4gICAgdGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVHb29nbGVSZWNhcHRjaGE7XG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFLZXkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFLZXk7XG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFTZWNyZXQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFTZWNyZXQ7XG4gICAgdGhpcy5uYXZpZ2F0aW9uID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubmF2aWdhdGlvbjtcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJbmRleCA8IHRoaXMucGFnZXMubGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4ICsgMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4Kys7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCArIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJbmRleCA+IDApIHtcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3BvbnNlID0gdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xuICAgICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LS07XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhjdXJyZW50UGFnZURhdGEpO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgXG4gICAgY29uc3QgZXh0cmFjdFF1ZXN0aW9ucyA9IChcbiAgICAgIGZvcm1FbGVtZW50czogYW55W10sIFxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgXG4gICAgICBpc0luU3ViRm9ybTogYm9vbGVhbiA9IGZhbHNlLCBcbiAgICAgIHN1YkZvcm1JbmRleDogbnVtYmVyID0gMFxuICAgICk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XG4gIFxuICAgICAgZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xuICAgICAgICAgIGxldCBiYXNlUXVlc3Rpb246IGFueTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VyOiAnJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBpc0luU3ViRm9ybSBcbiAgICAgICAgICAgICAgICA/IGAke3BhcmVudEZvcm1JZH1fJHtzdWJGb3JtSW5kZXh9XyR7ZWxlbWVudC5lbGVtZW50LmlkfWBcbiAgICAgICAgICAgICAgICA6IGVsZW1lbnQuZWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxuICAgICAgICAgICAgICAgIGZpbGU6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VyOiBlbGVtZW50LmVsZW1lbnQuYW5zd2VyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmJhc2VRdWVzdGlvbixcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcbiAgICAgICAgICAgICAgZGVsZXRlRmlsZXM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVGaWxlcyB8fCBbXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKGJhc2VRdWVzdGlvbik7XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMobG9naWMuZm9ybUVsZW1lbnRzLCBwYXJlbnRGb3JtSWQsIGlzSW5TdWJGb3JtLCBzdWJGb3JtSW5kZXgpO1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKC4uLnJlc3VsdC5hbnN3ZXJzKTtcbiAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcbiAgICAgICAgICBjb25zdCBzdWJmb3JtSWQgPSBlbGVtZW50LmVsZW1lbnQuaWQ7XG4gICAgICAgICAgY29uc3Qgc3ViZm9ybVF1ZXN0aW9ucyA9IGV4dHJhY3RRdWVzdGlvbnMoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50cywgc3ViZm9ybUlkLCB0cnVlLCBmb3Jtcy5sZW5ndGgpO1xuICBcbiAgICAgICAgICBjb25zdCBzdWJmb3JtOiBGb3JtID0ge1xuICAgICAgICAgICAgZm9ybUlkOiBzdWJmb3JtSWQsXG4gICAgICAgICAgICBkZWxldGVkU3VibWlzc2lvbnM6IFtdLFxuICAgICAgICAgICAgc3VibWlzc2lvbnM6IFt7XG4gICAgICAgICAgICAgIHN1Ym1pc3Npb25JZDogJycsXG4gICAgICAgICAgICAgIGFuc3dlcnM6IHN1YmZvcm1RdWVzdGlvbnMuYW5zd2Vyc1xuICAgICAgICAgICAgfV1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XG4gICAgfTtcbiAgXG4gICAgY29uc3QgcHJvY2Vzc1BhZ2VzID0gKHBhZ2VzOiBhbnlbXSk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XG4gIFxuICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xuICAgICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgZm9ybXMucHVzaCguLi5yZXN1bHQuZm9ybXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XG4gICAgfTtcbiAgXG4gICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc1BhZ2VzKHRoaXMucGFnZXMpO1xuICBcbiAgICB0aGlzLnF1ZXN0aW9uQW5zd2VycyA9IHtcbiAgICAgIGFuc3dlcnM6IHJlc3VsdC5hbnN3ZXJzLFxuICAgICAgZm9ybXM6IHJlc3VsdC5mb3Jtc1xuICAgIH07XG4gIH1cbiAgXG4gIFxuICBzdWJtaXRGb3JtKCkge1xuICAgIGxldCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlRm9ybSh0aGlzLnBhZ2VzKTtcbiAgICB0aGlzLmdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCk7XG4gICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uJywgSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVzdGlvbkFuc3dlcnMpKTtcbiAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlSXRlbSkgPT4ge1xuICAgICAgICAgIGZpbGVJdGVtLmZpbGUuZm9yRWFjaCgoZmlsZTogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZmlsZUl0ZW0ucXVlc3Rpb25JZCwgZmlsZS5fZmlsZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZCkge1xuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCwgZm9ybURhdGEpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0Zvcm0gdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0LmVtaXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB0byB1cGRhdGUgZm9ybScpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2Uuc3VibWl0Rm9ybSh0aGlzLm1vZHVsZU5hbWUsIGZvcm1EYXRhKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdGb3JtIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0LmVtaXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJtaXQgZm9ybScpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRm9ybShqc29uRGF0YTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmc7IHBhZ2VJbmRleDogbnVtYmVyIHwgMCB9IHtcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChmb3JtRWxlbWVudHM6IGFueVtdKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmc7IHBhZ2VJbmRleDogbnVtYmVyIHwgMCB9ID0+IHtcbiAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcbiAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IGVsZW1lbnQuZWxlbWVudC5yZXF1aXJlZDtcbiAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBlbGVtZW50LmVsZW1lbnQuYW5zd2VyO1xuICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBlbGVtZW50LmVsZW1lbnQudmFsaWRhdGlvbjtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gZWxlbWVudC5lbGVtZW50LmF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgIGlmICgoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSAmJiBhdHRhY2htZW50Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGhhcyBubyBmaWxlcyB1cGxvYWRlZC5gLFxuICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgIGlmICghYW5zd2VyIHx8IE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyByZXF1aXJlZCBidXQgbm8gYW5zd2VyIHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgcmVxdWlyZWQgYnV0IHZhbGlkYXRpb24gaXMgZmFsc2UuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXF1aXJlZCAmJiBhbnN3ZXIgJiYgT2JqZWN0LmtleXMoYW5zd2VyKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgbm90IHJlcXVpcmVkIGJ1dCBhbnN3ZXIgcHJvdmlkZWQgd2l0aCB2YWxpZGF0aW9uIGZhbHNlLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGxvZ2ljLmZvcm1FbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJykge1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnJywgcGFnZUluZGV4OiAwIH07XG4gICAgfTtcblxuICAgIGZvciAobGV0IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IGpzb25EYXRhLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBqc29uRGF0YVtwYWdlSW5kZXhdO1xuICAgICAgZm9yIChsZXQgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBgUGFnZSAke3BhZ2VJbmRleCArIDF9OiAke3Jlc3VsdC5tZXNzYWdlfWAsXG4gICAgICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0Zvcm0gaXMgdmFsaWQuJyxcbiAgICAgIHBhZ2VJbmRleDogMCxcbiAgICB9O1xuICB9XG5cbiAgdmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhwYWdlOiBhbnkpOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZyB9IHtcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChmb3JtRWxlbWVudHM6IGFueVtdKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gZWxlbWVudC5lbGVtZW50LmFuc3dlcjtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgaWYgKCFhbnN3ZXIgfHwgYW5zd2VyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBSZXF1aXJlZCBmaWxlIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBSZXF1aXJlZCBxdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgbm90IGFuc3dlcmVkLmAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGxvZ2ljLmZvcm1FbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJykge1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnQWxsIHJlcXVpcmVkIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQuJyB9O1xuICAgIH07XG5cbiAgICBmb3IgKGxldCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJzdWJtaXNzaW9uLWNvbnRhaW5lciBjb250YWluZXIgbWItMlwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBvYmplY3RLZXlzKHN1Ym1pc3Npb24/LmFuc3dlck1hcClcIiBjbGFzcz1cInN1Ym1pc3Npb24taXRlbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImtleVwiPnt7IGtleSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlVXJsKHN1Ym1pc3Npb24/LmFuc3dlck1hcFtrZXldKTsgZWxzZSB0ZXh0XCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cInN1Ym1pc3Npb24/LmFuc3dlck1hcFtrZXldXCIgYWx0PVwie3sga2V5IH19XCIgY2xhc3M9XCJpbWFnZVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0Pnt7IHN1Ym1pc3Npb24uYW5zd2VyTWFwW2tleV0gfX08L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGVhZCBjb250YWluZXJcIj5cbiAgICA8bGliLWhlYWRlciBbbmFtZV09XCJuYW1lXCI+PC9saWItaGVhZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImJvZHkgY29udGFpbmVyXCI+XG4gICAgPGxpYi1uYXZpZ2F0aW9uLXRhYnNcbiAgICAgICpuZ0lmPVwibmF2aWdhdGlvbiA9PSAnVEFCJ1wiXG4gICAgICBbcGFnZXNdPVwicGFnZXNcIlxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXG4gICAgICAocGFnZUNoYW5nZWQpPVwic2V0Q3VycmVudFBhZ2UoJGV2ZW50KVwiXG4gICAgICAoc3VibWl0RW1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgPjwvbGliLW5hdmlnYXRpb24tdGFicz5cbiAgICA8bGliLW5leHQtcHJldi1uYXZpZ2F0aW9uXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ05FWFRfQU5EX1BSRVZJT1VTX0JVVFRPTidcIlxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXG4gICAgICBbcGFnZXNdPVwicGFnZXNcIlxuICAgICAgW3ByZXZpb3VzUGFnZV09XCJwcmV2aW91c1BhZ2VcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgIFtuZXh0UGFnZV09XCJuZXh0UGFnZVwiXG4gICAgICAobmF2aWdhdGVOZXh0KT1cIm5hdmlnYXRlVG9OZXh0UGFnZSgpXCJcbiAgICAgIChuYXZpZ2F0ZVByZXZpb3VzKT1cIm5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKVwiXG4gICAgICAoc3VibWl0RW1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgPjwvbGliLW5leHQtcHJldi1uYXZpZ2F0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQWdDeEQsTUFBTSxPQUFPLG1CQUFtQjtJQStCOUIsWUFDVSxXQUF3QixFQUN4QixNQUFxQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBaEMvQixhQUFRLEdBQXNCLElBQUksQ0FBQztRQUMxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDekIsV0FBTSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXBFLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FB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QUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztRQUM1RSxDQUFDLENBQUM7UUFFRixLQUFLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQixPQUFPLE1BQU0sQ0FBQzthQUNmO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBVTtRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0F0YVUsbUJBQW1CO21HQUFuQixtQkFBbUIsd0tDbENoQyxraENBNkJBOzs0RkRLYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhIQU1sQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1hcHBlciBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuXG5pbnRlcmZhY2UgQW5zd2VyIHtcbiAgcXVlc3Rpb25JZDogc3RyaW5nO1xuICBhbnN3ZXI6IGFueTtcbiAgYW5zd2VySWQ/OiBzdHJpbmc7XG4gIGRlbGV0ZUZpbGVzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBTdWJtaXNzaW9uIHtcbiAgc3VibWlzc2lvbklkOiBzdHJpbmc7XG4gIGFuc3dlcnM6IEFuc3dlcltdO1xufVxuXG5pbnRlcmZhY2UgRm9ybSB7XG4gIGZvcm1JZDogc3RyaW5nO1xuICBkZWxldGVkU3VibWlzc2lvbnM6IGFueVtdO1xuICBzdWJtaXNzaW9uczogU3VibWlzc2lvbltdO1xufVxuXG5pbnRlcmZhY2UgUXVlc3Rpb25BbnN3ZXJzV3JhcHBlciB7XG4gIGFuc3dlcnM6IEFuc3dlcltdO1xuICBmb3JtczogRm9ybVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3VibWl0LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdWJtaXQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdWJtaXRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcXVlc3Rpb246IFB1YmxpY0Zvcm0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbW9kdWxlTmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VibWlzc2lvbklkOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIHN1Ym1pdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBuYW1lOiBzdHJpbmcgPSAnJztcbiAgc2F2ZUF1dG9tYXRpY2FsbHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2F2ZUludGVydmFsOiBudW1iZXIgPSAwO1xuICBjdXN0b21pemVGb250OiBib29sZWFuID0gZmFsc2U7XG4gIGZvbnRGYW1pbHk6IHN0cmluZyA9ICcnO1xuICBmb250U2l6ZTogbnVtYmVyID0gMDtcbiAgZW5hYmxlRGF0YUV4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWxlRm9ybWF0czogc3RyaW5nW10gPSBbXTtcbiAgZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlc3Rpb25OdW1iZXJpbmc6IHN0cmluZyA9ICcnO1xuICBlbmFibGVHb29nbGVSZWNhcHRjaGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZ29vZ2xlUmVjYXB0Y2hhS2V5OiBzdHJpbmcgPSAnJztcbiAgZ29vZ2xlUmVjYXB0Y2hhU2VjcmV0OiBzdHJpbmcgPSAnJztcbiAgbmF2aWdhdGlvbjogc3RyaW5nID0gJyc7XG4gIG1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHBhZ2VzOiBhbnkgPSBbXTtcbiAgY3VycmVudFBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcHJldmlvdXNQYWdlOiBhbnkgPSB7fTtcbiAgY3VycmVudFBhZ2U6IGFueSA9IHt9O1xuICBuZXh0UGFnZTogYW55ID0ge307XG4gIGxhc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlc3Rpb25BbnN3ZXJzOiBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyID0geyBhbnN3ZXJzOiBbXSwgZm9ybXM6IFtdIH07XG4gIGZpbGVzOiB7IHF1ZXN0aW9uSWQ6IHN0cmluZzsgZmlsZTogYW55IH1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtRGF0YSgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xuICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRGb3JtRGF0YSgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFN1Ym1pdHRlZEZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5xdWVzdGlvbiA9IG1hcHBlci5tYXBQdWJsaWNGb3JtVG9Nb2RlbChyZXNwb25zZSk7XG4gICAgICB0aGlzLmFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyh0aGlzLnF1ZXN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkge1xuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy5wYWdlcyA9IHF1ZXN0aW9uLnBhZ2VzO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xuICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzWzFdO1xuICAgIHRoaXMuc2F2ZUF1dG9tYXRpY2FsbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5zYXZlQXV0b21hdGljYWxseTtcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcbiAgICB0aGlzLmN1c3RvbWl6ZUZvbnQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5jdXN0b21pemVGb250O1xuICAgIHRoaXMuZm9udEZhbWlseSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRGYW1pbHk7XG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xuICAgIHRoaXMuZW5hYmxlRGF0YUV4cG9ydCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZURhdGFFeHBvcnQ7XG4gICAgdGhpcy5maWxlRm9ybWF0cyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZpbGVGb3JtYXRzO1xuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVRdWVzdGlvbk51bWJlcmluZztcbiAgICB0aGlzLnF1ZXN0aW9uTnVtYmVyaW5nID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ucXVlc3Rpb25OdW1iZXJpbmc7XG4gICAgdGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVHb29nbGVSZWNhcHRjaGE7XG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFLZXkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFLZXk7XG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFTZWNyZXQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFTZWNyZXQ7XG4gICAgdGhpcy5uYXZpZ2F0aW9uID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubmF2aWdhdGlvbjtcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJbmRleCA8IHRoaXMucGFnZXMubGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4ICsgMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4Kys7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCArIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJbmRleCA+IDApIHtcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3BvbnNlID0gdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xuICAgICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LS07XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVSZXF1aXJlZFF1ZXN0aW9ucyhjdXJyZW50UGFnZURhdGEpO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xuICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgXG4gICAgY29uc3QgZXh0cmFjdFF1ZXN0aW9ucyA9IChcbiAgICAgIGZvcm1FbGVtZW50czogYW55W10sIFxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgXG4gICAgICBpc0luU3ViRm9ybTogYm9vbGVhbiA9IGZhbHNlLCBcbiAgICAgIHN1YkZvcm1JbmRleDogbnVtYmVyID0gMFxuICAgICk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XG4gICAgICAgIFxuICAgICAgZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xuICAgICAgICAgIGxldCBiYXNlUXVlc3Rpb246IGFueTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlID09PSAnRklMRV9QSUNLRVInKSB7XG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VyOiAnJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBpc0luU3ViRm9ybSBcbiAgICAgICAgICAgICAgICA/IGAke3BhcmVudEZvcm1JZH1fJHtzdWJGb3JtSW5kZXh9XyR7ZWxlbWVudC5lbGVtZW50LmlkfWBcbiAgICAgICAgICAgICAgICA6IGVsZW1lbnQuZWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxuICAgICAgICAgICAgICAgIGZpbGU6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VyOiBlbGVtZW50LmVsZW1lbnQuYW5zd2VyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmJhc2VRdWVzdGlvbixcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcbiAgICAgICAgICAgICAgZGVsZXRlRmlsZXM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVGaWxlcyB8fCBbXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKGJhc2VRdWVzdGlvbik7XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMobG9naWMuZm9ybUVsZW1lbnRzLCBwYXJlbnRGb3JtSWQsIGlzSW5TdWJGb3JtLCBzdWJGb3JtSW5kZXgpO1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKC4uLnJlc3VsdC5hbnN3ZXJzKTtcbiAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcbiAgICAgICAgICBjb25zdCBzdWJmb3JtSWQgPSBlbGVtZW50LmVsZW1lbnQuaWQ7XG4gICAgICAgICAgY29uc3Qgc3VibWlzc2lvbklkID0gZWxlbWVudC5lbGVtZW50LnN1Ym1pc3Npb25JZDtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJmb3JtUXVlc3Rpb25zID0gZXh0cmFjdFF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnRzLCBzdWJmb3JtSWQsIHRydWUsIGZvcm1zLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBzdWJmb3JtOiBGb3JtID0ge1xuICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcbiAgICAgICAgICAgICAgZGVsZXRlZFN1Ym1pc3Npb25zOiBbXSxcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IFt7XG4gICAgICAgICAgICAgICAgc3VibWlzc2lvbklkOiBzdWJtaXNzaW9uSWQsIFxuICAgICAgICAgICAgICAgIGFuc3dlcnM6IHN1YmZvcm1RdWVzdGlvbnMuYW5zd2Vyc1xuICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVsZW1lbnQuc3ViRm9ybVN0cnVjdHVyZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybVF1ZXN0aW9ucyA9IGV4dHJhY3RRdWVzdGlvbnMoZWxlbWVudC5lbGVtZW50LmZvcm1FbGVtZW50cywgc3ViZm9ybUlkLCB0cnVlLCBmb3Jtcy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdTdWJmb3JtID0gZm9ybXMuZmluZChmb3JtID0+IGZvcm0uZm9ybUlkID09PSBzdWJmb3JtSWQpO1xuICBcbiAgICAgICAgICAgICAgY29uc3Qgc3ViZm9ybTogRm9ybSA9IHtcbiAgICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcbiAgICAgICAgICAgICAgICBkZWxldGVkU3VibWlzc2lvbnM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVkU3VibWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9uc1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmb3Jtcy5wdXNoKHN1YmZvcm0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTsgICAgICBcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XG4gICAgfTtcbiAgXG4gICAgY29uc3QgcHJvY2Vzc1BhZ2VzID0gKHBhZ2VzOiBhbnlbXSk6IHsgYW5zd2VyczogQW5zd2VyW10sIGZvcm1zOiBGb3JtW10gfSA9PiB7XG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XG4gIFxuICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xuICAgICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgZm9ybXMucHVzaCguLi5yZXN1bHQuZm9ybXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XG4gICAgfTtcbiAgXG4gICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc1BhZ2VzKHRoaXMucGFnZXMpO1xuICBcbiAgICB0aGlzLnF1ZXN0aW9uQW5zd2VycyA9IHtcbiAgICAgIGFuc3dlcnM6IHJlc3VsdC5hbnN3ZXJzLFxuICAgICAgZm9ybXM6IHJlc3VsdC5mb3Jtc1xuICAgIH07XG4gIH1cbiAgXG4gIHN1Ym1pdEZvcm0oKSB7XG4gICAgY29uc29sZS5sb2coJ3BhZ2VzJyx0aGlzLnBhZ2VzKTtcbiAgICBcbiAgICBsZXQgdmFsaWRhdGlvblJlc3BvbnNlID0gdGhpcy52YWxpZGF0ZUZvcm0odGhpcy5wYWdlcyk7XG4gICAgdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uQW5zd2VycygpOyAgICBcbiAgICBpZiAodmFsaWRhdGlvblJlc3BvbnNlLmlzVmFsaWQpIHtcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb24nLCBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXN0aW9uQW5zd2VycykpO1xuICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmZpbGVzLmZvckVhY2goKGZpbGVJdGVtKSA9PiB7XG4gICAgICAgICAgZmlsZUl0ZW0uZmlsZS5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWxlSXRlbS5xdWVzdGlvbklkLCBmaWxlLl9maWxlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybSh0aGlzLm1vZHVsZU5hbWUsIHRoaXMuc3VibWlzc2lvbklkLCBmb3JtRGF0YSkuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRm9ybSB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQuZW1pdCgnc3VjY2VzcycpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignRmFpbGVkIHRvIHVwZGF0ZSBmb3JtJyk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5zdWJtaXRGb3JtKHRoaXMubW9kdWxlTmFtZSwgZm9ybURhdGEpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0Zvcm0gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQuZW1pdCgnc3VjY2VzcycpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignRmFpbGVkIHRvIHN1Ym1pdCBmb3JtJyk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcih2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVGb3JtKGpzb25EYXRhOiBhbnkpOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZzsgcGFnZUluZGV4OiBudW1iZXIgfCAwIH0ge1xuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKGZvcm1FbGVtZW50czogYW55W10pOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZzsgcGFnZUluZGV4OiBudW1iZXIgfCAwIH0gPT4ge1xuICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBmb3JtRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xuICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gZWxlbWVudC5lbGVtZW50LnJlcXVpcmVkO1xuICAgICAgICAgIGNvbnN0IGFuc3dlciA9IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXI7XG4gICAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IGVsZW1lbnQuZWxlbWVudC52YWxpZGF0aW9uO1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBlbGVtZW50LmVsZW1lbnQuYXR0YWNobWVudHM7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgaWYgKCghYW5zd2VyIHx8IGFuc3dlci5sZW5ndGggPT09IDApICYmIGF0dGFjaG1lbnQubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUmVxdWlyZWQgZmlsZSBxdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaGFzIG5vIGZpbGVzIHVwbG9hZGVkLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgaWYgKCFhbnN3ZXIgfHwgT2JqZWN0LmtleXMoYW5zd2VyKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyByZXF1aXJlZCBidXQgdmFsaWRhdGlvbiBpcyBmYWxzZS5gLFxuICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJlcXVpcmVkICYmIGFuc3dlciAmJiBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgcmVxdWlyZWQgYnV0IGFuc3dlciBwcm92aWRlZCB3aXRoIHZhbGlkYXRpb24gZmFsc2UuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMobG9naWMuZm9ybUVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICcnLCBwYWdlSW5kZXg6IDAgfTtcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgcGFnZUluZGV4ID0gMDsgcGFnZUluZGV4IDwganNvbkRhdGEubGVuZ3RoOyBwYWdlSW5kZXgrKykge1xuICAgICAgY29uc3QgcGFnZSA9IGpzb25EYXRhW3BhZ2VJbmRleF07XG4gICAgICBmb3IgKGxldCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBQYWdlICR7cGFnZUluZGV4ICsgMX06ICR7cmVzdWx0Lm1lc3NhZ2V9YCxcbiAgICAgICAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVmFsaWQ6IHRydWUsXG4gICAgICBtZXNzYWdlOiAnRm9ybSBpcyB2YWxpZC4nLFxuICAgICAgcGFnZUluZGV4OiAwLFxuICAgIH07XG4gIH1cblxuICB2YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKHBhZ2U6IGFueSk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKGZvcm1FbGVtZW50czogYW55W10pOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZyB9ID0+IHtcbiAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZm9ybUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcbiAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IGVsZW1lbnQuZWxlbWVudC5yZXF1aXJlZDtcbiAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBlbGVtZW50LmVsZW1lbnQuYW5zd2VyO1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIG5vdCBhbnN3ZXJlZC5gLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgIGlmICghYW5zd2VyIHx8IE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMobG9naWMuZm9ybUVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XG4gICAgfTtcblxuICAgIGZvciAobGV0IHJvdyBvZiBwYWdlLnJvd3MpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJ0FsbCByZXF1aXJlZCBxdWVzdGlvbnMgYXJlIGFuc3dlcmVkLicgfTtcbiAgfVxuXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXBkYXRlU3ViRm9ybSh0aGlzLnBhZ2VzLCBldmVudCk7XG4gIH1cblxuICB1cGRhdGVTdWJGb3JtID0gKHBhZ2VzOiBhbnlbXSwgdXBkYXRlZFN1YkZvcm06IGFueSkgPT4ge1xuICAgIHBhZ2VzLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OmFueSkgPT4ge1xuICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJiBlbGVtZW50LmVsZW1lbnQuaWQgPT09IHVwZGF0ZWRTdWJGb3JtLmZvcm1JZCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBleGlzdGluZyBzdWJmb3JtIHdpdGggdGhlIG5ldyBkYXRhXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQgPSB1cGRhdGVkU3ViRm9ybTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmIGVsZW1lbnQuZWxlbWVudC5pZCAhPT0gdXBkYXRlZFN1YkZvcm0uZm9ybUlkKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgbXVsdGlwbGUgc3ViZm9ybXMgbG9naWMgaGVyZSBpZiBuZWVkZWRcbiAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHVwZGF0ZSBjaGlsZCBsb2dpY3NcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKChsb2dpYzphbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3ViRm9ybShsb2dpYy5mb3JtRWxlbWVudHMsIHVwZGF0ZWRTdWJGb3JtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG5cbn0iLCI8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkIGNvbnRhaW5lclwiPlxuICAgIDxsaWItaGVhZGVyIFtuYW1lXT1cIm5hbWVcIj48L2xpYi1oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYm9keSBjb250YWluZXJcIj5cbiAgICA8bGliLW5hdmlnYXRpb24tdGFic1xuICAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uID09ICdUQUInXCJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXG4gICAgICBbY3VycmVudFBhZ2VJbmRleF09XCJjdXJyZW50UGFnZUluZGV4XCJcbiAgICAgIChwYWdlQ2hhbmdlZCk9XCJzZXRDdXJyZW50UGFnZSgkZXZlbnQpXCJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXG4gICAgPjwvbGliLW5hdmlnYXRpb24tdGFicz5cbiAgICA8bGliLW5leHQtcHJldi1uYXZpZ2F0aW9uXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ05FWFRfQU5EX1BSRVZJT1VTX0JVVFRPTidcIlxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXG4gICAgICBbcGFnZXNdPVwicGFnZXNcIlxuICAgICAgW3ByZXZpb3VzUGFnZV09XCJwcmV2aW91c1BhZ2VcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgIFtuZXh0UGFnZV09XCJuZXh0UGFnZVwiXG4gICAgICAobmF2aWdhdGVOZXh0KT1cIm5hdmlnYXRlVG9OZXh0UGFnZSgpXCJcbiAgICAgIChuYXZpZ2F0ZVByZXZpb3VzKT1cIm5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKVwiXG4gICAgICAoc3VibWl0RW1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxuICAgID48L2xpYi1uZXh0LXByZXYtbmF2aWdhdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5zd2VyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9tb2RlbHMvYW5zd2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudC5tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuc3dlcntcbiAgICBxdWVzdGlvbklkPzogc3RyaW5nO1xuICAgIGFuc3dlcj86IGFueTtcbiAgICBhbnN3ZXJJZD86IHN0cmluZztcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudFtdO1xufSJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViRm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvbW9kZWxzL3N1YkZvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1FbGVtZW50VHlwZSB9IGZyb20gJy4vZm9ybUVsZW1lbnRUeXBlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBTdWJGb3JtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3ViRm9ybVN0cnVjdHVyZTogYm9vbGVhbjtcbiAgZm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFR5cGU8YW55PltdO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViRm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvbW9kZWxzL3N1YkZvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1FbGVtZW50VHlwZSB9IGZyb20gJy4vZm9ybUVsZW1lbnRUeXBlLm1vZGVsJztcbmltcG9ydCB7IFN1Ym1pc3Npb24gfSBmcm9tICcuL3N1Ym1pc3Npb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1YkZvcm0ge1xuICBpZDogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdWJGb3JtU3RydWN0dXJlOiBzdHJpbmc7XG4gIHN1Ym1pc3Npb25zOiBTdWJtaXNzaW9uW107XG4gIGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRUeXBlPGFueT5bXTtcblxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWlzc2lvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvbW9kZWxzL3N1Ym1pc3Npb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuc3dlciB9IGZyb20gXCIuL2Fuc3dlci5tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym1pc3Npb257XG4gICAgc3VibWlzc2lvbklkOiBzdHJpbmc7XG4gICAgYW5zd2VyczogQW5zd2VyW107XG59XG5cbiJdfQ==
@@ -107,10 +107,26 @@ function mapLogicToModel(apiLogic) {
107
107
  export function mapSubFormToModel(apiSubForm) {
108
108
  return {
109
109
  id: apiSubForm.id,
110
+ count: apiSubForm.count,
110
111
  title: apiSubForm.title,
111
112
  description: apiSubForm.description,
112
113
  subFormStructure: apiSubForm.subFormStructure,
113
114
  formElements: apiSubForm.formElements.map((element) => mapFormElementTypeToModel(element)),
115
+ submissions: apiSubForm?.submissions?.map((submission) => mapSubmissionToModel(submission)),
116
+ };
117
+ }
118
+ function mapSubmissionToModel(apiSubmission) {
119
+ return {
120
+ submissionId: apiSubmission.submissionId,
121
+ answers: apiSubmission?.answers?.map((answer) => mapAnswerToModel(answer)),
122
+ };
123
+ }
124
+ function mapAnswerToModel(apiAnswer) {
125
+ return {
126
+ questionId: apiAnswer.questionId,
127
+ answer: apiAnswer?.answer,
128
+ answerId: apiAnswer?.answerId,
129
+ attachments: apiAnswer?.attachments?.map((attachment) => mapAttachmentToModel(attachment)),
114
130
  };
115
131
  }
116
132
  export function mapFormElementTypeToModel(apiFormElementType) {
@@ -265,4 +281,4 @@ function mapOptionToModel(apiOption) {
265
281
  api: apiOption?.api ? mapElementOptionAPIToModel(apiOption.api) : undefined,
266
282
  };
267
283
  }
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CQSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsYUFBa0I7SUFDckQsT0FBTztRQUNMLElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDL0IsaUJBQWlCLEVBQUUsMkJBQTJCLENBQzVDLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQ3ZDO1FBQ0QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQ3JELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FDeEI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsMkJBQTJCLENBQ2xDLG9CQUF5QjtJQUV6QixPQUFPO1FBQ0wsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsaUJBQWlCO1FBQ3pELFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxZQUFZO1FBQy9DLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxhQUFhO1FBQ2pELFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVO1FBQzNDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxRQUFRO1FBQ3ZDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLGdCQUFnQjtRQUN2RCxXQUFXLEVBQUUsb0JBQW9CLENBQUMsV0FBVztRQUM3Qyx1QkFBdUIsRUFBRSxvQkFBb0IsQ0FBQyx1QkFBdUI7UUFDckUsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsaUJBQWlCO1FBQ3pELHFCQUFxQixFQUFFLG9CQUFvQixDQUFDLHFCQUFxQjtRQUNqRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxrQkFBa0I7UUFDM0QscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMscUJBQXFC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QUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQzVFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwZWFyYW5jZSB9IGZyb20gJy4uL21vZGVscy9hcHBlYXJhbmNlLm1vZGVsJztcbmltcG9ydCB7IEVsZW1lbnRPcHRpb25BUEkgfSBmcm9tICcuLi9tb2RlbHMvZWxlbWVudE9wdGlvbkFQSS5tb2RlbCc7XG5pbXBvcnQgeyBlbGVtZW50T3B0aW9uQVBJRGF0YSB9IGZyb20gJy4uL21vZGVscy9lbGVtZW50T3B0aW9uQVBJRGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBFbGVtZW50T3B0aW9uREIgfSBmcm9tICcuLi9tb2RlbHMvZWxlbWVudE9wdGlvbkRCLm1vZGVsJztcbmltcG9ydCB7IEVsZW1lbnRPcHRpb25EQkNyaXRlcmlhIH0gZnJvbSAnLi4vbW9kZWxzL2VsZW1lbnRPcHRpb25EQkNyaXRlcmlhLm1vZGVsJztcbmltcG9ydCB7IEZvcm1Db25maWd1cmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1Db25maWd1cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1FbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEdyaWQgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2UubW9kZWwnO1xuaW1wb3J0IHsgUHVibGljRm9ybSB9IGZyb20gJy4uL21vZGVscy9wdWJsaWNGb3JtLm1vZGVsJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3F1ZXN0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL21vZGVscy9yb3cubW9kZWwnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL21vZGVscy92YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9vcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL21vZGVscy9zZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IFN1YkZvcm0gfSBmcm9tICcuLi9tb2RlbHMvc3ViRm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudFR5cGUgfSBmcm9tICcuLi9tb2RlbHMvZm9ybUVsZW1lbnRUeXBlLm1vZGVsJztcbmltcG9ydCB7IExvZ2ljIH0gZnJvbSAnLi4vbW9kZWxzL2xvZ2ljLm1vZGVsJztcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICcuLi9tb2RlbHMvYXR0YWNobWVudC5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBQdWJsaWNGb3JtVG9Nb2RlbChhcGlQdWJsaWNGb3JtOiBhbnkpOiBQdWJsaWNGb3JtIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBhcGlQdWJsaWNGb3JtLnJlc3VsdC5uYW1lLFxuICAgIGZvcm1Db25maWd1cmF0aW9uOiBtYXBGb3JtQ29uZmlndXJhdGlvblRvTW9kZWwoXG4gICAgICBhcGlQdWJsaWNGb3JtLnJlc3VsdC5mb3JtQ29uZmlndXJhdGlvblxuICAgICksXG4gICAgcGFnZXM6IGFwaVB1YmxpY0Zvcm0ucmVzdWx0LnBhZ2VzLm1hcCgoYXBpUGFnZTogYW55KSA9PlxuICAgICAgbWFwUGFnZVRvTW9kZWwoYXBpUGFnZSlcbiAgICApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBGb3JtQ29uZmlndXJhdGlvblRvTW9kZWwoXG4gIGFwaUZvcm1Db25maWd1cmF0aW9uOiBhbnlcbik6IEZvcm1Db25maWd1cmF0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICBzYXZlQXV0b21hdGljYWxseTogYXBpRm9ybUNvbmZpZ3VyYXRpb24uc2F2ZUF1dG9tYXRpY2FsbHksXG4gICAgc2F2ZUludGVydmFsOiBhcGlGb3JtQ29uZmlndXJhdGlvbi5zYXZlSW50ZXJ2YWwsXG4gICAgY3VzdG9taXplRm9udDogYXBpRm9ybUNvbmZpZ3VyYXRpb24uY3VzdG9taXplRm9udCxcbiAgICBmb250RmFtaWx5OiBhcGlGb3JtQ29uZmlndXJhdGlvbi5mb250RmFtaWx5LFxuICAgIGZvbnRTaXplOiBhcGlGb3JtQ29uZmlndXJhdGlvbi5mb250U2l6ZSxcbiAgICBlbmFibGVEYXRhRXhwb3J0OiBhcGlGb3JtQ29uZmlndXJhdGlvbi5lbmFibGVEYXRhRXhwb3J0LFxuICAgIGZpbGVGb3JtYXRzOiBhcGlGb3JtQ29uZmlndXJhdGlvbi5maWxlRm9ybWF0cyxcbiAgICBlbmFibGVRdWVzdGlvbk51bWJlcmluZzogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcsXG4gICAgcXVlc3Rpb25OdW1iZXJpbmc6IGFwaUZvcm1Db25maWd1cmF0aW9uLnF1ZXN0aW9uTnVtYmVyaW5nLFxuICAgIGVuYWJsZUdvb2dsZVJlY2FwdGNoYTogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhLFxuICAgIGdvb2dsZVJlY2FwdGNoYUtleTogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZ29vZ2xlUmVjYXB0Y2hhS2V5LFxuICAgIGdvb2dsZVJlY2FwdGNoYVNlY3JldDogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZ29vZ2xlUmVjYXB0Y2hhU2VjcmV0LFxuICAgIG5hdmlnYXRpb246IGFwaUZvcm1Db25maWd1cmF0aW9uLm5hdmlnYXRpb24sXG4gICAgbWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ6IGFwaUZvcm1Db25maWd1cmF0aW9uLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBQYWdlVG9Nb2RlbChhcGlQYWdlOiBhbnkpOiBQYWdlIHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogYXBpUGFnZS50aXRsZSxcbiAgICByb3dzOiBhcGlQYWdlLnJvd3MubWFwKChhcGlSb3c6IGFueSkgPT4gbWFwUm93VG9Nb2RlbChhcGlSb3cpKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwUm93VG9Nb2RlbChhcGlSb3c6IGFueSk6IFJvdyB7XG4gIHJldHVybiB7XG4gICAgZ3JpZDogYXBpUm93LmdyaWQubWFwKChhcGlHcmlkOiBhbnkpID0+IG1hcEdyaWRUb01vZGVsKGFwaUdyaWQpKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwR3JpZFRvTW9kZWwoYXBpR3JpZDogYW55KTogR3JpZCB7XG4gIGxldCBlbnRpdHk6IFNlY3Rpb24gfCBRdWVzdGlvbiB8IFN1YkZvcm0gfCB1bmRlZmluZWQ7XG5cbiAgc3dpdGNoIChhcGlHcmlkLmVudGl0eVR5cGUpIHtcbiAgICBjYXNlICdRVUVTVElPTic6XG4gICAgICBlbnRpdHkgPSBtYXBRdWVzdGlvblRvTW9kZWwoYXBpR3JpZC5lbGVtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1NFQ1RJT04nOlxuICAgICAgZW50aXR5ID0gbWFwU2VjdGlvblRvTW9kZWwoYXBpR3JpZC5lbGVtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1NVQkZPUk0nOlxuICAgICAgZW50aXR5ID0gbWFwU3ViRm9ybVRvTW9kZWwoYXBpR3JpZC5lbGVtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZW50aXR5IHR5cGU6ICR7YXBpR3JpZC5lbnRpdHlUeXBlfWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnRpdHlUeXBlOiBhcGlHcmlkLmVudGl0eVR5cGUsXG4gICAgZWxlbWVudDogZW50aXR5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwU2VjdGlvblRvTW9kZWwoYXBpU2VjdGlvbjogYW55KTogU2VjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGFwaVNlY3Rpb24uaWQsXG4gICAgdGl0bGU6IGFwaVNlY3Rpb24udGl0bGUsXG4gICAgZGVzY3JpcHRpb246IGFwaVNlY3Rpb24uZGVzY3JpcHRpb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBRdWVzdGlvblRvTW9kZWwoYXBpUXVlc3Rpb246IGFueSk6IFF1ZXN0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICBjb3VudDogYXBpUXVlc3Rpb24uY291bnQsXG4gICAgaWQ6IGFwaVF1ZXN0aW9uLmlkLFxuICAgIHF1ZXN0aW9uTnVtYmVyOiBhcGlRdWVzdGlvbi5xdWVzdGlvbk51bWJlcixcbiAgICByZXF1aXJlZDogYXBpUXVlc3Rpb24ucmVxdWlyZWQsXG4gICAgaGludDogYXBpUXVlc3Rpb24uaGludCxcbiAgICBxdWVzdGlvbjogYXBpUXVlc3Rpb24ucXVlc3Rpb24sXG4gICAgYW5zd2VyOiBhcGlRdWVzdGlvbj8uYW5zd2VyLFxuICAgIHZhbGlkYXRpb246IHRydWUsXG4gICAgZm9ybUVsZW1lbnQ6IG1hcEZvcm1FbGVtZW50VG9Nb2RlbChhcGlRdWVzdGlvbi5mb3JtRWxlbWVudCksXG4gICAgY2hpbGRMb2dpY3M6IGFwaVF1ZXN0aW9uPy5jaGlsZExvZ2ljcz8ubWFwKChsb2dpYzogYW55KSA9PlxuICAgICAgbWFwTG9naWNUb01vZGVsKGxvZ2ljKVxuICAgICksXG4gICAgYW5zd2VySWQ6IGFwaVF1ZXN0aW9uPy5hbnN3ZXJJZCxcbiAgICBhdHRhY2htZW50czogYXBpUXVlc3Rpb24/LmF0dGFjaG1lbnRzPy5tYXAoKGF0dGFjaG1lbnQ6IGFueSkgPT4gbWFwQXR0YWNobWVudFRvTW9kZWwoYXR0YWNobWVudCkpIHx8IFtdLFxuICAgIGRlbGV0ZUZpbGVzOiBbXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwQXR0YWNobWVudFRvTW9kZWwoYXBpQXR0YWNobWVudDogYW55KTogQXR0YWNobWVudCB7XG4gIHJldHVybiB7XG4gICAgZmlsZUlkOiBhcGlBdHRhY2htZW50LmZpbGVJZCxcbiAgICBmaWxlTmFtZTogYXBpQXR0YWNobWVudC5maWxlTmFtZSxcbiAgICBmaWxlVXJsOiBhcGlBdHRhY2htZW50LmZpbGVVcmwsXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEZvcm1FbGVtZW50VG9Nb2RlbChhcGlGb3JtRWxlbWVudDogYW55KTogRm9ybUVsZW1lbnQge1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRUeXBlOiBhcGlGb3JtRWxlbWVudC5lbGVtZW50VHlwZSxcbiAgICBhcHBlYXJhbmNlOiBtYXBBcHBlYXJhbmNlVG9Nb2RlbChhcGlGb3JtRWxlbWVudC5hcHBlYXJhbmNlKSxcbiAgICB2YWxpZGF0aW9uOiBtYXBWYWxpZGF0aW9uVG9Nb2RlbChhcGlGb3JtRWxlbWVudC52YWxpZGF0aW9uKSxcbiAgICBvcHRpb246IG1hcE9wdGlvblRvTW9kZWwoYXBpRm9ybUVsZW1lbnQ/Lm9wdGlvbiksXG4gICAgc2VsZWN0aW9uTWF0cml4TGFiZWw6IGFwaUZvcm1FbGVtZW50LnNlbGVjdGlvbk1hdHJpeExhYmVsLFxuICAgIHNlbGVjdGlvbk1hdHJpeENvbHVtbjogYXBpRm9ybUVsZW1lbnQuc2VsZWN0aW9uTWF0cml4Q29sdW1uLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBMb2dpY1RvTW9kZWwoYXBpTG9naWM6IGFueSk6IExvZ2ljIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogYXBpTG9naWMuaWQsXG4gICAgaW5wdXRWYWx1ZTogYXBpTG9naWMuaW5wdXRWYWx1ZSxcbiAgICBjb25kaXRpb246IGFwaUxvZ2ljLmNvbmRpdGlvbixcbiAgICBzaG93TG9naWM6IGZhbHNlLFxuICAgIGZvcm1FbGVtZW50czogYXBpTG9naWM/LmZvcm1FbGVtZW50cz8ubWFwKChlbGVtZW50OiBhbnkpID0+XG4gICAgICBtYXBGb3JtRWxlbWVudFR5cGVUb01vZGVsKGVsZW1lbnQpXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFN1YkZvcm1Ub01vZGVsKGFwaVN1YkZvcm06IGFueSk6IFN1YkZvcm0ge1xuICByZXR1cm4ge1xuICAgIGlkOiBhcGlTdWJGb3JtLmlkLFxuICAgIHRpdGxlOiBhcGlTdWJGb3JtLnRpdGxlLFxuICAgIGRlc2NyaXB0aW9uOiBhcGlTdWJGb3JtLmRlc2NyaXB0aW9uLFxuICAgIHN1YkZvcm1TdHJ1Y3R1cmU6IGFwaVN1YkZvcm0uc3ViRm9ybVN0cnVjdHVyZSxcbiAgICBmb3JtRWxlbWVudHM6IGFwaVN1YkZvcm0uZm9ybUVsZW1lbnRzLm1hcCgoZWxlbWVudDogYW55KSA9PlxuICAgICAgbWFwRm9ybUVsZW1lbnRUeXBlVG9Nb2RlbChlbGVtZW50KVxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBGb3JtRWxlbWVudFR5cGVUb01vZGVsKFxuICBhcGlGb3JtRWxlbWVudFR5cGU6IGFueVxuKTogRm9ybUVsZW1lbnRUeXBlPGFueT4ge1xuICByZXR1cm4ge1xuICAgIGVudGl0eVR5cGU6IGFwaUZvcm1FbGVtZW50VHlwZS5lbnRpdHlUeXBlLFxuICAgIGVsZW1lbnQ6IGFwaUZvcm1FbGVtZW50VHlwZS5lbGVtZW50LFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBBcHBlYXJhbmNlVG9Nb2RlbChhcGlBcHBlYXJhbmNlOiBhbnkpOiBBcHBlYXJhbmNlIHtcbiAgcmV0dXJuIHtcbiAgICBwbGFjZWhvbGRlcjogYXBpQXBwZWFyYW5jZS5wbGFjZWhvbGRlcixcbiAgICBmb250U2l6ZTogYXBpQXBwZWFyYW5jZS5mb250U2l6ZSxcbiAgICB0ZXh0QWxpZ246IGFwaUFwcGVhcmFuY2UudGV4dEFsaWduLFxuICAgIGZvbnQ6IGFwaUFwcGVhcmFuY2UuZm9udCxcbiAgICB1bmRlcmxpbmU6IGFwaUFwcGVhcmFuY2UudW5kZXJsaW5lLFxuICAgIGJvbGQ6IGFwaUFwcGVhcmFuY2UuYm9sZCxcbiAgICBpdGFsaWNzOiBhcGlBcHBlYXJhbmNlLml0YWxpY3MsXG4gICAgZGVmYXVsdFZhbHVlOiBhcGlBcHBlYXJhbmNlLmRlZmF1bHRWYWx1ZSxcbiAgICBudW1iZXJPZlJvd3M6IGFwaUFwcGVhcmFuY2UubnVtYmVyT2ZSb3dzLFxuICAgIHNpbmdsZVNlbGVjdGlvbjogYXBpQXBwZWFyYW5jZS5zaW5nbGVTZWxlY3Rpb24sXG4gICAgZGlzcGxheUNvdW50cnlDb2RlOiBhcGlBcHBlYXJhbmNlLmRpc3BsYXlDb3VudHJ5Q29kZSxcbiAgICBkaXNwbGF5RmxhZzogYXBpQXBwZWFyYW5jZS5kaXNwbGF5RmxhZyxcbiAgICBkaXNwbGF5Q29kZTogYXBpQXBwZWFyYW5jZS5kaXNwbGF5Q29kZSxcbiAgICBzaG93Q291bnRyeU5hbWU6IGFwaUFwcGVhcmFuY2Uuc2hvd0NvdW50cnlOYW1lLFxuICAgIGJlYXV0aWZ5TnVtYmVyczogYXBpQXBwZWFyYW5jZS5iZWF1dGlmeU51bWJlcnMsXG4gICAgdXBBbmREb3duQnV0dG9uOiBhcGlBcHBlYXJhbmNlLnVwQW5kRG93bkJ1dHRvbixcbiAgICBhbGxvd05lZ2F0aXZlVmFsdWVzOiBhcGlBcHBlYXJhbmNlLmFsbG93TmVnYXRpdmVWYWx1ZXMsXG4gICAgc2hvd1ByZXZpZXdCdXR0b246IGFwaUFwcGVhcmFuY2Uuc2hvd1ByZXZpZXdCdXR0b24sXG4gICAgY29uZmlybVBhc3N3b3JkOiBhcGlBcHBlYXJhbmNlLmNvbmZpcm1QYXNzd29yZCxcbiAgICB2aWV3QnV0dG9uOiBhcGlBcHBlYXJhbmNlLnZpZXdCdXR0b24sXG4gICAgZGlzcGxheVN0cm9uZzogYXBpQXBwZWFyYW5jZS5kaXNwbGF5U3Ryb25nLFxuICAgIGRhdGVUeXBlOiBhcGlBcHBlYXJhbmNlLmRhdGVUeXBlLFxuICAgIGZvcm1hdDogYXBpQXBwZWFyYW5jZS5mb3JtYXQsXG4gICAgc2V0Q3VycmVudFBvc2l0aW9uOiBhcGlBcHBlYXJhbmNlLnNldEN1cnJlbnRQb3NpdGlvbixcbiAgICBkZWZhdWx0Wm9vbUxldmVsOiBhcGlBcHBlYXJhbmNlLmRlZmF1bHRab29tTGV2ZWwsXG4gICAgYWxsb3dGdWxsU2NyZWVuOiBhcGlBcHBlYXJhbmNlLmFsbG93RnVsbFNjcmVlbixcbiAgICBsYXRpdHVkZTogYXBpQXBwZWFyYW5jZS5sYXRpdHVkZSxcbiAgICBsb25naXR1ZGU6IGFwaUFwcGVhcmFuY2UubG9uZ2l0dWRlLFxuICAgIHNob3dBY2NlcHRCdXR0b246IGFwaUFwcGVhcmFuY2Uuc2hvd0FjY2VwdEJ1dHRvbixcbiAgICBsYWJlbE9uVmFsdWU6IGFwaUFwcGVhcmFuY2UubGFiZWxPblZhbHVlLFxuICAgIGxhYmVsT2ZmVmFsdWU6IGFwaUFwcGVhcmFuY2UubGFiZWxPZmZWYWx1ZSxcbiAgICBsYWJlbE9uQ29sb3I6IGFwaUFwcGVhcmFuY2UubGFiZWxPbkNvbG9yLFxuICAgIGxhYmVsT2ZmQ29sb3I6IGFwaUFwcGVhcmFuY2UubGFiZWxPZmZDb2xvcixcbiAgICBtaW5WYWx1ZTogYXBpQXBwZWFyYW5jZS5taW5WYWx1ZSxcbiAgICBtYXhWYWx1ZTogYXBpQXBwZWFyYW5jZS5tYXhWYWx1ZSxcbiAgICBzdGVwVmFsdWU6IGFwaUFwcGVhcmFuY2Uuc3RlcFZhbHVlLFxuICAgIGNoYW5nZVNsaWRlckNvbG9yOiBhcGlBcHBlYXJhbmNlLmNoYW5nZVNsaWRlckNvbG9yLFxuICAgIHNsaWRlckNvbG9yOiBhcGlBcHBlYXJhbmNlLnNsaWRlckNvbG9yLFxuICAgIGNhbnZhc09wdGlvbjogYXBpQXBwZWFyYW5jZS5jYW52YXNPcHRpb24sXG4gICAgc2VsZWN0aW9uVHlwZTogYXBpQXBwZWFyYW5jZS5zZWxlY3Rpb25UeXBlLFxuICAgIGRyYWdBbmREcm9wOiBhcGlBcHBlYXJhbmNlLmRyYWdBbmREcm9wLFxuICAgIHByZXZpZXdVcGxvYWRlZEZpbGVzOiBhcGlBcHBlYXJhbmNlLnByZXZpZXdVcGxvYWRlZEZpbGVzLFxuICAgIG11bHRpRmlsZVVwbG9hZHM6IGFwaUFwcGVhcmFuY2UubXVsdGlGaWxlVXBsb2FkcyxcbiAgICBzZWxlY3Rpb25Db2xvclJlcXVpcmVkOiBhcGlBcHBlYXJhbmNlLnNlbGVjdGlvbkNvbG9yUmVxdWlyZWQsXG4gICAgc2VsZWN0aW9uQ29sb3I6IGFwaUFwcGVhcmFuY2Uuc2VsZWN0aW9uQ29sb3IsXG4gICAgY29sb3I6IGFwaUFwcGVhcmFuY2UuY29sb3IsXG4gICAgYXZhdGFyUGlja2VyOmFwaUFwcGVhcmFuY2UuYXZhdGFyUGlja2VyXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcFZhbGlkYXRpb25Ub01vZGVsKGFwaVZhbGlkYXRpb246IGFueSk6IFZhbGlkYXRpb24ge1xuICByZXR1cm4ge1xuICAgIHJlZ2V4VmFsaWRhdGlvbjogYXBpVmFsaWRhdGlvbi5yZWdleFZhbGlkYXRpb24sXG4gICAgcmVnZXg6IGFwaVZhbGlkYXRpb24ucmVnZXgsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IGFwaVZhbGlkYXRpb24udmFsaWRhdGlvbk1lc3NhZ2UsXG4gICAgbGltaXRlZENoYXJhY3RlcnM6IGFwaVZhbGlkYXRpb24ubGltaXRlZENoYXJhY3RlcnMsXG4gICAgY291bnQ6IGFwaVZhbGlkYXRpb24uY291bnQsXG4gICAgbWluaW11bVNlbGVjdGlvbjogYXBpVmFsaWRhdGlvbi5taW5pbXVtU2VsZWN0aW9uLFxuICAgIG1heGltdW1TZWxlY3Rpb246IGFwaVZhbGlkYXRpb24ubWF4aW11bVNlbGVjdGlvbixcbiAgICBjb3VudHJ5V2lzZVZhbGlkYXRpb246IGFwaVZhbGlkYXRpb24uY291bnRyeVdpc2VWYWxpZGF0aW9uLFxuICAgIHJlc3RyaWN0Q291bnRyeTogYXBpVmFsaWRhdGlvbi5yZXN0cmljdENvdW50cnksXG4gICAgYWxsb3dlZENvdW50cmllczogYXBpVmFsaWRhdGlvbi5hbGxvd2VkQ291bnRyaWVzLFxuICAgIGJsb2NrZWRDb3VudHJpZXM6IGFwaVZhbGlkYXRpb24uYmxvY2tlZENvdW50cmllcyxcbiAgICByZWd1bGFyRXhwcmVzc2lvbjogYXBpVmFsaWRhdGlvbi5yZWd1bGFyRXhwcmVzc2lvbixcbiAgICBleHBlY3RlZERvbWFpbnM6IGFwaVZhbGlkYXRpb24uZXhwZWN0ZWREb21haW5zLFxuICAgIG1pbjogYXBpVmFsaWRhdGlvbi5taW4sXG4gICAgbWF4OiBhcGlWYWxpZGF0aW9uLm1heCxcbiAgICBtaW5MZW5ndGg6IGFwaVZhbGlkYXRpb24ubWluTGVuZ3RoLFxuICAgIG1heExlbmd0aDogYXBpVmFsaWRhdGlvbi5tYXhMZW5ndGgsXG4gICAgcmVxdWlyZUxvd2VyY2FzZUxldHRlcnM6IGFwaVZhbGlkYXRpb24ucmVxdWlyZUxvd2VyY2FzZUxldHRlcnMsXG4gICAgcmVxdWlyZVVwcGVyY2FzZUxldHRlcnM6IGFwaVZhbGlkYXRpb24ucmVxdWlyZVVwcGVyY2FzZUxldHRlcnMsXG4gICAgcmVxdWlyZU51bWJlcnM6IGFwaVZhbGlkYXRpb24ucmVxdWlyZU51bWJlcnMsXG4gICAgcmVxdWlyZVNwZWNpYWxDaGFyYWN0ZXJzOiBhcGlWYWxpZGF0aW9uLnJlcXVpcmVTcGVjaWFsQ2hhcmFjdGVycyxcbiAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IGFwaVZhbGlkYXRpb24uYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzLFxuICAgIG1pbkRhdGVPcHRpb246IGFwaVZhbGlkYXRpb24ubWluRGF0ZU9wdGlvbixcbiAgICBtaW5EYXRlOiBhcGlWYWxpZGF0aW9uLm1pbkRhdGUsXG4gICAgbWF4RGF0ZU9wdGlvbjogYXBpVmFsaWRhdGlvbi5tYXhEYXRlT3B0aW9uLFxuICAgIG1heERhdGU6IGFwaVZhbGlkYXRpb24ubWF4RGF0ZSxcbiAgICByZWdpb25Cb3VuZGFyeTogYXBpVmFsaWRhdGlvbi5yZWdpb25Cb3VuZGFyeSxcbiAgICByZWdpb246IGFwaVZhbGlkYXRpb24ucmVnaW9uLFxuICAgIHByZXZlbnRGcm9tUHJvY2VlZGluZ1dpdGhvdXRBZ3JlZTpcbiAgICAgIGFwaVZhbGlkYXRpb24ucHJldmVudEZyb21Qcm9jZWVkaW5nV2l0aG91dEFncmVlLFxuICAgIGJ1dHRvbkNvbG91cjogYXBpVmFsaWRhdGlvbi5idXR0b25Db2xvdXIsXG4gICAgbWF4RmlsZVNpemU6IGFwaVZhbGlkYXRpb24ubWF4RmlsZVNpemUsXG4gICAgbWluRmlsZVNpemU6IGFwaVZhbGlkYXRpb24ubWluRmlsZVNpemUsXG4gICAgbWluU2VsZWN0aW9uOiBhcGlWYWxpZGF0aW9uLm1pblNlbGVjdGlvbixcbiAgICBtYXhTZWxlY3Rpb246IGFwaVZhbGlkYXRpb24ubWF4U2VsZWN0aW9uLFxuICAgIGZpbGVUeXBlczogYXBpVmFsaWRhdGlvbi5maWxlVHlwZXMsXG4gICAgZmlsZVNpemU6IGFwaVZhbGlkYXRpb24uZmlsZVNpemUsXG4gICAgZmlsZVNpemVVbml0OiBhcGlWYWxpZGF0aW9uLmZpbGVTaXplVW5pdCxcbiAgICB0b3RhbEZpbGVTaXplOiBhcGlWYWxpZGF0aW9uLnRvdGFsRmlsZVNpemUsXG4gICAgbWluU2VsZWN0aW9uUmVxdWlyZWQ6IGFwaVZhbGlkYXRpb24ubWluU2VsZWN0aW9uUmVxdWlyZWQsXG4gICAgbWluU2VsZWN0aW9uVmFsdWU6IGFwaVZhbGlkYXRpb24ubWluU2VsZWN0aW9uVmFsdWUsXG4gICAgdmFsaWRhdGlvblR5cGU6IGFwaVZhbGlkYXRpb24udmFsaWRhdGlvblR5cGUsXG4gICAgdmFsaWRhdGlvbjogYXBpVmFsaWRhdGlvbi52YWxpZGF0aW9uLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBFbGVtZW50T3B0aW9uREJUb01vZGVsKGFwaUVsZW1lbnRPcHRpb25EQjogYW55KTogRWxlbWVudE9wdGlvbkRCIHtcbiAgcmV0dXJuIHtcbiAgICB0YWJsZU5hbWU6IGFwaUVsZW1lbnRPcHRpb25EQi50YWJsZU5hbWUsXG4gICAgdmFsdWVGaWVsZDogYXBpRWxlbWVudE9wdGlvbkRCLnZhbHVlRmllbGQsXG4gICAgbGFiZWxGaWVsZDogYXBpRWxlbWVudE9wdGlvbkRCLmxhYmVsRmllbGQsXG4gICAgY3JpdGVyaWE6IGFwaUVsZW1lbnRPcHRpb25EQi5jcml0ZXJpYS5tYXAoKGFwaUNyaXRlcmlhOiBhbnkpID0+XG4gICAgICBtYXBFbGVtZW50T3B0aW9uREJDcml0ZXJpYVRvTW9kZWwoYXBpQ3JpdGVyaWEpXG4gICAgKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwRWxlbWVudE9wdGlvbkRCQ3JpdGVyaWFUb01vZGVsKFxuICBhcGlFbGVtZW50T3B0aW9uREJDcml0ZXJpYTogYW55XG4pOiBFbGVtZW50T3B0aW9uREJDcml0ZXJpYSB7XG4gIHJldHVybiB7XG4gICAgZmllbGQ6IGFwaUVsZW1lbnRPcHRpb25EQkNyaXRlcmlhLmZpZWxkLFxuICAgIGNvbmRpdGlvbjogYXBpRWxlbWVudE9wdGlvbkRCQ3JpdGVyaWEuY29uZGl0aW9uLFxuICAgIHZhbHVlU291cmNlOiBhcGlFbGVtZW50T3B0aW9uREJDcml0ZXJpYS52YWx1ZVNvdXJjZSxcbiAgICBpbnB1dFZhbHVlOiBhcGlFbGVtZW50T3B0aW9uREJDcml0ZXJpYS5pbnB1dFZhbHVlLFxuICAgIGxvZ2ljYWxPcGVyYXRvcjogYXBpRWxlbWVudE9wdGlvbkRCQ3JpdGVyaWEubG9naWNhbE9wZXJhdG9yLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBFbGVtZW50T3B0aW9uQVBJVG9Nb2RlbChcbiAgYXBpRWxlbWVudE9wdGlvbkFQSTogYW55XG4pOiBFbGVtZW50T3B0aW9uQVBJIHtcbiAgcmV0dXJuIHtcbiAgICBleHRlcm5hbDogYXBpRWxlbWVudE9wdGlvbkFQSS5leHRlcm5hbCxcbiAgICB1cmw6IGFwaUVsZW1lbnRPcHRpb25BUEkudXJsLFxuICAgIHZhbHVlRmllbGQ6IGFwaUVsZW1lbnRPcHRpb25BUEkudmFsdWVGaWVsZCxcbiAgICBsYWJlbEZpZWxkOiBhcGlFbGVtZW50T3B0aW9uQVBJLmxhYmVsRmllbGQsXG4gICAgcGF0aFRvVmFsdWU6IGFwaUVsZW1lbnRPcHRpb25BUEkucGF0aFRvVmFsdWUsXG4gICAgaGVhZGVyczogYXBpRWxlbWVudE9wdGlvbkFQSS5oZWFkZXJzPy5tYXAobWFwRWxlbWVudE9wdGlvbkFQSURhdGFUb01vZGVsKSxcbiAgICBwYXJhbXM6IGFwaUVsZW1lbnRPcHRpb25BUEkucGFyYW1zPy5tYXAobWFwRWxlbWVudE9wdGlvbkFQSURhdGFUb01vZGVsKSxcbiAgICBwYXRoVmFyaWFibGVzOiBhcGlFbGVtZW50T3B0aW9uQVBJLnBhdGhWYXJpYWJsZXM/Lm1hcChcbiAgICAgIG1hcEVsZW1lbnRPcHRpb25BUElEYXRhVG9Nb2RlbFxuICAgICksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEVsZW1lbnRPcHRpb25BUElEYXRhVG9Nb2RlbChcbiAgYXBpRWxlbWVudE9wdGlvbkFQSURhdGE6IGFueVxuKTogZWxlbWVudE9wdGlvbkFQSURhdGEge1xuICByZXR1cm4ge1xuICAgIGtleU5hbWU6IGFwaUVsZW1lbnRPcHRpb25BUElEYXRhLmtleU5hbWUsXG4gICAgdmFsdWVTb3VyY2U6IGFwaUVsZW1lbnRPcHRpb25BUElEYXRhLnZhbHVlU291cmNlLFxuICAgIGlucHV0VmFsdWU6IGFwaUVsZW1lbnRPcHRpb25BUElEYXRhLmlucHV0VmFsdWUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcE9wdGlvblRvTW9kZWwoYXBpT3B0aW9uOiBhbnkpOiBPcHRpb24ge1xuICByZXR1cm4ge1xuICAgIG9wdGlvblR5cGU6IGFwaU9wdGlvbj8ub3B0aW9uVHlwZSxcbiAgICBsb29rdXBUYWJsZTogYXBpT3B0aW9uPy5sb29rdXBUYWJsZSxcbiAgICBjdXN0b21PcHRpb25zOiBhcGlPcHRpb24/LmN1c3RvbU9wdGlvbnM/Lm1hcCgob3B0aW9uOiB7IHZhbHVlOiBhbnkgfSkgPT4gKHtcbiAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgfSkpLFxuICAgIGRhdGFiYXNlOiBhcGlPcHRpb24/LmRhdGFiYXNlXG4gICAgICA/IG1hcEVsZW1lbnRPcHRpb25EQlRvTW9kZWwoYXBpT3B0aW9uLmRhdGFiYXNlKVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgYXBpOiBhcGlPcHRpb24/LmFwaSA/IG1hcEVsZW1lbnRPcHRpb25BUElUb01vZGVsKGFwaU9wdGlvbi5hcGkpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3NlcnZpY2VzL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCQSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsYUFBa0I7SUFDckQsT0FBTztRQUNMLElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDL0IsaUJBQWlCLEVBQUUsMkJBQTJCLENBQzVDLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQ3ZDO1FBQ0QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQ3JELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FDeEI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsMkJBQTJCLENBQ2xDLG9CQUF5QjtJQUV6QixPQUFPO1FBQ0wsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsaUJBQWlCO1FBQ3pELFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxZQUFZO1FBQy9DLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxhQUFhO1FBQ2pELFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVO1FBQzNDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxRQUFRO1FBQ3ZDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLGdCQUFnQjtRQUN2RCxXQUFXLEVBQUUsb0JBQW9CLENBQUMsV0FBVztRQUM3Qyx1QkFBdUIsRUFBRSxvQkFBb0IsQ0FBQyx1QkFBdUI7UUFDckUsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsaUJBQWlCO1FBQ3pELHFCQUFxQixFQUFFLG9CQUFvQixDQUFDLHFCQUFxQjtRQUNqRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxrQkFBa0I7UUFDM0QscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMscUJBQXFCO1FBQ2pFLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVO1FBQzNDLDBCQUEwQixFQUFFLG9CQUFvQixDQUFDLDBCQUEwQjtLQUM1RSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQVk7SUFDbEMsT0FBTztRQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE1BQVc7SUFDaEMsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2pFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsT0FBWTtJQUNsQyxJQUFJLE1BQWdELENBQUM7SUFFckQsUUFBUSxPQUFPLENBQUMsVUFBVSxFQUFFO1FBQzFCLEtBQUssVUFBVTtZQUNiLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTTtRQUNSLEtBQUssU0FBUztZQUNaLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsTUFBTTtRQUNSLEtBQUssU0FBUztZQUNaLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7S0FDakU7SUFFRCxPQUFPO1FBQ0wsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLE9BQU8sRUFBRSxNQUFNO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQWU7SUFDL0MsT0FBTztRQUNMLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRTtRQUNqQixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQWdCO0lBQ2pELE9BQU87UUFDTCxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7UUFDeEIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1FBQ2xCLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYztRQUMxQyxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7UUFDOUIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1FBQ3RCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtRQUM5QixNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU07UUFDM0IsVUFBVSxFQUFFLElBQUk7UUFDaEIsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDM0QsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDeEQsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUN2QjtRQUNELFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUTtRQUMvQixXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRTtRQUN2RyxXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsYUFBa0I7SUFDOUMsT0FBTztRQUNMLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7UUFDaEMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPO0tBQy9CLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxjQUFtQjtJQUNoRCxPQUFPO1FBQ0wsV0FBVyxFQUFFLGNBQWMsQ0FBQyxXQUFXO1FBQ3ZDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1FBQzNELFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1FBQzNELE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO1FBQ2hELG9CQUFvQixFQUFFLGNBQWMsQ0FBQyxvQkFBb0I7UUFDekQscUJBQXFCLEVBQUUsY0FBYyxDQUFDLHFCQUFxQjtLQUM1RCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQWE7SUFDcEMsT0FBTztRQUNMLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUNmLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtRQUMvQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7UUFDN0IsU0FBUyxFQUFFLEtBQUs7UUFDaEIsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDekQseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQ25DO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBZTtJQUMvQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1FBQ2pCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztRQUN2QixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1FBQ25DLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0I7UUFDN0MsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRixXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ2pHLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxhQUFrQjtJQUM5QyxPQUFPO1FBQ0wsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO1FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDaEYsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFNBQWM7SUFDdEMsT0FBTztRQUNMLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtRQUNoQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU07UUFDekIsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQzdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDaEcsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLGtCQUF1QjtJQUV2QixPQUFPO1FBQ0wsVUFBVSxFQUFFLGtCQUFrQixDQUFDLFVBQVU7UUFDekMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLE9BQU87S0FDcEMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLGFBQWtCO0lBQzlDLE9BQU87UUFDTCxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVc7UUFDdEMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO1FBQ2hDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztRQUNsQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7UUFDeEIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTO1FBQ2xDLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSTtRQUN4QixPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87UUFDOUIsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO1FBQ3hDLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWTtRQUN4QyxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDOUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLGtCQUFrQjtRQUNwRCxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVc7UUFDdEMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXO1FBQ3RDLGVBQWUsRUFBRSxhQUFhLENBQUMsZUFBZTtRQUM5QyxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDOUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxlQUFlO1FBQzlDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxtQkFBbUI7UUFDdEQsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFpQjtRQUNsRCxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDOUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVO1FBQ3BDLGFBQWEsRUFBRSxhQUFhLENBQUMsYUFBYTtRQUMxQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7UUFDaEMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1FBQzVCLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxrQkFBa0I7UUFDcEQsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtRQUNoRCxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDOUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO1FBQ2hDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztRQUNsQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsZ0JBQWdCO1FBQ2hELFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWTtRQUN4QyxhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWE7UUFDMUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO1FBQ3hDLGFBQWEsRUFBRSxhQUFhLENBQUMsYUFBYTtRQUMxQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7UUFDaEMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO1FBQ2hDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztRQUNsQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsaUJBQWlCO1FBQ2xELFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVztRQUN0QyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7UUFDeEMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxhQUFhO1FBQzFDLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVztRQUN0QyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsb0JBQW9CO1FBQ3hELGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxnQkFBZ0I7UUFDaEQsc0JBQXNCLEVBQUUsYUFBYSxDQUFDLHNCQUFzQjtRQUM1RCxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWM7UUFDNUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1FBQzFCLFlBQVksRUFBQyxhQUFhLENBQUMsWUFBWTtLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsYUFBa0I7SUFDOUMsT0FBTztRQUNMLGVBQWUsRUFBRSxhQUFhLENBQUMsZUFBZTtRQUM5QyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7UUFDMUIsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFpQjtRQUNsRCxpQkFBaUIsRUFBRSxhQUFhLENBQUMsaUJBQWlCO1FBQ2xELEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztRQUMxQixnQkFBZ0IsRUFBRSxhQUFhLENBQUMsZ0JBQWdCO1FBQ2hELGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxnQkFBZ0I7UUFDaEQscUJBQXFCLEVBQUUsYUFBYSxDQUFDLHFCQUFxQjtRQUMxRCxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDOUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtRQUNoRCxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsZ0JBQWdCO1FBQ2hELGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxpQkFBaUI7UUFDbEQsZUFBZSxFQUFFLGFBQWEsQ0FBQyxlQUFlO1FBQzlDLEdBQUcsRUFBRSxhQUFhLENBQUMsR0FBRztRQUN0QixHQUFHLEVBQUUsYUFBYSxDQUFDLEdBQUc7UUFDdEIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTO1FBQ2xDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztRQUNsQyx1QkFBdUIsRUFBRSxhQUFhLENBQUMsdUJBQXVCO1FBQzlELHVCQUF1QixFQUFFLGFBQWEsQ0FBQyx1QkFBdUI7UUFDOUQsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjO1FBQzVDLHdCQUF3QixFQUFFLGFBQWEsQ0FBQyx3QkFBd0I7UUFDaEUsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLHdCQUF3QjtRQUNoRSxhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWE7UUFDMUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPO1FBQzlCLGFBQWEsRUFBRSxhQUFhLENBQUMsYUFBYTtRQUMxQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87UUFDOUIsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjO1FBQzVDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtRQUM1QixpQ0FBaUMsRUFDL0IsYUFBYSxDQUFDLGlDQUFpQztRQUNqRCxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7UUFDeEMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXO1FBQ3RDLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVztRQUN0QyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7UUFDeEMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO1FBQ3hDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztRQUNsQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7UUFDaEMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO1FBQ3hDLGFBQWEsRUFBRSxhQUFhLENBQUMsYUFBYTtRQUMxQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsb0JBQW9CO1FBQ3hELGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxpQkFBaUI7UUFDbEQsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjO1FBQzVDLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVTtLQUNyQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsa0JBQXVCO0lBQ3hELE9BQU87UUFDTCxTQUFTLEVBQUUsa0JBQWtCLENBQUMsU0FBUztRQUN2QyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsVUFBVTtRQUN6QyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsVUFBVTtRQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUM3RCxpQ0FBaUMsQ0FBQyxXQUFXLENBQUMsQ0FDL0M7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsaUNBQWlDLENBQ3hDLDBCQUErQjtJQUUvQixPQUFPO1FBQ0wsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEtBQUs7UUFDdkMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLFNBQVM7UUFDL0MsV0FBVyxFQUFFLDBCQUEwQixDQUFDLFdBQVc7UUFDbkQsVUFBVSxFQUFFLDBCQUEwQixDQUFDLFVBQVU7UUFDakQsZUFBZSxFQUFFLDBCQUEwQixDQUFDLGVBQWU7S0FDNUQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUNqQyxtQkFBd0I7SUFFeEIsT0FBTztRQUNMLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRO1FBQ3RDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxHQUFHO1FBQzVCLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVO1FBQzFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVO1FBQzFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXO1FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLDhCQUE4QixDQUFDO1FBQ3pFLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLDhCQUE4QixDQUFDO1FBQ3ZFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUNuRCw4QkFBOEIsQ0FDL0I7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQ3JDLHVCQUE0QjtJQUU1QixPQUFPO1FBQ0wsT0FBTyxFQUFFLHVCQUF1QixDQUFDLE9BQU87UUFDeEMsV0FBVyxFQUFFLHVCQUF1QixDQUFDLFdBQVc7UUFDaEQsVUFBVSxFQUFFLHVCQUF1QixDQUFDLFVBQVU7S0FDL0MsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFNBQWM7SUFDdEMsT0FBTztRQUNMLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVTtRQUNqQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVc7UUFDbkMsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1lBQzNCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQy9DLENBQUMsQ0FBQyxTQUFTO1FBQ2IsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztLQUM1RSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGVhcmFuY2UgfSBmcm9tICcuLi9tb2RlbHMvYXBwZWFyYW5jZS5tb2RlbCc7XG5pbXBvcnQgeyBFbGVtZW50T3B0aW9uQVBJIH0gZnJvbSAnLi4vbW9kZWxzL2VsZW1lbnRPcHRpb25BUEkubW9kZWwnO1xuaW1wb3J0IHsgZWxlbWVudE9wdGlvbkFQSURhdGEgfSBmcm9tICcuLi9tb2RlbHMvZWxlbWVudE9wdGlvbkFQSURhdGEubW9kZWwnO1xuaW1wb3J0IHsgRWxlbWVudE9wdGlvbkRCIH0gZnJvbSAnLi4vbW9kZWxzL2VsZW1lbnRPcHRpb25EQi5tb2RlbCc7XG5pbXBvcnQgeyBFbGVtZW50T3B0aW9uREJDcml0ZXJpYSB9IGZyb20gJy4uL21vZGVscy9lbGVtZW50T3B0aW9uREJDcml0ZXJpYS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9mb3JtQ29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4uL21vZGVscy9mb3JtRWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uL21vZGVscy9wYWdlLm1vZGVsJztcbmltcG9ydCB7IFB1YmxpY0Zvcm0gfSBmcm9tICcuLi9tb2RlbHMvcHVibGljRm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL21vZGVscy9xdWVzdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi9tb2RlbHMvcm93Lm1vZGVsJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi9tb2RlbHMvb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvc2VjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBTdWJGb3JtIH0gZnJvbSAnLi4vbW9kZWxzL3N1YkZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm1FbGVtZW50VHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBMb2dpYyB9IGZyb20gJy4uL21vZGVscy9sb2dpYy5tb2RlbCc7XG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnLi4vbW9kZWxzL2F0dGFjaG1lbnQubW9kZWwnO1xuaW1wb3J0IHsgU3VibWlzc2lvbiB9IGZyb20gJy4uL21vZGVscy9zdWJtaXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IEFuc3dlciB9IGZyb20gJy4uL21vZGVscy9hbnN3ZXIubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFwUHVibGljRm9ybVRvTW9kZWwoYXBpUHVibGljRm9ybTogYW55KTogUHVibGljRm9ybSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogYXBpUHVibGljRm9ybS5yZXN1bHQubmFtZSxcbiAgICBmb3JtQ29uZmlndXJhdGlvbjogbWFwRm9ybUNvbmZpZ3VyYXRpb25Ub01vZGVsKFxuICAgICAgYXBpUHVibGljRm9ybS5yZXN1bHQuZm9ybUNvbmZpZ3VyYXRpb25cbiAgICApLFxuICAgIHBhZ2VzOiBhcGlQdWJsaWNGb3JtLnJlc3VsdC5wYWdlcy5tYXAoKGFwaVBhZ2U6IGFueSkgPT5cbiAgICAgIG1hcFBhZ2VUb01vZGVsKGFwaVBhZ2UpXG4gICAgKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwRm9ybUNvbmZpZ3VyYXRpb25Ub01vZGVsKFxuICBhcGlGb3JtQ29uZmlndXJhdGlvbjogYW55XG4pOiBGb3JtQ29uZmlndXJhdGlvbiB7XG4gIHJldHVybiB7XG4gICAgc2F2ZUF1dG9tYXRpY2FsbHk6IGFwaUZvcm1Db25maWd1cmF0aW9uLnNhdmVBdXRvbWF0aWNhbGx5LFxuICAgIHNhdmVJbnRlcnZhbDogYXBpRm9ybUNvbmZpZ3VyYXRpb24uc2F2ZUludGVydmFsLFxuICAgIGN1c3RvbWl6ZUZvbnQ6IGFwaUZvcm1Db25maWd1cmF0aW9uLmN1c3RvbWl6ZUZvbnQsXG4gICAgZm9udEZhbWlseTogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZm9udEZhbWlseSxcbiAgICBmb250U2l6ZTogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZm9udFNpemUsXG4gICAgZW5hYmxlRGF0YUV4cG9ydDogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlRGF0YUV4cG9ydCxcbiAgICBmaWxlRm9ybWF0czogYXBpRm9ybUNvbmZpZ3VyYXRpb24uZmlsZUZvcm1hdHMsXG4gICAgZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc6IGFwaUZvcm1Db25maWd1cmF0aW9uLmVuYWJsZVF1ZXN0aW9uTnVtYmVyaW5nLFxuICAgIHF1ZXN0aW9uTnVtYmVyaW5nOiBhcGlGb3JtQ29uZmlndXJhdGlvbi5xdWVzdGlvbk51bWJlcmluZyxcbiAgICBlbmFibGVHb29nbGVSZWNhcHRjaGE6IGFwaUZvcm1Db25maWd1cmF0aW9uLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSxcbiAgICBnb29nbGVSZWNhcHRjaGFLZXk6IGFwaUZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYUtleSxcbiAgICBnb29nbGVSZWNhcHRjaGFTZWNyZXQ6IGFwaUZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYVNlY3JldCxcbiAgICBuYXZpZ2F0aW9uOiBhcGlGb3JtQ29uZmlndXJhdGlvbi5uYXZpZ2F0aW9uLFxuICAgIG1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkOiBhcGlGb3JtQ29uZmlndXJhdGlvbi5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwUGFnZVRvTW9kZWwoYXBpUGFnZTogYW55KTogUGFnZSB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6IGFwaVBhZ2UudGl0bGUsXG4gICAgcm93czogYXBpUGFnZS5yb3dzLm1hcCgoYXBpUm93OiBhbnkpID0+IG1hcFJvd1RvTW9kZWwoYXBpUm93KSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcFJvd1RvTW9kZWwoYXBpUm93OiBhbnkpOiBSb3cge1xuICByZXR1cm4ge1xuICAgIGdyaWQ6IGFwaVJvdy5ncmlkLm1hcCgoYXBpR3JpZDogYW55KSA9PiBtYXBHcmlkVG9Nb2RlbChhcGlHcmlkKSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEdyaWRUb01vZGVsKGFwaUdyaWQ6IGFueSk6IEdyaWQge1xuICBsZXQgZW50aXR5OiBTZWN0aW9uIHwgUXVlc3Rpb24gfCBTdWJGb3JtIHwgdW5kZWZpbmVkO1xuXG4gIHN3aXRjaCAoYXBpR3JpZC5lbnRpdHlUeXBlKSB7XG4gICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgZW50aXR5ID0gbWFwUXVlc3Rpb25Ub01vZGVsKGFwaUdyaWQuZWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdTRUNUSU9OJzpcbiAgICAgIGVudGl0eSA9IG1hcFNlY3Rpb25Ub01vZGVsKGFwaUdyaWQuZWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdTVUJGT1JNJzpcbiAgICAgIGVudGl0eSA9IG1hcFN1YkZvcm1Ub01vZGVsKGFwaUdyaWQuZWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVudGl0eSB0eXBlOiAke2FwaUdyaWQuZW50aXR5VHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50aXR5VHlwZTogYXBpR3JpZC5lbnRpdHlUeXBlLFxuICAgIGVsZW1lbnQ6IGVudGl0eSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFNlY3Rpb25Ub01vZGVsKGFwaVNlY3Rpb246IGFueSk6IFNlY3Rpb24ge1xuICByZXR1cm4ge1xuICAgIGlkOiBhcGlTZWN0aW9uLmlkLFxuICAgIHRpdGxlOiBhcGlTZWN0aW9uLnRpdGxlLFxuICAgIGRlc2NyaXB0aW9uOiBhcGlTZWN0aW9uLmRlc2NyaXB0aW9uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwUXVlc3Rpb25Ub01vZGVsKGFwaVF1ZXN0aW9uOiBhbnkpOiBRdWVzdGlvbiB7XG4gIHJldHVybiB7XG4gICAgY291bnQ6IGFwaVF1ZXN0aW9uLmNvdW50LFxuICAgIGlkOiBhcGlRdWVzdGlvbi5pZCxcbiAgICBxdWVzdGlvbk51bWJlcjogYXBpUXVlc3Rpb24ucXVlc3Rpb25OdW1iZXIsXG4gICAgcmVxdWlyZWQ6IGFwaVF1ZXN0aW9uLnJlcXVpcmVkLFxuICAgIGhpbnQ6IGFwaVF1ZXN0aW9uLmhpbnQsXG4gICAgcXVlc3Rpb246IGFwaVF1ZXN0aW9uLnF1ZXN0aW9uLFxuICAgIGFuc3dlcjogYXBpUXVlc3Rpb24/LmFuc3dlcixcbiAgICB2YWxpZGF0aW9uOiB0cnVlLFxuICAgIGZvcm1FbGVtZW50OiBtYXBGb3JtRWxlbWVudFRvTW9kZWwoYXBpUXVlc3Rpb24uZm9ybUVsZW1lbnQpLFxuICAgIGNoaWxkTG9naWNzOiBhcGlRdWVzdGlvbj8uY2hpbGRMb2dpY3M/Lm1hcCgobG9naWM6IGFueSkgPT5cbiAgICAgIG1hcExvZ2ljVG9Nb2RlbChsb2dpYylcbiAgICApLFxuICAgIGFuc3dlcklkOiBhcGlRdWVzdGlvbj8uYW5zd2VySWQsXG4gICAgYXR0YWNobWVudHM6IGFwaVF1ZXN0aW9uPy5hdHRhY2htZW50cz8ubWFwKChhdHRhY2htZW50OiBhbnkpID0+IG1hcEF0dGFjaG1lbnRUb01vZGVsKGF0dGFjaG1lbnQpKSB8fCBbXSxcbiAgICBkZWxldGVGaWxlczogW10sXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEF0dGFjaG1lbnRUb01vZGVsKGFwaUF0dGFjaG1lbnQ6IGFueSk6IEF0dGFjaG1lbnQge1xuICByZXR1cm4ge1xuICAgIGZpbGVJZDogYXBpQXR0YWNobWVudC5maWxlSWQsXG4gICAgZmlsZU5hbWU6IGFwaUF0dGFjaG1lbnQuZmlsZU5hbWUsXG4gICAgZmlsZVVybDogYXBpQXR0YWNobWVudC5maWxlVXJsLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBGb3JtRWxlbWVudFRvTW9kZWwoYXBpRm9ybUVsZW1lbnQ6IGFueSk6IEZvcm1FbGVtZW50IHtcbiAgcmV0dXJuIHtcbiAgICBlbGVtZW50VHlwZTogYXBpRm9ybUVsZW1lbnQuZWxlbWVudFR5cGUsXG4gICAgYXBwZWFyYW5jZTogbWFwQXBwZWFyYW5jZVRvTW9kZWwoYXBpRm9ybUVsZW1lbnQuYXBwZWFyYW5jZSksXG4gICAgdmFsaWRhdGlvbjogbWFwVmFsaWRhdGlvblRvTW9kZWwoYXBpRm9ybUVsZW1lbnQudmFsaWRhdGlvbiksXG4gICAgb3B0aW9uOiBtYXBPcHRpb25Ub01vZGVsKGFwaUZvcm1FbGVtZW50Py5vcHRpb24pLFxuICAgIHNlbGVjdGlvbk1hdHJpeExhYmVsOiBhcGlGb3JtRWxlbWVudC5zZWxlY3Rpb25NYXRyaXhMYWJlbCxcbiAgICBzZWxlY3Rpb25NYXRyaXhDb2x1bW46IGFwaUZvcm1FbGVtZW50LnNlbGVjdGlvbk1hdHJpeENvbHVtbixcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwTG9naWNUb01vZGVsKGFwaUxvZ2ljOiBhbnkpOiBMb2dpYyB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGFwaUxvZ2ljLmlkLFxuICAgIGlucHV0VmFsdWU6IGFwaUxvZ2ljLmlucHV0VmFsdWUsXG4gICAgY29uZGl0aW9uOiBhcGlMb2dpYy5jb25kaXRpb24sXG4gICAgc2hvd0xvZ2ljOiBmYWxzZSxcbiAgICBmb3JtRWxlbWVudHM6IGFwaUxvZ2ljPy5mb3JtRWxlbWVudHM/Lm1hcCgoZWxlbWVudDogYW55KSA9PlxuICAgICAgbWFwRm9ybUVsZW1lbnRUeXBlVG9Nb2RlbChlbGVtZW50KVxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdWJGb3JtVG9Nb2RlbChhcGlTdWJGb3JtOiBhbnkpOiBTdWJGb3JtIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogYXBpU3ViRm9ybS5pZCxcbiAgICBjb3VudDogYXBpU3ViRm9ybS5jb3VudCxcbiAgICB0aXRsZTogYXBpU3ViRm9ybS50aXRsZSxcbiAgICBkZXNjcmlwdGlvbjogYXBpU3ViRm9ybS5kZXNjcmlwdGlvbixcbiAgICBzdWJGb3JtU3RydWN0dXJlOiBhcGlTdWJGb3JtLnN1YkZvcm1TdHJ1Y3R1cmUsXG4gICAgZm9ybUVsZW1lbnRzOiBhcGlTdWJGb3JtLmZvcm1FbGVtZW50cy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4gbWFwRm9ybUVsZW1lbnRUeXBlVG9Nb2RlbChlbGVtZW50KSksXG4gICAgc3VibWlzc2lvbnM6IGFwaVN1YkZvcm0/LnN1Ym1pc3Npb25zPy5tYXAoKHN1Ym1pc3Npb246IGFueSkgPT4gbWFwU3VibWlzc2lvblRvTW9kZWwoc3VibWlzc2lvbikpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBTdWJtaXNzaW9uVG9Nb2RlbChhcGlTdWJtaXNzaW9uOiBhbnkpOiBTdWJtaXNzaW9uIHtcbiAgcmV0dXJuIHtcbiAgICBzdWJtaXNzaW9uSWQ6IGFwaVN1Ym1pc3Npb24uc3VibWlzc2lvbklkLFxuICAgIGFuc3dlcnM6IGFwaVN1Ym1pc3Npb24/LmFuc3dlcnM/Lm1hcCgoYW5zd2VyOiBhbnkpID0+IG1hcEFuc3dlclRvTW9kZWwoYW5zd2VyKSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEFuc3dlclRvTW9kZWwoYXBpQW5zd2VyOiBhbnkpOiBBbnN3ZXIge1xuICByZXR1cm4ge1xuICAgIHF1ZXN0aW9uSWQ6IGFwaUFuc3dlci5xdWVzdGlvbklkLFxuICAgIGFuc3dlcjogYXBpQW5zd2VyPy5hbnN3ZXIsXG4gICAgYW5zd2VySWQ6IGFwaUFuc3dlcj8uYW5zd2VySWQsXG4gICAgYXR0YWNobWVudHM6IGFwaUFuc3dlcj8uYXR0YWNobWVudHM/Lm1hcCgoYXR0YWNobWVudDogYW55KSA9PiBtYXBBdHRhY2htZW50VG9Nb2RlbChhdHRhY2htZW50KSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBGb3JtRWxlbWVudFR5cGVUb01vZGVsKFxuICBhcGlGb3JtRWxlbWVudFR5cGU6IGFueVxuKTogRm9ybUVsZW1lbnRUeXBlPGFueT4ge1xuICByZXR1cm4ge1xuICAgIGVudGl0eVR5cGU6IGFwaUZvcm1FbGVtZW50VHlwZS5lbnRpdHlUeXBlLFxuICAgIGVsZW1lbnQ6IGFwaUZvcm1FbGVtZW50VHlwZS5lbGVtZW50LFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBBcHBlYXJhbmNlVG9Nb2RlbChhcGlBcHBlYXJhbmNlOiBhbnkpOiBBcHBlYXJhbmNlIHtcbiAgcmV0dXJuIHtcbiAgICBwbGFjZWhvbGRlcjogYXBpQXBwZWFyYW5jZS5wbGFjZWhvbGRlcixcbiAgICBmb250U2l6ZTogYXBpQXBwZWFyYW5jZS5mb250U2l6ZSxcbiAgICB0ZXh0QWxpZ246IGFwaUFwcGVhcmFuY2UudGV4dEFsaWduLFxuICAgIGZvbnQ6IGFwaUFwcGVhcmFuY2UuZm9udCxcbiAgICB1bmRlcmxpbmU6IGFwaUFwcGVhcmFuY2UudW5kZXJsaW5lLFxuICAgIGJvbGQ6IGFwaUFwcGVhcmFuY2UuYm9sZCxcbiAgICBpdGFsaWNzOiBhcGlBcHBlYXJhbmNlLml0YWxpY3MsXG4gICAgZGVmYXVsdFZhbHVlOiBhcGlBcHBlYXJhbmNlLmRlZmF1bHRWYWx1ZSxcbiAgICBudW1iZXJPZlJvd3M6IGFwaUFwcGVhcmFuY2UubnVtYmVyT2ZSb3dzLFxuICAgIHNpbmdsZVNlbGVjdGlvbjogYXBpQXBwZWFyYW5jZS5zaW5nbGVTZWxlY3Rpb24sXG4gICAgZGlzcGxheUNvdW50cnlDb2RlOiBhcGlBcHBlYXJhbmNlLmRpc3BsYXlDb3VudHJ5Q29kZSxcbiAgICBkaXNwbGF5RmxhZzogYXBpQXBwZWFyYW5jZS5kaXNwbGF5RmxhZyxcbiAgICBkaXNwbGF5Q29kZTogYXBpQXBwZWFyYW5jZS5kaXNwbGF5Q29kZSxcbiAgICBzaG93Q291bnRyeU5hbWU6IGFwaUFwcGVhcmFuY2Uuc2hvd0NvdW50cnlOYW1lLFxuICAgIGJlYXV0aWZ5TnVtYmVyczogYXBpQXBwZWFyYW5jZS5iZWF1dGlmeU51bWJlcnMsXG4gICAgdXBBbmREb3duQnV0dG9uOiBhcGlBcHBlYXJhbmNlLnVwQW5kRG93bkJ1dHRvbixcbiAgICBhbGxvd05lZ2F0aXZlVmFsdWVzOiBhcGlBcHBlYXJhbmNlLmFsbG93TmVnYXRpdmVWYWx1ZXMsXG4gICAgc2hvd1ByZXZpZXdCdXR0b246IGFwaUFwcGVhcmFuY2Uuc2hvd1ByZXZpZXdCdXR0b24sXG4gICAgY29uZmlybVBhc3N3b3JkOiBhcGlBcHBlYXJhbmNlLmNvbmZpcm1QYXNzd29yZCxcbiAgICB2aWV3QnV0dG9uOiBhcGlBcHBlYXJhbmNlLnZpZXdCdXR0b24sXG4gICAgZGlzcGxheVN0cm9uZzogYXBpQXBwZWFyYW5jZS5kaXNwbGF5U3Ryb25nLFxuICAgIGRhdGVUeXBlOiBhcGlBcHBlYXJhbmNlLmRhdGVUeXBlLFxuICAgIGZvcm1hdDogYXBpQXBwZWFyYW5jZS5mb3JtYXQsXG4gICAgc2V0Q3VycmVudFBvc2l0aW9uOiBhcGlBcHBlYXJhbmNlLnNldEN1cnJlbnRQb3NpdGlvbixcbiAgICBkZWZhdWx0Wm9vbUxldmVsOiBhcGlBcHBlYXJhbmNlLmRlZmF1bHRab29tTGV2ZWwsXG4gICAgYWxsb3dGdWxsU2NyZWVuOiBhcGlBcHBlYXJhbmNlLmFsbG93RnVsbFNjcmVlbixcbiAgICBsYXRpdHVkZTogYXBpQXBwZWFyYW5jZS5sYXRpdHVkZSxcbiAgICBsb25naXR1ZGU6IGFwaUFwcGVhcmFuY2UubG9uZ2l0dWRlLFxuICAgIHNob3dBY2NlcHRCdXR0b246IGFwaUFwcGVhcmFuY2Uuc2hvd0FjY2VwdEJ1dHRvbixcbiAgICBsYWJlbE9uVmFsdWU6IGFwaUFwcGVhcmFuY2UubGFiZWxPblZhbHVlLFxuICAgIGxhYmVsT2ZmVmFsdWU6IGFwaUFwcGVhcmFuY2UubGFiZWxPZmZWYWx1ZSxcbiAgICBsYWJlbE9uQ29sb3I6IGFwaUFwcGVhcmFuY2UubGFiZWxPbkNvbG9yLFxuICAgIGxhYmVsT2ZmQ29sb3I6IGFwaUFwcGVhcmFuY2UubGFiZWxPZmZDb2xvcixcbiAgICBtaW5WYWx1ZTogYXBpQXBwZWFyYW5jZS5taW5WYWx1ZSxcbiAgICBtYXhWYWx1ZTogYXBpQXBwZWFyYW5jZS5tYXhWYWx1ZSxcbiAgICBzdGVwVmFsdWU6IGFwaUFwcGVhcmFuY2Uuc3RlcFZhbHVlLFxuICAgIGNoYW5nZVNsaWRlckNvbG9yOiBhcGlBcHBlYXJhbmNlLmNoYW5nZVNsaWRlckNvbG9yLFxuICAgIHNsaWRlckNvbG9yOiBhcGlBcHBlYXJhbmNlLnNsaWRlckNvbG9yLFxuICAgIGNhbnZhc09wdGlvbjogYXBpQXBwZWFyYW5jZS5jYW52YXNPcHRpb24sXG4gICAgc2VsZWN0aW9uVHlwZTogYXBpQXBwZWFyYW5jZS5zZWxlY3Rpb25UeXBlLFxuICAgIGRyYWdBbmREcm9wOiBhcGlBcHBlYXJhbmNlLmRyYWdBbmREcm9wLFxuICAgIHByZXZpZXdVcGxvYWRlZEZpbGVzOiBhcGlBcHBlYXJhbmNlLnByZXZpZXdVcGxvYWRlZEZpbGVzLFxuICAgIG11bHRpRmlsZVVwbG9hZHM6IGFwaUFwcGVhcmFuY2UubXVsdGlGaWxlVXBsb2FkcyxcbiAgICBzZWxlY3Rpb25Db2xvclJlcXVpcmVkOiBhcGlBcHBlYXJhbmNlLnNlbGVjdGlvbkNvbG9yUmVxdWlyZWQsXG4gICAgc2VsZWN0aW9uQ29sb3I6IGFwaUFwcGVhcmFuY2Uuc2VsZWN0aW9uQ29sb3IsXG4gICAgY29sb3I6IGFwaUFwcGVhcmFuY2UuY29sb3IsXG4gICAgYXZhdGFyUGlja2VyOmFwaUFwcGVhcmFuY2UuYXZhdGFyUGlja2VyXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcFZhbGlkYXRpb25Ub01vZGVsKGFwaVZhbGlkYXRpb246IGFueSk6IFZhbGlkYXRpb24ge1xuICByZXR1cm4ge1xuICAgIHJlZ2V4VmFsaWRhdGlvbjogYXBpVmFsaWRhdGlvbi5yZWdleFZhbGlkYXRpb24sXG4gICAgcmVnZXg6IGFwaVZhbGlkYXRpb24ucmVnZXgsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IGFwaVZhbGlkYXRpb24udmFsaWRhdGlvbk1lc3NhZ2UsXG4gICAgbGltaXRlZENoYXJhY3RlcnM6IGFwaVZhbGlkYXRpb24ubGltaXRlZENoYXJhY3RlcnMsXG4gICAgY291bnQ6IGFwaVZhbGlkYXRpb24uY291bnQsXG4gICAgbWluaW11bVNlbGVjdGlvbjogYXBpVmFsaWRhdGlvbi5taW5pbXVtU2VsZWN0aW9uLFxuICAgIG1heGltdW1TZWxlY3Rpb246IGFwaVZhbGlkYXRpb24ubWF4aW11bVNlbGVjdGlvbixcbiAgICBjb3VudHJ5V2lzZVZhbGlkYXRpb246IGFwaVZhbGlkYXRpb24uY291bnRyeVdpc2VWYWxpZGF0aW9uLFxuICAgIHJlc3RyaWN0Q291bnRyeTogYXBpVmFsaWRhdGlvbi5yZXN0cmljdENvdW50cnksXG4gICAgYWxsb3dlZENvdW50cmllczogYXBpVmFsaWRhdGlvbi5hbGxvd2VkQ291bnRyaWVzLFxuICAgIGJsb2NrZWRDb3VudHJpZXM6IGFwaVZhbGlkYXRpb24uYmxvY2tlZENvdW50cmllcyxcbiAgICByZWd1bGFyRXhwcmVzc2lvbjogYXBpVmFsaWRhdGlvbi5yZWd1bGFyRXhwcmVzc2lvbixcbiAgICBleHBlY3RlZERvbWFpbnM6IGFwaVZhbGlkYXRpb24uZXhwZWN0ZWREb21haW5zLFxuICAgIG1pbjogYXBpVmFsaWRhdGlvbi5taW4sXG4gICAgbWF4OiBhcGlWYWxpZGF0aW9uLm1heCxcbiAgICBtaW5MZW5ndGg6IGFwaVZhbGlkYXRpb24ubWluTGVuZ3RoLFxuICAgIG1heExlbmd0aDogYXBpVmFsaWRhdGlvbi5tYXhMZW5ndGgsXG4gICAgcmVxdWlyZUxvd2VyY2FzZUxldHRlcnM6IGFwaVZhbGlkYXRpb24ucmVxdWlyZUxvd2VyY2FzZUxldHRlcnMsXG4gICAgcmVxdWlyZVVwcGVyY2FzZUxldHRlcnM6IGFwaVZhbGlkYXRpb24ucmVxdWlyZVVwcGVyY2FzZUxldHRlcnMsXG4gICAgcmVxdWlyZU51bWJlcnM6IGFwaVZhbGlkYXRpb24ucmVxdWlyZU51bWJlcnMsXG4gICAgcmVxdWlyZVNwZWNpYWxDaGFyYWN0ZXJzOiBhcGlWYWxpZGF0aW9uLnJlcXVpcmVTcGVjaWFsQ2hhcmFjdGVycyxcbiAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IGFwaVZhbGlkYXRpb24uYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzLFxuICAgIG1pbkRhdGVPcHRpb246IGFwaVZhbGlkYXRpb24ubWluRGF0ZU9wdGlvbixcbiAgICBtaW5EYXRlOiBhcGlWYWxpZGF0aW9uLm1pbkRhdGUsXG4gICAgbWF4RGF0ZU9wdGlvbjogYXBpVmFsaWRhdGlvbi5tYXhEYXRlT3B0aW9uLFxuICAgIG1heERhdGU6IGFwaVZhbGlkYXRpb24ubWF4RGF0ZSxcbiAgICByZWdpb25Cb3VuZGFyeTogYXBpVmFsaWRhdGlvbi5yZWdpb25Cb3VuZGFyeSxcbiAgICByZWdpb246IGFwaVZhbGlkYXRpb24ucmVnaW9uLFxuICAgIHByZXZlbnRGcm9tUHJvY2VlZGluZ1dpdGhvdXRBZ3JlZTpcbiAgICAgIGFwaVZhbGlkYXRpb24ucHJldmVudEZyb21Qcm9jZWVkaW5nV2l0aG91dEFncmVlLFxuICAgIGJ1dHRvbkNvbG91cjogYXBpVmFsaWRhdGlvbi5idXR0b25Db2xvdXIsXG4gICAgbWF4RmlsZVNpemU6IGFwaVZhbGlkYXRpb24ubWF4RmlsZVNpemUsXG4gICAgbWluRmlsZVNpemU6IGFwaVZhbGlkYXRpb24ubWluRmlsZVNpemUsXG4gICAgbWluU2VsZWN0aW9uOiBhcGlWYWxpZGF0aW9uLm1pblNlbGVjdGlvbixcbiAgICBtYXhTZWxlY3Rpb246IGFwaVZhbGlkYXRpb24ubWF4U2VsZWN0aW9uLFxuICAgIGZpbGVUeXBlczogYXBpVmFsaWRhdGlvbi5maWxlVHlwZXMsXG4gICAgZmlsZVNpemU6IGFwaVZhbGlkYXRpb24uZmlsZVNpemUsXG4gICAgZmlsZVNpemVVbml0OiBhcGlWYWxpZGF0aW9uLmZpbGVTaXplVW5pdCxcbiAgICB0b3RhbEZpbGVTaXplOiBhcGlWYWxpZGF0aW9uLnRvdGFsRmlsZVNpemUsXG4gICAgbWluU2VsZWN0aW9uUmVxdWlyZWQ6IGFwaVZhbGlkYXRpb24ubWluU2VsZWN0aW9uUmVxdWlyZWQsXG4gICAgbWluU2VsZWN0aW9uVmFsdWU6IGFwaVZhbGlkYXRpb24ubWluU2VsZWN0aW9uVmFsdWUsXG4gICAgdmFsaWRhdGlvblR5cGU6IGFwaVZhbGlkYXRpb24udmFsaWRhdGlvblR5cGUsXG4gICAgdmFsaWRhdGlvbjogYXBpVmFsaWRhdGlvbi52YWxpZGF0aW9uLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBFbGVtZW50T3B0aW9uREJUb01vZGVsKGFwaUVsZW1lbnRPcHRpb25EQjogYW55KTogRWxlbWVudE9wdGlvbkRCIHtcbiAgcmV0dXJuIHtcbiAgICB0YWJsZU5hbWU6IGFwaUVsZW1lbnRPcHRpb25EQi50YWJsZU5hbWUsXG4gICAgdmFsdWVGaWVsZDogYXBpRWxlbWVudE9wdGlvbkRCLnZhbHVlRmllbGQsXG4gICAgbGFiZWxGaWVsZDogYXBpRWxlbWVudE9wdGlvbkRCLmxhYmVsRmllbGQsXG4gICAgY3JpdGVyaWE6IGFwaUVsZW1lbnRPcHRpb25EQi5jcml0ZXJpYS5tYXAoKGFwaUNyaXRlcmlhOiBhbnkpID0+XG4gICAgICBtYXBFbGVtZW50T3B0aW9uREJDcml0ZXJpYVRvTW9kZWwoYXBpQ3JpdGVyaWEpXG4gICAgKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwRWxlbWVudE9wdGlvbkRCQ3JpdGVyaWFUb01vZGVsKFxuICBhcGlFbGVtZW50T3B0aW9uREJDcml0ZXJpYTogYW55XG4pOiBFbGVtZW50T3B0aW9uREJDcml0ZXJpYSB7XG4gIHJldHVybiB7XG4gICAgZmllbGQ6IGFwaUVsZW1lbnRPcHRpb25EQkNyaXRlcmlhLmZpZWxkLFxuICAgIGNvbmRpdGlvbjogYXBpRWxlbWVudE9wdGlvbkRCQ3JpdGVyaWEuY29uZGl0aW9uLFxuICAgIHZhbHVlU291cmNlOiBhcGlFbGVtZW50T3B0aW9uREJDcml0ZXJpYS52YWx1ZVNvdXJjZSxcbiAgICBpbnB1dFZhbHVlOiBhcGlFbGVtZW50T3B0aW9uREJDcml0ZXJpYS5pbnB1dFZhbHVlLFxuICAgIGxvZ2ljYWxPcGVyYXRvcjogYXBpRWxlbWVudE9wdGlvbkRCQ3JpdGVyaWEubG9naWNhbE9wZXJhdG9yLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYXBFbGVtZW50T3B0aW9uQVBJVG9Nb2RlbChcbiAgYXBpRWxlbWVudE9wdGlvbkFQSTogYW55XG4pOiBFbGVtZW50T3B0aW9uQVBJIHtcbiAgcmV0dXJuIHtcbiAgICBleHRlcm5hbDogYXBpRWxlbWVudE9wdGlvbkFQSS5leHRlcm5hbCxcbiAgICB1cmw6IGFwaUVsZW1lbnRPcHRpb25BUEkudXJsLFxuICAgIHZhbHVlRmllbGQ6IGFwaUVsZW1lbnRPcHRpb25BUEkudmFsdWVGaWVsZCxcbiAgICBsYWJlbEZpZWxkOiBhcGlFbGVtZW50T3B0aW9uQVBJLmxhYmVsRmllbGQsXG4gICAgcGF0aFRvVmFsdWU6IGFwaUVsZW1lbnRPcHRpb25BUEkucGF0aFRvVmFsdWUsXG4gICAgaGVhZGVyczogYXBpRWxlbWVudE9wdGlvbkFQSS5oZWFkZXJzPy5tYXAobWFwRWxlbWVudE9wdGlvbkFQSURhdGFUb01vZGVsKSxcbiAgICBwYXJhbXM6IGFwaUVsZW1lbnRPcHRpb25BUEkucGFyYW1zPy5tYXAobWFwRWxlbWVudE9wdGlvbkFQSURhdGFUb01vZGVsKSxcbiAgICBwYXRoVmFyaWFibGVzOiBhcGlFbGVtZW50T3B0aW9uQVBJLnBhdGhWYXJpYWJsZXM/Lm1hcChcbiAgICAgIG1hcEVsZW1lbnRPcHRpb25BUElEYXRhVG9Nb2RlbFxuICAgICksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcEVsZW1lbnRPcHRpb25BUElEYXRhVG9Nb2RlbChcbiAgYXBpRWxlbWVudE9wdGlvbkFQSURhdGE6IGFueVxuKTogZWxlbWVudE9wdGlvbkFQSURhdGEge1xuICByZXR1cm4ge1xuICAgIGtleU5hbWU6IGFwaUVsZW1lbnRPcHRpb25BUElEYXRhLmtleU5hbWUsXG4gICAgdmFsdWVTb3VyY2U6IGFwaUVsZW1lbnRPcHRpb25BUElEYXRhLnZhbHVlU291cmNlLFxuICAgIGlucHV0VmFsdWU6IGFwaUVsZW1lbnRPcHRpb25BUElEYXRhLmlucHV0VmFsdWUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1hcE9wdGlvblRvTW9kZWwoYXBpT3B0aW9uOiBhbnkpOiBPcHRpb24ge1xuICByZXR1cm4ge1xuICAgIG9wdGlvblR5cGU6IGFwaU9wdGlvbj8ub3B0aW9uVHlwZSxcbiAgICBsb29rdXBUYWJsZTogYXBpT3B0aW9uPy5sb29rdXBUYWJsZSxcbiAgICBjdXN0b21PcHRpb25zOiBhcGlPcHRpb24/LmN1c3RvbU9wdGlvbnM/Lm1hcCgob3B0aW9uOiB7IHZhbHVlOiBhbnkgfSkgPT4gKHtcbiAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgfSkpLFxuICAgIGRhdGFiYXNlOiBhcGlPcHRpb24/LmRhdGFiYXNlXG4gICAgICA/IG1hcEVsZW1lbnRPcHRpb25EQlRvTW9kZWwoYXBpT3B0aW9uLmRhdGFiYXNlKVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgYXBpOiBhcGlPcHRpb24/LmFwaSA/IG1hcEVsZW1lbnRPcHRpb25BUElUb01vZGVsKGFwaU9wdGlvbi5hcGkpIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5cbiJdfQ==