@ieeesa-npm/groups 0.10.1 → 0.10.3

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.
@@ -293,6 +293,8 @@
293
293
  "1034": "No record(s) found.",
294
294
  "1035": "First name is required.",
295
295
  "1036": "Last name is required.",
296
+ "1037": "Group and parent group should not be same.",
297
+ "1038": "Reassigning parent for this group is not allowed.",
296
298
  "2001": "No user found. Please add details for the new user.",
297
299
  "2002": "Role does not belong to the group type.",
298
300
  "2010": "User not found.",
@@ -274,6 +274,7 @@ export class CreateGroupComponent {
274
274
  ariaLabel: this.createGroupText?.label?.ariaLabel?.changeParentGroup,
275
275
  ariaDescribedById: this.createGroupText?.label?.ariaDescribedById?.changeParentGroup,
276
276
  slideToggleOption: this.slideToggleOption,
277
+ disabled: this.allowedParentGroupsOptions.length === 0,
277
278
  });
278
279
  if (this.isParentGroupChanged) {
279
280
  this.updateAddUserFormControls(this.formGroup?.formGroup[0]?.controls?.length - INDEX_VALUE, {
@@ -451,21 +452,36 @@ export class CreateGroupComponent {
451
452
  });
452
453
  });
453
454
  this.allowedParentGroups = response;
454
- const formFields = this.dynamicFormComponent?.formFields?.toArray();
455
- formFields?.forEach((formField) => {
456
- if (formField?.component?.instance?.config?.controlName ===
457
- 'newParentGroup' &&
458
- formField?.component?.instance?.['dropdownOptions'])
459
- formField.component.instance['dropdownOptions'] =
460
- this.allowedParentGroupsOptions;
461
- });
455
+ if (this.allowedParentGroupsOptions.length > 0) {
456
+ this.updateFormControlOptions('changeParentGroup', 'isDisabled', false);
457
+ this.updateFormControlOptions('newParentGroup', 'dropdownOptions', this.allowedParentGroupsOptions);
458
+ }
462
459
  },
463
460
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
464
461
  error: (error) => {
465
462
  this.handleErrors(error);
463
+ this.updateFormControlOptions('changeParentGroup', 'isDisabled', this.allowedParentGroupsOptions.length === 0);
466
464
  },
467
465
  });
468
466
  }
467
+ /**
468
+ * Update passed form field values.
469
+ * @param {string} formControlName
470
+ * @param {string} formControlInputProperty
471
+ * @param {*} value
472
+ * @memberof CreateGroupComponent
473
+ */
474
+ updateFormControlOptions(formControlName, formControlInputProperty,
475
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
476
+ value) {
477
+ const formFields = this.dynamicFormComponent?.formFields?.toArray();
478
+ formFields?.forEach((formField) => {
479
+ if (formField?.component?.instance?.config?.controlName ===
480
+ formControlName &&
481
+ formField?.component?.instance?.[formControlInputProperty])
482
+ formField.component.instance[formControlInputProperty] = value;
483
+ });
484
+ }
469
485
  /**
470
486
  * Adds/removes new parent group selection options whenever Change Parent Group slider is toggled.
471
487
  * @param {SlideToggleOption} toggle
@@ -512,4 +528,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
512
528
  type: ViewChild,
513
529
  args: [DynamicFormComponent]
514
530
  }] } });
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1ncm91cC9jcmVhdGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBSUwsU0FBUyxFQUNULG9CQUFvQixFQUNwQixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLGFBQWEsRUFDYixTQUFTLEdBRVYsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBRTNFLE1B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QVU7c0JBQW5CLE1BQU07Z0JBd0IwQixvQkFBb0I7c0JBQXBELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1HcmlkLFxyXG4gIEZvcm1Nb2RlbCxcclxuICBTZWxlY3RPcHRpb24sXHJcbiAgQWxpZ25UeXBlLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGaWVsZENvbmZpZyxcclxuICBTbGlkZVRvZ2dsZU9wdGlvbixcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQge1xyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgQWxlcnRUeXBlLFxyXG4gIEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgQ3JlYXRlR3JvdXBQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NyZWF0ZS1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR3JvdXBUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQgeyBFZGl0R3JvdXBQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkaXQtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBGdW5jdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFBhcmVudEdyb3Vwc0luZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFyZW50LWdyb3Vwcy1pbmZvLm1vZGVsJztcclxuY29uc3QgSU5ERVhfVkFMVUUgPSA0O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZUdyb3VwQ29tcG9uZW50IHVzZXMgRHluYW1pY0Zvcm1Db21wb25lbnQgdG8gYnVpbGQgY3JlYXRlIG5ldyBncm91cCBmb3JtIG9yIGVkaXQgZ3JvdXAgYW5kIGltcGxlbWVudCB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHN1Ym1pc3Npb24gb2YgZm9ybSBhbmQgaGFuZGxpbmcgc3VjY2VzcyBhbmQgZXJyb3Igc2NlbmFyaW9zLlxyXG4gKiBAY2xhc3MgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtY3JlYXRlLWdyb3VwJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER5bmFtaWNGb3JtQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbQWxlcnRzU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Y2Nlc3NmdWxseSBzdWJtaXR0ZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHN1Ym1pdEZvcm1SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgY2FuY2VsbGVkLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNyZWF0ZUdyb3VwVGV4dCA9IHNjcmVlblRleHRzPy5jcmVhdGVHcm91cDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8ucmlnaHRCdXR0b25MYWJlbDtcclxuICBpc0xlZ2VuZFZpc2libGUgPSBmYWxzZTtcclxuICBpc0xlZnRCdXR0b25OZWVkZWQgPSB0cnVlO1xyXG4gIGNvbFdpZHRoOiBGb3JtR3JpZCA9IHsgeHM6IDEyLCB4bDogMTIsIHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIgfTtcclxuICBmb3JtR3JvdXAhOiBGb3JtTW9kZWw7XHJcbiAgZ3JvdXBUeXBlcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzZWxlY3RlZEdyb3VwSW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBncm91cEZ1bmN0aW9uVHlwZSE6IEdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvITogR3JvdXBJbmZvIHwgdW5kZWZpbmVkO1xyXG4gIGFsbG93ZWRQYXJlbnRHcm91cHM6IFBhcmVudEdyb3Vwc0luZm9bXSA9IFtdO1xyXG4gIGFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIGlzUGFyZW50R3JvdXBDaGFuZ2VkID0gZmFsc2U7XHJcbiAgc2xpZGVUb2dnbGVPcHRpb246IFNsaWRlVG9nZ2xlT3B0aW9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5jaGFuZ2VQYXJlbnRHcm91cCxcclxuICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gIH07XHJcbiAgQFZpZXdDaGlsZChEeW5hbWljRm9ybUNvbXBvbmVudCkgZHluYW1pY0Zvcm1Db21wb25lbnQhOiBEeW5hbWljRm9ybUNvbXBvbmVudDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvbixcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNyZWF0ZSBncm91cCBmb3JtIGdyb3VwIGFycmF5IGFuZCBjb21wb25lbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRHcm91cEZ1bmN0aW9uVHlwZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwSW5mbyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRHcm91cEluZm8oKTtcclxuICAgIGlmICh0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFBhcmVudEluZm8gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRHcm91cFBhcmVudEluZm8oKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQpXHJcbiAgICAgICAgdGhpcy5nZXRQYXJlbnRHcm91cHModGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCk7XHJcbiAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgICAuZ2V0R3JvdXBUeXBlcygpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICBjb25zdCBncm91cFR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRGb3JtYXR0ZWRHcm91cFR5cGVzKFxyXG4gICAgICAgICAgICAgICAgcmVzPy5ib2R5XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxvd2VkR3JvdXBUeXBlID1cclxuICAgICAgICAgICAgICAgICAgZ3JvdXBUeXBlc1t0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFR5cGVdPy5idXNpbmVzc1J1bGVcclxuICAgICAgICAgICAgICAgICAgICA/LmFsbG93ZWRHcm91cFR5cGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZEdyb3VwVHlwZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IGFsbG93ZWRHcm91cFR5cGUubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgIChncm91cFR5cGVJZDogc3RyaW5nKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGdyb3VwVHlwZUlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogZ3JvdXBUeXBlc1tncm91cFR5cGVJZF0/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gdGhpcy5ncm91cFR5cGVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAoZ3JvdXBUeXBlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIWdyb3VwVHlwZXNbZ3JvdXBUeXBlLmlkXT8uYnVzaW5lc3NSdWxlPy5pc0FkbWluXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgc2NyZWVuVGV4dHM/LmVycm9ycz8uRVIxMDAwLFxyXG4gICAgICAgICAgICAgICAgICAgIEFsZXJ0VHlwZS5FUlJPUlxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwVHlwZXMgPSBPYmplY3QuZW50cmllcyhncm91cFR5cGVzKS5tYXAoXHJcbiAgICAgICAgICAgICAgICAgIChbaWQsIGl0ZW1dOiBbc3RyaW5nLCBHcm91cFR5cGVdKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gdGhpcy5ncm91cFR5cGVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGdyb3VwVHlwZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBncm91cFR5cGVzW2dyb3VwVHlwZS5pZF0/LmhpZXJhcmNoeSA9PT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICFncm91cFR5cGVzW2dyb3VwVHlwZS5pZF0/LmJ1c2luZXNzUnVsZT8uaXNBZG1pblxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBUeXBlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5lcnJvcnM/LlsnMTAxMCddLFxyXG4gICAgICAgICAgICAgICAgICBBbGVydFR5cGUuRVJST1JcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgZ3JvdXAgdHlwZSBmb3JtIGZpZWxkIGJhc2VkIG9uIGVkaXQgZ3JvdXAgb3Igbm90LlxyXG4gICAqIEByZXR1cm4ge0ZpZWxkQ29uZmlnfSAtZ3JvdXAgdHlwZSBmb3JtIGZpZWxkLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZUZpZWxkKCk6IEZpZWxkQ29uZmlnIHtcclxuICAgIGxldCBncm91cFR5cGVGaWVsZDogRmllbGRDb25maWc7XHJcbiAgICBpZiAodGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVCkge1xyXG4gICAgICBncm91cFR5cGVGaWVsZCA9IHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlRFWFRfQVJFQSxcclxuICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5ncm91cFR5cGUsXHJcbiAgICAgICAgY29udHJvbE5hbWU6ICdncm91cFR5cGUnLFxyXG4gICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgYXJpYU11bHRpbGluZTogZmFsc2UsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwVHlwZUluZm8/Lm5hbWUsXHJcbiAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNvbnN0YW50cz8uZWRpdEdyb3VwPy5hcmlhTGFiZWw/Lmdyb3VwVHlwZSxcclxuICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lmdyb3VwVHlwZSxcclxuICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VwVHlwZUZpZWxkID0ge1xyXG4gICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uU0VMRUNULFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/Lmdyb3VwVHlwZSArICcqJyxcclxuICAgICAgICBjb250cm9sTmFtZTogJ2dyb3VwVHlwZScsXHJcbiAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuZ3JvdXBUeXBlcyxcclxuICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/LnN1cHBvcnRUZXh0Py5ncm91cFR5cGUsXHJcbiAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBncm91cFR5cGVGaWVsZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNyZWF0ZSBncm91cCBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY3JlYXRlRm9ybUdyb3VwKGZvcm1WYWx1ZT86IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB7XHJcbiAgICAgIGZvcm1Hcm91cDogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogJycsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB0aGlzLmdldEdyb3VwVHlwZUZpZWxkKCksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/Lmdyb3VwTmFtZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2dyb3VwTmFtZScsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlPy5ncm91cE5hbWVcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwTmFtZVxyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/LnN1cHBvcnRUZXh0Py5ncm91cE5hbWUsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgc2NyZWVuVGV4dHM/LmNyZWF0ZUdyb3VwPy5jaGFyYWN0ZXJMaW1pdD8uY2hhcmFjdGVyNTAwXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucz8uZ3JvdXBOYW1lKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5ncm91cE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ncm91cE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LnNob3J0TmFtZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3Nob3J0TmFtZScsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlPy5zaG9ydE5hbWVcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwU2hvcnROYW1lXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/LnN1cHBvcnRUZXh0Py5zaG9ydE5hbWUsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBzY3JlZW5UZXh0cz8uY3JlYXRlR3JvdXA/LmNoYXJhY3RlckxpbWl0Py5jaGFyYWN0ZXIxNVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnM/LnNob3J0TmFtZSksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5zaG9ydE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZ3JvdXBTY29wZScsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZT8uZ3JvdXBTY29wZVxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBEZXNjXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOlxyXG4gICAgICAgICAgICAgICAgc2NyZWVuVGV4dHM/LmNyZWF0ZUdyb3VwPy5jaGFyYWN0ZXJMaW1pdD8uY2hhcmFjdGVyMjAwMCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgc2NyZWVuVGV4dHM/LmNyZWF0ZUdyb3VwPy5jaGFyYWN0ZXJMaW1pdD8uY2hhcmFjdGVyMTUwMFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnM/Lmdyb3VwU2NvcGUpLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNyZWF0ZUZvcm1Hcm91cCh0aGlzLnNlbGVjdGVkR3JvdXBJbmZvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgY3JlYXRlIHN1YiBncm91cCBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbmZvfSBwYXJlbnRHcm91cEluZm8gLVBhcmVudCBncm91cCBpbmZvLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZUNyZWF0ZUZvcm1Hcm91cChwYXJlbnRHcm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVCAmJlxyXG4gICAgICAgIHBhcmVudEdyb3VwSW5mbz8uZ3JvdXBQYXJlbnRJZCkgfHxcclxuICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQ1JFQVRFXHJcbiAgICApIHtcclxuICAgICAgdGhpcy51cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwPy5mb3JtR3JvdXBbMF0/LmNvbnRyb2xzPy5sZW5ndGggLSBJTkRFWF9WQUxVRSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlRFWFRfQVJFQSxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LnBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgY29udHJvbE5hbWU6ICdwYXJlbnRHcm91cCcsXHJcbiAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgcGFyZW50R3JvdXBJbmZvPy5ncm91cE5hbWUgPz9cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwUGFyZW50SW5mbz8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8ucGFyZW50R3JvdXAsXHJcbiAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ucGFyZW50R3JvdXAsXHJcbiAgICAgICAgICBpc1JlYWRvbmx5OiB0cnVlLFxyXG4gICAgICAgICAgYXJpYU11bHRpbGluZTogZmFsc2UsXHJcbiAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQWRkVXNlckZvcm1Db250cm9scyhcclxuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy5mb3JtR3JvdXBbMF0/LmNvbnRyb2xzPy5sZW5ndGggLSBJTkRFWF9WQUxVRSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5TTElERV9UT0dHTEUsXHJcbiAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnY2hhbmdlUGFyZW50R3JvdXAnLFxyXG4gICAgICAgICAgICBhcmlhTGFiZWw6XHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/LmNoYW5nZVBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5jaGFuZ2VQYXJlbnRHcm91cCxcclxuICAgICAgICAgICAgc2xpZGVUb2dnbGVPcHRpb246IHRoaXMuc2xpZGVUb2dnbGVPcHRpb24sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5uZXdQYXJlbnRHcm91cCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ25ld1BhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZFxyXG4gICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ubmV3UGFyZW50R3JvdXAsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBjcmVhdGUgb3IgZWRpdCB1c2VyIGZvcm0gZ3JvdXAgY29udHJvbHMgYnkgYWRkaW5nIGZpZWxkQ29uZmlnIGF0IHJlcXVpcmVkIGluZGV4LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHtGaWVsZENvbmZpZ30gZmllbGRDb25maWdcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgaW5kZXhQb3NpdGlvbjogbnVtYmVyLFxyXG4gICAgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8uc3BsaWNlKFxyXG4gICAgICBpbmRleFBvc2l0aW9uLFxyXG4gICAgICAwLFxyXG4gICAgICBmaWVsZENvbmZpZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiBhbmQgY2FsbHMgY3JlYXRlIGdyb3VwIG9yIGVkaXQgZ3JvdXAgbWV0aG9kcy5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtIC1BcnJheSBvZiBmb3JtR3JvdXBcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGZvcm1bMF0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmIChmb3JtWzBdLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5WQUxJRCkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IGZvcm1bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgID8gdGhpcy5lZGl0R3JvdXAoZm9ybURhdGEpXHJcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUdyb3VwKGZvcm1EYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgY3JlYXRlIGdyb3VwIHBheWxvYWQgYW5kIGNhbGxzIGNyZWF0ZSBncm91cCBBUEkgYW5kIGVtaXRzIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIGZvcm1EYXRhXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjcmVhdGVHcm91cChmb3JtRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjcmVhdGVHcm91cFBheWxvYWQ6IENyZWF0ZUdyb3VwUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGdyb3VwTmFtZTogZm9ybURhdGE/Lmdyb3VwTmFtZSxcclxuICAgICAgICBncm91cFNob3J0TmFtZTogZm9ybURhdGE/LnNob3J0TmFtZSxcclxuICAgICAgICBncm91cFR5cGU6IGZvcm1EYXRhPy5ncm91cFR5cGU/LmlkLFxyXG4gICAgICAgIGdyb3VwRGVzYzogZm9ybURhdGE/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgZ3JvdXBQYXJlbnRJZDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCA/PyBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuY3JlYXRlR3JvdXAoY3JlYXRlR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBlZGl0IGdyb3VwIHBheWxvYWQgYW5kIGNhbGxzIGVkaXQgZ3JvdXAgQVBJIGFuZCBlbWl0cyBjcmVhdGUgZ3JvdXAgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSBmb3JtRGF0YVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdEdyb3VwKGZvcm1EYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXModGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCk7XHJcbiAgICBjb25zdCBlZGl0R3JvdXBQYXlsb2FkOiBFZGl0R3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBOYW1lOiBmb3JtRGF0YT8uZ3JvdXBOYW1lLFxyXG4gICAgICAgIGdyb3VwU2hvcnROYW1lOiBmb3JtRGF0YT8uc2hvcnROYW1lLFxyXG4gICAgICAgIGdyb3VwRGVzYzogZm9ybURhdGE/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgZ3JvdXBQYXJlbnRJZDogdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZFxyXG4gICAgICAgICAgPyBmb3JtRGF0YT8ubmV3UGFyZW50R3JvdXA/LmlkXHJcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQgPz8gbnVsbCxcclxuICAgICAgICBncm91cElkOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmVkaXRHcm91cChlZGl0R3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyB0aGUgZXJyb3JzIGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzOiBzdHJpbmdbXSA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZTogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShlcnJvck1lc3NhZ2UsIEFsZXJ0VHlwZS5FUlJPUik7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlPy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZm9ybSByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZvcm1Hcm91cFJlZmVyZW5jZShmb3JtOiBGb3JtR3JvdXBbXSkge1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybVswXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBlcnJvciwgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLWVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdLCBhbGVydFR5cGU6IEFsZXJ0VHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNyZWF0ZUdyb3VwQ2FuY2VsbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsPy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGFsbG93ZWQgcGFyZW50IGdyb3VwcyBmb3IgcmVhc3NpZ25pbmcgdGhlIHBhcmVudC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFBhcmVudEdyb3Vwcyhncm91cElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3VwcyA9IFtdO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbGxvd2VkUGFyZW50R3JvdXBzKGdyb3VwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24/Lmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uPy5ncm91cEFjcm9ueW0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHMgPSByZXNwb25zZTtcclxuICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50Py5mb3JtRmllbGRzPy50b0FycmF5KCk7XHJcbiAgICAgICAgICBmb3JtRmllbGRzPy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uY29uZmlnPy5jb250cm9sTmFtZSA9PT1cclxuICAgICAgICAgICAgICAgICduZXdQYXJlbnRHcm91cCcgJiZcclxuICAgICAgICAgICAgICBmb3JtRmllbGQ/LmNvbXBvbmVudD8uaW5zdGFuY2U/LlsnZHJvcGRvd25PcHRpb25zJ11cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGZvcm1GaWVsZC5jb21wb25lbnQuaW5zdGFuY2VbJ2Ryb3Bkb3duT3B0aW9ucyddID1cclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnM7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzL3JlbW92ZXMgbmV3IHBhcmVudCBncm91cCBzZWxlY3Rpb24gb3B0aW9ucyB3aGVuZXZlciBDaGFuZ2UgUGFyZW50IEdyb3VwIHNsaWRlciBpcyB0b2dnbGVkLlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHRvZ2dsZVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybVNsaWRlVG9nZ2xlQ2hhbmdlKHRvZ2dsZTogU2xpZGVUb2dnbGVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24uY2hlY2tlZCA9IHRvZ2dsZT8uY2hlY2tlZDtcclxuICAgIHRoaXMuaXNQYXJlbnRHcm91cENoYW5nZWQgPSB0b2dnbGU/LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCh0aGlzLmZvcm0/LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY3JlYXRlIGdyb3VwIGZvcm0gY2hhbmdlIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBvbkNyZWF0ZUdyb3VwRm9ybUNoYW5nZShmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQYXJlbnRHcm91cENoYW5nZWQpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRQYXJlbnRHcm91cCA9IHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwcz8uZmlsdGVyKFxyXG4gICAgICAgIChvcHRpb246IFBhcmVudEdyb3Vwc0luZm8pID0+XHJcbiAgICAgICAgICBvcHRpb24/Lmdyb3VwSWQgPT09XHJcbiAgICAgICAgICBmb3JtWzBdPy5jb250cm9sc1snbmV3UGFyZW50R3JvdXAnXT8udmFsdWU/LmlkPy50b1N0cmluZygpXHJcbiAgICAgIClbMF07XHJcbiAgICAgIHRoaXMuZm9ybT8uZ2V0KCdwYXJlbnRHcm91cCcpPy5zZXRWYWx1ZShzZWxlY3RlZFBhcmVudEdyb3VwPy5ncm91cE5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8aWVlZXNhLWR5bmFtaWMtZm9ybVxyXG4gICpuZ0lmPVwiZm9ybUdyb3VwXCJcclxuICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgW3JpZ2h0QnV0dG9uTGFiZWxdPVwicmlnaHRCdXR0b25MYWJlbFwiXHJcbiAgW2lzTGVnZW5kVmlzaWJsZV09XCJpc0xlZ2VuZFZpc2libGVcIlxyXG4gIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgW2FjdGlvbkJ1dHRvbkFsaWduXT1cImFjdGlvbkJ1dHRvbkFsaWduXCJcclxuICBbZm9ybUdyb3Vwc109XCJmb3JtR3JvdXBcIlxyXG4gIFtpc0xlZnRCdXR0b25OZWVkZWRdPVwiaXNMZWZ0QnV0dG9uTmVlZGVkXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvbkZvcm1TdWJtaXQoJGV2ZW50KVwiXHJcbiAgKGZvcm1MZWZ0QnV0dG9uQ2xpY2tlZCk9XCJjcmVhdGVHcm91cENhbmNlbGxlZCgpXCJcclxuICAoZm9ybUdyb3Vwc1JlZmVyZW5jZSk9XCJnZXRGb3JtR3JvdXBSZWZlcmVuY2UoJGV2ZW50KVwiXHJcbiAgKGZvcm1TbGlkZVRvZ2dsZUNoYW5nZSk9XCJvbkZvcm1TbGlkZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcclxuICAoZm9ybUNoYW5nZSk9XCJvbkNyZWF0ZUdyb3VwRm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuPjwvaWVlZXNhLWR5bmFtaWMtZm9ybT4iXX0=
531
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1ncm91cC9jcmVhdGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBSUwsU0FBUyxFQUNULG9CQUFvQixFQUNwQixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLGFBQWEsRUFDYixTQUFTLEdBRVYsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBRTNFLE1B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Q3pFO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBcGxCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixtSkFGcEIsQ0FBQyxhQUFhLENBQUMsZ0ZBcUNmLG9CQUFvQixnREM1RmpDLGlvQkFjdUIsaWduQkRxQ1gsWUFBWSxtSUFBRSxvQkFBb0IsOHJCQUFFLGVBQWU7OzRGQU1sRCxvQkFBb0I7a0JBVmhDLFNBQVM7K0JBRUUscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUMsaUJBRy9DLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxhQUFhLENBQUM7d0tBUWhCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFLRyxVQUFVO3NCQUFuQixNQUFNO2dCQXdCMEIsb0JBQW9CO3NCQUFwRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBGb3JtR3JpZCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIEFsaWduVHlwZSxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgRmllbGRDb25maWcsXHJcbiAgU2xpZGVUb2dnbGVPcHRpb24sXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHtcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7IENyZWF0ZUdyb3VwUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVscy9jcmVhdGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXBzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyb3VwVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdEdyb3VwUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVscy9lZGl0LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBQYXJlbnRHcm91cHNJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhcmVudC1ncm91cHMtaW5mby5tb2RlbCc7XHJcbmNvbnN0IElOREVYX1ZBTFVFID0gNDtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVHcm91cENvbXBvbmVudCB1c2VzIER5bmFtaWNGb3JtQ29tcG9uZW50IHRvIGJ1aWxkIGNyZWF0ZSBuZXcgZ3JvdXAgZm9ybSBvciBlZGl0IGdyb3VwIGFuZCBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiBzdWJtaXNzaW9uIG9mIGZvcm0gYW5kIGhhbmRsaW5nIHN1Y2Nlc3MgYW5kIGVycm9yIHNjZW5hcmlvcy5cclxuICogQGNsYXNzIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWNyZWF0ZS1ncm91cCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEeW5hbWljRm9ybUNvbXBvbmVudCwgTWF0RGlhbG9nTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0FsZXJ0c1NlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBzdWNjZXNzZnVsbHkgc3VibWl0dGVkLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIGNhbmNlbGxlZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjcmVhdGVHcm91cFRleHQgPSBzY3JlZW5UZXh0cz8uY3JlYXRlR3JvdXA7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG4gIGxlZnRCdXR0b25MYWJlbCA9IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8ubGVmdEJ1dHRvbkxhYmVsO1xyXG4gIHJpZ2h0QnV0dG9uTGFiZWwgPSB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LnJpZ2h0QnV0dG9uTGFiZWw7XHJcbiAgaXNMZWdlbmRWaXNpYmxlID0gZmFsc2U7XHJcbiAgaXNMZWZ0QnV0dG9uTmVlZGVkID0gdHJ1ZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgZm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGdyb3VwVHlwZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBhY3Rpb25CdXR0b25BbGlnbiA9IEFsaWduVHlwZS5MRUZUO1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2VsZWN0ZWRHcm91cEluZm8hOiBHcm91cEluZm8gfCB1bmRlZmluZWQ7XHJcbiAgZ3JvdXBGdW5jdGlvblR5cGUhOiBHcm91cEZ1bmN0aW9uVHlwZTtcclxuICBzZWxlY3RlZEdyb3VwUGFyZW50SW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBhbGxvd2VkUGFyZW50R3JvdXBzOiBQYXJlbnRHcm91cHNJbmZvW10gPSBbXTtcclxuICBhbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBpc1BhcmVudEdyb3VwQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIHNsaWRlVG9nZ2xlT3B0aW9uOiBTbGlkZVRvZ2dsZU9wdGlvbiA9IHtcclxuICAgIGlkOiAxLFxyXG4gICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uY2hhbmdlUGFyZW50R3JvdXAsXHJcbiAgICBjaGVja2VkOiBmYWxzZSxcclxuICB9O1xyXG4gIEBWaWV3Q2hpbGQoRHluYW1pY0Zvcm1Db21wb25lbnQpIGR5bmFtaWNGb3JtQ29tcG9uZW50ITogRHluYW1pY0Zvcm1Db21wb25lbnQ7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3Vwc1NlcnZpY2U6IEdyb3Vwc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb24sXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBjcmVhdGUgZ3JvdXAgZm9ybSBncm91cCBhcnJheSBhbmQgY29tcG9uZW50LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0R3JvdXBGdW5jdGlvblR5cGUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cEluZm8gPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldFNlbGVjdGVkR3JvdXBJbmZvKCk7XHJcbiAgICBpZiAodGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvID1cclxuICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldFNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvKCk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFBhcmVudElkKVxyXG4gICAgICAgIHRoaXMuZ2V0UGFyZW50R3JvdXBzKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWQpO1xyXG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgICAgLmdldEdyb3VwVHlwZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0Rm9ybWF0dGVkR3JvdXBUeXBlcyhcclxuICAgICAgICAgICAgICAgIHJlcz8uYm9keVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsb3dlZEdyb3VwVHlwZSA9XHJcbiAgICAgICAgICAgICAgICAgIGdyb3VwVHlwZXNbdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBUeXBlXT8uYnVzaW5lc3NSdWxlXHJcbiAgICAgICAgICAgICAgICAgICAgPy5hbGxvd2VkR3JvdXBUeXBlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRHcm91cFR5cGU/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwVHlwZXMgPSBhbGxvd2VkR3JvdXBUeXBlLm1hcChcclxuICAgICAgICAgICAgICAgICAgICAoZ3JvdXBUeXBlSWQ6IHN0cmluZykgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlkOiBncm91cFR5cGVJZCxcclxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGdyb3VwVHlwZXNbZ3JvdXBUeXBlSWRdPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBUeXBlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGdyb3VwVHlwZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICFncm91cFR5cGVzW2dyb3VwVHlwZS5pZF0/LmJ1c2luZXNzUnVsZT8uaXNBZG1pblxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5lcnJvcnM/LkVSMTAwMCxcclxuICAgICAgICAgICAgICAgICAgICBBbGVydFR5cGUuRVJST1JcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBUeXBlcykubWFwKFxyXG4gICAgICAgICAgICAgICAgICAoW2lkLCBpdGVtXTogW3N0cmluZywgR3JvdXBUeXBlXSkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBUeXBlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIChncm91cFR5cGUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBUeXBlc1tncm91cFR5cGUuaWRdPy5oaWVyYXJjaHkgPT09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgICAhZ3JvdXBUeXBlc1tncm91cFR5cGUuaWRdPy5idXNpbmVzc1J1bGU/LmlzQWRtaW5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwVHlwZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICBzY3JlZW5UZXh0cz8uZXJyb3JzPy5bJzEwMTAnXSxcclxuICAgICAgICAgICAgICAgICAgQWxlcnRUeXBlLkVSUk9SXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIGdyb3VwIHR5cGUgZm9ybSBmaWVsZCBiYXNlZCBvbiBlZGl0IGdyb3VwIG9yIG5vdC5cclxuICAgKiBAcmV0dXJuIHtGaWVsZENvbmZpZ30gLWdyb3VwIHR5cGUgZm9ybSBmaWVsZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVGaWVsZCgpOiBGaWVsZENvbmZpZyB7XHJcbiAgICBsZXQgZ3JvdXBUeXBlRmllbGQ6IEZpZWxkQ29uZmlnO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQpIHtcclxuICAgICAgZ3JvdXBUeXBlRmllbGQgPSB7XHJcbiAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5URVhUX0FSRUEsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGNvbnRyb2xOYW1lOiAnZ3JvdXBUeXBlJyxcclxuICAgICAgICBpc1JlYWRvbmx5OiB0cnVlLFxyXG4gICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFR5cGVJbmZvPy5uYW1lLFxyXG4gICAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmVkaXRHcm91cD8uYXJpYUxhYmVsPy5ncm91cFR5cGUsXHJcbiAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ncm91cFR5cGUsXHJcbiAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncm91cFR5cGVGaWVsZCA9IHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNFTEVDVCxcclxuICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5ncm91cFR5cGUgKyAnKicsXHJcbiAgICAgICAgY29udHJvbE5hbWU6ICdncm91cFR5cGUnLFxyXG4gICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmdyb3VwVHlwZXMsXHJcbiAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lmdyb3VwVHlwZSxcclxuICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lmdyb3VwVHlwZSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ3JvdXBUeXBlRmllbGQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBjcmVhdGUgZ3JvdXAgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNyZWF0ZUZvcm1Hcm91cChmb3JtVmFsdWU/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcm91cFR5cGVGaWVsZCgpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5ncm91cE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdncm91cE5hbWUnLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZT8uZ3JvdXBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cE5hbWVcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjUwMFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnM/Lmdyb3VwTmFtZSksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ncm91cE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5zaG9ydE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdzaG9ydE5hbWUnLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZT8uc2hvcnROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFNob3J0TmFtZVxyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgc2NyZWVuVGV4dHM/LmNyZWF0ZUdyb3VwPy5jaGFyYWN0ZXJMaW1pdD8uY2hhcmFjdGVyMTVcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zPy5zaG9ydE5hbWUpLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2dyb3VwU2NvcGUnLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWU/Lmdyb3VwU2NvcGVcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwRGVzY1xyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/LnN1cHBvcnRUZXh0Py5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIG1heExlbmd0aDpcclxuICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjIwMDAsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjE1MDBcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zPy5ncm91cFNjb3BlKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVDcmVhdGVGb3JtR3JvdXAodGhpcy5zZWxlY3RlZEdyb3VwSW5mbyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGNyZWF0ZSBzdWIgZ3JvdXAgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gcGFyZW50R3JvdXBJbmZvIC1QYXJlbnQgZ3JvdXAgaW5mby5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVDcmVhdGVGb3JtR3JvdXAocGFyZW50R3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQgJiZcclxuICAgICAgICBwYXJlbnRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQpIHx8XHJcbiAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkNSRUFURVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQWRkVXNlckZvcm1Db250cm9scyhcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5URVhUX0FSRUEsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5wYXJlbnRHcm91cCxcclxuICAgICAgICAgIGNvbnRyb2xOYW1lOiAncGFyZW50R3JvdXAnLFxyXG4gICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgIHBhcmVudEdyb3VwSW5mbz8uZ3JvdXBOYW1lID8/XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFBhcmVudEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/LnBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFkZFVzZXJGb3JtQ29udHJvbHMoXHJcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uU0xJREVfVE9HR0xFLFxyXG4gICAgICAgICAgICBjb250cm9sTmFtZTogJ2NoYW5nZVBhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgYXJpYUxhYmVsOlxyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5jaGFuZ2VQYXJlbnRHcm91cCxcclxuICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY2hhbmdlUGFyZW50R3JvdXAsXHJcbiAgICAgICAgICAgIHNsaWRlVG9nZ2xlT3B0aW9uOiB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucy5sZW5ndGggPT09IDAsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5uZXdQYXJlbnRHcm91cCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ25ld1BhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZFxyXG4gICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ubmV3UGFyZW50R3JvdXAsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBjcmVhdGUgb3IgZWRpdCB1c2VyIGZvcm0gZ3JvdXAgY29udHJvbHMgYnkgYWRkaW5nIGZpZWxkQ29uZmlnIGF0IHJlcXVpcmVkIGluZGV4LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHtGaWVsZENvbmZpZ30gZmllbGRDb25maWdcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgaW5kZXhQb3NpdGlvbjogbnVtYmVyLFxyXG4gICAgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8uc3BsaWNlKFxyXG4gICAgICBpbmRleFBvc2l0aW9uLFxyXG4gICAgICAwLFxyXG4gICAgICBmaWVsZENvbmZpZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiBhbmQgY2FsbHMgY3JlYXRlIGdyb3VwIG9yIGVkaXQgZ3JvdXAgbWV0aG9kcy5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtIC1BcnJheSBvZiBmb3JtR3JvdXBcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGZvcm1bMF0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmIChmb3JtWzBdLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5WQUxJRCkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IGZvcm1bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgID8gdGhpcy5lZGl0R3JvdXAoZm9ybURhdGEpXHJcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUdyb3VwKGZvcm1EYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgY3JlYXRlIGdyb3VwIHBheWxvYWQgYW5kIGNhbGxzIGNyZWF0ZSBncm91cCBBUEkgYW5kIGVtaXRzIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIGZvcm1EYXRhXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjcmVhdGVHcm91cChmb3JtRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjcmVhdGVHcm91cFBheWxvYWQ6IENyZWF0ZUdyb3VwUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGdyb3VwTmFtZTogZm9ybURhdGE/Lmdyb3VwTmFtZSxcclxuICAgICAgICBncm91cFNob3J0TmFtZTogZm9ybURhdGE/LnNob3J0TmFtZSxcclxuICAgICAgICBncm91cFR5cGU6IGZvcm1EYXRhPy5ncm91cFR5cGU/LmlkLFxyXG4gICAgICAgIGdyb3VwRGVzYzogZm9ybURhdGE/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgZ3JvdXBQYXJlbnRJZDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCA/PyBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuY3JlYXRlR3JvdXAoY3JlYXRlR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBlZGl0IGdyb3VwIHBheWxvYWQgYW5kIGNhbGxzIGVkaXQgZ3JvdXAgQVBJIGFuZCBlbWl0cyBjcmVhdGUgZ3JvdXAgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSBmb3JtRGF0YVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdEdyb3VwKGZvcm1EYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXModGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCk7XHJcbiAgICBjb25zdCBlZGl0R3JvdXBQYXlsb2FkOiBFZGl0R3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBOYW1lOiBmb3JtRGF0YT8uZ3JvdXBOYW1lLFxyXG4gICAgICAgIGdyb3VwU2hvcnROYW1lOiBmb3JtRGF0YT8uc2hvcnROYW1lLFxyXG4gICAgICAgIGdyb3VwRGVzYzogZm9ybURhdGE/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgZ3JvdXBQYXJlbnRJZDogdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZFxyXG4gICAgICAgICAgPyBmb3JtRGF0YT8ubmV3UGFyZW50R3JvdXA/LmlkXHJcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQgPz8gbnVsbCxcclxuICAgICAgICBncm91cElkOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmVkaXRHcm91cChlZGl0R3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyB0aGUgZXJyb3JzIGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzOiBzdHJpbmdbXSA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZTogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShlcnJvck1lc3NhZ2UsIEFsZXJ0VHlwZS5FUlJPUik7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlPy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZm9ybSByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZvcm1Hcm91cFJlZmVyZW5jZShmb3JtOiBGb3JtR3JvdXBbXSkge1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybVswXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBlcnJvciwgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLWVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdLCBhbGVydFR5cGU6IEFsZXJ0VHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNyZWF0ZUdyb3VwQ2FuY2VsbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsPy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGFsbG93ZWQgcGFyZW50IGdyb3VwcyBmb3IgcmVhc3NpZ25pbmcgdGhlIHBhcmVudC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFBhcmVudEdyb3Vwcyhncm91cElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3VwcyA9IFtdO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbGxvd2VkUGFyZW50R3JvdXBzKGdyb3VwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24/Lmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uPy5ncm91cEFjcm9ueW0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHMgPSByZXNwb25zZTtcclxuICAgICAgICAgIGlmICh0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgJ2NoYW5nZVBhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICAnaXNEaXNhYmxlZCcsXHJcbiAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgJ25ld1BhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICdjaGFuZ2VQYXJlbnRHcm91cCcsXHJcbiAgICAgICAgICAgICdpc0Rpc2FibGVkJyxcclxuICAgICAgICAgICAgdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcGFzc2VkIGZvcm0gZmllbGQgdmFsdWVzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XHJcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgIGZvcm1Db250cm9sTmFtZTogc3RyaW5nLFxyXG4gICAgZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgdmFsdWU6IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnQ/LmZvcm1GaWVsZHM/LnRvQXJyYXkoKTtcclxuICAgIGZvcm1GaWVsZHM/LmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5jb25maWc/LmNvbnRyb2xOYW1lID09PVxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lICYmXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5bZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XVxyXG4gICAgICApXHJcbiAgICAgICAgZm9ybUZpZWxkLmNvbXBvbmVudC5pbnN0YW5jZVtmb3JtQ29udHJvbElucHV0UHJvcGVydHldID0gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMvcmVtb3ZlcyBuZXcgcGFyZW50IGdyb3VwIHNlbGVjdGlvbiBvcHRpb25zIHdoZW5ldmVyIENoYW5nZSBQYXJlbnQgR3JvdXAgc2xpZGVyIGlzIHRvZ2dsZWQuXHJcbiAgICogQHBhcmFtIHtTbGlkZVRvZ2dsZU9wdGlvbn0gdG9nZ2xlXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtU2xpZGVUb2dnbGVDaGFuZ2UodG9nZ2xlOiBTbGlkZVRvZ2dsZU9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5jaGVja2VkID0gdG9nZ2xlPy5jaGVja2VkO1xyXG4gICAgdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCA9IHRvZ2dsZT8uY2hlY2tlZDtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKHRoaXMuZm9ybT8udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBjcmVhdGUgZ3JvdXAgZm9ybSBjaGFuZ2UgZXZlbnQuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlR3JvdXBGb3JtQ2hhbmdlKGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZFBhcmVudEdyb3VwID0gdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzPy5maWx0ZXIoXHJcbiAgICAgICAgKG9wdGlvbjogUGFyZW50R3JvdXBzSW5mbykgPT5cclxuICAgICAgICAgIG9wdGlvbj8uZ3JvdXBJZCA9PT1cclxuICAgICAgICAgIGZvcm1bMF0/LmNvbnRyb2xzWyduZXdQYXJlbnRHcm91cCddPy52YWx1ZT8uaWQ/LnRvU3RyaW5nKClcclxuICAgICAgKVswXTtcclxuICAgICAgdGhpcy5mb3JtPy5nZXQoJ3BhcmVudEdyb3VwJyk/LnNldFZhbHVlKHNlbGVjdGVkUGFyZW50R3JvdXA/Lmdyb3VwTmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJmb3JtR3JvdXBcIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImlzTGVnZW5kVmlzaWJsZVwiXHJcbiAgW2NvbFdpZHRoXT1cImNvbFdpZHRoXCJcclxuICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gIFtmb3JtR3JvdXBzXT1cImZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJpc0xlZnRCdXR0b25OZWVkZWRcIlxyXG4gIChmb3JtU3VibWl0KT1cIm9uRm9ybVN1Ym1pdCgkZXZlbnQpXCJcclxuICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cImNyZWF0ZUdyb3VwQ2FuY2VsbGVkKClcIlxyXG4gIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldEZvcm1Hcm91cFJlZmVyZW5jZSgkZXZlbnQpXCJcclxuICAoZm9ybVNsaWRlVG9nZ2xlQ2hhbmdlKT1cIm9uRm9ybVNsaWRlVG9nZ2xlQ2hhbmdlKCRldmVudClcIlxyXG4gIChmb3JtQ2hhbmdlKT1cIm9uQ3JlYXRlR3JvdXBGb3JtQ2hhbmdlKCRldmVudClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPiJdfQ==