barsa-novin-ray-core 1.0.332 → 1.0.334

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.
@@ -96,6 +96,9 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
96
96
  }
97
97
  }
98
98
  }
99
+ if (isChecked && !isChecked.firstChange) {
100
+ this._raiseWorkflowShareButtons(isChecked.currentValue);
101
+ }
99
102
  if (inlineEditMode?.currentValue && !inlineEditMode?.previousValue && this.isChecked) {
100
103
  needToLoadForm = true;
101
104
  }
@@ -254,10 +257,14 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
254
257
  // return;
255
258
  // }
256
259
  this.rowCheck.emit({ mo: this.mo, index: this.index });
260
+ }
261
+ _raiseWorkflowShareButtons(isChecked) {
257
262
  if (this.cartableParams) {
258
263
  const choiceList = this.cartableParams.formSetting?.Workflow?.ChoiceList;
259
264
  if (choiceList.length) {
260
- this.workflowShareButtons.emit({ mo: this.mo, choiceList, add: !this.isChecked });
265
+ setTimeout(() => {
266
+ this.workflowShareButtons.emit({ mo: this.mo, choiceList, add: isChecked });
267
+ });
261
268
  }
262
269
  }
263
270
  }
@@ -439,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
439
446
  }], cartableWorkflowData: [{
440
447
  type: Input
441
448
  }] } });
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUVKLFFBQVEsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBHLE9BQU8sRUFBc0QsUUFBUSxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVEzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBMERsRSxZQUNjLEdBQWUsRUFDZixhQUEyQixFQUMzQixJQUF1QixFQUN2QixnQkFBbUMsRUFDWCx1QkFBeUMsRUFDN0MsaUJBQW1DLEVBQzNDLGVBQStCO1FBRXJELEtBQUssRUFBRSxDQUFDO1FBUkUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDWCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDM0Msb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBaEN6RCxhQUFRLEdBQUcs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MUIsMEJBQTBCLGlsQkFIekIsRUFBRTsyRkFHSCwwQkFBMEI7a0JBTHRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFnRVEsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzRDQWhFSixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVPLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFLTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFNTyxvQkFBb0I7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgdGFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsLCBSZXBvcnRWaWV3Q29sdW1uLCBGb3JtU2V0dGluZywgQmFyc2FBcGksIENob2ljZURlZiB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMnO1xuaW1wb3J0IHsgUHJldmVudERlZmF1bEV2ZW50LCBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1QYW5lbFNlcnZpY2UsIFVsdk1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCB9IGZyb20gJy4vYmFzZS12aWV3LXByb3BzJztcbmltcG9ydCB7IE1vUmVwb3J0VmFsdWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xudHlwZSBSZWFzb25Ub1NhdmUgPSAnVEFCJyB8ICdDVFJMK0VOVEVSJyB8ICdDSEVDS19DSEFOR0VEJyB8ICdFU0MnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdibnJjLWJhc2Utdmlldy1pdGVtLXByb3BzJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld1Byb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIG1vRGF0YUxpc3RDb3VudDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGluZGV4OiBudW1iZXI7XG4gICAgQElucHV0KCkgbGFzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XG4gICAgQElucHV0KCkgaGlkZU9wZW5JY29uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJvd0luZGljYXRvckNvbG9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZXQgc2VyaWFsaXplZFJlbGF0ZWRNbyh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vID0gdmFsO1xuICAgICAgICB0aGlzLl91cGRhdGVDYXJ0YWJsZU1vKHZhbCk7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBjYXJ0YWJsZVRlbXBsYXRlKHZhbDogRm9ybVNldHRpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVUZW1wbGF0ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlTW8odmFsOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSB7XG4gICAgICAgIHRoaXMuX2NhcnRhYmxlTW8gPSB2YWw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odGhpcy5fc2VyaWFsaXplZFJlbGF0ZWRNbyk7XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlV29ya2Zsb3dEYXRhKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhID0gdmFsO1xuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBoYXNFcnJvciA9IGZhbHNlO1xuICAgIF9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbiA9IGZhbHNlO1xuICAgIF9sYXN0RWRpdGFibGVDb2x1bW5JbmRleDogbnVtYmVyO1xuICAgIGlubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgc2F2aW5nOiBib29sZWFuO1xuICAgIHNhdmVkOiBib29sZWFuO1xuICAgIGluUm93ID0gdHJ1ZTtcbiAgICBoYXNDYXJ0YWJsZVRlbXBsYXRlID0gZmFsc2U7XG4gICAgY2FydGFibGVQYXJhbXM6IHtcbiAgICAgICAgZm9ybVNldHRpbmc6IEZvcm1TZXR0aW5nO1xuICAgICAgICBtb0lkOiBzdHJpbmc7XG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB2aWV3SWQ6IGFueTtcbiAgICAgICAgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgfTtcbiAgICBicnVsZUFjdGlvbk1lc3NhZ2U6IEJydWxlQWN0aW9uTWVzc2FnZSB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX3NhdmVFZGl0ZWRNbyQgPSBuZXcgU3ViamVjdDxSZWFzb25Ub1NhdmU+KCk7XG4gICAgcHJpdmF0ZSBfZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfZm9ybVBhbmVsTG9hZGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgcHJpdmF0ZSBfY2FydGFibGVUZW1wbGF0ZTogRm9ybVNldHRpbmc7XG4gICAgcHJpdmF0ZSBfY2FydGFibGVXb3JrZmxvd0RhdGE6IHN0cmluZztcbiAgICBwcml2YXRlIF9zZXJpYWxpemVkUmVsYXRlZE1vOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9yZXBvcnRWYWx1ZVBpcGU6IE1vUmVwb3J0VmFsdWVQaXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgX3BhcmVudEZvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIF9mb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX3Vsdk1haW5TZXJ2aWNlOiBVbHZNYWluU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlYXNvbjogUmVhc29uVG9TYXZlKSA9PiB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHRocm93RXJyb3IoKCkgPT4gZXJyKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogeyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc2F2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZWFzb24gPT09ICdUQUInIHx8IHJlcy5yZWFzb24gPT09ICdDVFJMK0VOVEVSJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5yZWFzb24gPT09ICdFU0MnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fc3luY01vKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0IF9oYXNGb3JtUGFuZWxTZXJ2aWNlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVBhbmVsU2VydmljZSAhPT0gbnVsbCAmJiB0aGlzLmZvcm1TZXR0aW5nO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmNvbnRleHQkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UudmlldyQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQkID0gdGhpcy5fZm9ybVBhbmVsU2VydmljZS5sYXlvdXQkO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGNvbnN0IHsgaXNDaGVja2VkLCBpbmxpbmVFZGl0TW9kZSB9ID0gY2hhbmdlcztcbiAgICAgICAgbGV0IG5lZWRUb0xvYWRGb3JtID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0NoZWNrZWQuY3VycmVudFZhbHVlICYmIGlzQ2hlY2tlZC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9uZWVkVG9TYXZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ0hFQ0tfQ0hBTkdFRCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0NoZWNrZWQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5lZWRUb0xvYWRGb3JtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgIWlubGluZUVkaXRNb2RlPy5wcmV2aW91c1ZhbHVlICYmIHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnRVNDJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvd0NoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoY29sdW1uRWw6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBjb2x1bW5FbC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgYGJ1dHRvbixidXR0b246bm90KFtkaXNhYmxlZF0pLFtocmVmXSxpbnB1dDpub3QoW2Rpc2FibGVkXSksaW5wdXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZXNbMF07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0VTQycpO1xuICAgIH1cbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xuICAgIH1cbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NoZWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VsdkNvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlRm9ybUNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF91cGRhdGVDYXJ0YWJsZU1vKHNlcmlhbGl6ZU1vOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNlcmlhbGl6ZU1vICYmIHRoaXMuX2NhcnRhYmxlTW8pIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZU1vID0gYCR7c2VyaWFsaXplTW99YDtcbiAgICAgICAgICAgIGNvbnN0IG1vID0gQmFyc2FBcGkuRXh0LmRlY29kZShzZXJpYWxpemVNbyk7XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0geyAuLi50aGlzLl9jYXJ0YWJsZU1vLCAuLi5tbyB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlQ2FydGFibGVQYXJhbXMoKTogdm9pZCB7XG4gICAgICAgIGxldCBjYXJ0YWJsZVRlbXBsYXRlID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgY2FydGFibGVNbyA9IHRoaXMuX2NhcnRhYmxlTW87XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlV29ya2Zsb3dEYXRhID0gdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGE7XG4gICAgICAgIGlmICh0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gdXBkYXRlIGNhcnRhYmxlIG1vO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgJiZcbiAgICAgICAgICAgIGNhcnRhYmxlTW8gJiZcbiAgICAgICAgICAgIHR5cGVvZiBjYXJ0YWJsZVdvcmtmbG93RGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjYXJ0YWJsZVRlbXBsYXRlKSk7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY2FydGFibGVUZW1wbGF0ZS5WaWV3O1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5EYXRhID0geyBNbzogeyAuLi5jYXJ0YWJsZU1vIH0gfTtcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUuV29ya2Zsb3cgPSBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9PT0gJycgPyBudWxsIDogSlNPTi5wYXJzZShjYXJ0YWJsZVdvcmtmbG93RGF0YSk7XG4gICAgICAgICAgICBpZiAoIXZpZXcuRXh0cmFKc29uUHJvcCkge1xuICAgICAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcCA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wLklzU2ltcGxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jYXJ0YWJsZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBmb3JtU2V0dGluZzogY2FydGFibGVUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBtb0lkOiBjYXJ0YWJsZU1vLklkLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZJZDogY2FydGFibGVNby4kVHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHZpZXdJZDogdmlldy5UeXBlVmlld0lkLFxuICAgICAgICAgICAgICAgIGluRGlhbG9nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAvLyBpZiAoaXNDaGlsZE5vZGUpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCB0ID0gdGhpcy5pbmxpbmVFZGl0TW9kZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlO1xuICAgICAgICBpZiAoIXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zdCBmb2N1c2FibGU6IE5vZGVMaXN0ID0gdGhpcy5fZm9jdXNhYmxlQ29udHJvbHM7XG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoYyA9PT0gdGFyZ2V0KSB7XG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgICAgICBpZiAodGhpcy5jYXJ0YWJsZVBhcmFtcykge1xuICAgICAgICAgICAgY29uc3QgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW10gPSB0aGlzLmNhcnRhYmxlUGFyYW1zLmZvcm1TZXR0aW5nPy5Xb3JrZmxvdz8uQ2hvaWNlTGlzdDtcbiAgICAgICAgICAgIGlmIChjaG9pY2VMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTaGFyZUJ1dHRvbnMuZW1pdCh7IG1vOiB0aGlzLm1vLCBjaG9pY2VMaXN0LCBhZGQ6ICF0aGlzLmlzQ2hlY2tlZCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGFuZGxlVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3N5bmNNbygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3luY1dpdGhGb3JtcGFuZWxNbyA9IHRoaXMubW87XG4gICAgICAgIGNvbnN0IF9pc0NoZWNrZWQgPSB0aGlzLm1vLiRJc0NoZWNrZWQ7XG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyTW8gPSB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vO1xuICAgICAgICB0aGlzLl91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoZm9ybVBhbmVsQ3RybHJNbywgc3luY1dpdGhGb3JtcGFuZWxNbyk7XG4gICAgICAgIHN5bmNXaXRoRm9ybXBhbmVsTW9bJyRPcmlnaW5hbFZhbHVlcyddID0gZm9ybVBhbmVsQ3RybHJNb1snJE9yaWdpbmFsVmFsdWVzJ107XG4gICAgICAgIHN5bmNXaXRoRm9ybXBhbmVsTW9bJyRGaWVsZERpY3QnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRGaWVsZERpY3QnXTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJFN0YXRlJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckU3RhdGUnXTsgLy8gdGhpcyBhZGQgYmVjYXVzZSBpZiB3ZSBlZGl0IHVuY2hhbmdlZCBtbyBpdCBkb2VzIG5vdCByZWZsZWN0IHRvIG1vIG9mIHVsdi5cbiAgICAgICAgdGhpcy5tbyA9IHsgLi4uc3luY1dpdGhGb3JtcGFuZWxNbyB9O1xuICAgICAgICB0aGlzLm1vLiRJc0NoZWNrZWQgPSBfaXNDaGVja2VkO1xuICAgICAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91cGRhdGVXaXRoT3JpZ2luYWxWYWx1ZXMoc291cmNlOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBkZXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZS4kT3JpZ2luYWxWYWx1ZXMpLmZvckVhY2goKGM6IGFueSkgPT4ge1xuICAgICAgICAgICAgZGVzdFtjXSA9IHNvdXJjZVtjXTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VbYyArICckQ2FwdGlvbiddKSB7XG4gICAgICAgICAgICAgICAgZGVzdFtjICsgJyRDYXB0aW9uJ10gPSBzb3VyY2VbYyArICckQ2FwdGlvbiddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRJY29uJ10pIHtcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJEljb24nXSA9IHNvdXJjZVtjICsgJyRJY29uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VGb3JtUGFuZWxWYWx1ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGFjdGlvbjogQnJ1bGVBY3Rpb25NZXNzYWdlKTogdm9pZCB7XG4gICAgICAgIGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbkh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBhY3Rpb247XG4gICAgICAgIC8vIGlmIChhY3Rpb24uTWVzc2FnZVR5cGUgPT09IEJhcnNhQXBpLkNvbW1vbi5FbnVtcy5TaG93TWVzc2FnZVJ1bGVBY3Rpb25fVHlwZS5JbmZvcm1hdGlvbikge1xuICAgICAgICAvLyAgICAgaWYgKGFjdGlvbi5Fc2NhcGVDaGFyYWN0ZXJzKSBVbC5Nc2dCb3guSW5mbyhhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24sIGRvUmV0dXJuKTtcbiAgICAgICAgLy8gICAgIGVsc2UgVWwuTXNnQm94LkluZm9fU2hvd0h0bWwoYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uLCBkb1JldHVybik7XG4gICAgICAgIC8vIH0gZWxzZSBpZiAoYWN0aW9uLk1lc3NhZ2VUeXBlID09PSBCYXJzYUFwaS5Db21tb24uRW51bXMuU2hvd01lc3NhZ2VSdWxlQWN0aW9uX1R5cGUuRXJyb3IpIHtcbiAgICAgICAgLy8gICAgIHZhciBkb1JldHVybjAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vICAgICAgICAgdGhpcy5fZm9ybVBhbmVsLlJlZm9jdXNDdXJyZW50RmllbGQoKTtcbiAgICAgICAgLy8gICAgICAgICBkb1JldHVybihuZXcgQ29tbW9uLlNpbGVudEV4Y2VwdGlvbigpKTtcbiAgICAgICAgLy8gICAgIH07XG4gICAgICAgIC8vICAgICBpZiAoYWN0aW9uLkVzY2FwZUNoYXJhY3RlcnMpIFVsLk1zZ0JveC5FcnJvcihhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24sIGRvUmV0dXJuMC5iaW5kKHRoaXMpKTtcbiAgICAgICAgLy8gICAgIGVsc2UgVWwuTXNnQm94LkVycm9yX1Nob3dIdG1sKGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbiwgZG9SZXR1cm4wLmJpbmQodGhpcykpO1xuICAgICAgICAvLyB9IGVsc2UgaWYgKGFjdGlvbi5NZXNzYWdlVHlwZSA9PT0gQmFyc2FBcGkuQ29tbW9uLkVudW1zLlNob3dNZXNzYWdlUnVsZUFjdGlvbl9UeXBlLk9rQ2FuY2VsKSB7XG4gICAgICAgIC8vICAgICBVbC5Nc2dCb3guQ29uZmlybVllc05vX1NhZmUodHJ1ZSwgYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uLCBCQkIuU2VsZWN0LCBhY3Rpb24uRXNjYXBlQ2hhcmFjdGVycywgZG9SZXR1cm4pO1xuICAgICAgICAvLyB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlRm9ybVBhbmVsQ3RybHIobW86IE1ldGFvYmplY3REYXRhTW9kZWwsIHR5cGVEZWZJZDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyID0gY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbChcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXR0aW5nLFxuICAgICAgICAgICAgICAgIHsgLi4ubW8gfSxcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuaW5Sb3dcbiAgICAgICAgICAgICAgICAvLyBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5JbmxpbmVFZGl0SW5SZXBvcnQgPSB0cnVlO1xuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLm9uKHtcbiAgICAgICAgICAgIGJydWxlU2hvd01lc3NhZ2VBY3Rpb246IHRoaXMuX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbHVlQ2hhbmdlOiB0aGlzLl9oYW5kbGVWYWx1ZUNoYW5nZS5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbG9hZEFuZENyZWF0ZUZvcm1QYW5lbEN0cmxyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtU2V0dGluZ0RhdGEgPSB0aGlzLmZvcm1TZXR0aW5nLkRhdGE7XG4gICAgICAgIGNvbnN0IGZvcm1NbyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubW8sXG4gICAgICAgICAgICAkRmllbGREaWN0OiBmb3JtU2V0dGluZ0RhdGEuTW8uJEZpZWxkRGljdCxcbiAgICAgICAgICAgICRUeXBlRGVmSWQ6IGZvcm1TZXR0aW5nRGF0YS5Nby4kVHlwZURlZklkLFxuICAgICAgICAgICAgJE9yaWdpbmFsVmFsdWVzOiB7fVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNldFZhbHVlKGZvcm1Nbyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jcmVhdGVGb3JtUGFuZWxDdHJscihmb3JtTW8sIHRoaXMudHlwZURlZklkKTtcbiAgICAgICAgdGhpcy5fZm9ybVBhbmVsTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSB0aGlzLmZvcm1QYW5lbEN0cmxyO1xuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlVsdk1vRGF0YUxpc3RDb3VudCA9IHRoaXMubW9EYXRhTGlzdENvdW50IC0gMTtcbiAgICAgICAgZm9ybVBhbmVsQ3RybHIuTG9hZEFuZENyZWF0ZShudWxsLCBmYWxzZSwgZmFsc2UsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUZvcm1QYW5lbFVpID0gZm9ybVBhbmVsQ3RybHIuQWRhcHRlci5Db250cm9sO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TW8gPSB0aGlzLl9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlID8gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZS5tbyA6IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5leHRyYVJlbGF0aW9uICYmIHBhcmVudE1vICYmIHRoaXMuZXh0cmFSZWxhdGlvbi5SZWxhdGlvblR5cGUgPT09ICdDb21wb3NpdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3JtUGFuZWxDdHJsci5Nby5TZXRGVmFsdWUodGhpcy5leHRyYVJlbGF0aW9uLlBhcmVudEZkTmFtZSwgcGFyZW50TW8pO1xuICAgICAgICAgICAgICAgIC8vIG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSBwYXJlbnRNby5HZXRDaGFuZ2VkT2JqZWN0KCk7XG4gICAgICAgICAgICAgICAgLy8gbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW9bcmVsYXRpb24uUGFyZW50RmROYW1lXS4kU3RhdGUgPSBwYXJlbnRNby4kU3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXN0b21Gb3JtUGFuZWxVaS5SZWZyZXNoID0gKCkgPT4ge307XG4gICAgICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmNvbnRleHQgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3Jlc2V0U2F2aW5nU3RhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0U2F2aW5nU3RhdGUoZXJyKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5saW5lRWRpdFNhdmVGb3JtUGFuZWwocmVhc29uKTogUHJvbWlzZTx7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHsgcmVhc29uOiBSZWFzb25Ub1NhdmU7IHN1Y2NlZWQ6IGJvb2xlYW47IHNhdmVkOiBib29sZWFuIH0+KChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHN0YXRlIG9mIG1vIGlzIG5ldyBvciBtb2RpZGZpZWQgdGhlbiBpdCBuZWVkcyB0byB1cGRhdGVcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsck1vID0gdGhpcy5mb3JtUGFuZWxDdHJsci5NbztcbiAgICAgICAgICAgIGRlbGV0ZSBmb3JtUGFuZWxDdHJsck1vLmpzb247XG4gICAgICAgICAgICAvLyB0aGlzLnNhdmluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsU2F2ZS5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TYXZlKGZhbHNlLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNldElzQ2hhbmdlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0U2F2aW5nU3RhdGUoZXJyKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVhc29uLCBzdWNjZWVkOiB0cnVlLCBzYXZlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5pbnRlcmZhY2UgQnJ1bGVBY3Rpb25NZXNzYWdlIHtcbiAgICBNZXNzYWdlVHlwZTogbnVtYmVyO1xuICAgIEVzY2FwZUNoYXJhY3RlcnM6IGJvb2xlYW47XG4gICAgTWVzc2FnZUV4cHJlc3Npb246IHN0cmluZztcbiAgICBNZXNzYWdlRXhwcmVzc2lvbkh0bWw6IFNhZmVIdG1sO1xufVxuIl19
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxFQUVKLFFBQVEsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBHLE9BQU8sRUFBc0QsUUFBUSxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVEzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBMERsRSxZQUNjLEdBQWUsRUFDZixhQUEyQixFQUMzQixJQUF1QixFQUN2QixnQkFBbUMsRUFDWCx1QkFBeUMsRUFDN0MsaUJBQW1DLEVBQzNDLGVBQStCO1FBRXJELEtBQUssRUFBRSxDQUFDO1FBUkUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDWCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDM0Msb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBaEN6RCxhQUFRLEdBQUcs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QUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzt1SEFoY1EsMEJBQTBCOzJHQUExQiwwQkFBMEIsaWxCQUh6QixFQUFFOzJGQUdILDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OzBCQWdFUSxRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7NENBaEVKLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRU8sbUJBQW1CO3NCQUEvQixLQUFLO2dCQUtPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQU1PLG9CQUFvQjtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCB0YXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1ldGFvYmplY3REYXRhTW9kZWwsIFJlcG9ydFZpZXdDb2x1bW4sIEZvcm1TZXR0aW5nLCBCYXJzYUFwaSwgQ2hvaWNlRGVmIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XG5pbXBvcnQgeyBQcmV2ZW50RGVmYXVsRXZlbnQsIGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybVBhbmVsU2VydmljZSwgVWx2TWFpblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBCYXNlVmlld1Byb3BzQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXZpZXctcHJvcHMnO1xuaW1wb3J0IHsgTW9SZXBvcnRWYWx1ZVBpcGUgfSBmcm9tICcuLi9waXBlcyc7XG50eXBlIFJlYXNvblRvU2F2ZSA9ICdUQUInIHwgJ0NUUkwrRU5URVInIHwgJ0NIRUNLX0NIQU5HRUQnIHwgJ0VTQyc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JucmMtYmFzZS12aWV3LWl0ZW0tcHJvcHMnLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3UHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgQElucHV0KCkgbW9EYXRhTGlzdENvdW50OiBudW1iZXI7XG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBsYXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc05ld0lubGluZU1vOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGV4dHJhUmVsYXRpb246IGFueTtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yQ29sb3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNldCBzZXJpYWxpemVkUmVsYXRlZE1vKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW8gPSB2YWw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odmFsKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlVGVtcGxhdGUodmFsOiBGb3JtU2V0dGluZykge1xuICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlID0gdmFsO1xuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVNbyh2YWw6IE1ldGFvYmplY3REYXRhTW9kZWwpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHZhbDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FydGFibGVNbyh0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vKTtcblxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVXb3JrZmxvd0RhdGEodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGEgPSB2YWw7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIGhhc0Vycm9yID0gZmFsc2U7XG4gICAgX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gZmFsc2U7XG4gICAgX2xhc3RFZGl0YWJsZUNvbHVtbkluZGV4OiBudW1iZXI7XG4gICAgaW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcbiAgICBsYXlvdXQkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgZm9ybVBhbmVsQ3RybHI6IGFueTtcbiAgICBzYXZpbmc6IGJvb2xlYW47XG4gICAgc2F2ZWQ6IGJvb2xlYW47XG4gICAgaW5Sb3cgPSB0cnVlO1xuICAgIGhhc0NhcnRhYmxlVGVtcGxhdGUgPSBmYWxzZTtcbiAgICBjYXJ0YWJsZVBhcmFtczoge1xuICAgICAgICBmb3JtU2V0dGluZzogRm9ybVNldHRpbmc7XG4gICAgICAgIG1vSWQ6IHN0cmluZztcbiAgICAgICAgdHlwZURlZklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHZpZXdJZDogYW55O1xuICAgICAgICBpbkRpYWxvZzogYm9vbGVhbjtcbiAgICB9O1xuICAgIGJydWxlQWN0aW9uTWVzc2FnZTogQnJ1bGVBY3Rpb25NZXNzYWdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfc2F2ZUVkaXRlZE1vJCA9IG5ldyBTdWJqZWN0PFJlYXNvblRvU2F2ZT4oKTtcbiAgICBwcml2YXRlIF9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9mb3JtUGFuZWxMb2FkZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfY2FydGFibGVNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVRlbXBsYXRlOiBGb3JtU2V0dGluZztcbiAgICBwcml2YXRlIF9jYXJ0YWJsZVdvcmtmbG93RGF0YTogc3RyaW5nO1xuICAgIHByaXZhdGUgX3NlcmlhbGl6ZWRSZWxhdGVkTW86IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9lbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgX3JlcG9ydFZhbHVlUGlwZTogTW9SZXBvcnRWYWx1ZVBpcGUsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByb3RlY3RlZCBfcGFyZW50Rm9ybVBhbmVsU2VydmljZTogRm9ybVBhbmVsU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVhc29uOiBSZWFzb25Ub1NhdmUpID0+IHRoaXMuX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbikpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnIpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiB7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zYXZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlYXNvbiA9PT0gJ1RBQicgfHwgcmVzLnJlYXNvbiA9PT0gJ0NUUkwrRU5URVInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnJlYXNvbiA9PT0gJ0VTQycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsQ2FuY2VsLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCRcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9zeW5jTW8oKSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXQgX2hhc0Zvcm1QYW5lbFNlcnZpY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlICE9PSBudWxsICYmIHRoaXMuZm9ybVNldHRpbmc7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS52aWV3JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmxheW91dCQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyBpc0NoZWNrZWQsIGlubGluZUVkaXRNb2RlIH0gPSBjaGFuZ2VzO1xuICAgICAgICBsZXQgbmVlZFRvTG9hZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ2hlY2tlZC5jdXJyZW50VmFsdWUgJiYgaXNDaGVja2VkLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRUb1NhdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDSEVDS19DSEFOR0VEJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDaGVja2VkICYmICFpc0NoZWNrZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgIWlubGluZUVkaXRNb2RlPy5wcmV2aW91c1ZhbHVlICYmIHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnRVNDJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvd0NoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoY29sdW1uRWw6IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBjb2x1bW5FbC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgYGJ1dHRvbixidXR0b246bm90KFtkaXNhYmxlZF0pLFtocmVmXSxpbnB1dDpub3QoW2Rpc2FibGVkXSksaW5wdXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZXNbMF07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kLm5leHQoJ0VTQycpO1xuICAgIH1cbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xuICAgIH1cbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NoZWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VsdkNvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlRm9ybUNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF91cGRhdGVDYXJ0YWJsZU1vKHNlcmlhbGl6ZU1vOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNlcmlhbGl6ZU1vICYmIHRoaXMuX2NhcnRhYmxlTW8pIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZU1vID0gYCR7c2VyaWFsaXplTW99YDtcbiAgICAgICAgICAgIGNvbnN0IG1vID0gQmFyc2FBcGkuRXh0LmRlY29kZShzZXJpYWxpemVNbyk7XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZU1vID0geyAuLi50aGlzLl9jYXJ0YWJsZU1vLCAuLi5tbyB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlQ2FydGFibGVQYXJhbXMoKTogdm9pZCB7XG4gICAgICAgIGxldCBjYXJ0YWJsZVRlbXBsYXRlID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgY2FydGFibGVNbyA9IHRoaXMuX2NhcnRhYmxlTW87XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlV29ya2Zsb3dEYXRhID0gdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGE7XG4gICAgICAgIGlmICh0aGlzLmhhc0NhcnRhYmxlVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gdXBkYXRlIGNhcnRhYmxlIG1vO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUgJiZcbiAgICAgICAgICAgIGNhcnRhYmxlTW8gJiZcbiAgICAgICAgICAgIHR5cGVvZiBjYXJ0YWJsZVdvcmtmbG93RGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjYXJ0YWJsZVRlbXBsYXRlKSk7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY2FydGFibGVUZW1wbGF0ZS5WaWV3O1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZS5EYXRhID0geyBNbzogeyAuLi5jYXJ0YWJsZU1vIH0gfTtcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUuV29ya2Zsb3cgPSBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9PT0gJycgPyBudWxsIDogSlNPTi5wYXJzZShjYXJ0YWJsZVdvcmtmbG93RGF0YSk7XG4gICAgICAgICAgICBpZiAoIXZpZXcuRXh0cmFKc29uUHJvcCkge1xuICAgICAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcCA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmlldy5FeHRyYUpzb25Qcm9wLklzU2ltcGxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jYXJ0YWJsZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBmb3JtU2V0dGluZzogY2FydGFibGVUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBtb0lkOiBjYXJ0YWJsZU1vLklkLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZJZDogY2FydGFibGVNby4kVHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHZpZXdJZDogdmlldy5UeXBlVmlld0lkLFxuICAgICAgICAgICAgICAgIGluRGlhbG9nOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAvLyBpZiAoaXNDaGlsZE5vZGUpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCB0ID0gdGhpcy5pbmxpbmVFZGl0TW9kZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlO1xuICAgICAgICBpZiAoIXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zdCBmb2N1c2FibGU6IE5vZGVMaXN0ID0gdGhpcy5fZm9jdXNhYmxlQ29udHJvbHM7XG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoYyA9PT0gdGFyZ2V0KSB7XG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VXb3JrZmxvd1NoYXJlQnV0dG9ucyhpc0NoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2FydGFibGVQYXJhbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNob2ljZUxpc3Q6IENob2ljZURlZltdID0gdGhpcy5jYXJ0YWJsZVBhcmFtcy5mb3JtU2V0dGluZz8uV29ya2Zsb3c/LkNob2ljZUxpc3Q7XG4gICAgICAgICAgICBpZiAoY2hvaWNlTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KHsgbW86IHRoaXMubW8sIGNob2ljZUxpc3QsIGFkZDogaXNDaGVja2VkIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9ybXBhbmVsVmFsdWVDaGFuZ2VkJC5uZXh0KCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc3luY01vKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBzeW5jV2l0aEZvcm1wYW5lbE1vID0gdGhpcy5tbztcbiAgICAgICAgY29uc3QgX2lzQ2hlY2tlZCA9IHRoaXMubW8uJElzQ2hlY2tlZDtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XG4gICAgICAgIHRoaXMuX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhmb3JtUGFuZWxDdHJsck1vLCBzeW5jV2l0aEZvcm1wYW5lbE1vKTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJE9yaWdpbmFsVmFsdWVzJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckT3JpZ2luYWxWYWx1ZXMnXTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJEZpZWxkRGljdCddID0gZm9ybVBhbmVsQ3RybHJNb1snJEZpZWxkRGljdCddO1xuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckU3RhdGUnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRTdGF0ZSddOyAvLyB0aGlzIGFkZCBiZWNhdXNlIGlmIHdlIGVkaXQgdW5jaGFuZ2VkIG1vIGl0IGRvZXMgbm90IHJlZmxlY3QgdG8gbW8gb2YgdWx2LlxuICAgICAgICB0aGlzLm1vID0geyAuLi5zeW5jV2l0aEZvcm1wYW5lbE1vIH07XG4gICAgICAgIHRoaXMubW8uJElzQ2hlY2tlZCA9IF9pc0NoZWNrZWQ7XG4gICAgICAgIHJldHVybiBmcm9tKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhzb3VyY2U6IE1ldGFvYmplY3REYXRhTW9kZWwsIGRlc3Q6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlLiRPcmlnaW5hbFZhbHVlcykuZm9yRWFjaCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgICBkZXN0W2NdID0gc291cmNlW2NdO1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRDYXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJENhcHRpb24nXSA9IHNvdXJjZVtjICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc291cmNlW2MgKyAnJEljb24nXSkge1xuICAgICAgICAgICAgICAgIGRlc3RbYyArICckSWNvbiddID0gc291cmNlW2MgKyAnJEljb24nXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZUZvcm1QYW5lbFZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1vKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZUJydWxlU2hvd01lc3NhZ2VBY3Rpb24oYWN0aW9uOiBCcnVsZUFjdGlvbk1lc3NhZ2UpOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uSHRtbCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24pO1xuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IGFjdGlvbjtcbiAgICAgICAgLy8gaWYgKGFjdGlvbi5NZXNzYWdlVHlwZSA9PT0gQmFyc2FBcGkuQ29tbW9uLkVudW1zLlNob3dNZXNzYWdlUnVsZUFjdGlvbl9UeXBlLkluZm9ybWF0aW9uKSB7XG4gICAgICAgIC8vICAgICBpZiAoYWN0aW9uLkVzY2FwZUNoYXJhY3RlcnMpIFVsLk1zZ0JveC5JbmZvKGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbiwgZG9SZXR1cm4pO1xuICAgICAgICAvLyAgICAgZWxzZSBVbC5Nc2dCb3guSW5mb19TaG93SHRtbChhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24sIGRvUmV0dXJuKTtcbiAgICAgICAgLy8gfSBlbHNlIGlmIChhY3Rpb24uTWVzc2FnZVR5cGUgPT09IEJhcnNhQXBpLkNvbW1vbi5FbnVtcy5TaG93TWVzc2FnZVJ1bGVBY3Rpb25fVHlwZS5FcnJvcikge1xuICAgICAgICAvLyAgICAgdmFyIGRvUmV0dXJuMCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gICAgICAgICB0aGlzLl9mb3JtUGFuZWwuUmVmb2N1c0N1cnJlbnRGaWVsZCgpO1xuICAgICAgICAvLyAgICAgICAgIGRvUmV0dXJuKG5ldyBDb21tb24uU2lsZW50RXhjZXB0aW9uKCkpO1xuICAgICAgICAvLyAgICAgfTtcbiAgICAgICAgLy8gICAgIGlmIChhY3Rpb24uRXNjYXBlQ2hhcmFjdGVycykgVWwuTXNnQm94LkVycm9yKGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbiwgZG9SZXR1cm4wLmJpbmQodGhpcykpO1xuICAgICAgICAvLyAgICAgZWxzZSBVbC5Nc2dCb3guRXJyb3JfU2hvd0h0bWwoYWN0aW9uLk1lc3NhZ2VFeHByZXNzaW9uLCBkb1JldHVybjAuYmluZCh0aGlzKSk7XG4gICAgICAgIC8vIH0gZWxzZSBpZiAoYWN0aW9uLk1lc3NhZ2VUeXBlID09PSBCYXJzYUFwaS5Db21tb24uRW51bXMuU2hvd01lc3NhZ2VSdWxlQWN0aW9uX1R5cGUuT2tDYW5jZWwpIHtcbiAgICAgICAgLy8gICAgIFVsLk1zZ0JveC5Db25maXJtWWVzTm9fU2FmZSh0cnVlLCBhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb24sIEJCQi5TZWxlY3QsIGFjdGlvbi5Fc2NhcGVDaGFyYWN0ZXJzLCBkb1JldHVybik7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jcmVhdGVGb3JtUGFuZWxDdHJscihtbzogTWV0YW9iamVjdERhdGFNb2RlbCwgdHlwZURlZklkOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybVBhbmVsQ3RybHIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIgPSBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsKFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVNldHRpbmcsXG4gICAgICAgICAgICAgICAgeyAuLi5tbyB9LFxuICAgICAgICAgICAgICAgIHR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5pblJvd1xuICAgICAgICAgICAgICAgIC8vIEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLklubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIub24oe1xuICAgICAgICAgICAgYnJ1bGVTaG93TWVzc2FnZUFjdGlvbjogdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsdWVDaGFuZ2U6IHRoaXMuX2hhbmRsZVZhbHVlQ2hhbmdlLmJpbmQodGhpcylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVBhbmVsQ3RybHI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1TZXR0aW5nRGF0YSA9IHRoaXMuZm9ybVNldHRpbmcuRGF0YTtcbiAgICAgICAgY29uc3QgZm9ybU1vID0ge1xuICAgICAgICAgICAgLi4udGhpcy5tbyxcbiAgICAgICAgICAgICRGaWVsZERpY3Q6IGZvcm1TZXR0aW5nRGF0YS5Nby4kRmllbGREaWN0LFxuICAgICAgICAgICAgJFR5cGVEZWZJZDogZm9ybVNldHRpbmdEYXRhLk1vLiRUeXBlRGVmSWQsXG4gICAgICAgICAgICAkT3JpZ2luYWxWYWx1ZXM6IHt9XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9mb3JtUGFuZWxMb2FkZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0VmFsdWUoZm9ybU1vKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NyZWF0ZUZvcm1QYW5lbEN0cmxyKGZvcm1NbywgdGhpcy50eXBlRGVmSWQpO1xuICAgICAgICB0aGlzLl9mb3JtUGFuZWxMb2FkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsciA9IHRoaXMuZm9ybVBhbmVsQ3RybHI7XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuVWx2TW9EYXRhTGlzdENvdW50ID0gdGhpcy5tb0RhdGFMaXN0Q291bnQgLSAxO1xuICAgICAgICBmb3JtUGFuZWxDdHJsci5Mb2FkQW5kQ3JlYXRlKG51bGwsIGZhbHNlLCBmYWxzZSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRm9ybVBhbmVsVWkgPSBmb3JtUGFuZWxDdHJsci5BZGFwdGVyLkNvbnRyb2w7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRNbyA9IHRoaXMuX3BhcmVudEZvcm1QYW5lbFNlcnZpY2UgPyB0aGlzLl9wYXJlbnRGb3JtUGFuZWxTZXJ2aWNlLm1vIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmV4dHJhUmVsYXRpb24gJiYgcGFyZW50TW8gJiYgdGhpcy5leHRyYVJlbGF0aW9uLlJlbGF0aW9uVHlwZSA9PT0gJ0NvbXBvc2l0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyLk1vLlNldEZWYWx1ZSh0aGlzLmV4dHJhUmVsYXRpb24uUGFyZW50RmROYW1lLCBwYXJlbnRNbyk7XG4gICAgICAgICAgICAgICAgLy8gbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW9bcmVsYXRpb24uUGFyZW50RmROYW1lXSA9IHBhcmVudE1vLkdldENoYW5nZWRPYmplY3QoKTtcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdLiRTdGF0ZSA9IHBhcmVudE1vLiRTdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1c3RvbUZvcm1QYW5lbFVpLlJlZnJlc2ggPSAoKSA9PiB7fTtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVzZXRTYXZpbmdTdGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNhdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRTYXZpbmdTdGF0ZShlcnIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNhdmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pOiBQcm9taXNlPHsgcmVhc29uOiBSZWFzb25Ub1NhdmU7IHN1Y2NlZWQ6IGJvb2xlYW47IHNhdmVkOiBib29sZWFuIH0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4oKHJlc29sdmUsIF8pID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtUGFuZWxDdHJsci5Jc01vQ2hhbmdlZCgpKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgc3RhdGUgb2YgbW8gaXMgbmV3IG9yIG1vZGlkZmllZCB0aGVuIGl0IG5lZWRzIHRvIHVwZGF0ZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyTW8gPSB0aGlzLmZvcm1QYW5lbEN0cmxyLk1vO1xuICAgICAgICAgICAgZGVsZXRlIGZvcm1QYW5lbEN0cmxyTW8uanNvbjtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2aW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5tby4kSW5saW5lTW9DaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxTYXZlLmVtaXQodGhpcy5tbyk7XG4gICAgICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLlNhdmUoZmFsc2UsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2V0SXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRTYXZpbmdTdGF0ZShlcnIpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmludGVyZmFjZSBCcnVsZUFjdGlvbk1lc3NhZ2Uge1xuICAgIE1lc3NhZ2VUeXBlOiBudW1iZXI7XG4gICAgRXNjYXBlQ2hhcmFjdGVyczogYm9vbGVhbjtcbiAgICBNZXNzYWdlRXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIE1lc3NhZ2VFeHByZXNzaW9uSHRtbDogU2FmZUh0bWw7XG59XG4iXX0=
@@ -56,7 +56,6 @@ export class NotificationService {
56
56
  });
57
57
  }
58
58
  handleTopic(eventTopic, content, ownerKey) {
59
- console.log('handleTopic', eventTopic, content, ownerKey);
60
59
  if (eventTopic === 'GlobalReportMoDelete') {
61
60
  const { IdList } = content;
62
61
  const notifications = this._notifications$.getValue();
@@ -85,7 +84,6 @@ export class NotificationService {
85
84
  this._ngZone.run(() => {
86
85
  if (otherOptions) {
87
86
  const { MoId, TypeDefId } = otherOptions;
88
- console.log('addNotification', title, MoId, mo);
89
87
  let newNotification = {
90
88
  $Caption: title,
91
89
  Id: MoId,
@@ -251,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
251
249
  type: Inject,
252
250
  args: [NOTIFICATAION_POPUP_SERVER]
253
251
  }] }, { type: i1.LogService }, { type: i2.LowerCasePipe }, { type: i3.BbbTranslatePipe }, { type: i4.DomSanitizer }, { type: i5.ServiceWorkerNotificationService }, { type: i0.NgZone }]; } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxtQkFBbUI7SUFPNUIsWUFDa0QsYUFBdUMsRUFDN0UsV0FBdUIsRUFDdkIsVUFBeUIsRUFDekIsYUFBK0IsRUFDL0IsYUFBMkIsRUFDM0IsMEJBQTRELEVBQzVELE9BQWU7UUFOdUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQzdFLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBa0M7UUFDNUQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWJuQixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUNqRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBa0MsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO0lBU1gsQ0FBQztJQUNKLElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUNELElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ00scUJBQXFCLENBQUMsSUFBYztRQUN2QyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNsQixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ1osTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxHQUFHLENBQUM7b0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2lCQUN0RCxDQUFDLENBQUMsQ0FBQztnQkFDSixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDTSxXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUQsSUFBSSxVQUFVLEtBQUssc0JBQXNCLEVBQUU7WUFDdkMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUF5QixPQUFPLENBQUM7WUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNoQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDcEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUNsQixNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksaUJBQWlCLEVBQUU7b0JBQ25CLG1CQUFtQixHQUFHLElBQUksQ0FBQztvQkFDM0IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7d0JBQzFCLFdBQVcsRUFBRSxDQUFDO3FCQUNqQjtpQkFDSjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxtQkFBbUIsRUFBRTtnQkFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEY7WUFDRCxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0o7SUFDTCxDQUFDO0lBQ00sZUFBZSxDQUNsQixHQUFXLEVBQ1gsS0FBYSxFQUNiLElBQVksRUFDWixLQUFhLEVBQ2IsRUFBRSxFQUNGLFNBQXdCLEVBQ3hCLFlBQWlDO1FBRWpDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLFlBQVksRUFBRTtnQkFDZCxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLGVBQWUsR0FBcUI7b0JBQ3BDLFFBQVEsRUFBRSxLQUFLO29CQUNmLEVBQUUsRUFBRSxJQUFJO29CQUNSLFVBQVUsRUFBRSxTQUFTO29CQUNyQixLQUFLLEVBQUUsS0FBSztvQkFDWixNQUFNLEVBQUUsSUFBSTtvQkFDWixJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsRUFBRTtvQkFDVCxPQUFPLEVBQUUsR0FBRztvQkFDWixHQUFHLEVBQUUsRUFBRTtvQkFDUCxRQUFRLEVBQUUsQ0FBQztvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ3hCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztpQkFDcEUsQ0FBQztnQkFDRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JELGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFMUUsSUFBSSxRQUFRLEVBQUU7b0JBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDN0U7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxNQUFjLEVBQUUsS0FBYTtRQUN6RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBQ00sMkJBQTJCO1FBQzlCLFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsOEJBQThCO1lBQ3RDLFNBQVMsRUFBRSxDQUFDLENBQWtDLEVBQUUsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNNLGlCQUFpQixDQUFDLFlBQW9CLENBQUM7UUFDMUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSwwQkFBMEI7WUFDbEMsU0FBUyxFQUFFLENBQUMsQ0FBdUQsRUFBRSxFQUFFO2dCQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ3BGLElBQUksQ0FBQyxrQkFBa0IsQ0FBbUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUMxRSxDQUFDO2dCQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUE2QixFQUFFLGlCQUFpQixHQUFHLElBQUk7UUFDN0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNuQixNQUFNLEVBQUUsNEJBQTRCO1lBQ3BDLFNBQVMsRUFBRSxDQUFDLENBQWtDLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksaUJBQWlCLEVBQUU7b0JBQ25CLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTtvQkFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO1lBQ0wsQ0FBQztZQUNELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ08scUJBQXFCLENBQUMsQ0FBa0M7UUFDNUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDcEIsT0FBTyxPQUFPLFlBQVksS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQztJQUM1RixDQUFDO0lBQ00sZ0JBQWdCLENBQ25CLGdCQUFrQyxFQUNsQyxFQUE4QixFQUM5QixTQUF3QixFQUN4QixZQUFpQztRQUVqQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDOUQsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNqRSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNPLG1CQUFtQixDQUFDLE9BQU87UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ08sdUJBQXVCLENBQUMsTUFBNkIsRUFBRSxVQUFtQixJQUFJO1FBQ2xGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0seUJBQXlCLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxHQUFHLENBQUM7WUFDSixvQkFBb0IsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1NBQ3RGLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLHlCQUF5QixDQUFDLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ08sWUFBWSxDQUNoQixnQkFBa0MsRUFDbEMsRUFBOEIsRUFDOUIsU0FBd0IsRUFDeEIsWUFBaUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQzFCLGdCQUFnQixDQUFDLFlBQVksRUFDN0IsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQ3hCLGdCQUFnQixDQUFDLEtBQUssRUFDdEIsRUFBRSxFQUNGLFNBQVMsRUFDVCxZQUFZLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFDTyxrQkFBa0IsQ0FDdEIsZ0JBQWtDLEVBQ2xDLEVBQXVCLEVBQ3ZCLE9BQWU7UUFFZixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsT0FBTyxnQkFBZ0IsQ0FBQztTQUMzQjtRQUNELE9BQU87WUFDSCxHQUFHLGdCQUFnQjtZQUNuQixHQUFHLEVBQUU7WUFDTCxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4RCxZQUFZLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3RDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CO1lBQ3RELFdBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDcEMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7WUFDcEQsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDdkQsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDO1NBQ3BFLENBQUM7SUFDTixDQUFDO0lBQ08sWUFBWSxDQUFDLGdCQUFrQztRQUNuRCxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUM1QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV2RCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDN0MsZ0JBQWdCO29CQUNoQixLQUFLO29CQUNMLElBQUk7aUJBQ1AsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gseUJBQXlCO2dCQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQzdEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnSEE5UVEsbUJBQW1CLGtCQVFoQiwwQkFBMEI7b0hBUjdCLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzswQkFTRixNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBCYXJzYUFwaSB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvYmFyc2EtYXBpJztcclxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCwgTm90aWZpY2F0aW9uSXRlbSwgTm90aWZ5T3B0aW9ucyB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvbW9kZWxzJztcclxuaW1wb3J0IHsgTk9USUZJQ0FUQUlPTl9QT1BVUF9TRVJWRVIgfSBmcm9tICcuLi9pbmpkZWN0aW9uLXRva2Vucyc7XHJcbmltcG9ydCB7IEJiYlRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9waXBlcy9iYmItdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi9sb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXN3LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbFtdPihbXSk7XHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25Db3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgdW5yZWFkOiBudW1iZXI7IGFsbDogbnVtYmVyIH0+KHsgdW5yZWFkOiAwLCBhbGw6IDAgfSk7XHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25VbnJlYWRDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25Mb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcGFnZUNvdW50ID0gMTtcclxuICAgIHBhZ2VJbmRleCA9IDA7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KE5PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSKSBwcm90ZWN0ZWQgX3BvcHVwU2VydmljZTogTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2xvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfbG93ZXJDYXNlOiBMb3dlckNhc2VQaXBlLFxyXG4gICAgICAgIHByaXZhdGUgX2JiYlRyYW5zbGF0ZTogQmJiVHJhbnNsYXRlUGlwZSxcclxuICAgICAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICBwcml2YXRlIF9zZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uOiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxyXG4gICAgKSB7fVxyXG4gICAgZ2V0IG5vdGlmaWNhdGlvbkNvdW50JCgpOiBPYnNlcnZhYmxlPHsgdW5yZWFkOiBudW1iZXI7IGFsbDogbnVtYmVyIH0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBub3RpZmljYXRpb25zJCgpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zJC5hc09ic2VydmFibGUoKS5waXBlKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgbm90aWZpY2F0aW9uTG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGxvYWRNb3JlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnModGhpcy5wYWdlSW5kZXgpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldE5vdGlmaWNhdGlvblZpZXdlZCh0YWdzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xyXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbdGFnc10sXHJcbiAgICAgICAgICAgIE1ldGhvZDogJ1NldE5vdGlmaWNhdGlvblZpZXdlZCcsXHJcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9saXN0Q3VyciA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVW5yZWFkTW9MaXN0ID0gbW9saXN0Q3Vyci5tYXAoKGMpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uYyxcclxuICAgICAgICAgICAgICAgICAgICBVbnJlYWQ6IHRhZ3MuaW5kZXhPZihjLlRhZykgPiAtMSA/IGZhbHNlIDogYy5VbnJlYWRcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoWy4uLnVwZGF0ZWRVbnJlYWRNb0xpc3RdKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KC10YWdzLmxlbmd0aCwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFncztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgRmFpbEZuOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGhhbmRsZVRvcGljKGV2ZW50VG9waWMsIGNvbnRlbnQsIG93bmVyS2V5KTogdm9pZCB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2hhbmRsZVRvcGljJywgZXZlbnRUb3BpYywgY29udGVudCwgb3duZXJLZXkpO1xyXG4gICAgICAgIGlmIChldmVudFRvcGljID09PSAnR2xvYmFsUmVwb3J0TW9EZWxldGUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgSWRMaXN0IH06IHsgSWRMaXN0OiBzdHJpbmdbXSB9ID0gY29udGVudDtcclxuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGxldCBmaW5kSW5Ob3RpZmljYXRpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCB1bnJlYWRDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIElkTGlzdC5mb3JFYWNoKChpZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmROb3RpZmljYXRpb24gPSBub3RpZmljYXRpb25zLmZpbmQoKGMpID0+IGMuSWQgPT09IGlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3VuZE5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbmRJbk5vdGlmaWNhdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kTm90aWZpY2F0aW9uLlVucmVhZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnJlYWRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChmaW5kSW5Ob3RpZmljYXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KG5vdGlmaWNhdGlvbnMuZmlsdGVyKChjKSA9PiAhSWRMaXN0LmluY2x1ZGVzKGMuSWQpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHVucmVhZENvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoLXVucmVhZENvdW50LCAtY291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHVibGljIGFkZE5vdGlmaWNhdGlvbihcclxuICAgICAgICBtc2c6IHN0cmluZyxcclxuICAgICAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgIHR5cGU6IHN0cmluZyxcclxuICAgICAgICBpbWFnZTogc3RyaW5nLFxyXG4gICAgICAgIG1vLFxyXG4gICAgICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucyxcclxuICAgICAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT5cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAob3RoZXJPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IE1vSWQsIFR5cGVEZWZJZCB9ID0gb3RoZXJPcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2FkZE5vdGlmaWNhdGlvbicsIHRpdGxlLCBNb0lkLCBtbyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3Tm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25JdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICRDYXB0aW9uOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBJZDogTW9JZCxcclxuICAgICAgICAgICAgICAgICAgICAkVHlwZURlZklkOiBUeXBlRGVmSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIFVucmVhZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBJY29uOiBpbWFnZSxcclxuICAgICAgICAgICAgICAgICAgICBJbWFnZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgQ29udGVudDogbXNnLFxyXG4gICAgICAgICAgICAgICAgICAgIFRhZzogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHk6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgU3ViamVjdDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiB0aGlzLl9iYmJUcmFuc2xhdGUudHJhbnNmb3JtKCdEYXRlUl9Ub2RheScpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkTW8gPSBtbyA/IEJhcnNhQXBpLkV4dC5kZWNvZGUobW8pIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIG5ld05vdGlmaWNhdGlvbiA9IHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKG5ld05vdGlmaWNhdGlvbiwgcGFyc2VkTW8sIG1zZyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZE1vKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9saXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFtuZXdOb3RpZmljYXRpb24sIC4uLm1vbGlzdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KDEsIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uKG5ld05vdGlmaWNhdGlvbiwgcGFyc2VkTW8sIHVpT3B0aW9ucywgb3RoZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQodW5yZWFkOiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb3VudFZhbHVlID0gdGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgY29uc3Qgc3VtVW5yZWFkID0gY291bnRWYWx1ZS51bnJlYWQgKyArdW5yZWFkO1xyXG4gICAgICAgIGNvbnN0IHN1bUFsbCA9IGNvdW50VmFsdWUuYWxsICsgK2NvdW50O1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiBzdW1VbnJlYWQgPiAwID8gc3VtVW5yZWFkIDogMCwgYWxsOiBzdW1BbGwgPiAwID8gc3VtQWxsIDogMCB9KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBsb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTogdm9pZCB7XHJcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XHJcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtdLFxyXG4gICAgICAgICAgICBNZXRob2Q6ICdHZXRTaGVsbGJhck5vdGlmaWNhdGlvbkNvdW50JyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogeyBVbnJlYWQ6IG51bWJlcjsgQWxsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVW5yZWFkQW5kQ291bnQoZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBsb2FkTm90aWZpY2F0aW9ucyhwYWdlSW5kZXg6IG51bWJlciA9IDApOiB2b2lkIHtcclxuICAgICAgICBpZiAocGFnZUluZGV4ICsgMSA+IHRoaXMucGFnZUNvdW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKHRydWUpO1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xyXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbcGFnZUluZGV4XSxcclxuICAgICAgICAgICAgTWV0aG9kOiAnR2V0U2hlbGxiYXJOb3RpZmljYXRpb25zJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogeyBQYWdlQ291bnQ6IG51bWJlcjsgTW9MaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZkxpc3RPZlRhZ3MgPSBub3RpZmljYXRpb25zLm1hcCgoYykgPT4gYy5UYWcpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9saXN0ID0gZS5Nb0xpc3QuZmlsdGVyKChjKSA9PiBub3RpZkxpc3RPZlRhZ3MuaW5kZXhPZihjLlRhZykgPT09IC0xKS5tYXAoKG1vKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKDxOb3RpZmljYXRpb25JdGVtPm1vLCBtbywgbW8uSU1lc3NhZ2U/LkNvbnRlbnQpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubm90aWZpY2F0aW9ucywgLi4ubW9saXN0XSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9ICtlLlBhZ2VDb3VudDtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZU5vdGlmaWNhdGlvbihtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSwgY2xvc2VOb3RpZmljYXRpb24gPSB0cnVlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbW9JZHMgPSB0aGlzLl9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdCwgdHJ1ZSk7XHJcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XHJcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFttb0lkc10sXHJcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZVNoZWxsYmFyTm90aWZpY2F0aW9uJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogeyBVbnJlYWQ6IG51bWJlcjsgQWxsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uTGlzdCA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld01vTGlzdCA9IG5vdGlmaWNhdGlvbkxpc3QuZmlsdGVyKChjKSA9PiBtb0lkcy5pbmRleE9mKGMuSWQpID09PSAtMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KG5ld01vTGlzdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VOb3RpZmljYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uLmNsb3NlTm90aWZpY2F0aW9ucyhtb0lkcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCkuYWxsID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnModGhpcy5wYWdlSW5kZXggLSAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgRmFpbEZuOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3VwZGF0ZVVucmVhZEFuZENvdW50KGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25VbnJlYWRDb3VudCQubmV4dCgrZS5VbnJlYWQpO1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiArZS5VbnJlYWQsIGFsbDogK2UuQWxsIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBTdXBwb3J0Tm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIE5vdGlmaWNhdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5pc0VuYWJsZWQ7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbihcclxuICAgICAgICBub3RpZmljYXRpb25JdGVtOiBOb3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCxcclxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXHJcbiAgICAgICAgb3RoZXJPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuU3VwcG9ydE5vdGlmaWNhdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS53YXJuKGBJbkFwcCBOb3RpZmljYXRpb24gaXMgbm90IHN1cHBvcnRlZC5gKTtcclxuICAgICAgICAgICAgdWlPcHRpb25zID0gdWlPcHRpb25zID8/IHt9O1xyXG4gICAgICAgICAgICB1aU9wdGlvbnMuTm90aWZpY2F0aW9uSXRlbSA9IG5vdGlmaWNhdGlvbkl0ZW07XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0sIG1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbkxvYWRpbmcobG9hZGluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLm5leHQobG9hZGluZyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBtb2xpc3RDdXJyID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBjb25zdCBtb0lkcyA9IG1vbGlzdC5tYXAoKGMpID0+IGMuSWQpO1xyXG4gICAgICAgIGNvbnN0IG1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHkgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcclxuICAgICAgICAgICAgLi4uYyxcclxuICAgICAgICAgICAgJE5vdGlmaWNhdG9pbkxvYWRpbmc6IG1vSWRzLmluZGV4T2YoYy5JZCkgIT09IC0xID8gbG9hZGluZyA6IGMuJE5vdGlmaWNhdG9pbkxvYWRpbmdcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eV0pO1xyXG4gICAgICAgIHJldHVybiBtb0lkcztcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BvcHVwTm90aWZ5KFxyXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxyXG4gICAgICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucyxcclxuICAgICAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT5cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5wb3B1cE5vdGlmeShcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS4kU2FmZUNvbnRlbnQsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uU3ViamVjdCxcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS5JbWFnZSxcclxuICAgICAgICAgICAgbW8sXHJcbiAgICAgICAgICAgIHVpT3B0aW9ucyxcclxuICAgICAgICAgICAgb3RoZXJPcHRpb25zXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3ByZXBhcmVQcm9wZXJ0aWVzKFxyXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICAgICAgY29udGVudDogc3RyaW5nXHJcbiAgICApOiBOb3RpZmljYXRpb25JdGVtIHtcclxuICAgICAgICBpZiAoIW1vKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBub3RpZmljYXRpb25JdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgICAgICAuLi5tbyxcclxuICAgICAgICAgICAgVWlBY3Rpb25zOiAhbW8uVWlBY3Rpb25zID8gW10gOiBKU09OLnBhcnNlKG1vLlVpQWN0aW9ucyksXHJcbiAgICAgICAgICAgIENyZWF0aW9uRGF0ZTogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlLFxyXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlJENhcHRpb24sXHJcbiAgICAgICAgICAgIENyZWF0b3JVc2VyOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlcixcclxuICAgICAgICAgICAgQ3JlYXRvclVzZXIkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRvclVzZXIkQ2FwdGlvbixcclxuICAgICAgICAgICAgSWNvbjogYCR7QmFyc2FBcGkuQncuT3JpZ2luKCl9JHtub3RpZmljYXRpb25JdGVtLkljb259YCxcclxuICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudClcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfaW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmU7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzUnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlc1J0bFtsYW5nXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdncmFudGVkJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzUnRsLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhbmdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzpwZXJtaXNzaW9uIGRlbmllZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcignbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZGVuaWVkLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxtQkFBbUI7SUFPNUIsWUFDa0QsYUFBdUMsRUFDN0UsV0FBdUIsRUFDdkIsVUFBeUIsRUFDekIsYUFBK0IsRUFDL0IsYUFBMkIsRUFDM0IsMEJBQTRELEVBQzVELE9BQWU7UUFOdUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQzdFLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBa0M7UUFDNUQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWJuQixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUNqRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBa0MsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO0lBU1gsQ0FBQztJQUNKLElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUNELElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ00scUJBQXFCLENBQUMsSUFBYztRQUN2QyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNsQixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ1osTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxHQUFHLENBQUM7b0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2lCQUN0RCxDQUFDLENBQUMsQ0FBQztnQkFDSixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDTSxXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQzVDLElBQUksVUFBVSxLQUFLLHNCQUFzQixFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBeUIsT0FBTyxDQUFDO1lBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEQsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDaEMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDbEIsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLGlCQUFpQixFQUFFO29CQUNuQixtQkFBbUIsR0FBRyxJQUFJLENBQUM7b0JBQzNCLEtBQUssRUFBRSxDQUFDO29CQUNSLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFO3dCQUMxQixXQUFXLEVBQUUsQ0FBQztxQkFDakI7aUJBQ0o7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksbUJBQW1CLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xGO1lBQ0QsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN2RDtTQUNKO0lBQ0wsQ0FBQztJQUNNLGVBQWUsQ0FDbEIsR0FBVyxFQUNYLEtBQWEsRUFDYixJQUFZLEVBQ1osS0FBYSxFQUNiLEVBQUUsRUFDRixTQUF3QixFQUN4QixZQUFpQztRQUVqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxZQUFZLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxZQUFZLENBQUM7Z0JBQ3pDLElBQUksZUFBZSxHQUFxQjtvQkFDcEMsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsRUFBRSxFQUFFLElBQUk7b0JBQ1IsVUFBVSxFQUFFLFNBQVM7b0JBQ3JCLEtBQUssRUFBRSxLQUFLO29CQUNaLE1BQU0sRUFBRSxJQUFJO29CQUNaLElBQUksRUFBRSxLQUFLO29CQUNYLEtBQUssRUFBRSxFQUFFO29CQUNULE9BQU8sRUFBRSxHQUFHO29CQUNaLEdBQUcsRUFBRSxFQUFFO29CQUNQLFFBQVEsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDeEIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO2lCQUNwRSxDQUFDO2dCQUNGLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUUxRSxJQUFJLFFBQVEsRUFBRTtvQkFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZDO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQzthQUM3RTtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLHdCQUF3QixDQUFDLE1BQWMsRUFBRSxLQUFhO1FBQ3pELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2RCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQzlDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFDTSwyQkFBMkI7UUFDOUIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRSw4QkFBOEI7WUFDdEMsU0FBUyxFQUFFLENBQUMsQ0FBa0MsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ00saUJBQWlCLENBQUMsWUFBb0IsQ0FBQztRQUMxQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QixVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDdkIsTUFBTSxFQUFFLDBCQUEwQjtZQUNsQyxTQUFTLEVBQUUsQ0FBQyxDQUF1RCxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDcEYsSUFBSSxDQUFDLGtCQUFrQixDQUFtQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQzFFLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE1BQTZCLEVBQUUsaUJBQWlCLEdBQUcsSUFBSTtRQUM3RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLE1BQU0sRUFBRSw0QkFBNEI7WUFDcEMsU0FBUyxFQUFFLENBQUMsQ0FBa0MsRUFBRSxFQUFFO2dCQUM5QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckMsSUFBSSxpQkFBaUIsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3RDtnQkFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFO29CQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDOUM7WUFDTCxDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDTyxxQkFBcUIsQ0FBQyxDQUFrQztRQUM1RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUNwQixPQUFPLE9BQU8sWUFBWSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDO0lBQzVGLENBQUM7SUFDTSxnQkFBZ0IsQ0FDbkIsZ0JBQWtDLEVBQ2xDLEVBQThCLEVBQzlCLFNBQXdCLEVBQ3hCLFlBQWlDO1FBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUM5RCxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUM1QixTQUFTLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7WUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pFLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ08sbUJBQW1CLENBQUMsT0FBTztRQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDTyx1QkFBdUIsQ0FBQyxNQUE2QixFQUFFLFVBQW1CLElBQUk7UUFDbEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELEdBQUcsQ0FBQztZQUNKLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7U0FDdEYsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDTyxZQUFZLENBQ2hCLGdCQUFrQyxFQUNsQyxFQUE4QixFQUM5QixTQUF3QixFQUN4QixZQUFpQztRQUVqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDMUIsZ0JBQWdCLENBQUMsWUFBWSxFQUM3QixnQkFBZ0IsQ0FBQyxLQUFLLEVBQ3RCLGdCQUFnQixDQUFDLE9BQU8sRUFDeEIsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixFQUFFLEVBQ0YsU0FBUyxFQUNULFlBQVksQ0FDZixDQUFDO0lBQ04sQ0FBQztJQUNPLGtCQUFrQixDQUN0QixnQkFBa0MsRUFDbEMsRUFBdUIsRUFDdkIsT0FBZTtRQUVmLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDTCxPQUFPLGdCQUFnQixDQUFDO1NBQzNCO1FBQ0QsT0FBTztZQUNILEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsRUFBRTtZQUNMLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3hELFlBQVksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVk7WUFDdEMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7WUFDdEQsV0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVztZQUNwQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtZQUNwRCxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUN2RCxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7U0FDcEUsQ0FBQztJQUNOLENBQUM7SUFDTyxZQUFZLENBQUMsZ0JBQWtDO1FBQ25ELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQzVDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDO29CQUM3QyxnQkFBZ0I7b0JBQ2hCLEtBQUs7b0JBQ0wsSUFBSTtpQkFDUCxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCx5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7YUFDN0Q7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dIQTVRUSxtQkFBbUIsa0JBUWhCLDBCQUEwQjtvSEFSN0IsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQVNGLE1BQU07MkJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG93ZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFyc2FBcGkgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL2JhcnNhLWFwaSc7XG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsLCBOb3RpZmljYXRpb25JdGVtLCBOb3RpZnlPcHRpb25zIH0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcy9tb2RlbHMnO1xuaW1wb3J0IHsgTk9USUZJQ0FUQUlPTl9QT1BVUF9TRVJWRVIgfSBmcm9tICcuLi9pbmpkZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBCYmJUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMvYmJiLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXBvcHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1zdy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25Db3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgdW5yZWFkOiBudW1iZXI7IGFsbDogbnVtYmVyIH0+KHsgdW5yZWFkOiAwLCBhbGw6IDAgfSk7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uVW5yZWFkQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbkxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcGFnZUNvdW50ID0gMTtcbiAgICBwYWdlSW5kZXggPSAwO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE5PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSKSBwcm90ZWN0ZWQgX3BvcHVwU2VydmljZTogTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb3dlckNhc2U6IExvd2VyQ2FzZVBpcGUsXG4gICAgICAgIHByaXZhdGUgX2JiYlRyYW5zbGF0ZTogQmJiVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb246IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxuICAgICkge31cbiAgICBnZXQgbm90aWZpY2F0aW9uQ291bnQkKCk6IE9ic2VydmFibGU8eyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBub3RpZmljYXRpb25zJCgpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9ucyQuYXNPYnNlcnZhYmxlKCkucGlwZSgpO1xuICAgIH1cbiAgICBnZXQgbm90aWZpY2F0aW9uTG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25Mb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHVibGljIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRoaXMucGFnZUluZGV4KTtcbiAgICB9XG4gICAgcHVibGljIHNldE5vdGlmaWNhdGlvblZpZXdlZCh0YWdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFt0YWdzXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1NldE5vdGlmaWNhdGlvblZpZXdlZCcsXG4gICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2xpc3RDdXJyID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVW5yZWFkTW9MaXN0ID0gbW9saXN0Q3Vyci5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAgICAgICAgIFVucmVhZDogdGFncy5pbmRleE9mKGMuVGFnKSA+IC0xID8gZmFsc2UgOiBjLlVucmVhZFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi51cGRhdGVkVW5yZWFkTW9MaXN0XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoLXRhZ3MubGVuZ3RoLCAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFncztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBoYW5kbGVUb3BpYyhldmVudFRvcGljLCBjb250ZW50LCBvd25lcktleSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnRUb3BpYyA9PT0gJ0dsb2JhbFJlcG9ydE1vRGVsZXRlJykge1xuICAgICAgICAgICAgY29uc3QgeyBJZExpc3QgfTogeyBJZExpc3Q6IHN0cmluZ1tdIH0gPSBjb250ZW50O1xuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBsZXQgZmluZEluTm90aWZpY2F0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHVucmVhZENvdW50ID0gMDtcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgICAgICBJZExpc3QuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZE5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbnMuZmluZCgoYykgPT4gYy5JZCA9PT0gaWQpO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZE5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBmaW5kSW5Ob3RpZmljYXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kTm90aWZpY2F0aW9uLlVucmVhZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWFkQ291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZpbmRJbk5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KG5vdGlmaWNhdGlvbnMuZmlsdGVyKChjKSA9PiAhSWRMaXN0LmluY2x1ZGVzKGMuSWQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodW5yZWFkQ291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoLXVucmVhZENvdW50LCAtY291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBhZGROb3RpZmljYXRpb24oXG4gICAgICAgIG1zZzogc3RyaW5nLFxuICAgICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIGltYWdlOiBzdHJpbmcsXG4gICAgICAgIG1vLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChvdGhlck9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IE1vSWQsIFR5cGVEZWZJZCB9ID0gb3RoZXJPcHRpb25zO1xuICAgICAgICAgICAgICAgIGxldCBuZXdOb3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICRDYXB0aW9uOiB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgSWQ6IE1vSWQsXG4gICAgICAgICAgICAgICAgICAgICRUeXBlRGVmSWQ6IFR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBVbnJlYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIEljb246IGltYWdlLFxuICAgICAgICAgICAgICAgICAgICBJbWFnZTogJycsXG4gICAgICAgICAgICAgICAgICAgIENvbnRlbnQ6IG1zZyxcbiAgICAgICAgICAgICAgICAgICAgVGFnOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgIFN1YmplY3Q6ICcnLFxuICAgICAgICAgICAgICAgICAgICBDcmVhdGlvbkRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiB0aGlzLl9iYmJUcmFuc2xhdGUudHJhbnNmb3JtKCdEYXRlUl9Ub2RheScpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRNbyA9IG1vID8gQmFyc2FBcGkuRXh0LmRlY29kZShtbykgOiBudWxsO1xuICAgICAgICAgICAgICAgIG5ld05vdGlmaWNhdGlvbiA9IHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKG5ld05vdGlmaWNhdGlvbiwgcGFyc2VkTW8sIG1zZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkTW8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9saXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbbmV3Tm90aWZpY2F0aW9uLCAuLi5tb2xpc3RdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoMSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbihuZXdOb3RpZmljYXRpb24sIHBhcnNlZE1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQodW5yZWFkOiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY291bnRWYWx1ZSA9IHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzdW1VbnJlYWQgPSBjb3VudFZhbHVlLnVucmVhZCArICt1bnJlYWQ7XG4gICAgICAgIGNvbnN0IHN1bUFsbCA9IGNvdW50VmFsdWUuYWxsICsgK2NvdW50O1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQubmV4dCh7IHVucmVhZDogc3VtVW5yZWFkID4gMCA/IHN1bVVucmVhZCA6IDAsIGFsbDogc3VtQWxsID4gMCA/IHN1bUFsbCA6IDAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBsb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW10sXG4gICAgICAgICAgICBNZXRob2Q6ICdHZXRTaGVsbGJhck5vdGlmaWNhdGlvbkNvdW50JyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBsb2FkTm90aWZpY2F0aW9ucyhwYWdlSW5kZXg6IG51bWJlciA9IDApOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhZ2VJbmRleCArIDEgPiB0aGlzLnBhZ2VDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZGluZyh0cnVlKTtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbcGFnZUluZGV4XSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0dldFNoZWxsYmFyTm90aWZpY2F0aW9ucycsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChlOiB7IFBhZ2VDb3VudDogbnVtYmVyOyBNb0xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZMaXN0T2ZUYWdzID0gbm90aWZpY2F0aW9ucy5tYXAoKGMpID0+IGMuVGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2xpc3QgPSBlLk1vTGlzdC5maWx0ZXIoKGMpID0+IG5vdGlmTGlzdE9mVGFncy5pbmRleE9mKGMuVGFnKSA9PT0gLTEpLm1hcCgobW8pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKDxOb3RpZmljYXRpb25JdGVtPm1vLCBtbywgbW8uSU1lc3NhZ2U/LkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi5ub3RpZmljYXRpb25zLCAuLi5tb2xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9ICtlLlBhZ2VDb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTm90aWZpY2F0aW9uKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjbG9zZU5vdGlmaWNhdGlvbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9JZHMgPSB0aGlzLl9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdCwgdHJ1ZSk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW21vSWRzXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZVNoZWxsYmFyTm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25MaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdNb0xpc3QgPSBub3RpZmljYXRpb25MaXN0LmZpbHRlcigoYykgPT4gbW9JZHMuaW5kZXhPZihjLklkKSA9PT0gLTEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQobmV3TW9MaXN0KTtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5jbG9zZU5vdGlmaWNhdGlvbnMobW9JZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCkuYWxsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRoaXMucGFnZUluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF91cGRhdGVVbnJlYWRBbmRDb3VudChlOiB7IFVucmVhZDogbnVtYmVyOyBBbGw6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblVucmVhZENvdW50JC5uZXh0KCtlLlVucmVhZCk7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiArZS5VbnJlYWQsIGFsbDogK2UuQWxsIH0pO1xuICAgIH1cblxuICAgIGdldCBTdXBwb3J0Tm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBOb3RpZmljYXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uaXNFbmFibGVkO1xuICAgIH1cbiAgICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbihcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuU3VwcG9ydE5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2Uud2FybihgSW5BcHAgTm90aWZpY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuYCk7XG4gICAgICAgICAgICB1aU9wdGlvbnMgPSB1aU9wdGlvbnMgPz8ge307XG4gICAgICAgICAgICB1aU9wdGlvbnMuTm90aWZpY2F0aW9uSXRlbSA9IG5vdGlmaWNhdGlvbkl0ZW07XG4gICAgICAgICAgICB0aGlzLl9wb3B1cE5vdGlmeShub3RpZmljYXRpb25JdGVtLCBtbywgdWlPcHRpb25zLCBvdGhlck9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luQXBwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0pO1xuICAgIH1cbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbkxvYWRpbmcobG9hZGluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25Mb2FkaW5nJC5uZXh0KGxvYWRpbmcpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgbW9saXN0Q3VyciA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG1vSWRzID0gbW9saXN0Lm1hcCgoYykgPT4gYy5JZCk7XG4gICAgICAgIGNvbnN0IG1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHkgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAkTm90aWZpY2F0b2luTG9hZGluZzogbW9JZHMuaW5kZXhPZihjLklkKSAhPT0gLTEgPyBsb2FkaW5nIDogYy4kTm90aWZpY2F0b2luTG9hZGluZ1xuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoWy4uLm1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHldKTtcbiAgICAgICAgcmV0dXJuIG1vSWRzO1xuICAgIH1cbiAgICBwcml2YXRlIF9wb3B1cE5vdGlmeShcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3B1cFNlcnZpY2UucG9wdXBOb3RpZnkoXG4gICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLiRTYWZlQ29udGVudCxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUsXG4gICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLlN1YmplY3QsXG4gICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLkltYWdlLFxuICAgICAgICAgICAgbW8sXG4gICAgICAgICAgICB1aU9wdGlvbnMsXG4gICAgICAgICAgICBvdGhlck9wdGlvbnNcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJlcGFyZVByb3BlcnRpZXMoXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBjb250ZW50OiBzdHJpbmdcbiAgICApOiBOb3RpZmljYXRpb25JdGVtIHtcbiAgICAgICAgaWYgKCFtbykge1xuICAgICAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbkl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgICAgICAgICAuLi5tbyxcbiAgICAgICAgICAgIFVpQWN0aW9uczogIW1vLlVpQWN0aW9ucyA/IFtdIDogSlNPTi5wYXJzZShtby5VaUFjdGlvbnMpLFxuICAgICAgICAgICAgQ3JlYXRpb25EYXRlOiBtby5JTWVzc2FnZS5DcmVhdGlvbkRhdGUsXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlJENhcHRpb24sXG4gICAgICAgICAgICBDcmVhdG9yVXNlcjogbW8uSU1lc3NhZ2UuQ3JlYXRvclVzZXIsXG4gICAgICAgICAgICBDcmVhdG9yVXNlciRDYXB0aW9uOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlciRDYXB0aW9uLFxuICAgICAgICAgICAgSWNvbjogYCR7QmFyc2FBcGkuQncuT3JpZ2luKCl9JHtub3RpZmljYXRpb25JdGVtLkljb259YCxcbiAgICAgICAgICAgICRTYWZlQ29udGVudDogdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNvbnRlbnQpXG4gICAgICAgIH07XG4gICAgfVxuICAgIHByaXZhdGUgX2luQXBwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmU7XG4gICAgICAgICAgICBjb25zdCBpc1J0bCA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXNSdGxbbGFuZ107XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdncmFudGVkJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGlzUnRsLFxuICAgICAgICAgICAgICAgICAgICBsYW5nXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86cGVybWlzc2lvbiBkZW5pZWRcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKCdub3RpZmljYXRpb24gcGVybWlzc2lvbiBkZW5pZWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==