fixa-admin 0.0.69 → 0.0.70

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.
@@ -753,6 +753,7 @@ export class GridComponent {
753
753
  };
754
754
  setTimeout(() => {
755
755
  item.grid.filter.filters.forEach((el) => {
756
+ debugger;
756
757
  const findEl = this._column.find((item) => item.field == el.field || item.searchField == el.field);
757
758
  if (findEl && this.columnDefs.find((item) => item.field == findEl.field && item.filter)) {
758
759
  const mappedOperator = operatorMap[el.operator];
@@ -763,6 +764,33 @@ export class GridComponent {
763
764
  dateTo: new JDatePipe().transform(el.value[1], false, 'YYYYMMDD')
764
765
  });
765
766
  }
767
+ else if (findEl.type == 'date' || findEl.type == 'date-time') {
768
+ const value = new JDatePipe().transform(el.value, false, 'YYYYMMDD');
769
+ if (el.operator == FilterOperator.truncGreaterThanEqual) {
770
+ this.gridApi.setColumnFilterModel(findEl.field, {
771
+ type: value,
772
+ dateFrom: value
773
+ });
774
+ }
775
+ else {
776
+ this.gridApi.setColumnFilterModel(findEl.field, {
777
+ type: value,
778
+ dateTo: value
779
+ });
780
+ }
781
+ }
782
+ else if (findEl.type == 'time') {
783
+ this.gridApi.setColumnFilterModel(findEl.field, {
784
+ type: el.value.replaceAll(':', '').substr(0, 4),
785
+ time: el.value.replaceAll(':', '').substr(0, 4)
786
+ });
787
+ }
788
+ else if (findEl.type == 'boolean' || findEl.type == 'enum') {
789
+ this.gridApi.setColumnFilterModel(findEl.field, {
790
+ type: el.value,
791
+ filter: el.value
792
+ });
793
+ }
766
794
  else {
767
795
  this.gridApi.setColumnFilterModel(findEl.field, {
768
796
  type: mappedOperator,
@@ -1134,4 +1162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1134
1162
  }], column: [{
1135
1163
  type: Input
1136
1164
  }] } });
1137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQXdKLGNBQWMsRUFBb0csTUFBTSwyQkFBMkIsQ0FBQztBQUNuVCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHNUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU01QixNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNZLFVBQTRCLEVBQzVCLElBQXVCLEVBQ3ZCLE1BQW9CO1FBRnBCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFNekIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUN4Qyxr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SyxjQUFjO3NCQUR4QixLQUFLO2dCQWFOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBZU4sWUFBWTtzQkFEWCxLQUFLO2dCQWlCSyxlQUFlO3NCQUR6QixLQUFLO2dCQTBCSyxXQUFXO3NCQURyQixLQUFLO2dCQXFGTixTQUFTO3NCQURSLEtBQUs7Z0JBSUssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGxEb3VibGVDbGlja2VkRXZlbnQsIENvbERlZiwgR3JpZEFwaSwgSURhdGVGaWx0ZXJQYXJhbXMsIElSb3dOb2RlLCBJU2VydmVyU2lkZURhdGFzb3VyY2UsIElTZXJ2ZXJTaWRlR2V0Um93c1BhcmFtcywgUm93TW9kZWxUeXBlLCBSb3dTZWxlY3Rpb25PcHRpb25zLCBTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsIFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRHcmlkU3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uSXRlbXMsIENvbHVtbkl0ZW1zLCBEYXRhc291cmNlT3V0cHV0TW9kZWwsIEZpbHRlckJveEl0ZW1zTW9kZWwsIEZpbHRlckJveE1vZGVsLCBGaWx0ZXJHcmlkSXRlbXNNb2RlbCwgRmlsdGVySXRlbXNNb2RlbCwgRmlsdGVySXRlbXNWYWx1ZXNNb2RlbCwgRmlsdGVyT3BlcmF0b3IsIEZpbHRlclRlbXBsYXRlTW9kZWwsIEdyaWRBY3Rpb25PdXRwdXQsIEdyaWRJbnB1dE1vZGVsLCBHcmlkUmVxdWVzdFBhcmFtLCBTb3J0TW9kZWwsIFRvb2xiYXJJdGVtcyB9IGZyb20gJy4uLy4uL21vZGVscy9zaGFyZWQubW9kZWwnO1xuaW1wb3J0IHsgSkRhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IEFjdGlvbnNDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi9pbmRleC5hcGknO1xuaW1wb3J0IHsgRGF0ZUZpbHRlciwgVGltZUZpbHRlciB9IGZyb20gJy4vZmlsdGVyL2luZGV4LmFwaSc7XG5pbXBvcnQgeyBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbmRleC5hcGknO1xuaW1wb3J0IHsgZGIgfSBmcm9tICcuLi8uLi9kYic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWdyaWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfdG9hc3Q6IFRvYXN0U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmRhdGFzb3VyY2UgPSB0aGlzLmNyZWF0ZVNlcnZlclNpZGVEYXRhc291cmNlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgZ3JpZEFwaSE6IEdyaWRBcGk7XG4gICAgcHVibGljIGlzU2VydmVyU2lkZUdyb3VwO1xuICAgIHB1YmxpYyBnZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBudWxsO1xuICAgIHB1YmxpYyBncm91cERlZmF1bHRFeHBhbmRlZCA9IC0xO1xuICAgIHByaXZhdGUgX3RyZWVHcm91cENvbHVtbjogc3RyaW5nID0gbnVsbDtcbiAgICBfcm93U2VsZWN0aW9uOiBSb3dTZWxlY3Rpb25PcHRpb25zID0ge1xuICAgICAgICBtb2RlOiAnc2luZ2xlUm93JyxcbiAgICAgICAgY2hlY2tib3hlczogZmFsc2VcbiAgICB9O1xuICAgIGRhdGFzb3VyY2U6IElTZXJ2ZXJTaWRlRGF0YXNvdXJjZTtcbiAgICB0aGVtZUNsYXNzOiBzdHJpbmcgPSBcImFnLXRoZW1lLXF1YXJ0elwiO1xuICAgIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gICAgdmlzaWJsZUZpbHRlckJveDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIF9jb2x1bW46IENvbHVtbkl0ZW1zW10gPSBbXTtcbiAgICBfZmlsdGVyQm94SXRlbXM6IEZpbHRlckJveE1vZGVsW10gPSBbXTtcbiAgICBmaWx0ZXJJdGVtc1ZhbHVlczogRmlsdGVySXRlbXNWYWx1ZXNNb2RlbFtdID0gW107XG4gICAgZmlsdGVyVGVtcGxhdGVJdGVtczogRmlsdGVyVGVtcGxhdGVNb2RlbFtdID0gW107XG4gICAgdmlzaWJsZUZpbHRlclRlbXBsYXRlQm94OiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNWaXNpYmxlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBncmlkTW9kZWw6IEdyaWRJbnB1dE1vZGVsID0gbnVsbDtcbiAgICB0ZW1wbGF0ZU5hbWU6IHN0cmluZyA9IG51bGw7XG4gICAgZ3JpZElkOiBzdHJpbmcgPSBudWxsO1xuICAgIHNlYXJjaENoYW5nZU9ic2VydmVyOiBhbnk7XG4gICAgX2F1dG9Db2x1bW5TaXplOiBTaXplQ29sdW1uc1RvRml0R3JpZFN0cmF0ZWd5IHwgU2l6ZUNvbHVtbnNUb0ZpdFByb3ZpZGVkV2lkdGhTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3kgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgX2ZpbHRlckl0ZW1zOiBGaWx0ZXJJdGVtc01vZGVsW107XG4gICAgaXNGaWx0ZXJIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhdXRvR3JvdXBDb2x1bW5EZWY6IENvbERlZiA9IHtcbiAgICAgICAgaGVhZGVyTmFtZTogXCJcIixcbiAgICAgICAgbWluV2lkdGg6IDI1MCxcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIHN1cHByZXNzQ291bnQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlclBhcmFtczoge1xuICAgICAgICAgICAgbWF4TnVtQ29uZGl0aW9uczogMVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgbWluV2lkdGg6IDE1MCxcbiAgICAgICAgZmlsdGVyOiAnYWdUZXh0Q29sdW1uRmlsdGVyJyxcbiAgICAgICAgc3VwcHJlc3NIZWFkZXJNZW51QnV0dG9uOiB0cnVlLFxuICAgICAgICBzdXBwcmVzc0hlYWRlckNvbnRleHRNZW51OiB0cnVlLFxuICAgICAgICBzdXBwcmVzc1NpemVUb0ZpdDogdHJ1ZVxuICAgIH07XG5cbiAgICBnZXRSb3dDbGFzcyhwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5ub2RlLnJvd0luZGV4ICUgMiAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdyb3ctb2RkJ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cblxuICAgIEBPdXRwdXQoKVxuICAgIG9uQWN0aW9uOiBFdmVudEVtaXR0ZXI8R3JpZEFjdGlvbk91dHB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvblRvb2xiYXI6IEV2ZW50RW1pdHRlcjxUb29sYmFySXRlbXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbldpZHRoOiBudW1iZXIgPSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpc1Jvd1NlbGVjdGlvbih2OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgbW9kZTogJ211bHRpUm93JyxcbiAgICAgICAgICAgICAgICBjaGVja2JveGVzOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VkKGU6IFNlbGVjdGlvbkNoYW5nZWRFdmVudCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgICAgICBlLmFwaS5mb3JFYWNoTm9kZSgoZWwpID0+IHtcbiAgICAgICAgICAgIGlmIChlbC5pc1NlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGVsLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdChpdGVtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnNlbGVjdEFsbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlRmlsdGVyT3JEYXRhOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHJvd01vZGVsVHlwZTogUm93TW9kZWxUeXBlID0gJ3NlcnZlclNpZGUnO1xuXG4gICAgQElucHV0KClcbiAgICBzZXJ2ZXJTaWRlU29ydDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlcnZlclNpZGVGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBpc1Rvb2xiYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBydGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwYWdpbmF0aW9uUGFnZVNpemUgPSAyNTtcblxuICAgIEBJbnB1dCgpXG4gICAgcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3I6IG51bWJlcltdIHwgYm9vbGVhbiA9IFsyNV07XG5cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZUFkdmFuY2VkRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHRyZWVNb2RlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBpc0xlYWY6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcm93RGF0YTogYW55ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcmVuZGVyQ2VsbENsYXNzUnVsZXM6IGFueSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgYXV0b0NvbHVtblNpemUoKTogU2l6ZUNvbHVtbnNUb0ZpdEdyaWRTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfCBTaXplQ29sdW1uc1RvQ29udGVudFN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db2x1bW5TaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGF1dG9Db2x1bW5TaXplKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHRoaXMuX2F1dG9Db2x1bW5TaXplID0geyB0eXBlOiAnZml0Q2VsbENvbnRlbnRzJyB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYXV0b0NvbHVtblNpemUgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dBZHZhbmNlZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtc1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgICAgIGFsdDogJ9mI24zYsdin24zYtCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICAgICAgYWx0OiAn2K3YsNmBJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIEBJbnB1dCgpXG4gICAgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbXNbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2luc2VydCcsXG4gICAgICAgICAgICBpY29uOiAncGx1cycsXG4gICAgICAgICAgICB0ZXh0OiAn2KfbjNis2KfYryDYsdiv24zZgSDYrNiv24zYrycsXG4gICAgICAgICAgICB0eXBlOiAncHJpbWFyeSdcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgY29kZTogJ3JlZnJlc2gnLFxuICAgICAgICAvLyAgICAgaWNvbjogJ3N5bmMnLFxuICAgICAgICAvLyAgICAgdGV4dDogJ9io2LHZiNiy2LHYs9in2YbbjCcsXG4gICAgICAgIC8vICAgICB0eXBlOiAnZGVmYXVsdCdcbiAgICAgICAgLy8gfVxuICAgIF07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHJlZUdyb3VwQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlR3JvdXBDb2x1bW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHJlZUdyb3VwQ29sdW1uKHY6IHN0cmluZykge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdGhpcy5fdHJlZUdyb3VwQ29sdW1uID0gdjtcbiAgICAgICAgICAgIHRoaXMuaXNTZXJ2ZXJTaWRlR3JvdXAgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUl0ZW0ubGFzdE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUl0ZW1bdl07XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSXRlbVt2XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFJdGVtW3ZdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmhlYWRlck5hbWUgPSB2O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsdGVySXRlbXModjogRmlsdGVySXRlbXNNb2RlbFtdKSB7XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJJdGVtcyA9IHY7XG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVySGVhZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHYuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2ZpbHRlckJveEl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZmllbGQgPT0gZWwuZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGVsLnR5cGUgPT0gJ2VudW0nIHx8IGVsLnR5cGUgPT0gJ3NlbGVjdCcgfHwgZWwudHlwZSA9PSAndHJlZS1zZWxlY3QnKSAmJiBlbC5pdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5pdGVtcz8uKG51bGwpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlczogTnpUcmVlTm9kZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC50eXBlID09ICd0cmVlLXNlbGVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udmVydFRvTnpUcmVlTm9kZXMgPSAoaXRlbXM6IEZpbHRlckJveEl0ZW1zTW9kZWxbXSk6IE56VHJlZU5vZGVPcHRpb25zW10gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBTdHJpbmcoaXRlbS52YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMZWFmOiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlbiA/IGNvbnZlcnRUb056VHJlZU5vZGVzKGl0ZW0uY2hpbGRyZW4pIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBjb252ZXJ0VG9OelRyZWVOb2RlcyhyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbC5kZWZhdWx0VmFsdWUgIT0gbnVsbCA/IGVsLmRlZmF1bHRWYWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiByZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBlbC5wb3NpdGlvbiA/IGVsLnBvc2l0aW9uIDogJ2ZpbHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IGVsLmNvbFNwYW4gPyBlbC5jb2xTcGFuIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogZWwuc29ydCA/IGVsLnNvcnQgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyU2lkZTogZWwuc2VydmVyU2lkZSA/IGVsLnNlcnZlclNpZGUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJUcnVlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJGYWxzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbC5kZWZhdWx0VmFsdWUgIT0gbnVsbCA/IGVsLmRlZmF1bHRWYWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZWwudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZWwucG9zaXRpb24gPyBlbC5wb3NpdGlvbiA6ICdmaWx0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IGVsLmNvbFNwYW4gPyBlbC5jb2xTcGFuIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBlbC5zb3J0ID8gZWwuc29ydCA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyU2lkZTogZWwuc2VydmVyU2lkZSA/IGVsLnNlcnZlclNpZGUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW11cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWwuZGVmYXVsdFZhbHVlICE9IG51bGwgPyBlbC5kZWZhdWx0VmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGVsLnBvc2l0aW9uID8gZWwucG9zaXRpb24gOiAnZmlsdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiBlbC5jb2xTcGFuID8gZWwuY29sU3BhbiA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogZWwuc29ydCA/IGVsLnNvcnQgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclNpZGU6IGVsLnNlcnZlclNpZGUgPyBlbC5zZXJ2ZXJTaWRlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zb3J0IC0gYi5zb3J0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJMYWJlbFZhbHVlKCk7XG4gICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGZldGNoRGF0YTogKGZpbHRlckdyaWQ6IEdyaWRJbnB1dE1vZGVsLCByZXF1ZXN0UGFyYW1zOiBHcmlkUmVxdWVzdFBhcmFtKSA9PiBQcm9taXNlPERhdGFzb3VyY2VPdXRwdXRNb2RlbD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGNvbHVtbih2OiBDb2x1bW5JdGVtc1tdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gW107XG4gICAgICAgICAgICBpZiAodiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1uID0gdjtcbiAgICAgICAgICAgICAgICB2LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaWx0ZXI6IGFueSA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc29ydGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zOiBJRGF0ZUZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE51bUNvbmRpdGlvbnM6IDFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnWUVTJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZklucHV0czogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiAnZmFsc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdOTycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlbC5maWx0ZXJJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6IGVsLmZpbHRlckl0ZW1zW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbC5maWx0ZXJJdGVtc1twcm9wZXJ0eV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnU2V0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdEYXRlQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVyQm94SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5maWVsZCA9PSBlbC5maWVsZCB8fCBpdGVtLmZpZWxkID09IGVsLnNlYXJjaEZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLmZpbHRlciAhPSB1bmRlZmluZWQgJiYgKGVsLmZpbHRlciA9PSAnZmlsdGVyLWJveCcgfHwgZWwuZmlsdGVyID09ICdub25lJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5zb3J0YWJsZSAhPSB1bmRlZmluZWQgJiYgIWVsLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZCAhPSB0aGlzLl90cmVlR3JvdXBDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJZDogZWwuaWQgPyBlbC5pZCA6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICdhZy1ib29sZWFuLWNlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3NSdWxlczogdGhpcy5yZW5kZXJDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZSA/ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBzdHJva2U9XCJncmVlblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1jaGVja1wiPjxwYXRoIGQ9XCJNMjAgNkw5IDE3TDQgMTJcIi8+PC9zdmc+JyA6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHJva2U9XCJyZWRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXIteFwiPjxsaW5lIHgxPVwiMThcIiB5MT1cIjZcIiB4Mj1cIjZcIiB5Mj1cIjE4XCIgLz48bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+PC9zdmc+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdlbnVtJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSWQ6IGVsLmlkID8gZWwuaWQgOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHRoaXMucmVuZGVyQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQocGFyYW1zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSWQ6IGVsLmlkID8gZWwuaWQgOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIgPyBEYXRlRmlsdGVyIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHRoaXMucmVuZGVyQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICd0aW1lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSWQ6IGVsLmlkID8gZWwuaWQgOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBUaW1lRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB0aGlzLnJlbmRlckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZS5zdWJzdHIoMCwgNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkOiBlbC5pZCA/IGVsLmlkIDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyID8gRGF0ZUZpbHRlciA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB0aGlzLnJlbmRlckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdwcmljZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkOiBlbC5pZCA/IGVsLmlkIDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB0aGlzLnJlbmRlckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJZDogZWwuaWQgPyBlbC5pZCA6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogODAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3NSdWxlczogdGhpcy5yZW5kZXJDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGltZyBjbGFzcz1cInJvdW5kZWQtZnVsbCBtdC0xXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgc3JjPVwiJHtwYXJhbXMudmFsdWV9XCIvPmA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkOiBlbC5pZCA/IGVsLmlkIDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHRoaXMucmVuZGVyQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZmllbGQgPSBlbC5maWVsZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkRlZnMuZmlsdGVyKChlbCkgPT4gZWwuZmlsdGVyICE9IGZhbHNlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJIZWFkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW4uZmlsdGVyKChlbCkgPT4gZWwuZmlsdGVyID09ICdmaWx0ZXItYm94JykuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5maWx0ZXJJdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWwuZmlsdGVySXRlbXMpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbC5maWx0ZXJJdGVtc1tpdGVtXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsLmZpbHRlckl0ZW1zW2l0ZW1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVsLmZpbHRlckl0ZW1zKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJUcnVlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJGYWxzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpbHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclNpZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnNvcnQgLSBiLnNvcnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9uSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogdGhpcy5hY3Rpb25XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEFjdGlvbnNDZWxsUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAocGFyYW1zOiBHcmlkQWN0aW9uT3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25BY3Rpb24uZW1pdChwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgY2hhbmdlRGF0ZVBpY2tlclZhbHVlKGUsIGl0ZW06IEZpbHRlckJveE1vZGVsLCBpbmRleCkge1xuICAgICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpdGVtLnZhbHVlW2luZGV4XSA9IGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gW251bGwsIG51bGxdO1xuICAgICAgICAgICAgaXRlbS52YWx1ZVtpbmRleF0gPSBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2VsbERvdWJsZUNsaWNrZWQoZTogQ2VsbERvdWJsZUNsaWNrZWRFdmVudCkge1xuICAgICAgICB0aGlzLm9uQ2xpY2tlZC5lbWl0KHsgLi4uZS5kYXRhLCBjb2xJZDogZS5jb2x1bW4uZ2V0Q29sSWQoKSB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhpdGVtOiBUb29sYmFySXRlbXMpIHtcbiAgICAgICAgdGhpcy5vblRvb2xiYXIuZW1pdChpdGVtKTtcbiAgICB9XG5cbiAgICBzYXZlRmlsdGVyR3JpZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fdG9hc3Quc2hvdygn2LTZhtin2LPZhyDbjCDYrNiv2YjZhCDZiNin2LHYryDZhti02K/ZhyDYp9iz2KonLCAnZXJyb3InKTtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRJZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmlzaWJsZU1vZGFsID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMuZ2V0KHRoaXMuZ3JpZElkKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMucHV0KHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVzLFxuICAgICAgICAgICAgICAgICAgICBncmlkOiB0aGlzLmdyaWRNb2RlbCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfZgtin2YTYqCDYqNinINmF2YjZgdmC24zYqiDYqNix2YjYstix2LPYp9mG24wg2LTYrycsICdzdWNjZXNzJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBoYW5kbGVDYW5jZWxNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGhhbmRsZU9rTW9kYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlTmFtZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfYudmG2YjYp9mGINmC2KfZhNioINmI2KfYsdivINmG2LTYr9mHINin2LPYqicsICdlcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkSWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMuYWRkKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmdyaWRJZCxcbiAgICAgICAgICAgIGdyaWQ6IHRoaXMuZ3JpZE1vZGVsLFxuICAgICAgICAgICAgdGFibGVJZDogdGhpcy5pZCxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRlbXBsYXRlTmFtZSxcbiAgICAgICAgICAgIHVzZXJOYW1lOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfZgtin2YTYqCDYqNinINmF2YjZgdmC24zYqiDYsNiu24zYsdmHINi02K8nLCAnc3VjY2VzcycpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5mZXRjaFRlbXBsYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZnJlc2gocHVyZ2UgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaFNlcnZlclNpZGUoeyBwdXJnZSB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3dEYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaENlbGxzKCk7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbignY29sdW1uRGVmcycsIHRoaXMuY29sdW1uRGVmcyk7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbignbG9hZGluZycsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEobnVsbCwgbnVsbCkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0RhdGEgPSBkYXRhLml0ZW1zO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKCdsb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkdyaWRSZWFkeShwYXJhbXM6IGFueSkge1xuICAgICAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xuICAgICAgICBpZiAodGhpcy5yb3dNb2RlbFR5cGUgPT0gJ2NsaWVudFNpZGUnKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRGF0YShudWxsLCBudWxsKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IGRhdGEuaXRlbXM7XG4gICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmZhaWwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWR2YW5jZWRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlQWR2YW5jZWRGaWx0ZXIgPSAhdGhpcy5lbmFibGVBZHZhbmNlZEZpbHRlcjtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2hvd0FkdmFuY2VkRmlsdGVyQnVpbGRlcigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FnLWljb24tbWF4aW1pemUnKVswXSBhcyBIVE1MRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvdXRlVG9Ob2RlKHJvd05vZGU6IElSb3dOb2RlKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXJvd05vZGUucGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Um91dGVUb05vZGUocm93Tm9kZS5wYXJlbnQpLFxuICAgICAgICAgICAgcm93Tm9kZS5rZXkgPyByb3dOb2RlLmtleSA6IHJvd05vZGUuZGF0YS5lbXBsb3llZU5hbWUsXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcmVmcmVzaE5vZGUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRBcGkuZ2V0Um93Tm9kZShpZCk7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXRSb3V0ZVRvTm9kZShzZWxlY3RlZFJvd3MpO1xuICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaFNlcnZlclNpZGUoe1xuICAgICAgICAgICAgcHVyZ2U6IHRydWUsXG4gICAgICAgICAgICByb3V0ZTogcm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlVmlzaWJsZUZpbHRlckJveCgpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGEuc29ydCAtIGIuc29ydDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlRmlsdGVyQm94ID0gdHJ1ZTtcbiAgICAgICAgfSwgNTApO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVGaWx0ZXJCb3ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGVsLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRGaWx0ZXJNb2RlbChudWxsKTtcbiAgICAgICAgdGhpcy5ncmlkQXBpLm9uRmlsdGVyQ2hhbmdlZCgpO1xuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cblxuICAgIHJlZnJlc2hQYXJlbnROb2RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0Um91dGVUb05vZGUoc2VsZWN0ZWRSb3dzLnBhcmVudCk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7XG4gICAgICAgICAgICBwdXJnZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvdXRlOiByb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyTGFiZWxWYWx1ZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVGaWx0ZXJCb3ggPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICB9XG5cbiAgICBzZXRUZW1wbGF0ZUZpbHRlcihpdGVtOiBGaWx0ZXJUZW1wbGF0ZU1vZGVsKSB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3JNYXAgPSB7XG4gICAgICAgICAgICBFUTogJ2VxdWFscycsXG4gICAgICAgICAgICBORVE6ICdub3RFcXVhbCcsXG4gICAgICAgICAgICBMVDogJ2xlc3NUaGFuJyxcbiAgICAgICAgICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICAgICBHVDogJ2dyZWF0ZXJUaGFuJyxcbiAgICAgICAgICAgIEdURTogJ2dyZWF0ZXJUaGFuT3JFcXVhbCcsXG4gICAgICAgICAgICBTVEFSVFNXSVRIOiAnc3RhcnRzV2l0aCcsXG4gICAgICAgICAgICBFTkRTV0lUSDogJ2VuZHNXaXRoJyxcbiAgICAgICAgICAgIExJS0U6ICdjb250YWlucycsXG4gICAgICAgICAgICBOT1RMSUtFOiAnbm90Q29udGFpbnMnLFxuICAgICAgICAgICAgSU46ICdpblJhbmdlJyxcbiAgICAgICAgICAgIFRSVU5DX0VROiAnZXF1YWxzJyxcbiAgICAgICAgICAgIFRSVU5DX05FUTogJ25vdEVxdWFsJyxcbiAgICAgICAgICAgIFRSVU5DX0dUOiAnZ3JlYXRlclRoYW4nLFxuICAgICAgICAgICAgVFJVTkNfR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgICAgIFRSVU5DX0xUOiAnbGVzc1RoYW4nLFxuICAgICAgICAgICAgVFJVTkNfTFRFOiAnbGVzc1RoYW5PckVxdWFsJyxcbiAgICAgICAgICAgIEJFVFdFRU46ICdpblJhbmdlJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5ncmlkLmZpbHRlci5maWx0ZXJzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5fY29sdW1uLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZmllbGQgPT0gZWwuZmllbGQgfHwgaXRlbS5zZWFyY2hGaWVsZCA9PSBlbC5maWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbmRFbCAmJiB0aGlzLmNvbHVtbkRlZnMuZmluZCgoaXRlbSkgPT4gaXRlbS5maWVsZCA9PSBmaW5kRWwuZmllbGQgJiYgaXRlbS5maWx0ZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZE9wZXJhdG9yID0gb3BlcmF0b3JNYXBbZWwub3BlcmF0b3JdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwub3BlcmF0b3IgPT09ICdCRVRXRUVOJyB8fCBlbC5vcGVyYXRvciA9PT0gJ0lOJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldENvbHVtbkZpbHRlck1vZGVsKGZpbmRFbC5maWVsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IG1hcHBlZE9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGcm9tOiBuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKGVsLnZhbHVlWzBdLCBmYWxzZSwgJ1lZWVlNTUREJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVRvOiBuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKGVsLnZhbHVlWzFdLCBmYWxzZSwgJ1lZWVlNTUREJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldENvbHVtbkZpbHRlck1vZGVsKGZpbmRFbC5maWVsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IG1hcHBlZE9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZWwudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9maWx0ZXJCb3hJdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uZmllbGQgPT0gZWwuZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtc1tpbmRleF0udmFsdWUgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZElkID0gaXRlbS5pZDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZUZpbHRlclRlbXBsYXRlQm94ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJMYWJlbFZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkub25GaWx0ZXJDaGFuZ2VkKCk7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBoYW5kbGVGaWx0ZXJMYWJlbFZhbHVlKCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcy5maW5kKChmaSkgPT4gZmkuZmllbGQgPT0gZWwuZmllbGQpO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZWwudmFsdWU7XG4gICAgICAgICAgICBzd2l0Y2ggKGVsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZUZvcm0gPSBlbC52YWx1ZSAhPSBudWxsID8gZWwudmFsdWVbMF0gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlVG8gPSBlbC52YWx1ZSAhPSBudWxsICYmIGVsLnZhbHVlWzFdID8gZWwudmFsdWVbMV0gOiBuZXcgRGF0ZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYCR7bmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShkYXRlRm9ybSl9IC0gJHtuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKGRhdGVUbyl9YDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBlbC5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLnZhbHVlID09IGVsLnZhbHVlKT8ubGFiZWw7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGVsLnZhbHVlICE9IG51bGwgJiYgZWwudmFsdWUgPT0gdHJ1ZSA/ICdUcnVlJyA6ICdGYWxzZSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGVsLnZhbHVlLnN1YnN0cigwLCA1KVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd0cmVlLXNlbGVjdCc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC52YWx1ZSAhPSBudWxsICYmIGVsLnZhbHVlICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5UcmVlID0gKG5vZGVzID0gW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXy5yZWR1Y2Uobm9kZXMsIChhY2MsIG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goXy5vbWl0KG5vZGUsICdjaGlsZHJlbicpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKC4uLmZsYXR0ZW5UcmVlKG5vZGUuY2hpbGRyZW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZmxhdHRlblRyZWUoZWwuaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLnZhbHVlID09IGVsLnZhbHVlKS5sYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZmluZEVsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbC52YWx1ZSA9PSBudWxsIHx8IGVsLnZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcyA9IHRoaXMuZmlsdGVySXRlbXNWYWx1ZXMuZmlsdGVyKChmaSkgPT4gZmkuZmllbGQgIT0gZWwuZmllbGQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmRFbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWx0ZXIoaXRlbTogRmlsdGVySXRlbXNWYWx1ZXNNb2RlbCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZpbHRlckJveEl0ZW1zLmZpbmRJbmRleCgoZWwpID0+IGVsLmZpZWxkID09IGl0ZW0uZmllbGQpO1xuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXNbaW5kZXhdLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRDb2x1bW5GaWx0ZXJNb2RlbChpdGVtLmZpZWxkLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5vbkZpbHRlckNoYW5nZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzID0gdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcy5maWx0ZXIoKGVsKSA9PiBlbC5maWVsZCAhPSBpdGVtLmZpZWxkKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VhcmNoU2VsZWN0Qm94KGUsIGl0ZW06IEZpbHRlckJveE1vZGVsKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hDaGFuZ2VPYnNlcnZlcikge1xuICAgICAgICAgICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2VPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMudGFyZ2V0LnZhbHVlICE9IG51bGwgJiYgYy50YXJnZXQudmFsdWUgIT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVySXRlbXMuZmluZCgoZWwpID0+IGVsLmZpZWxkID09IGl0ZW0uZmllbGQpLml0ZW1zKGMudGFyZ2V0LnZhbHVlKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLml0ZW1zID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoQ2hhbmdlT2JzZXJ2ZXIubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VydmVyU2lkZURhdGFzb3VyY2UoKTogSVNlcnZlclNpZGVEYXRhc291cmNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFJvd3M6IChwYXJhbXM6IElTZXJ2ZXJTaWRlR2V0Um93c1BhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXI6IEZpbHRlckdyaWRJdGVtc01vZGVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHRydW5jYXRlRGF0ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWwpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJyA/IHRoaXMuX3RyZWVHcm91cENvbHVtbiA6IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNsYXRlVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuZXF1YWxzO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlnbm9yZUNhc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRFbCA9IHRoaXMuX2NvbHVtbi5maW5kKChlbCkgPT4gZWwuZmllbGQgPT0ga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gJ2FnLUdyaWQtQXV0b0NvbHVtbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IHRoaXMuX3RyZWVHcm91cENvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRFbC5zZWFyY2hGaWVsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gZmluZEVsLnNlYXJjaEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlclR5cGUgPT0gJ2N1c3RvbS1kYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tICYmIHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlRnJvbSwgcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVWYWx1ZSA9IGAke25ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlRnJvbSl9IC0gJHtuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IudHJ1bmNHcmVhdGVyVGhhbkVxdWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb207XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVZhbHVlID0gYCR7bmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbyAmJiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbyAhPSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IudHJ1bmNMZXNzVGhhbk9yRXF1YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVZhbHVlID0gYCR7bmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbyl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXJUeXBlID09ICdjdXN0b20tdGltZScgJiYgcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50aW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9IEZpbHRlck9wZXJhdG9yLmVxdWFscztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGAke3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udGltZS5zdWJzdHIoMCwgMil9OiR7cGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50aW1lLnN1YnN0cigyLCAyKX06MDBgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnR5cGUgJiYgcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlID09ICdpblJhbmdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFtwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlciwgcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXJUb107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlVmFsdWUgPSBgJHtwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlcn0gLSAke3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyVG99YFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZpbHRlck9wZXJhdG9yW3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvcltwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnR5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyICE9IG51bGwgPyBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlciA6IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsICYmIGZpbmRFbC50eXBlID09ICdlbnVtJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRFbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZEZpbHRlckl0ZW1zRWwgPSB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzLmZpbmQoKGZpKSA9PiBmaS5maWVsZCA9PSBmaW5kRWwuZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmluZEZpbHRlckl0ZW1zRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaW5kRWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmluZEVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zbGF0ZVZhbHVlICE9IG51bGwgPyB0cmFuc2xhdGVWYWx1ZSA6IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyVHlwZSA9PSAnY3VzdG9tLXRpbWUnID8gdmFsdWUuc3Vic3RyKDAsIDUpIDogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZEZpbHRlckl0ZW1zRWwudmFsdWUgPSB0cmFuc2xhdGVWYWx1ZSAhPSBudWxsID8gdHJhbnNsYXRlVmFsdWUgOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzID0gc3RydWN0dXJlZENsb25lKHRoaXMuZmlsdGVySXRlbXNWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVySXRlbXNWYWx1ZXMgPSBzdHJ1Y3R1cmVkQ2xvbmUoW10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlckxhYmVsVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHNvcnRzOiBTb3J0TW9kZWxbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRFbCA9IHRoaXMuX2NvbHVtbi5maW5kKChlbCkgPT4gZWwuZmllbGQgPT0gcGFyYW1zLnJlcXVlc3Quc29ydE1vZGVsWzBdLmNvbElkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRFbC5zZWFyY2hGaWVsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0cyA9IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uc29ydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmluZEVsLnNlYXJjaEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRzID0gW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5zb3J0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uY29sSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWRGaWx0ZXI6IEdyaWRJbnB1dE1vZGVsID0ge1xuICAgICAgICAgICAgICAgICAgICB0YWtlOiBwYXJhbXMuYXBpLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICBza2lwOiBwYXJhbXMuYXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpICogcGFyYW1zLmFwaS5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKSxcbiAgICAgICAgICAgICAgICAgICAgc29ydHNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RQYXJhbXM6IEdyaWRSZXF1ZXN0UGFyYW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6IHBhcmFtcy5wYXJlbnROb2RlLmRhdGFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWwucG9zaXRpb24gPT0gJ2ZpbHRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuY29udGFpbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6IGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9IEZpbHRlck9wZXJhdG9yLmJldHdlZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWwudmFsdWVbMF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLnZhbHVlWzBdID0gbmV3IERhdGUoJzE5OTctMDEtMDEnKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC52YWx1ZVsxXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwudmFsdWVbMV0gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuZXF1YWxzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRGaWx0ZXIuZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWwudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZEZpbHRlci5kYXRhW2VsLmZpZWxkXSA9IGVsLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZUZpbHRlck9yRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlcXVpcmVGaWx0ZXJPckRhdGEgJiYgKChncmlkRmlsdGVyLmRhdGEgPT0gbnVsbCB8fCBPYmplY3Qua2V5cyhncmlkRmlsdGVyLmRhdGEpLmxlbmd0aCA9PSAwKSAmJiAoZ3JpZEZpbHRlci5maWx0ZXIuZmlsdGVycyA9PSBudWxsIHx8IGdyaWRGaWx0ZXIuZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09IDApKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3Quc2hvdygn2KjYsdin24wg2YbZhdin24zYtCDYp9i32YTYp9i52KfYqiDYjCDYp9mG2KrYrtin2Kgg24zaqSDZgduM2YTYqtixINin2YTYstin2YXbjCDYp9iz2KonLCAnd2FybmluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnN1Y2Nlc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGE6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRNb2RlbCA9IGdyaWRGaWx0ZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEoZ3JpZEZpbHRlciwgcmVxdWVzdFBhcmFtcykudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnN1Y2Nlc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YTogZGF0YS5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50OiBkYXRhLnRvdGFsQ291bnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnICYmIHRoaXMuZ3JpZEFwaS5nZXRTZXJ2ZXJTaWRlU2VsZWN0aW9uU3RhdGUoKVsnc2VsZWN0QWxsJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5mYWlsKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZmV0Y2hUZW1wbGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgZGIuZ3JpZEZpbHRlckl0ZW1zLmZpbHRlcigoZWwpID0+IGVsLnRhYmxlSWQgPT0gdGhpcy5pZCkudG9BcnJheSgpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyVGVtcGxhdGVJdGVtcyA9IHJlcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmV0Y2hUZW1wbGF0ZSgpO1xuICAgIH1cbn0iLCI8IS0tIDxidXR0b24gKGNsaWNrKT1cImVuYWJsZUFkdmFuY2VkRmlsdGVyPSFlbmFibGVBZHZhbmNlZEZpbHRlclwiPmFkdmFuY2VkPC9idXR0b24+IC0tPlxuPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBweS00IGJvcmRlci1iIGJvcmRlci1iLXNsYXRlLTIwMCBteC00XCIgKm5nSWY9XCJpc1Rvb2xiYXJcIj5cbiAgICA8ZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtMnhsXCI+e3sgbGFiZWwgfX08L2g0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdG9vbGJhckl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gW256TG9hZGluZ109XCJpdGVtLmxvYWRpbmcgPyBpdGVtLmxvYWRpbmcgOiBmYWxzZVwiIChjbGljayk9XCJoYW5kbGVDbGljayhpdGVtKVwiIFtuelR5cGVdPVwiaXRlbS50eXBlXCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIFtuelR5cGVdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVWaXNpYmxlRmlsdGVyQm94KClcIlxuICAgICAgICAgICAgbnotYnV0dG9uXG4gICAgICAgICAgICBuelR5cGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgIG56LXBvcG92ZXJcbiAgICAgICAgICAgIFtuelBvcG92ZXJWaXNpYmxlXT1cInZpc2libGVGaWx0ZXJCb3hcIlxuICAgICAgICAgICAgbnpQb3BvdmVyVGl0bGU9XCJcIlxuICAgICAgICAgICAgbnpQb3BvdmVyVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICAgIFtuelBvcG92ZXJDb250ZW50XT1cImNvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICBuelBvcG92ZXJPdmVybGF5Q2xhc3NOYW1lPVwiZmlsdGVyLXBvcG92ZXJcIlxuICAgICAgICAgICAgbnpQb3BvdmVyUGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICpuZ0lmPVwiX2ZpbHRlckJveEl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiZmlsdGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAg2YHbjNmE2KrYsVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbnotYnV0dG9uXG4gICAgICAgICAgICBuelR5cGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgbnotcG9wb3ZlclxuICAgICAgICAgICAgbnpQb3BvdmVyVGl0bGU9XCJcIlxuICAgICAgICAgICAgWyhuelBvcG92ZXJWaXNpYmxlKV09XCJ2aXNpYmxlRmlsdGVyVGVtcGxhdGVCb3hcIlxuICAgICAgICAgICAgbnpQb3BvdmVyVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICAgIFtuelBvcG92ZXJDb250ZW50XT1cImNvbnRlbnRGaWx0ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICBuelBvcG92ZXJPdmVybGF5Q2xhc3NOYW1lPVwiZmlsdGVyLXBvcG92ZXItc21cIlxuICAgICAgICAgICAgbnpQb3BvdmVyUGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaWQgIT0gbnVsbFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJsYXlvdXRcIj48L3NwYW4+XG4gICAgICAgICAgICDZgduM2YTYqtixINmH2KfbjCDYsNiu24zYsdmHINi02K/Zh1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gKGNsaWNrKT1cInJlZnJlc2goKVwiIG56VHlwZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwic3luY1wiPjwvc3Bhbj5cbiAgICAgICAgICAgINio2LHZiNiy2LHYs9in2YbbjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPCEtLSA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwiYWR2YW5jZWRGaWx0ZXIoKVwiICpuZ0lmPVwic2hvd0FkdmFuY2VkQnV0dG9uXCIgbnpUeXBlPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJmaWx0ZXJcIj48L3NwYW4+XG4gICAgICAgICAgICDYrNiz2KrYrNmI24wg2b7bjNi02LHZgdiq2YdcbiAgICAgICAgPC9idXR0b24+IC0tPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZSBjbGFzcz1cInctZnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJncmlkIGdhcC14LTQgcC00IG1heC1oLVs0MDBweF0gb3ZlcmZsb3ctYXV0b1wiIFtuZ0NsYXNzXT1cInsgJ2dyaWQtY29scy0xJzogX2ZpbHRlckJveEl0ZW1zLmxlbmd0aCA9PSAxLCAnZ3JpZC1jb2xzLTInOiBfZmlsdGVyQm94SXRlbXMubGVuZ3RoID4gMSB9XCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2ZpbHRlckJveEl0ZW1zXCIgW25nQ2xhc3NdPVwieyAnY29sLXNwYW4tMic6IGl0ZW0udHlwZSA9PSAnZGF0ZScgfHwgaXRlbS50eXBlID09ICdkYXRlLXRpbWUnIHx8IGl0ZW0uY29sU3BhbiA9PSAyIH1cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2RhdGUnIHx8IGl0ZW0udHlwZSA9PSAnZGF0ZS10aW1lJ1wiIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAteC00XCI+XG4gICAgICAgICAgICAgICAgPG56LWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPG56LWZvcm0tbGFiZWw+2KfYsiDYqtin2LHbjNiuPC9uei1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHFleWRhci1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWUgIT0gbnVsbCA/IGl0ZW0udmFsdWVbMF0gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2VWYWx1ZSk9XCJjaGFuZ2VEYXRlUGlja2VyVmFsdWUoJGV2ZW50LCBpdGVtLCAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb2RheV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFbXB0eV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJUeXBlXT1cIidqYWxhbGknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9XCJ5eXl5LU1NLWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcnRsXT1cInRydWVcIj48L3FleWRhci1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPC9uei1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPG56LWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPG56LWZvcm0tbGFiZWw+2KrYpyDYqtin2LHbjNiuPC9uei1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHFleWRhci1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWUgIT0gbnVsbCA/IGl0ZW0udmFsdWVbMV0gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2VWYWx1ZSk9XCJjaGFuZ2VEYXRlUGlja2VyVmFsdWUoJGV2ZW50LCBpdGVtLCAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb2RheV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFbXB0eV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJUeXBlXT1cIidqYWxhbGknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9XCJ5eXl5LU1NLWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcnRsXT1cInRydWVcIj48L3FleWRhci1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPC9uei1mb3JtLWl0ZW0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2VudW0nIHx8IGl0ZW0udHlwZSA9PSAnc2VsZWN0JyB8fCBpdGVtLnR5cGUgPT0gJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAgPG56LWZvcm0taXRlbSBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1sYWJlbD57eyBpdGVtLmxhYmVsIH19PC9uei1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bnotc2VsZWN0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCIgbnpTaG93U2VhcmNoIG56U2VydmVyU2VhcmNoIChuek9uU2VhcmNoKT1cImhhbmRsZVNlYXJjaFNlbGVjdEJveCgkZXZlbnQsIGl0ZW0pXCIgICpuZ0lmPVwiaXRlbS5zZXJ2ZXJTaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtMiBvZiBpdGVtLml0ZW1zXCIgW256VmFsdWVdPVwiaXRlbTIudmFsdWVcIiBbbnpMYWJlbF09XCJpdGVtMi5sYWJlbCB8IHRyYW5zbGF0ZVwiPjwvbnotb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L256LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPG56LXNlbGVjdCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiIG56U2hvd1NlYXJjaCAgKm5nSWY9XCIhaXRlbS5zZXJ2ZXJTaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtMiBvZiBpdGVtLml0ZW1zXCIgW256VmFsdWVdPVwiaXRlbTIudmFsdWVcIiBbbnpMYWJlbF09XCJpdGVtMi5sYWJlbCB8IHRyYW5zbGF0ZVwiPjwvbnotb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L256LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L256LWZvcm0taXRlbT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAndHJlZS1zZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgPG56LWZvcm0taXRlbSBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1sYWJlbD57eyBpdGVtLmxhYmVsIH19PC9uei1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bnotdHJlZS1zZWxlY3QgY2xhc3M9XCJ3LWZ1bGxcIiBbbnpOb2Rlc109XCJpdGVtLm5vZGVzXCIgbnpWaXJ0dWFsSGVpZ2h0PVwiMzIwcHhcIiBuelNob3dTZWFyY2ggWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCI+PC9uei10cmVlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L256LWZvcm0taXRlbT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnc3RyaW5nJyB8fCBpdGVtLnR5cGUgPT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgIDxuei1mb3JtLWl0ZW0gY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG56LWZvcm0tbGFiZWw+e3sgaXRlbS5sYWJlbCB9fTwvbnotZm9ybS1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbnotaW5wdXQgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCIgLz5cbiAgICAgICAgICAgICAgICA8L256LWZvcm0taXRlbT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBwLTQgYm9yZGVyLXQgYm9yZGVyLXQtc2xhdGUtMjAwXCI+XG4gICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cInByaW1hcnlcIiAoY2xpY2spPVwiZmlsdGVyKClcIj7Yp9i52YXYp9mEPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cImRlZmF1bHRcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPtm+2Kfaqdiz2KfYstuMINmIINio2LPYqtmGPC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPCEtLSB0ZW1wbGF0ZSBpdGVtcyBib3ggIC0tPlxuPG5nLXRlbXBsYXRlICNjb250ZW50RmlsdGVyVGVtcGxhdGUgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCIgKm5nSWY9XCJmaWx0ZXJUZW1wbGF0ZUl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwicC0yIHJvdW5kZWQtbGcgY3Vyc29yLXBvaW50ZXIgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDBcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJUZW1wbGF0ZUl0ZW1zXCIgKGNsaWNrKT1cInNldFRlbXBsYXRlRmlsdGVyKGl0ZW0pXCI+e3sgaXRlbS50aXRsZSB9fTwvbGk+XG4gICAgPC91bD5cbiAgICA8cCAqbmdJZj1cImZpbHRlclRlbXBsYXRlSXRlbXMubGVuZ3RoID09IDBcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+2YLYp9mE2KjbjCDYrNmH2Kog2YbZhdin24zYtCDZiNis2YjYryDZhtiv2KfYsdivPC9wPlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgcHgtNCBweS0yIGgtMTRcIiAqbmdJZj1cImlzVG9vbGJhciAmJiBpc0ZpbHRlckhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtc20gdGV4dC1ibHVlLTUwMFwiPtmB24zZhNiq2LHZh9in24wg2KfYudmF2KfZhCDYtNiv2Yc6PC9zcGFuPlxuICAgICAgICA8dWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgcm91bmRlZC1tZCBweC0yIHB5LTEgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgaC04XCIgKm5nSWY9XCJmaWx0ZXJJdGVtc1ZhbHVlcy5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbGF0ZS04MDAgZm9udC1tZWRpdW0gdGV4dC1zbVwiPtio2K/ZiNmGINmB24zZhNiq2LE8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgcm91bmRlZC1tZCBweC0yIHB5LTEgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgaC04XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVySXRlbXNWYWx1ZXNcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LXNsYXRlLTUwMCB0ZXh0LXNtXCI+e3sgaXRlbS5sYWJlbCB9fTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbGF0ZS04MDAgZm9udC1tZWRpdW0gdGV4dC1zbVwiPnt7IGl0ZW0udmFsdWUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXRpbWVzIGN1cnNvci1wb2ludGVyIHBzLTJcIiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGl0ZW0pXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIiAqbmdJZj1cImlkICE9IG51bGxcIj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwiZGVmYXVsdFwiICpuZ0lmPVwiZmlsdGVySXRlbXNWYWx1ZXMubGVuZ3RoID4gMCB8fCBncmlkSWQgIT0gbnVsbFwiIChjbGljayk9XCJzYXZlRmlsdGVyR3JpZCgpXCI+XG4gICAgICAgICAgICB7eyBncmlkSWQgPT0gbnVsbCA/ICfYsNiu24zYsdmHINmB24zZhNiq2LEnIDogJ9in2LnZhdin2YQg2KrYutuM24zYsdin2Kog2YHbjNmE2KrYsScgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cImRlZmF1bHRcIiAqbmdJZj1cImdyaWRJZCAhPSBudWxsXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKCk7IGdyaWRJZCA9IG51bGxcIj7ZhNi62Yg8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bnotbW9kYWwgWyhuelZpc2libGUpXT1cImlzVmlzaWJsZU1vZGFsXCIgbnpUaXRsZT1cItin2YHYstmI2K/ZhiDZgtin2YTYqCDYrNiv24zYr1wiIChuek9uQ2FuY2VsKT1cImhhbmRsZUNhbmNlbE1vZGFsKClcIiAobnpPbk9rKT1cImhhbmRsZU9rTW9kYWwoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm56TW9kYWxDb250ZW50PlxuICAgICAgICA8bnotZm9ybS1pdGVtIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICA8bnotZm9ybS1sYWJlbD7YudmG2YjYp9mGINmC2KfZhNioPC9uei1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbnotaW5wdXQgWyhuZ01vZGVsKV09XCJ0ZW1wbGF0ZU5hbWVcIiAvPlxuICAgICAgICA8L256LWZvcm0taXRlbT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbnotbW9kYWw+XG5cbjxhZy1ncmlkLWFuZ3VsYXJcbiAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICBbc3R5bGVdPVwiaXNUb29sYmFyID8gJ2hlaWdodDogY2FsYygxMDAlIC0gMXJlbSAtIDExNHB4KTsnIDogJ2hlaWdodDogMTAwJTsnXCJcbiAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcbiAgICBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcbiAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gICAgW3BhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yXT1cInBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yXCJcbiAgICBbY2xhc3NdPVwidGhlbWVDbGFzc1wiXG4gICAgW3Jvd0hlaWdodF09XCI0OFwiXG4gICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXG4gICAgW2VuYWJsZUFkdmFuY2VkRmlsdGVyXT1cImVuYWJsZUFkdmFuY2VkRmlsdGVyXCJcbiAgICBbZW5hYmxlUnRsXT1cInJ0bFwiXG4gICAgW3RyZWVEYXRhXT1cInRyZWVNb2RlbFwiXG4gICAgW2F1dG9Hcm91cENvbHVtbkRlZl09XCJhdXRvR3JvdXBDb2x1bW5EZWZcIlxuICAgIFtpc1NlcnZlclNpZGVHcm91cF09XCJpc1NlcnZlclNpZGVHcm91cFwiXG4gICAgW2dldFNlcnZlclNpZGVHcm91cEtleV09XCJnZXRTZXJ2ZXJTaWRlR3JvdXBLZXlcIlxuICAgIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcbiAgICBbcm93RGF0YV09XCJyb3dEYXRhXCJcbiAgICBbc2VydmVyU2lkZURhdGFzb3VyY2VdPVwiZGF0YXNvdXJjZVwiXG4gICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCJcbiAgICBbY2FjaGVCbG9ja1NpemVdPVwicGFnaW5hdGlvblBhZ2VTaXplXCJcbiAgICBbbWF4QmxvY2tzSW5DYWNoZV09XCIyXCJcbiAgICBbY29udGV4dF09XCJ7IGFjdGlvbkl0ZW1zOiBhY3Rpb25JdGVtcyB9XCJcbiAgICAoY2VsbERvdWJsZUNsaWNrZWQpPVwiY2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgW2F1dG9TaXplU3RyYXRlZ3ldPVwiX2F1dG9Db2x1bW5TaXplXCJcbiAgICBbcm93U2VsZWN0aW9uXT1cIl9yb3dTZWxlY3Rpb25cIlxuICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cInNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3RoZW1lXT1cIlwiXG4gICAgW2dldFJvd0NsYXNzXT1cImdldFJvd0NsYXNzXCJcbiAgICAjZ3JpZCAvPlxuIl19
1165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQXdKLGNBQWMsRUFBb0csTUFBTSwyQkFBMkIsQ0FBQztBQUNuVCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHNUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU01QixNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNZLFVBQTRCLEVBQzVCLElBQXVCLEVBQ3ZCLE1BQW9CO1FBRnBCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFNekIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUN4Qyxr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Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJSyxjQUFjO3NCQUR4QixLQUFLO2dCQWFOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBZU4sWUFBWTtzQkFEWCxLQUFLO2dCQWlCSyxlQUFlO3NCQUR6QixLQUFLO2dCQTBCSyxXQUFXO3NCQURyQixLQUFLO2dCQXFGTixTQUFTO3NCQURSLEtBQUs7Z0JBSUssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGxEb3VibGVDbGlja2VkRXZlbnQsIENvbERlZiwgR3JpZEFwaSwgSURhdGVGaWx0ZXJQYXJhbXMsIElSb3dOb2RlLCBJU2VydmVyU2lkZURhdGFzb3VyY2UsIElTZXJ2ZXJTaWRlR2V0Um93c1BhcmFtcywgUm93TW9kZWxUeXBlLCBSb3dTZWxlY3Rpb25PcHRpb25zLCBTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsIFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRHcmlkU3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uSXRlbXMsIENvbHVtbkl0ZW1zLCBEYXRhc291cmNlT3V0cHV0TW9kZWwsIEZpbHRlckJveEl0ZW1zTW9kZWwsIEZpbHRlckJveE1vZGVsLCBGaWx0ZXJHcmlkSXRlbXNNb2RlbCwgRmlsdGVySXRlbXNNb2RlbCwgRmlsdGVySXRlbXNWYWx1ZXNNb2RlbCwgRmlsdGVyT3BlcmF0b3IsIEZpbHRlclRlbXBsYXRlTW9kZWwsIEdyaWRBY3Rpb25PdXRwdXQsIEdyaWRJbnB1dE1vZGVsLCBHcmlkUmVxdWVzdFBhcmFtLCBTb3J0TW9kZWwsIFRvb2xiYXJJdGVtcyB9IGZyb20gJy4uLy4uL21vZGVscy9zaGFyZWQubW9kZWwnO1xuaW1wb3J0IHsgSkRhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IEFjdGlvbnNDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi9pbmRleC5hcGknO1xuaW1wb3J0IHsgRGF0ZUZpbHRlciwgVGltZUZpbHRlciB9IGZyb20gJy4vZmlsdGVyL2luZGV4LmFwaSc7XG5pbXBvcnQgeyBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbmRleC5hcGknO1xuaW1wb3J0IHsgZGIgfSBmcm9tICcuLi8uLi9kYic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWdyaWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfdG9hc3Q6IFRvYXN0U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmRhdGFzb3VyY2UgPSB0aGlzLmNyZWF0ZVNlcnZlclNpZGVEYXRhc291cmNlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgZ3JpZEFwaSE6IEdyaWRBcGk7XG4gICAgcHVibGljIGlzU2VydmVyU2lkZUdyb3VwO1xuICAgIHB1YmxpYyBnZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBudWxsO1xuICAgIHB1YmxpYyBncm91cERlZmF1bHRFeHBhbmRlZCA9IC0xO1xuICAgIHByaXZhdGUgX3RyZWVHcm91cENvbHVtbjogc3RyaW5nID0gbnVsbDtcbiAgICBfcm93U2VsZWN0aW9uOiBSb3dTZWxlY3Rpb25PcHRpb25zID0ge1xuICAgICAgICBtb2RlOiAnc2luZ2xlUm93JyxcbiAgICAgICAgY2hlY2tib3hlczogZmFsc2VcbiAgICB9O1xuICAgIGRhdGFzb3VyY2U6IElTZXJ2ZXJTaWRlRGF0YXNvdXJjZTtcbiAgICB0aGVtZUNsYXNzOiBzdHJpbmcgPSBcImFnLXRoZW1lLXF1YXJ0elwiO1xuICAgIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gICAgdmlzaWJsZUZpbHRlckJveDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIF9jb2x1bW46IENvbHVtbkl0ZW1zW10gPSBbXTtcbiAgICBfZmlsdGVyQm94SXRlbXM6IEZpbHRlckJveE1vZGVsW10gPSBbXTtcbiAgICBmaWx0ZXJJdGVtc1ZhbHVlczogRmlsdGVySXRlbXNWYWx1ZXNNb2RlbFtdID0gW107XG4gICAgZmlsdGVyVGVtcGxhdGVJdGVtczogRmlsdGVyVGVtcGxhdGVNb2RlbFtdID0gW107XG4gICAgdmlzaWJsZUZpbHRlclRlbXBsYXRlQm94OiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNWaXNpYmxlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBncmlkTW9kZWw6IEdyaWRJbnB1dE1vZGVsID0gbnVsbDtcbiAgICB0ZW1wbGF0ZU5hbWU6IHN0cmluZyA9IG51bGw7XG4gICAgZ3JpZElkOiBzdHJpbmcgPSBudWxsO1xuICAgIHNlYXJjaENoYW5nZU9ic2VydmVyOiBhbnk7XG4gICAgX2F1dG9Db2x1bW5TaXplOiBTaXplQ29sdW1uc1RvRml0R3JpZFN0cmF0ZWd5IHwgU2l6ZUNvbHVtbnNUb0ZpdFByb3ZpZGVkV2lkdGhTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3kgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgX2ZpbHRlckl0ZW1zOiBGaWx0ZXJJdGVtc01vZGVsW107XG4gICAgaXNGaWx0ZXJIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhdXRvR3JvdXBDb2x1bW5EZWY6IENvbERlZiA9IHtcbiAgICAgICAgaGVhZGVyTmFtZTogXCJcIixcbiAgICAgICAgbWluV2lkdGg6IDI1MCxcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIHN1cHByZXNzQ291bnQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlclBhcmFtczoge1xuICAgICAgICAgICAgbWF4TnVtQ29uZGl0aW9uczogMVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgbWluV2lkdGg6IDE1MCxcbiAgICAgICAgZmlsdGVyOiAnYWdUZXh0Q29sdW1uRmlsdGVyJyxcbiAgICAgICAgc3VwcHJlc3NIZWFkZXJNZW51QnV0dG9uOiB0cnVlLFxuICAgICAgICBzdXBwcmVzc0hlYWRlckNvbnRleHRNZW51OiB0cnVlLFxuICAgICAgICBzdXBwcmVzc1NpemVUb0ZpdDogdHJ1ZVxuICAgIH07XG5cbiAgICBnZXRSb3dDbGFzcyhwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5ub2RlLnJvd0luZGV4ICUgMiAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdyb3ctb2RkJ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cblxuICAgIEBPdXRwdXQoKVxuICAgIG9uQWN0aW9uOiBFdmVudEVtaXR0ZXI8R3JpZEFjdGlvbk91dHB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvblRvb2xiYXI6IEV2ZW50RW1pdHRlcjxUb29sYmFySXRlbXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbldpZHRoOiBudW1iZXIgPSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpc1Jvd1NlbGVjdGlvbih2OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgbW9kZTogJ211bHRpUm93JyxcbiAgICAgICAgICAgICAgICBjaGVja2JveGVzOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VkKGU6IFNlbGVjdGlvbkNoYW5nZWRFdmVudCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgICAgICBlLmFwaS5mb3JFYWNoTm9kZSgoZWwpID0+IHtcbiAgICAgICAgICAgIGlmIChlbC5pc1NlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGVsLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdChpdGVtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnNlbGVjdEFsbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlRmlsdGVyT3JEYXRhOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHJvd01vZGVsVHlwZTogUm93TW9kZWxUeXBlID0gJ3NlcnZlclNpZGUnO1xuXG4gICAgQElucHV0KClcbiAgICBzZXJ2ZXJTaWRlU29ydDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlcnZlclNpZGVGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBpc1Rvb2xiYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBydGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwYWdpbmF0aW9uUGFnZVNpemUgPSAyNTtcblxuICAgIEBJbnB1dCgpXG4gICAgcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3I6IG51bWJlcltdIHwgYm9vbGVhbiA9IFsyNV07XG5cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZUFkdmFuY2VkRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHRyZWVNb2RlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBpc0xlYWY6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcm93RGF0YTogYW55ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcmVuZGVyQ2VsbENsYXNzUnVsZXM6IGFueSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgYXV0b0NvbHVtblNpemUoKTogU2l6ZUNvbHVtbnNUb0ZpdEdyaWRTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfCBTaXplQ29sdW1uc1RvQ29udGVudFN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db2x1bW5TaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGF1dG9Db2x1bW5TaXplKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHRoaXMuX2F1dG9Db2x1bW5TaXplID0geyB0eXBlOiAnZml0Q2VsbENvbnRlbnRzJyB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYXV0b0NvbHVtblNpemUgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dBZHZhbmNlZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtc1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgICAgIGFsdDogJ9mI24zYsdin24zYtCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICAgICAgYWx0OiAn2K3YsNmBJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIEBJbnB1dCgpXG4gICAgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbXNbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2luc2VydCcsXG4gICAgICAgICAgICBpY29uOiAncGx1cycsXG4gICAgICAgICAgICB0ZXh0OiAn2KfbjNis2KfYryDYsdiv24zZgSDYrNiv24zYrycsXG4gICAgICAgICAgICB0eXBlOiAncHJpbWFyeSdcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgY29kZTogJ3JlZnJlc2gnLFxuICAgICAgICAvLyAgICAgaWNvbjogJ3N5bmMnLFxuICAgICAgICAvLyAgICAgdGV4dDogJ9io2LHZiNiy2LHYs9in2YbbjCcsXG4gICAgICAgIC8vICAgICB0eXBlOiAnZGVmYXVsdCdcbiAgICAgICAgLy8gfVxuICAgIF07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHJlZUdyb3VwQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlR3JvdXBDb2x1bW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHJlZUdyb3VwQ29sdW1uKHY6IHN0cmluZykge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdGhpcy5fdHJlZUdyb3VwQ29sdW1uID0gdjtcbiAgICAgICAgICAgIHRoaXMuaXNTZXJ2ZXJTaWRlR3JvdXAgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUl0ZW0ubGFzdE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUl0ZW1bdl07XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSXRlbVt2XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFJdGVtW3ZdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmhlYWRlck5hbWUgPSB2O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsdGVySXRlbXModjogRmlsdGVySXRlbXNNb2RlbFtdKSB7XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJJdGVtcyA9IHY7XG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVySGVhZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHYuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2ZpbHRlckJveEl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZmllbGQgPT0gZWwuZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGVsLnR5cGUgPT0gJ2VudW0nIHx8IGVsLnR5cGUgPT0gJ3NlbGVjdCcgfHwgZWwudHlwZSA9PSAndHJlZS1zZWxlY3QnKSAmJiBlbC5pdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5pdGVtcz8uKG51bGwpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlczogTnpUcmVlTm9kZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC50eXBlID09ICd0cmVlLXNlbGVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udmVydFRvTnpUcmVlTm9kZXMgPSAoaXRlbXM6IEZpbHRlckJveEl0ZW1zTW9kZWxbXSk6IE56VHJlZU5vZGVPcHRpb25zW10gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBTdHJpbmcoaXRlbS52YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMZWFmOiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlbiA/IGNvbnZlcnRUb056VHJlZU5vZGVzKGl0ZW0uY2hpbGRyZW4pIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBjb252ZXJ0VG9OelRyZWVOb2RlcyhyZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbC5kZWZhdWx0VmFsdWUgIT0gbnVsbCA/IGVsLmRlZmF1bHRWYWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiByZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBlbC5wb3NpdGlvbiA/IGVsLnBvc2l0aW9uIDogJ2ZpbHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IGVsLmNvbFNwYW4gPyBlbC5jb2xTcGFuIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogZWwuc29ydCA/IGVsLnNvcnQgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyU2lkZTogZWwuc2VydmVyU2lkZSA/IGVsLnNlcnZlclNpZGUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJUcnVlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJGYWxzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbC5kZWZhdWx0VmFsdWUgIT0gbnVsbCA/IGVsLmRlZmF1bHRWYWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZWwudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZWwucG9zaXRpb24gPyBlbC5wb3NpdGlvbiA6ICdmaWx0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IGVsLmNvbFNwYW4gPyBlbC5jb2xTcGFuIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBlbC5zb3J0ID8gZWwuc29ydCA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyU2lkZTogZWwuc2VydmVyU2lkZSA/IGVsLnNlcnZlclNpZGUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlczogW11cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWwuZGVmYXVsdFZhbHVlICE9IG51bGwgPyBlbC5kZWZhdWx0VmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGVsLnBvc2l0aW9uID8gZWwucG9zaXRpb24gOiAnZmlsdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiBlbC5jb2xTcGFuID8gZWwuY29sU3BhbiA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogZWwuc29ydCA/IGVsLnNvcnQgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclNpZGU6IGVsLnNlcnZlclNpZGUgPyBlbC5zZXJ2ZXJTaWRlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zb3J0IC0gYi5zb3J0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJMYWJlbFZhbHVlKCk7XG4gICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGZldGNoRGF0YTogKGZpbHRlckdyaWQ6IEdyaWRJbnB1dE1vZGVsLCByZXF1ZXN0UGFyYW1zOiBHcmlkUmVxdWVzdFBhcmFtKSA9PiBQcm9taXNlPERhdGFzb3VyY2VPdXRwdXRNb2RlbD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGNvbHVtbih2OiBDb2x1bW5JdGVtc1tdKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gW107XG4gICAgICAgICAgICBpZiAodiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1uID0gdjtcbiAgICAgICAgICAgICAgICB2LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaWx0ZXI6IGFueSA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc29ydGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zOiBJRGF0ZUZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE51bUNvbmRpdGlvbnM6IDFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnWUVTJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZklucHV0czogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiAnZmFsc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdOTycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlbC5maWx0ZXJJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6IGVsLmZpbHRlckl0ZW1zW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbC5maWx0ZXJJdGVtc1twcm9wZXJ0eV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnU2V0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdEYXRlQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVyQm94SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5maWVsZCA9PSBlbC5maWVsZCB8fCBpdGVtLmZpZWxkID09IGVsLnNlYXJjaEZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLmZpbHRlciAhPSB1bmRlZmluZWQgJiYgKGVsLmZpbHRlciA9PSAnZmlsdGVyLWJveCcgfHwgZWwuZmlsdGVyID09ICdub25lJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5zb3J0YWJsZSAhPSB1bmRlZmluZWQgJiYgIWVsLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZCAhPSB0aGlzLl90cmVlR3JvdXBDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJZDogZWwuaWQgPyBlbC5pZCA6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICdhZy1ib29sZWFuLWNlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3NSdWxlczogdGhpcy5yZW5kZXJDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZSA/ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBzdHJva2U9XCJncmVlblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1jaGVja1wiPjxwYXRoIGQ9XCJNMjAgNkw5IDE3TDQgMTJcIi8+PC9zdmc+JyA6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHJva2U9XCJyZWRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXIteFwiPjxsaW5lIHgxPVwiMThcIiB5MT1cIjZcIiB4Mj1cIjZcIiB5Mj1cIjE4XCIgLz48bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+PC9zdmc+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdlbnVtJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSWQ6IGVsLmlkID8gZWwuaWQgOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHRoaXMucmVuZGVyQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQocGFyYW1zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSWQ6IGVsLmlkID8gZWwuaWQgOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIgPyBEYXRlRmlsdGVyIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHRoaXMucmVuZGVyQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICd0aW1lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSWQ6IGVsLmlkID8gZWwuaWQgOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBUaW1lRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB0aGlzLnJlbmRlckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZS5zdWJzdHIoMCwgNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkOiBlbC5pZCA/IGVsLmlkIDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyID8gRGF0ZUZpbHRlciA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB0aGlzLnJlbmRlckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdwcmljZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkOiBlbC5pZCA/IGVsLmlkIDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB0aGlzLnJlbmRlckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJZDogZWwuaWQgPyBlbC5pZCA6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogODAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3NSdWxlczogdGhpcy5yZW5kZXJDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGltZyBjbGFzcz1cInJvdW5kZWQtZnVsbCBtdC0xXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgc3JjPVwiJHtwYXJhbXMudmFsdWV9XCIvPmA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkOiBlbC5pZCA/IGVsLmlkIDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHRoaXMucmVuZGVyQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZmllbGQgPSBlbC5maWVsZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkRlZnMuZmlsdGVyKChlbCkgPT4gZWwuZmlsdGVyICE9IGZhbHNlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJIZWFkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW4uZmlsdGVyKChlbCkgPT4gZWwuZmlsdGVyID09ICdmaWx0ZXItYm94JykuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5maWx0ZXJJdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWwuZmlsdGVySXRlbXMpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbC5maWx0ZXJJdGVtc1tpdGVtXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsLmZpbHRlckl0ZW1zW2l0ZW1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVsLmZpbHRlckl0ZW1zKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJUcnVlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJGYWxzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpbHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclNpZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnNvcnQgLSBiLnNvcnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9uSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogdGhpcy5hY3Rpb25XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEFjdGlvbnNDZWxsUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAocGFyYW1zOiBHcmlkQWN0aW9uT3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25BY3Rpb24uZW1pdChwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgY2hhbmdlRGF0ZVBpY2tlclZhbHVlKGUsIGl0ZW06IEZpbHRlckJveE1vZGVsLCBpbmRleCkge1xuICAgICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpdGVtLnZhbHVlW2luZGV4XSA9IGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gW251bGwsIG51bGxdO1xuICAgICAgICAgICAgaXRlbS52YWx1ZVtpbmRleF0gPSBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2VsbERvdWJsZUNsaWNrZWQoZTogQ2VsbERvdWJsZUNsaWNrZWRFdmVudCkge1xuICAgICAgICB0aGlzLm9uQ2xpY2tlZC5lbWl0KHsgLi4uZS5kYXRhLCBjb2xJZDogZS5jb2x1bW4uZ2V0Q29sSWQoKSB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhpdGVtOiBUb29sYmFySXRlbXMpIHtcbiAgICAgICAgdGhpcy5vblRvb2xiYXIuZW1pdChpdGVtKTtcbiAgICB9XG5cbiAgICBzYXZlRmlsdGVyR3JpZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fdG9hc3Quc2hvdygn2LTZhtin2LPZhyDbjCDYrNiv2YjZhCDZiNin2LHYryDZhti02K/ZhyDYp9iz2KonLCAnZXJyb3InKTtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRJZCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmlzaWJsZU1vZGFsID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMuZ2V0KHRoaXMuZ3JpZElkKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMucHV0KHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVzLFxuICAgICAgICAgICAgICAgICAgICBncmlkOiB0aGlzLmdyaWRNb2RlbCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfZgtin2YTYqCDYqNinINmF2YjZgdmC24zYqiDYqNix2YjYstix2LPYp9mG24wg2LTYrycsICdzdWNjZXNzJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBoYW5kbGVDYW5jZWxNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGVNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGhhbmRsZU9rTW9kYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlTmFtZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfYudmG2YjYp9mGINmC2KfZhNioINmI2KfYsdivINmG2LTYr9mHINin2LPYqicsICdlcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkSWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMuYWRkKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmdyaWRJZCxcbiAgICAgICAgICAgIGdyaWQ6IHRoaXMuZ3JpZE1vZGVsLFxuICAgICAgICAgICAgdGFibGVJZDogdGhpcy5pZCxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRlbXBsYXRlTmFtZSxcbiAgICAgICAgICAgIHVzZXJOYW1lOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfZgtin2YTYqCDYqNinINmF2YjZgdmC24zYqiDYsNiu24zYsdmHINi02K8nLCAnc3VjY2VzcycpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5mZXRjaFRlbXBsYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZnJlc2gocHVyZ2UgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaFNlcnZlclNpZGUoeyBwdXJnZSB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3dEYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaENlbGxzKCk7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbignY29sdW1uRGVmcycsIHRoaXMuY29sdW1uRGVmcyk7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbignbG9hZGluZycsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEobnVsbCwgbnVsbCkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0RhdGEgPSBkYXRhLml0ZW1zO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKCdsb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkdyaWRSZWFkeShwYXJhbXM6IGFueSkge1xuICAgICAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xuICAgICAgICBpZiAodGhpcy5yb3dNb2RlbFR5cGUgPT0gJ2NsaWVudFNpZGUnKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRGF0YShudWxsLCBudWxsKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IGRhdGEuaXRlbXM7XG4gICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmZhaWwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWR2YW5jZWRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlQWR2YW5jZWRGaWx0ZXIgPSAhdGhpcy5lbmFibGVBZHZhbmNlZEZpbHRlcjtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2hvd0FkdmFuY2VkRmlsdGVyQnVpbGRlcigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FnLWljb24tbWF4aW1pemUnKVswXSBhcyBIVE1MRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvdXRlVG9Ob2RlKHJvd05vZGU6IElSb3dOb2RlKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXJvd05vZGUucGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Um91dGVUb05vZGUocm93Tm9kZS5wYXJlbnQpLFxuICAgICAgICAgICAgcm93Tm9kZS5rZXkgPyByb3dOb2RlLmtleSA6IHJvd05vZGUuZGF0YS5lbXBsb3llZU5hbWUsXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcmVmcmVzaE5vZGUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRBcGkuZ2V0Um93Tm9kZShpZCk7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXRSb3V0ZVRvTm9kZShzZWxlY3RlZFJvd3MpO1xuICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaFNlcnZlclNpZGUoe1xuICAgICAgICAgICAgcHVyZ2U6IHRydWUsXG4gICAgICAgICAgICByb3V0ZTogcm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlVmlzaWJsZUZpbHRlckJveCgpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGEuc29ydCAtIGIuc29ydDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlRmlsdGVyQm94ID0gdHJ1ZTtcbiAgICAgICAgfSwgNTApO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVGaWx0ZXJCb3ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGVsLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRGaWx0ZXJNb2RlbChudWxsKTtcbiAgICAgICAgdGhpcy5ncmlkQXBpLm9uRmlsdGVyQ2hhbmdlZCgpO1xuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cblxuICAgIHJlZnJlc2hQYXJlbnROb2RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0Um91dGVUb05vZGUoc2VsZWN0ZWRSb3dzLnBhcmVudCk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7XG4gICAgICAgICAgICBwdXJnZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvdXRlOiByb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyTGFiZWxWYWx1ZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVGaWx0ZXJCb3ggPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICB9XG5cbiAgICBzZXRUZW1wbGF0ZUZpbHRlcihpdGVtOiBGaWx0ZXJUZW1wbGF0ZU1vZGVsKSB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3JNYXAgPSB7XG4gICAgICAgICAgICBFUTogJ2VxdWFscycsXG4gICAgICAgICAgICBORVE6ICdub3RFcXVhbCcsXG4gICAgICAgICAgICBMVDogJ2xlc3NUaGFuJyxcbiAgICAgICAgICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICAgICBHVDogJ2dyZWF0ZXJUaGFuJyxcbiAgICAgICAgICAgIEdURTogJ2dyZWF0ZXJUaGFuT3JFcXVhbCcsXG4gICAgICAgICAgICBTVEFSVFNXSVRIOiAnc3RhcnRzV2l0aCcsXG4gICAgICAgICAgICBFTkRTV0lUSDogJ2VuZHNXaXRoJyxcbiAgICAgICAgICAgIExJS0U6ICdjb250YWlucycsXG4gICAgICAgICAgICBOT1RMSUtFOiAnbm90Q29udGFpbnMnLFxuICAgICAgICAgICAgSU46ICdpblJhbmdlJyxcbiAgICAgICAgICAgIFRSVU5DX0VROiAnZXF1YWxzJyxcbiAgICAgICAgICAgIFRSVU5DX05FUTogJ25vdEVxdWFsJyxcbiAgICAgICAgICAgIFRSVU5DX0dUOiAnZ3JlYXRlclRoYW4nLFxuICAgICAgICAgICAgVFJVTkNfR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgICAgIFRSVU5DX0xUOiAnbGVzc1RoYW4nLFxuICAgICAgICAgICAgVFJVTkNfTFRFOiAnbGVzc1RoYW5PckVxdWFsJyxcbiAgICAgICAgICAgIEJFVFdFRU46ICdpblJhbmdlJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5ncmlkLmZpbHRlci5maWx0ZXJzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVidWdnZXJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5kRWwgPSB0aGlzLl9jb2x1bW4uZmluZCgoaXRlbSkgPT4gaXRlbS5maWVsZCA9PSBlbC5maWVsZCB8fCBpdGVtLnNlYXJjaEZpZWxkID09IGVsLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBpZiAoZmluZEVsICYmIHRoaXMuY29sdW1uRGVmcy5maW5kKChpdGVtKSA9PiBpdGVtLmZpZWxkID09IGZpbmRFbC5maWVsZCAmJiBpdGVtLmZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkT3BlcmF0b3IgPSBvcGVyYXRvck1hcFtlbC5vcGVyYXRvcl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5vcGVyYXRvciA9PT0gJ0JFVFdFRU4nIHx8IGVsLm9wZXJhdG9yID09PSAnSU4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Q29sdW1uRmlsdGVyTW9kZWwoZmluZEVsLmZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbWFwcGVkT3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZyb206IG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZWwudmFsdWVbMF0sIGZhbHNlLCAnWVlZWU1NREQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVG86IG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZWwudmFsdWVbMV0sIGZhbHNlLCAnWVlZWU1NREQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmluZEVsLnR5cGUgPT0gJ2RhdGUnIHx8IGZpbmRFbC50eXBlID09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZWwudmFsdWUsIGZhbHNlLCAnWVlZWU1NREQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC5vcGVyYXRvciA9PSBGaWx0ZXJPcGVyYXRvci50cnVuY0dyZWF0ZXJUaGFuRXF1YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Q29sdW1uRmlsdGVyTW9kZWwoZmluZEVsLmZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlRnJvbTogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldENvbHVtbkZpbHRlck1vZGVsKGZpbmRFbC5maWVsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVRvOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbmRFbC50eXBlID09ICd0aW1lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldENvbHVtbkZpbHRlck1vZGVsKGZpbmRFbC5maWVsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVsLnZhbHVlLnJlcGxhY2VBbGwoJzonLCAnJykuc3Vic3RyKDAsIDQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGVsLnZhbHVlLnJlcGxhY2VBbGwoJzonLCAnJykuc3Vic3RyKDAsIDQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaW5kRWwudHlwZSA9PSAnYm9vbGVhbicgfHwgZmluZEVsLnR5cGUgPT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Q29sdW1uRmlsdGVyTW9kZWwoZmluZEVsLmZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZWwudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBlbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Q29sdW1uRmlsdGVyTW9kZWwoZmluZEVsLmZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbWFwcGVkT3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBlbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZpbHRlckJveEl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5maWVsZCA9PSBlbC5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zW2luZGV4XS52YWx1ZSA9IGVsLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5ncmlkSWQgPSBpdGVtLmlkO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlRmlsdGVyVGVtcGxhdGVCb3ggPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlckxhYmVsVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5vbkZpbHRlckNoYW5nZWQoKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICB9LCAxMDApO1xuICAgIH1cblxuICAgIGhhbmRsZUZpbHRlckxhYmVsVmFsdWUoKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckJveEl0ZW1zLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaW5kRWwgPSB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzLmZpbmQoKGZpKSA9PiBmaS5maWVsZCA9PSBlbC5maWVsZCk7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgIHN3aXRjaCAoZWwudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlRm9ybSA9IGVsLnZhbHVlICE9IG51bGwgPyBlbC52YWx1ZVswXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVUbyA9IGVsLnZhbHVlICE9IG51bGwgJiYgZWwudmFsdWVbMV0gPyBlbC52YWx1ZVsxXSA6IG5ldyBEYXRlKCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBgJHtuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKGRhdGVGb3JtKX0gLSAke25ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZGF0ZVRvKX1gO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGVsLml0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT0gZWwudmFsdWUpPy5sYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZWwudmFsdWUgIT0gbnVsbCAmJiBlbC52YWx1ZSA9PSB0cnVlID8gJ1RydWUnIDogJ0ZhbHNlJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZWwudmFsdWUuc3Vic3RyKDAsIDUpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RyZWUtc2VsZWN0JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLnZhbHVlICE9IG51bGwgJiYgZWwudmFsdWUgIT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhdHRlblRyZWUgPSAobm9kZXMgPSBbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfLnJlZHVjZShub2RlcywgKGFjYywgbm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaChfLm9taXQobm9kZSwgJ2NoaWxkcmVuJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goLi4uZmxhdHRlblRyZWUobm9kZS5jaGlsZHJlbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBmbGF0dGVuVHJlZShlbC5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT0gZWwudmFsdWUpLmxhYmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFmaW5kRWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWwudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsLnZhbHVlID09IG51bGwgfHwgZWwudmFsdWUgPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzID0gdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcy5maWx0ZXIoKGZpKSA9PiBmaS5maWVsZCAhPSBlbC5maWVsZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmluZEVsLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbHRlcihpdGVtOiBGaWx0ZXJJdGVtc1ZhbHVlc01vZGVsKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZmlsdGVyQm94SXRlbXMuZmluZEluZGV4KChlbCkgPT4gZWwuZmllbGQgPT0gaXRlbS5maWVsZCk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJCb3hJdGVtc1tpbmRleF0udmFsdWUgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldENvbHVtbkZpbHRlck1vZGVsKGl0ZW0uZmllbGQsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLm9uRmlsdGVyQ2hhbmdlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVySXRlbXNWYWx1ZXMgPSB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzLmZpbHRlcigoZWwpID0+IGVsLmZpZWxkICE9IGl0ZW0uZmllbGQpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTZWFyY2hTZWxlY3RCb3goZSwgaXRlbTogRmlsdGVyQm94TW9kZWwpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaENoYW5nZU9ic2VydmVyKSB7XG4gICAgICAgICAgICBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENoYW5nZU9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApKVxuICAgICAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYy50YXJnZXQudmFsdWUgIT0gbnVsbCAmJiBjLnRhcmdldC52YWx1ZSAhPSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJJdGVtcy5maW5kKChlbCkgPT4gZWwuZmllbGQgPT0gaXRlbS5maWVsZCkuaXRlbXMoYy50YXJnZXQudmFsdWUpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXRlbXMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2VPYnNlcnZlci5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBjcmVhdGVTZXJ2ZXJTaWRlRGF0YXNvdXJjZSgpOiBJU2VydmVyU2lkZURhdGFzb3VyY2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Um93czogKHBhcmFtczogSVNlcnZlclNpZGVHZXRSb3dzUGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcjogRmlsdGVyR3JpZEl0ZW1zTW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZpbHRlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkID0ga2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nID8gdGhpcy5fdHJlZUdyb3VwQ29sdW1uIDoga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGVWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci5lcXVhbHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWdub3JlQ2FzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5fY29sdW1uLmZpbmQoKGVsKSA9PiBlbC5maWVsZCA9PSBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gdGhpcy5fdHJlZUdyb3VwQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsLnNlYXJjaEZpZWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBmaW5kRWwuc2VhcmNoRmllbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyVHlwZSA9PSAnY3VzdG9tLWRhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb20gJiYgcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci5iZXR3ZWVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFtwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tLCBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUb107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVZhbHVlID0gYCR7bmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tKX0gLSAke25ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG8pfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci50cnVuY0dyZWF0ZXJUaGFuRXF1YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlRnJvbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlVmFsdWUgPSBgJHtuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb20pfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvICYmIHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci50cnVuY0xlc3NUaGFuT3JFcXVhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlVmFsdWUgPSBgJHtuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlclR5cGUgPT0gJ2N1c3RvbS10aW1lJyAmJiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnRpbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuZXF1YWxzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYCR7cGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50aW1lLnN1YnN0cigwLCAyKX06JHtwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnRpbWUuc3Vic3RyKDIsIDIpfTowMGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udHlwZSAmJiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnR5cGUgPT0gJ2luUmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci5iZXR3ZWVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyLCBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlclRvXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVWYWx1ZSA9IGAke3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyfSAtICR7cGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXJUb31gXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRmlsdGVyT3BlcmF0b3JbcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciA9IEZpbHRlck9wZXJhdG9yW3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXIgIT0gbnVsbCA/IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyIDogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5kRWwgJiYgZmluZEVsLnR5cGUgPT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kRmlsdGVySXRlbXNFbCA9IHRoaXMuZmlsdGVySXRlbXNWYWx1ZXMuZmluZCgoZmkpID0+IGZpLmZpZWxkID09IGZpbmRFbC5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaW5kRmlsdGVySXRlbXNFbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zVmFsdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpbmRFbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmaW5kRWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJhbnNsYXRlVmFsdWUgIT0gbnVsbCA/IHRyYW5zbGF0ZVZhbHVlIDogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXJUeXBlID09ICdjdXN0b20tdGltZScgPyB2YWx1ZS5zdWJzdHIoMCwgNSkgOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kRmlsdGVySXRlbXNFbC52YWx1ZSA9IHRyYW5zbGF0ZVZhbHVlICE9IG51bGwgPyB0cmFuc2xhdGVWYWx1ZSA6IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZmlsdGVySXRlbXNWYWx1ZXMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5maWx0ZXJJdGVtc1ZhbHVlcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJJdGVtc1ZhbHVlcyA9IHN0cnVjdHVyZWRDbG9uZShbXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyTGFiZWxWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgc29ydHM6IFNvcnRNb2RlbFtdID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5fY29sdW1uLmZpbmQoKGVsKSA9PiBlbC5maWVsZCA9PSBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uY29sSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsLnNlYXJjaEZpZWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRzID0gW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5zb3J0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaW5kRWwuc2VhcmNoRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydHMgPSBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogcGFyYW1zLnJlcXVlc3Quc29ydE1vZGVsWzBdLnNvcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5jb2xJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JpZEZpbHRlcjogR3JpZElucHV0TW9kZWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRha2U6IHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCksXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHNraXA6IHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCkgKiBwYXJhbXMuYXBpLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpLFxuICAgICAgICAgICAgICAgICAgICBzb3J0c1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdFBhcmFtczogR3JpZFJlcXVlc3RQYXJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogcGFyYW1zLnBhcmVudE5vZGUuZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyQm94SXRlbXMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC5wb3NpdGlvbiA9PSAnZmlsdGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZWwudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci5jb250YWlucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzogY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gRmlsdGVyT3BlcmF0b3IuYmV0d2VlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbC52YWx1ZVswXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwudmFsdWVbMF0gPSBuZXcgRGF0ZSgnMTk5Ny0wMS0wMScpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnZhbHVlWzFdID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC52YWx1ZVsxXSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBGaWx0ZXJPcGVyYXRvci5lcXVhbHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZEZpbHRlci5maWx0ZXIuZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydW5jYXRlRGF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkRmlsdGVyLmRhdGFbZWwuZmllbGRdID0gZWwudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlRmlsdGVyT3JEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZUZpbHRlck9yRGF0YSAmJiAoKGdyaWRGaWx0ZXIuZGF0YSA9PSBudWxsIHx8IE9iamVjdC5rZXlzKGdyaWRGaWx0ZXIuZGF0YSkubGVuZ3RoID09IDApICYmIChncmlkRmlsdGVyLmZpbHRlci5maWx0ZXJzID09IG51bGwgfHwgZ3JpZEZpbHRlci5maWx0ZXIuZmlsdGVycy5sZW5ndGggPT0gMCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdC5zaG93KCfYqNix2KfbjCDZhtmF2KfbjNi0INin2LfZhNin2LnYp9iqINiMINin2YbYqtiu2KfYqCDbjNqpINmB24zZhNiq2LEg2KfZhNiy2KfZhduMINin2LPYqicsICd3YXJuaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YTogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE1vZGVsID0gZ3JpZEZpbHRlcjtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoRGF0YShncmlkRmlsdGVyLCByZXF1ZXN0UGFyYW1zKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiBkYXRhLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQ6IGRhdGEudG90YWxDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScgJiYgdGhpcy5ncmlkQXBpLmdldFNlcnZlclNpZGVTZWxlY3Rpb25TdGF0ZSgpWydzZWxlY3RBbGwnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZhaWwoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmZXRjaFRlbXBsYXRlKCkge1xuICAgICAgICBpZiAodGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICBkYi5ncmlkRmlsdGVySXRlbXMuZmlsdGVyKChlbCkgPT4gZWwudGFibGVJZCA9PSB0aGlzLmlkKS50b0FycmF5KCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJUZW1wbGF0ZUl0ZW1zID0gcmVzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mZXRjaFRlbXBsYXRlKCk7XG4gICAgfVxufSIsIjwhLS0gPGJ1dHRvbiAoY2xpY2spPVwiZW5hYmxlQWR2YW5jZWRGaWx0ZXI9IWVuYWJsZUFkdmFuY2VkRmlsdGVyXCI+YWR2YW5jZWQ8L2J1dHRvbj4gLS0+XG48ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB5LTQgYm9yZGVyLWIgYm9yZGVyLWItc2xhdGUtMjAwIG14LTRcIiAqbmdJZj1cImlzVG9vbGJhclwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxoNCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC0yeGxcIj57eyBsYWJlbCB9fTwvaDQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTNcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiB0b29sYmFySXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiBbbnpMb2FkaW5nXT1cIml0ZW0ubG9hZGluZyA/IGl0ZW0ubG9hZGluZyA6IGZhbHNlXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGl0ZW0pXCIgW256VHlwZV09XCJpdGVtLnR5cGVcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gW256VHlwZV09XCJpdGVtLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVZpc2libGVGaWx0ZXJCb3goKVwiXG4gICAgICAgICAgICBuei1idXR0b25cbiAgICAgICAgICAgIG56VHlwZT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgbnotcG9wb3ZlclxuICAgICAgICAgICAgW256UG9wb3ZlclZpc2libGVdPVwidmlzaWJsZUZpbHRlckJveFwiXG4gICAgICAgICAgICBuelBvcG92ZXJUaXRsZT1cIlwiXG4gICAgICAgICAgICBuelBvcG92ZXJUcmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgICAgW256UG9wb3ZlckNvbnRlbnRdPVwiY29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICAgIG56UG9wb3Zlck92ZXJsYXlDbGFzc05hbWU9XCJmaWx0ZXItcG9wb3ZlclwiXG4gICAgICAgICAgICBuelBvcG92ZXJQbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgKm5nSWY9XCJfZmlsdGVyQm94SXRlbXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJmaWx0ZXJcIj48L3NwYW4+XG4gICAgICAgICAgICDZgduM2YTYqtixXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBuei1idXR0b25cbiAgICAgICAgICAgIG56VHlwZT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBuei1wb3BvdmVyXG4gICAgICAgICAgICBuelBvcG92ZXJUaXRsZT1cIlwiXG4gICAgICAgICAgICBbKG56UG9wb3ZlclZpc2libGUpXT1cInZpc2libGVGaWx0ZXJUZW1wbGF0ZUJveFwiXG4gICAgICAgICAgICBuelBvcG92ZXJUcmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgICAgW256UG9wb3ZlckNvbnRlbnRdPVwiY29udGVudEZpbHRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgIG56UG9wb3Zlck92ZXJsYXlDbGFzc05hbWU9XCJmaWx0ZXItcG9wb3Zlci1zbVwiXG4gICAgICAgICAgICBuelBvcG92ZXJQbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgKm5nSWY9XCJpZCAhPSBudWxsXCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImxheW91dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgINmB24zZhNiq2LEg2YfYp9uMINiw2K7bjNix2Ycg2LTYr9mHXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwicmVmcmVzaCgpXCIgbnpUeXBlPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJzeW5jXCI+PC9zcGFuPlxuICAgICAgICAgICAg2KjYsdmI2LLYsdiz2KfZhtuMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8IS0tIDxidXR0b24gbnotYnV0dG9uIChjbGljayk9XCJhZHZhbmNlZEZpbHRlcigpXCIgKm5nSWY9XCJzaG93QWR2YW5jZWRCdXR0b25cIiBuelR5cGU9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImZpbHRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgINis2LPYqtis2YjbjCDZvtuM2LTYsdmB2KrZh1xuICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXgtNCBwLTQgbWF4LWgtWzQwMHB4XSBvdmVyZmxvdy1hdXRvXCIgW25nQ2xhc3NdPVwieyAnZ3JpZC1jb2xzLTEnOiBfZmlsdGVyQm94SXRlbXMubGVuZ3RoID09IDEsICdncmlkLWNvbHMtMic6IF9maWx0ZXJCb3hJdGVtcy5sZW5ndGggPiAxIH1cIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfZmlsdGVyQm94SXRlbXNcIiBbbmdDbGFzc109XCJ7ICdjb2wtc3Bhbi0yJzogaXRlbS50eXBlID09ICdkYXRlJyB8fCBpdGVtLnR5cGUgPT0gJ2RhdGUtdGltZScgfHwgaXRlbS5jb2xTcGFuID09IDIgfVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZGF0ZScgfHwgaXRlbS50eXBlID09ICdkYXRlLXRpbWUnXCIgY2xhc3M9XCJncmlkIGdyaWQtY29scy0yIGdhcC14LTRcIj5cbiAgICAgICAgICAgICAgICA8bnotZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1sYWJlbD7Yp9iyINiq2KfYsduM2K48L256LWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cWV5ZGFyLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZSAhPSBudWxsID8gaXRlbS52YWx1ZVswXSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZVZhbHVlKT1cImNoYW5nZURhdGVQaWNrZXJWYWx1ZSgkZXZlbnQsIGl0ZW0sIDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RvZGF5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VtcHR5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhclR5cGVdPVwiJ2phbGFsaSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1cInl5eXktTU0tZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtydGxdPVwidHJ1ZVwiPjwvcWV5ZGFyLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cbiAgICAgICAgICAgICAgICA8L256LWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8bnotZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1sYWJlbD7YqtinINiq2KfYsduM2K48L256LWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cWV5ZGFyLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZSAhPSBudWxsID8gaXRlbS52YWx1ZVsxXSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZVZhbHVlKT1cImNoYW5nZURhdGVQaWNrZXJWYWx1ZSgkZXZlbnQsIGl0ZW0sIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RvZGF5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VtcHR5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhclR5cGVdPVwiJ2phbGFsaSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1cInl5eXktTU0tZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtydGxdPVwidHJ1ZVwiPjwvcWV5ZGFyLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cbiAgICAgICAgICAgICAgICA8L256LWZvcm0taXRlbT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZW51bScgfHwgaXRlbS50eXBlID09ICdzZWxlY3QnIHx8IGl0ZW0udHlwZSA9PSAnYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICA8bnotZm9ybS1pdGVtIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuei1mb3JtLWxhYmVsPnt7IGl0ZW0ubGFiZWwgfX08L256LWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxuei1zZWxlY3QgY2xhc3M9XCJ3LWZ1bGxcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIiBuelNob3dTZWFyY2ggbnpTZXJ2ZXJTZWFyY2ggKG56T25TZWFyY2gpPVwiaGFuZGxlU2VhcmNoU2VsZWN0Qm94KCRldmVudCwgaXRlbSlcIiAgKm5nSWY9XCJpdGVtLnNlcnZlclNpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuei1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0yIG9mIGl0ZW0uaXRlbXNcIiBbbnpWYWx1ZV09XCJpdGVtMi52YWx1ZVwiIFtuekxhYmVsXT1cIml0ZW0yLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9uei1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbnotc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8bnotc2VsZWN0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCIgbnpTaG93U2VhcmNoICAqbmdJZj1cIiFpdGVtLnNlcnZlclNpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuei1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0yIG9mIGl0ZW0uaXRlbXNcIiBbbnpWYWx1ZV09XCJpdGVtMi52YWx1ZVwiIFtuekxhYmVsXT1cIml0ZW0yLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9uei1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbnotc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvbnotZm9ybS1pdGVtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0cmVlLXNlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICA8bnotZm9ybS1pdGVtIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuei1mb3JtLWxhYmVsPnt7IGl0ZW0ubGFiZWwgfX08L256LWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxuei10cmVlLXNlbGVjdCBjbGFzcz1cInctZnVsbFwiIFtuek5vZGVzXT1cIml0ZW0ubm9kZXNcIiBuelZpcnR1YWxIZWlnaHQ9XCIzMjBweFwiIG56U2hvd1NlYXJjaCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L256LXRyZWUtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvbnotZm9ybS1pdGVtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdzdHJpbmcnIHx8IGl0ZW0udHlwZSA9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPG56LWZvcm0taXRlbSBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bnotZm9ybS1sYWJlbD57eyBpdGVtLmxhYmVsIH19PC9uei1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuei1pbnB1dCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIiAvPlxuICAgICAgICAgICAgICAgIDwvbnotZm9ybS1pdGVtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIHAtNCBib3JkZXItdCBib3JkZXItdC1zbGF0ZS0yMDBcIj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJmaWx0ZXIoKVwiPtin2LnZhdin2YQ8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwiZGVmYXVsdFwiIChjbGljayk9XCJjbGVhckZpbHRlcigpXCI+2b7Yp9qp2LPYp9iy24wg2Ygg2KjYs9iq2YY8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIHRlbXBsYXRlIGl0ZW1zIGJveCAgLS0+XG48bmctdGVtcGxhdGUgI2NvbnRlbnRGaWx0ZXJUZW1wbGF0ZSBjbGFzcz1cInctZnVsbFwiPlxuICAgIDx1bCBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIiAqbmdJZj1cImZpbHRlclRlbXBsYXRlSXRlbXMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJwLTIgcm91bmRlZC1sZyBjdXJzb3ItcG9pbnRlciBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlclRlbXBsYXRlSXRlbXNcIiAoY2xpY2spPVwic2V0VGVtcGxhdGVGaWx0ZXIoaXRlbSlcIj57eyBpdGVtLnRpdGxlIH19PC9saT5cbiAgICA8L3VsPlxuICAgIDxwICpuZ0lmPVwiZmlsdGVyVGVtcGxhdGVJdGVtcy5sZW5ndGggPT0gMFwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj7Zgtin2YTYqNuMINis2YfYqiDZhtmF2KfbjNi0INmI2KzZiNivINmG2K/Yp9ix2K88L3A+XG48L25nLXRlbXBsYXRlPlxuPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiBweC00IHB5LTIgaC0xNFwiICpuZ0lmPVwiaXNUb29sYmFyICYmIGlzRmlsdGVySGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1zbSB0ZXh0LWJsdWUtNTAwXCI+2YHbjNmE2KrYsdmH2KfbjCDYp9i52YXYp9mEINi02K/Zhzo8L3NwYW4+XG4gICAgICAgIDx1bCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMCByb3VuZGVkLW1kIHB4LTIgcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBoLThcIiAqbmdJZj1cImZpbHRlckl0ZW1zVmFsdWVzLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNsYXRlLTgwMCBmb250LW1lZGl1bSB0ZXh0LXNtXCI+2KjYr9mI2YYg2YHbjNmE2KrYsTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMCByb3VuZGVkLW1kIHB4LTIgcHktMSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBoLThcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJJdGVtc1ZhbHVlc1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc2xhdGUtNTAwIHRleHQtc21cIj57eyBpdGVtLmxhYmVsIH19OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNsYXRlLTgwMCBmb250LW1lZGl1bSB0ZXh0LXNtXCI+e3sgaXRlbS52YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtdGltZXMgY3Vyc29yLXBvaW50ZXIgcHMtMlwiIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoaXRlbSlcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiaWQgIT0gbnVsbFwiPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJkZWZhdWx0XCIgKm5nSWY9XCJmaWx0ZXJJdGVtc1ZhbHVlcy5sZW5ndGggPiAwIHx8IGdyaWRJZCAhPSBudWxsXCIgKGNsaWNrKT1cInNhdmVGaWx0ZXJHcmlkKClcIj5cbiAgICAgICAgICAgIHt7IGdyaWRJZCA9PSBudWxsID8gJ9iw2K7bjNix2Ycg2YHbjNmE2KrYsScgOiAn2KfYudmF2KfZhCDYqti624zbjNix2KfYqiDZgduM2YTYqtixJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwiZGVmYXVsdFwiICpuZ0lmPVwiZ3JpZElkICE9IG51bGxcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKTsgZ3JpZElkID0gbnVsbFwiPtmE2LrZiDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuei1tb2RhbCBbKG56VmlzaWJsZSldPVwiaXNWaXNpYmxlTW9kYWxcIiBuelRpdGxlPVwi2KfZgdiy2YjYr9mGINmC2KfZhNioINis2K/bjNivXCIgKG56T25DYW5jZWwpPVwiaGFuZGxlQ2FuY2VsTW9kYWwoKVwiIChuek9uT2spPVwiaGFuZGxlT2tNb2RhbCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbnpNb2RhbENvbnRlbnQ+XG4gICAgICAgIDxuei1mb3JtLWl0ZW0gY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxuei1mb3JtLWxhYmVsPti52YbZiNin2YYg2YLYp9mE2Kg8L256LWZvcm0tbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuei1pbnB1dCBbKG5nTW9kZWwpXT1cInRlbXBsYXRlTmFtZVwiIC8+XG4gICAgICAgIDwvbnotZm9ybS1pdGVtPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uei1tb2RhbD5cblxuPGFnLWdyaWQtYW5ndWxhclxuICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgIFtzdHlsZV09XCJpc1Rvb2xiYXIgPyAnaGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtIC0gMTE0cHgpOycgOiAnaGVpZ2h0OiAxMDAlOydcIlxuICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxuICAgIFtwYWdpbmF0aW9uXT1cInRydWVcIlxuICAgIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvblBhZ2VTaXplXCJcbiAgICBbcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JdPVwicGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JcIlxuICAgIFtjbGFzc109XCJ0aGVtZUNsYXNzXCJcbiAgICBbcm93SGVpZ2h0XT1cIjQ4XCJcbiAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcbiAgICBbZW5hYmxlQWR2YW5jZWRGaWx0ZXJdPVwiZW5hYmxlQWR2YW5jZWRGaWx0ZXJcIlxuICAgIFtlbmFibGVSdGxdPVwicnRsXCJcbiAgICBbdHJlZURhdGFdPVwidHJlZU1vZGVsXCJcbiAgICBbYXV0b0dyb3VwQ29sdW1uRGVmXT1cImF1dG9Hcm91cENvbHVtbkRlZlwiXG4gICAgW2lzU2VydmVyU2lkZUdyb3VwXT1cImlzU2VydmVyU2lkZUdyb3VwXCJcbiAgICBbZ2V0U2VydmVyU2lkZUdyb3VwS2V5XT1cImdldFNlcnZlclNpZGVHcm91cEtleVwiXG4gICAgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIlxuICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxuICAgIFtzZXJ2ZXJTaWRlRGF0YXNvdXJjZV09XCJkYXRhc291cmNlXCJcbiAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxuICAgIFtjYWNoZUJsb2NrU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIlxuICAgIFttYXhCbG9ja3NJbkNhY2hlXT1cIjJcIlxuICAgIFtjb250ZXh0XT1cInsgYWN0aW9uSXRlbXM6IGFjdGlvbkl0ZW1zIH1cIlxuICAgIChjZWxsRG91YmxlQ2xpY2tlZCk9XCJjZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICBbYXV0b1NpemVTdHJhdGVneV09XCJfYXV0b0NvbHVtblNpemVcIlxuICAgIFtyb3dTZWxlY3Rpb25dPVwiX3Jvd1NlbGVjdGlvblwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICBbdGhlbWVdPVwiXCJcbiAgICBbZ2V0Um93Q2xhc3NdPVwiZ2V0Um93Q2xhc3NcIlxuICAgICNncmlkIC8+XG4iXX0=