ca-components 1.0.47 → 1.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +1 -1
  2. package/esm2022/lib/components/ca-chart/models/chart-config.model.mjs +1 -1
  3. package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +4 -4
  4. package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
  5. package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +2 -3
  6. package/esm2022/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.mjs +99 -0
  7. package/esm2022/lib/components/ca-sort-dropdown/enums/index.mjs +2 -0
  8. package/esm2022/lib/components/ca-sort-dropdown/enums/sort-dropdown.enum.mjs +12 -0
  9. package/esm2022/lib/components/ca-sort-dropdown/models/index.mjs +2 -0
  10. package/esm2022/lib/components/ca-sort-dropdown/models/sort-column.model.mjs +2 -0
  11. package/esm2022/lib/components/ca-sort-dropdown/utils/svg-routes/ca-sort-dropdown-svg-routes.mjs +6 -0
  12. package/esm2022/lib/components/ca-sort-dropdown/utils/svg-routes/index.mjs +2 -0
  13. package/esm2022/public-api.mjs +4 -1
  14. package/fesm2022/ca-components.mjs +107 -7
  15. package/fesm2022/ca-components.mjs.map +1 -1
  16. package/lib/components/ca-chart/ca-chart.component.d.ts +3 -3
  17. package/lib/components/ca-chart/models/chart-config.model.d.ts +1 -1
  18. package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
  19. package/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.d.ts +28 -0
  20. package/lib/components/ca-sort-dropdown/enums/index.d.ts +1 -0
  21. package/lib/components/ca-sort-dropdown/enums/sort-dropdown.enum.d.ts +8 -0
  22. package/lib/components/ca-sort-dropdown/models/index.d.ts +1 -0
  23. package/lib/components/ca-sort-dropdown/models/sort-column.model.d.ts +5 -0
  24. package/lib/components/ca-sort-dropdown/utils/svg-routes/ca-sort-dropdown-svg-routes.d.ts +5 -0
  25. package/lib/components/ca-sort-dropdown/utils/svg-routes/index.d.ts +1 -0
  26. package/package.json +1 -1
  27. package/public-api.d.ts +3 -0
  28. package/src/assets/ca-components/svg/common/ic_arrow_sort.svg +3 -0
  29. package/src/assets/ca-components/svg/common/ic_checkmark.svg +3 -0
@@ -26,8 +26,7 @@ import * as i5 from "@ng-bootstrap/ng-bootstrap";
26
26
  export class CaSearchMultipleStatesComponent {
27
27
  constructor(searchMultipleStatesService) {
28
28
  this.searchMultipleStatesService = searchMultipleStatesService;
29
- this.toolbarSearch = false;
30
- this.isDetailsPageSearch = true;
29
+ this.toolbarSearch = true;
31
30
  this.close = new EventEmitter();
32
31
  this.chips = [];
33
32
  this.openSearch = true;
@@ -278,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
278
277
  }], close: [{
279
278
  type: Output
280
279
  }] } });
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1zZWFyY2gtbXVsdGlwbGUtc3RhdGVzL2NhLXNlYXJjaC1tdWx0aXBsZS1zdGF0ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcy9jYS1zZWFyY2gtbXVsdGlwbGUtc3RhdGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFlBQVk7QUFDWixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDM0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsWUFBWTtBQUNaLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUtsRixPQUFPO0FB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UTtnQkFDUixhQUFhLG9DQWRILENBQUMsZUFBZSxDQUFDOzs0RkFtQmxCLCtCQUErQjtrQkF0QjNDLFNBQVM7K0JBQ0UsK0JBQStCLGNBQzdCLElBQUksY0FDSixDQUFDLGVBQWUsQ0FBQyxXQUNwQjt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBRWhCLFFBQVE7d0JBQ1IsYUFBYTtxQkFDZDtvSEFNRCxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3ZDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuLy8gTW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7IE5nYlRvb2x0aXBNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gU3ZnUm91dGVzXG5pbXBvcnQgeyBTZWFyY2hNdWx0aXBsZVN0YXRlc1JvdXRlcyB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcyc7XG5cbi8vIENvbXBvbmVudHNcbmltcG9ydCB7IENhQXBwVG9vbHRpcFYyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtYXBwLXRvb2x0aXAtdjIvY2EtYXBwLXRvb2x0aXAtdjIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuXG4vLyBBbmltYXRpb25cbmltcG9ydCB7IHRvZ2dsZUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvZXhwYW5kLXNlYXJjaC1idXR0b24uYW5pbWF0aW9uJztcblxuLy9TZXJ2aWNlXG5pbXBvcnQgeyBDYVNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZSB9IGZyb20gJy4vdXRpbHMvc2VydmljZXMnO1xuXG4vL1BpcGVzXG5pbXBvcnQgeyBDaGlwQ2xhc3NQaXBlIH0gZnJvbSAnLi91dGlscy9waXBlcy8nO1xuXG4vL0VudW1zXG5pbXBvcnQge1xuICBDaGlwc0NvbG9yc0VudW0sXG4gIEtleWJvYXJkRXZlbnRDb21tYW5kcyxcbiAgU2VhcmNoQ291bnRFbnVtLFxufSBmcm9tICcuL3V0aWxzL2VudW1zJztcblxuLy9Nb2RlbFxuaW1wb3J0IHsgQ2hpcHNNb2RlbCwgVGFiRGF0YSB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGFuaW1hdGlvbnM6IFt0b2dnbGVBbmltYXRpb25dLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gQW5ndWxhclxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIC8vIE1vZHVsZXNcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxuICAgIC8vIENvbXBvbmVudHNcbiAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICBDYUlucHV0Q29tcG9uZW50LFxuXG4gICAgLy8gUGlwZXNcbiAgICBDaGlwQ2xhc3NQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhLXNlYXJjaC1tdWx0aXBsZS1zdGF0ZXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FTZWFyY2hNdWx0aXBsZVN0YXRlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndGFibGVTZWFyY2hJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB0YWJsZVNlYXJjaElucHV0ITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB0b29sYmFyU2VhcmNoPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RlZFRhYkRhdGEhOiBUYWJEYXRhO1xuICBASW5wdXQoKSBzZWFyY2hUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBpc0RldGFpbHNQYWdlU2VhcmNoPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBjaGlwczogQ2hpcHNNb2RlbFtdID0gW107XG4gIHB1YmxpYyBvcGVuU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgc2VhcmNoSXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGNoaXBUb0RlbGV0ZTogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgY2hpcHNGb3JIaWdobGlnaHRTZWFyY2ghOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIHR5cGluZ1RpbWVvdXQhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZTogQ2FTZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERlbGV0ZUFsbENoaXBzTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0RGVsZXRlQWxsQ2hpcHNMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZS5kZWxldGVBbGxDaGlwcyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuZGVsZXRlQWxsQ2hpcHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaCgpIHtcbiAgICBpZiAodGhpcy5jaGlwcy5sZW5ndGggPT09IDMpIHRoaXMub3BlblNlYXJjaCA9IGZhbHNlO1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5vcGVuU2VhcmNoID0gIXRoaXMub3BlblNlYXJjaDtcbiAgICAgIGlmKCF0aGlzLm9wZW5TZWFyY2gpIHRoaXMuY2xvc2UuZW1pdCgpO1xuXG4gICAgICBpZiAodGhpcy5vcGVuU2VhcmNoICYmIHRoaXMuY2hpcHMubGVuZ3RoIDwgMylcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJsZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25UeXBpbmcoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudHlwaW5nVGltZW91dCk7XG5cbiAgICBjb25zdCBzZWFyY2hOdW1iZXIgPSAhdGhpcy5jaGlwcy5sZW5ndGhcbiAgICAgID8gU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9PTkVcbiAgICAgIDogdGhpcy5jaGlwcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RXT1xuICAgICAgICA6IFNlYXJjaENvdW50RW51bS5TRUFSQ0hfVEhSRUU7XG5cbiAgICBjb25zdCBrZXlib2FyZEV2ZW50ID0gdGhpcy5pc0tleWJvYXJkRXZlbnQoZXZlbnQpXG4gICAgICA/IChldmVudCBhcyBLZXlib2FyZEV2ZW50KVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKCFrZXlib2FyZEV2ZW50IHx8ICFrZXlib2FyZEV2ZW50LmtleSkge1xuICAgICAgdGhpcy5zZWFyY2hJc0FjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBTZWFyY2hDb3VudEVudW0uRU1QVFlfUExBQ0VfSE9MREVSO1xuICAgICAgdGhpcy5zZW5kSGlnaGxpZ2h0U2VhcmNoT25UeXBpbmcoKTtcblxuICAgICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZEN1cnJlbnRTZWFyY2hUYWJsZURhdGEoe1xuICAgICAgICBjaGlwOiBzZWFyY2hOdW1iZXIsXG4gICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICBzZWFyY2hUeXBlOiB0aGlzLnNlYXJjaFR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoa2V5Ym9hcmRFdmVudCAmJiBrZXlib2FyZEV2ZW50LmtleSAhPT0gS2V5Ym9hcmRFdmVudENvbW1hbmRzLkVOVEVSKSB7XG4gICAgICB0aGlzLnR5cGluZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dC5sZW5ndGggPj0gMykge1xuICAgICAgICAgIHRoaXMuc2VhcmNoSXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgdGhpcy5zZW5kSGlnaGxpZ2h0U2VhcmNoT25UeXBpbmcoKTtcblxuICAgICAgICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDdXJyZW50U2VhcmNoVGFibGVEYXRhKHtcbiAgICAgICAgICAgIGNoaXA6IHNlYXJjaE51bWJlcixcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgc2VhcmNoVHlwZTogdGhpcy5zZWFyY2hUeXBlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoSXNBY3RpdmUgJiYgdGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaElzQWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLnNlbmRIaWdobGlnaHRTZWFyY2hPbkVudGVyKCk7XG5cbiAgICAgICAgICB0aGlzLnNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZS5zZW5kQ3VycmVudFNlYXJjaFRhYmxlRGF0YSh7XG4gICAgICAgICAgICBjaGlwOiBzZWFyY2hOdW1iZXIsXG4gICAgICAgICAgICBkb1Jlc2V0OiB0cnVlLFxuICAgICAgICAgICAgYWxsOiBzZWFyY2hOdW1iZXIgPT09IFNlYXJjaENvdW50RW51bS5TRUFSQ0hfT05FLFxuICAgICAgICAgICAgc2VhcmNoVHlwZTogdGhpcy5zZWFyY2hUeXBlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCA1MDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNLZXlib2FyZEV2ZW50KGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIEtleWJvYXJkRXZlbnQge1xuICAgIHJldHVybiAoZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25FbnRlcigpOiB2b2lkIHtcbiAgICBpZighdGhpcy50b29sYmFyU2VhcmNoKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5jaGlwcy5sZW5ndGggPCAzICYmICF0aGlzLmNoZWNrQ2hpcHMoKSkge1xuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcbiAgICAgICAgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICBjb2xvcjogdGhpcy5nZXRDaGlwQ29sb3IodGhpcy5jaGlwcy5sZW5ndGgpLFxuICAgICAgICBjYW5Eb0FuaW1hdGlvbjogdHJ1ZSxcbiAgICAgICAgcXVlcnk6IHRoaXMuZ2V0Q2hpcFF1ZXJ5KHRoaXMuY2hpcHMubGVuZ3RoKSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbmRIaWdobGlnaHRTZWFyY2hPbkVudGVyKCk7XG5cbiAgICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDdXJyZW50U2VhcmNoVGFibGVEYXRhKHtcbiAgICAgICAgY2hpcEFkZGVkOiB0cnVlLFxuICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoVGV4dCxcbiAgICAgICAgcXVlcnk6IHRoaXMuZ2V0Q2hpcFF1ZXJ5KHRoaXMuY2hpcHMubGVuZ3RoIC0gMSksXG4gICAgICAgIHNlYXJjaFR5cGU6IHRoaXMuc2VhcmNoVHlwZSxcbiAgICAgIH0pO1xuICAgICAgKHRoaXMuY2hpcHMubGVuZ3RoID09PSAzICYmICF0aGlzLmlzRGV0YWlsc1BhZ2VTZWFyY2gpID8gdGhpcy50b2dnbGVTZWFyY2goKSA6IG51bGw7XG4gICAgICB0aGlzLmNoaXBUb0RlbGV0ZSA9IC0xO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLnNlYXJjaElzQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kSGlnaGxpZ2h0U2VhcmNoT25UeXBpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jaGlwc0ZvckhpZ2hsaWdodFNlYXJjaCA9IFtdO1xuXG4gICAgdGhpcy5jaGlwcy5tYXAoKGNoaXApID0+IHtcbiAgICAgIHRoaXMuY2hpcHNGb3JIaWdobGlnaHRTZWFyY2gucHVzaChjaGlwLnNlYXJjaFRleHQpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY2hpcHMubGVuZ3RoIDw9IDIpXG4gICAgICB0aGlzLmNoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoLnB1c2godGhpcy5zZWFyY2hUZXh0KTtcblxuICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDaGlwc0ZvckhpZ2hsaWdodFNlYXJjaFRvVGFibGUoXG4gICAgICB0aGlzLmNoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZEhpZ2hsaWdodFNlYXJjaE9uRW50ZXIoKSB7XG4gICAgdGhpcy5jaGlwc0ZvckhpZ2hsaWdodFNlYXJjaCA9IFtdO1xuXG4gICAgdGhpcy5jaGlwcy5tYXAoKGNoaXApID0+IHtcbiAgICAgIHRoaXMuY2hpcHNGb3JIaWdobGlnaHRTZWFyY2gucHVzaChjaGlwLnNlYXJjaFRleHQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZENoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoVG9UYWJsZShcbiAgICAgIHRoaXMuY2hpcHNGb3JIaWdobGlnaHRTZWFyY2hcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2UuZW1pdFNlbGVjdGVkQ2hpcHMoXG4gICAgICB0aGlzLmNoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDbGVhckNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoaXBzKCk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNTZWFyY2hUZXh0ID0gZmFsc2U7XG5cbiAgICB0aGlzLmNoaXBzLm1hcCgoY2hpcCkgPT4ge1xuICAgICAgaWYgKGNoaXAuc2VhcmNoVGV4dCA9PT0gdGhpcy5zZWFyY2hUZXh0KSBoYXNTZWFyY2hUZXh0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBoYXNTZWFyY2hUZXh0O1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlQ2hpcChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgdGhpcy5zZW5kSGlnaGxpZ2h0U2VhcmNoT25FbnRlcigpO1xuXG4gICAgaWYgKHRoaXMuY2hpcHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNoaXBzID0gdGhpcy5jaGlwcy5tYXAoKGNoaXAsIGkpID0+IHtcbiAgICAgICAgY2hpcCA9IHtcbiAgICAgICAgICBzZWFyY2hUZXh0OiBjaGlwLnNlYXJjaFRleHQsXG4gICAgICAgICAgY29sb3I6IHRoaXMuZ2V0Q2hpcENvbG9yKGkpLFxuICAgICAgICAgIGNhbkRvQW5pbWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBxdWVyeTogdGhpcy5nZXRDaGlwUXVlcnkoaSksXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNoaXA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcGVuU2VhcmNoKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVTZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAxMDApO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZEN1cnJlbnRTZWFyY2hUYWJsZURhdGEoe1xuICAgICAgaXNDaGlwRGVsZXRlOiB0cnVlLFxuICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHQ/Lmxlbmd0aCA+PSAzID8gdGhpcy5zZWFyY2hUZXh0IDogdW5kZWZpbmVkLFxuICAgICAgYWRkVG9RdWVyeTogdGhpcy5nZXRDaGlwUXVlcnkodGhpcy5jaGlwcy5sZW5ndGgpLFxuICAgICAgcXVlcnlzOiBbXG4gICAgICAgIFNlYXJjaENvdW50RW51bS5TRUFSQ0hfT05FLFxuICAgICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RIUkVFLFxuICAgICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RIUkVFLFxuICAgICAgXSxcbiAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgc2VhcmNoVHlwZTogdGhpcy5zZWFyY2hUeXBlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUFsbENoaXBzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hpcHMgPSBbXTtcbiAgICB0aGlzLmNoaXBUb0RlbGV0ZSA9IC0xO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZENoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoVG9UYWJsZShbXSk7XG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2UuZW1pdFNlbGVjdGVkQ2hpcHMoW10pO1xuXG4gICAgaWYgKHRoaXMub3BlblNlYXJjaClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYmxlU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTAwKTtcblxuICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDdXJyZW50U2VhcmNoVGFibGVEYXRhKHtcbiAgICAgIGlzQ2hpcERlbGV0ZTogdHJ1ZSxcbiAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0Py5sZW5ndGggPj0gMyA/IHRoaXMuc2VhcmNoVGV4dCA6IHVuZGVmaW5lZCxcbiAgICAgIGFkZFRvUXVlcnk6IHRoaXMuZ2V0Q2hpcFF1ZXJ5KHRoaXMuY2hpcHMubGVuZ3RoKSxcbiAgICAgIHF1ZXJ5czogW1xuICAgICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX09ORSxcbiAgICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9USFJFRSxcbiAgICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9USFJFRSxcbiAgICAgIF0sXG4gICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgIHNlYXJjaFR5cGU6IHRoaXMuc2VhcmNoVHlwZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hpcENvbG9yKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoaXBzQ29sb3JzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoQ2hpcHNDb2xvcnNFbnVtKTtcblxuICAgIHJldHVybiBjaGlwc0NvbG9yc1tpbmRleF07XG4gIH1cblxuICBwcml2YXRlIGdldENoaXBRdWVyeShpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBjaGlwc1F1ZXJ5ID0gW1xuICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9PTkUsXG4gICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RIUkVFLFxuICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9USFJFRSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNoaXBzUXVlcnlbaW5kZXhdO1xuICB9XG5cbiAgcHVibGljIGdldFN2Z1BhdGgoXG4gICAgcHJvcGVydHlOYW1lOiBrZXlvZiB0eXBlb2YgU2VhcmNoTXVsdGlwbGVTdGF0ZXNSb3V0ZXNcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU2VhcmNoTXVsdGlwbGVTdGF0ZXNSb3V0ZXNbcHJvcGVydHlOYW1lXSBhcyBzdHJpbmc7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkZW50aXR5KGluZGV4OiBudW1iZXIsIGNoaXA6IENoaXBzTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBjYXBpdGFsaXplSW5wdXQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZS5zZW5kQ3VycmVudFNlYXJjaFRhYmxlRGF0YShudWxsKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZWFyY2gtY2hpcHMtY29udGFpbmVyIGQtZmxleFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIGQtZmxleFwiXG4gICAgW25nQ2xhc3NdPVwieyBcbiAgICAgICdzZWFyY2gtaW5wdXQtYWN0aXZlJzogb3BlblNlYXJjaCxcbiAgICAgICdjYS1mdWxsLXdpZHRoJzogaXNEZXRhaWxzUGFnZVNlYXJjaFxuICAgIH1cIlxuICA+XG4gICAgPCEtLSBJY29uIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyU2VhcmNoOyBlbHNlIHNlYXJjaENvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImljb24tY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tZGlzYWJsZWQnOiBjaGlwcy5sZW5ndGggPj0gMyB9XCJcbiAgICAgICAgKGNsaWNrKT1cImNoaXBzLmxlbmd0aCA8IDQgJiYgdG9nZ2xlU2VhcmNoKClcIlxuICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgIG9wZW5TZWFyY2hcbiAgICAgICAgICAgID8gY2hpcHMubGVuZ3RoID49IDNcbiAgICAgICAgICAgICAgPyAnTWF4IEFkZGVkJ1xuICAgICAgICAgICAgICA6ICdDbG9zZSdcbiAgICAgICAgICAgIDogY2hpcHMubGVuZ3RoID49IDNcbiAgICAgICAgICAgICAgPyAnTWF4IEFkZGVkJ1xuICAgICAgICAgICAgICA6ICdTZWFyY2gnXG4gICAgICAgIFwiXG4gICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICA+XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDI2LCAnaGVpZ2h0LnB4JzogMjYgfVwiXG4gICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdzZWFyY2hCdXR0b24nKVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoQ29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImljb24tY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2goKVwiXG4gICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgb3BlblNlYXJjaFxuICAgICAgICAgICAgICA/ICdDbG9zZSdcbiAgICAgICAgICAgICAgOiAnU2VhcmNoJ1xuICAgICAgICBcIlxuICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgPlxuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAyNiwgJ2hlaWdodC5weCc6IDI2IH1cIlxuICAgICAgICAgIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnc2VhcmNoQnV0dG9uJylcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBCb3JkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImljb24tYm9yZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1ib3JkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cIm11bHRpcGxlLXNlYXJjaC1pbnB1dCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnY2EtZnVsbC13aWR0aCc6IGlzRGV0YWlsc1BhZ2VTZWFyY2h9XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3BlblNlYXJjaFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY2hpcHMubGVuZ3RoID49IDNcIlxuICAgICAgICAgICN0YWJsZVNlYXJjaElucHV0XG4gICAgICAgICAgaWQ9XCJ0YWJsZS1zZWFyY2hcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAoa2V5dXApPVwib25UeXBpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uRW50ZXIoKVwiXG4gICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMzBcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2FwaXRhbGl6ZUlucHV0KCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmluZCB7e1xuICAgICAgICAgICAgc2VsZWN0ZWRUYWJEYXRhLmdyaWROYW1lVGl0bGVcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZFRhYkRhdGEuZ3JpZE5hbWVUaXRsZVxuICAgICAgICAgICAgICA6ICdObyBUYWIgTmFtZSdcbiAgICAgICAgICB9fVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyU2VhcmNoICYmIG9wZW5TZWFyY2ggJiYgc2VhcmNoVGV4dC5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ0NvbmZpcm0nXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjNDI0MjQyJ1wiXG4gICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb25maXJtLWljb24gZC1mbGV4XCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ2FkZCcpXCJcbiAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxOCwgJ2hlaWdodC5weCc6IDE4IH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkVudGVyKClcIlxuICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ0NsZWFyJ1wiXG4gICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1pY29uIGQtZmxleFwiXG5cbiAgICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdjbGVhclNlYXJjaCcpXCJcbiAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVHlwaW5nKCRldmVudClcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaXBzLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGlwcy1jb250YWluZXIgZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRvb2xiYXJTZWFyY2g7IGVsc2UgY2hpcENvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZGVudGl0eVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNoaXAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImkgfCBjaGlwQ2xhc3M6IGNoaXBzIDogY2hpcFRvRGVsZXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBjaGlwLnNlYXJjaFRleHQgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtY2hpcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJjaGlwVG9EZWxldGUgPSBpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiY2hpcFRvRGVsZXRlID0gLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDaGlwKGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogNiwgJ2hlaWdodC5weCc6IDYgfVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdjbGVhclNlYXJjaCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2NoaXBDb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUlkZW50aXR5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaSB8IGNoaXBDbGFzczogY2hpcHMgOiBjaGlwVG9EZWxldGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2hpcChpKVwiXG4gICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCInQ2xlYXInXCJcbiAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IGNoaXAuc2VhcmNoVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRlbGV0ZS1hbGwtY2hpcHMgcmVndWxhci1zdHlsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICd0b29sYmFyLXN0eWxlJzogdG9vbGJhclNlYXJjaCB9XCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFsbENoaXBzKClcIlxuICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgIFttYWluQ2FUb29sdGlwXT1cIidDbGVhciBhbGwnXCJcbiAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjNDI0MjQyJ1wiXG4gICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgID5cbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMjMsICdoZWlnaHQucHgnOiAyMyB9XCJcbiAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ2NsZWFyU2VhcmNoJylcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1zZWFyY2gtbXVsdGlwbGUtc3RhdGVzL2NhLXNlYXJjaC1tdWx0aXBsZS1zdGF0ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcy9jYS1zZWFyY2gtbXVsdGlwbGUtc3RhdGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFlBQVk7QUFDWixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDM0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsWUFBWTtBQUNaLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUtsRixPQUFPO0FB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LENBQUM7OzRGQW1CbEIsK0JBQStCO2tCQXRCM0MsU0FBUzsrQkFDRSwrQkFBK0IsY0FDN0IsSUFBSSxjQUNKLENBQUMsZUFBZSxDQUFDLFdBQ3BCO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFFaEIsUUFBUTt3QkFDUixhQUFhO3FCQUNkO29IQU1ELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHdkMsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBNb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBTdmdSb3V0ZXNcbmltcG9ydCB7IFNlYXJjaE11bHRpcGxlU3RhdGVzUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzJztcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5cbi8vIEFuaW1hdGlvblxuaW1wb3J0IHsgdG9nZ2xlQW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucy9leHBhbmQtc2VhcmNoLWJ1dHRvbi5hbmltYXRpb24nO1xuXG4vL1NlcnZpY2VcbmltcG9ydCB7IENhU2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy9zZXJ2aWNlcyc7XG5cbi8vUGlwZXNcbmltcG9ydCB7IENoaXBDbGFzc1BpcGUgfSBmcm9tICcuL3V0aWxzL3BpcGVzLyc7XG5cbi8vRW51bXNcbmltcG9ydCB7XG4gIENoaXBzQ29sb3JzRW51bSxcbiAgS2V5Ym9hcmRFdmVudENvbW1hbmRzLFxuICBTZWFyY2hDb3VudEVudW0sXG59IGZyb20gJy4vdXRpbHMvZW51bXMnO1xuXG4vL01vZGVsXG5pbXBvcnQgeyBDaGlwc01vZGVsLCBUYWJEYXRhIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jYS1zZWFyY2gtbXVsdGlwbGUtc3RhdGVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgYW5pbWF0aW9uczogW3RvZ2dsZUFuaW1hdGlvbl0sXG4gIGltcG9ydHM6IFtcbiAgICAvLyBBbmd1bGFyXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgLy8gTW9kdWxlc1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgIENhSW5wdXRDb21wb25lbnQsXG5cbiAgICAvLyBQaXBlc1xuICAgIENoaXBDbGFzc1BpcGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1zZWFyY2gtbXVsdGlwbGUtc3RhdGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Etc2VhcmNoLW11bHRpcGxlLXN0YXRlcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYVNlYXJjaE11bHRpcGxlU3RhdGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd0YWJsZVNlYXJjaElucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHRhYmxlU2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHRvb2xiYXJTZWFyY2g/OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWJEYXRhITogVGFiRGF0YTtcbiAgQElucHV0KCkgc2VhcmNoVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgaXNEZXRhaWxzUGFnZVNlYXJjaD86IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBjaGlwczogQ2hpcHNNb2RlbFtdID0gW107XG4gIHB1YmxpYyBvcGVuU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgc2VhcmNoSXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGNoaXBUb0RlbGV0ZTogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgY2hpcHNGb3JIaWdobGlnaHRTZWFyY2ghOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIHR5cGluZ1RpbWVvdXQhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZTogQ2FTZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERlbGV0ZUFsbENoaXBzTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0RGVsZXRlQWxsQ2hpcHNMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZS5kZWxldGVBbGxDaGlwcyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuZGVsZXRlQWxsQ2hpcHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaCgpIHtcbiAgICBpZiAodGhpcy5jaGlwcy5sZW5ndGggPT09IDMpIHRoaXMub3BlblNlYXJjaCA9IGZhbHNlO1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5vcGVuU2VhcmNoID0gIXRoaXMub3BlblNlYXJjaDtcbiAgICAgIGlmKCF0aGlzLm9wZW5TZWFyY2gpIHRoaXMuY2xvc2UuZW1pdCgpO1xuXG4gICAgICBpZiAodGhpcy5vcGVuU2VhcmNoICYmIHRoaXMuY2hpcHMubGVuZ3RoIDwgMylcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJsZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25UeXBpbmcoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudHlwaW5nVGltZW91dCk7XG5cbiAgICBjb25zdCBzZWFyY2hOdW1iZXIgPSAhdGhpcy5jaGlwcy5sZW5ndGhcbiAgICAgID8gU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9PTkVcbiAgICAgIDogdGhpcy5jaGlwcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RXT1xuICAgICAgICA6IFNlYXJjaENvdW50RW51bS5TRUFSQ0hfVEhSRUU7XG5cbiAgICBjb25zdCBrZXlib2FyZEV2ZW50ID0gdGhpcy5pc0tleWJvYXJkRXZlbnQoZXZlbnQpXG4gICAgICA/IChldmVudCBhcyBLZXlib2FyZEV2ZW50KVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKCFrZXlib2FyZEV2ZW50IHx8ICFrZXlib2FyZEV2ZW50LmtleSkge1xuICAgICAgdGhpcy5zZWFyY2hJc0FjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBTZWFyY2hDb3VudEVudW0uRU1QVFlfUExBQ0VfSE9MREVSO1xuICAgICAgdGhpcy5zZW5kSGlnaGxpZ2h0U2VhcmNoT25UeXBpbmcoKTtcblxuICAgICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZEN1cnJlbnRTZWFyY2hUYWJsZURhdGEoe1xuICAgICAgICBjaGlwOiBzZWFyY2hOdW1iZXIsXG4gICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICBzZWFyY2hUeXBlOiB0aGlzLnNlYXJjaFR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoa2V5Ym9hcmRFdmVudCAmJiBrZXlib2FyZEV2ZW50LmtleSAhPT0gS2V5Ym9hcmRFdmVudENvbW1hbmRzLkVOVEVSKSB7XG4gICAgICB0aGlzLnR5cGluZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dC5sZW5ndGggPj0gMykge1xuICAgICAgICAgIHRoaXMuc2VhcmNoSXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgdGhpcy5zZW5kSGlnaGxpZ2h0U2VhcmNoT25UeXBpbmcoKTtcblxuICAgICAgICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDdXJyZW50U2VhcmNoVGFibGVEYXRhKHtcbiAgICAgICAgICAgIGNoaXA6IHNlYXJjaE51bWJlcixcbiAgICAgICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgc2VhcmNoVHlwZTogdGhpcy5zZWFyY2hUeXBlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoSXNBY3RpdmUgJiYgdGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaElzQWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLnNlbmRIaWdobGlnaHRTZWFyY2hPbkVudGVyKCk7XG5cbiAgICAgICAgICB0aGlzLnNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZS5zZW5kQ3VycmVudFNlYXJjaFRhYmxlRGF0YSh7XG4gICAgICAgICAgICBjaGlwOiBzZWFyY2hOdW1iZXIsXG4gICAgICAgICAgICBkb1Jlc2V0OiB0cnVlLFxuICAgICAgICAgICAgYWxsOiBzZWFyY2hOdW1iZXIgPT09IFNlYXJjaENvdW50RW51bS5TRUFSQ0hfT05FLFxuICAgICAgICAgICAgc2VhcmNoVHlwZTogdGhpcy5zZWFyY2hUeXBlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCA1MDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNLZXlib2FyZEV2ZW50KGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIEtleWJvYXJkRXZlbnQge1xuICAgIHJldHVybiAoZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25FbnRlcigpOiB2b2lkIHtcbiAgICBpZighdGhpcy50b29sYmFyU2VhcmNoKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5jaGlwcy5sZW5ndGggPCAzICYmICF0aGlzLmNoZWNrQ2hpcHMoKSkge1xuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcbiAgICAgICAgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgICBjb2xvcjogdGhpcy5nZXRDaGlwQ29sb3IodGhpcy5jaGlwcy5sZW5ndGgpLFxuICAgICAgICBjYW5Eb0FuaW1hdGlvbjogdHJ1ZSxcbiAgICAgICAgcXVlcnk6IHRoaXMuZ2V0Q2hpcFF1ZXJ5KHRoaXMuY2hpcHMubGVuZ3RoKSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbmRIaWdobGlnaHRTZWFyY2hPbkVudGVyKCk7XG5cbiAgICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDdXJyZW50U2VhcmNoVGFibGVEYXRhKHtcbiAgICAgICAgY2hpcEFkZGVkOiB0cnVlLFxuICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoVGV4dCxcbiAgICAgICAgcXVlcnk6IHRoaXMuZ2V0Q2hpcFF1ZXJ5KHRoaXMuY2hpcHMubGVuZ3RoIC0gMSksXG4gICAgICAgIHNlYXJjaFR5cGU6IHRoaXMuc2VhcmNoVHlwZSxcbiAgICAgIH0pO1xuICAgICAgKHRoaXMuY2hpcHMubGVuZ3RoID09PSAzICYmICF0aGlzLmlzRGV0YWlsc1BhZ2VTZWFyY2gpID8gdGhpcy50b2dnbGVTZWFyY2goKSA6IG51bGw7XG4gICAgICB0aGlzLmNoaXBUb0RlbGV0ZSA9IC0xO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLnNlYXJjaElzQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kSGlnaGxpZ2h0U2VhcmNoT25UeXBpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jaGlwc0ZvckhpZ2hsaWdodFNlYXJjaCA9IFtdO1xuXG4gICAgdGhpcy5jaGlwcy5tYXAoKGNoaXApID0+IHtcbiAgICAgIHRoaXMuY2hpcHNGb3JIaWdobGlnaHRTZWFyY2gucHVzaChjaGlwLnNlYXJjaFRleHQpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY2hpcHMubGVuZ3RoIDw9IDIpXG4gICAgICB0aGlzLmNoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoLnB1c2godGhpcy5zZWFyY2hUZXh0KTtcblxuICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDaGlwc0ZvckhpZ2hsaWdodFNlYXJjaFRvVGFibGUoXG4gICAgICB0aGlzLmNoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZEhpZ2hsaWdodFNlYXJjaE9uRW50ZXIoKSB7XG4gICAgdGhpcy5jaGlwc0ZvckhpZ2hsaWdodFNlYXJjaCA9IFtdO1xuXG4gICAgdGhpcy5jaGlwcy5tYXAoKGNoaXApID0+IHtcbiAgICAgIHRoaXMuY2hpcHNGb3JIaWdobGlnaHRTZWFyY2gucHVzaChjaGlwLnNlYXJjaFRleHQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZENoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoVG9UYWJsZShcbiAgICAgIHRoaXMuY2hpcHNGb3JIaWdobGlnaHRTZWFyY2hcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2UuZW1pdFNlbGVjdGVkQ2hpcHMoXG4gICAgICB0aGlzLmNoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDbGVhckNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoaXBzKCk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNTZWFyY2hUZXh0ID0gZmFsc2U7XG5cbiAgICB0aGlzLmNoaXBzLm1hcCgoY2hpcCkgPT4ge1xuICAgICAgaWYgKGNoaXAuc2VhcmNoVGV4dCA9PT0gdGhpcy5zZWFyY2hUZXh0KSBoYXNTZWFyY2hUZXh0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBoYXNTZWFyY2hUZXh0O1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlQ2hpcChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgdGhpcy5zZW5kSGlnaGxpZ2h0U2VhcmNoT25FbnRlcigpO1xuXG4gICAgaWYgKHRoaXMuY2hpcHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNoaXBzID0gdGhpcy5jaGlwcy5tYXAoKGNoaXAsIGkpID0+IHtcbiAgICAgICAgY2hpcCA9IHtcbiAgICAgICAgICBzZWFyY2hUZXh0OiBjaGlwLnNlYXJjaFRleHQsXG4gICAgICAgICAgY29sb3I6IHRoaXMuZ2V0Q2hpcENvbG9yKGkpLFxuICAgICAgICAgIGNhbkRvQW5pbWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBxdWVyeTogdGhpcy5nZXRDaGlwUXVlcnkoaSksXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNoaXA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcGVuU2VhcmNoKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVTZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAxMDApO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZEN1cnJlbnRTZWFyY2hUYWJsZURhdGEoe1xuICAgICAgaXNDaGlwRGVsZXRlOiB0cnVlLFxuICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHQ/Lmxlbmd0aCA+PSAzID8gdGhpcy5zZWFyY2hUZXh0IDogdW5kZWZpbmVkLFxuICAgICAgYWRkVG9RdWVyeTogdGhpcy5nZXRDaGlwUXVlcnkodGhpcy5jaGlwcy5sZW5ndGgpLFxuICAgICAgcXVlcnlzOiBbXG4gICAgICAgIFNlYXJjaENvdW50RW51bS5TRUFSQ0hfT05FLFxuICAgICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RIUkVFLFxuICAgICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RIUkVFLFxuICAgICAgXSxcbiAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgc2VhcmNoVHlwZTogdGhpcy5zZWFyY2hUeXBlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUFsbENoaXBzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hpcHMgPSBbXTtcbiAgICB0aGlzLmNoaXBUb0RlbGV0ZSA9IC0xO1xuXG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2Uuc2VuZENoaXBzRm9ySGlnaGxpZ2h0U2VhcmNoVG9UYWJsZShbXSk7XG4gICAgdGhpcy5zZWFyY2hNdWx0aXBsZVN0YXRlc1NlcnZpY2UuZW1pdFNlbGVjdGVkQ2hpcHMoW10pO1xuXG4gICAgaWYgKHRoaXMub3BlblNlYXJjaClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYmxlU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTAwKTtcblxuICAgIHRoaXMuc2VhcmNoTXVsdGlwbGVTdGF0ZXNTZXJ2aWNlLnNlbmRDdXJyZW50U2VhcmNoVGFibGVEYXRhKHtcbiAgICAgIGlzQ2hpcERlbGV0ZTogdHJ1ZSxcbiAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hUZXh0Py5sZW5ndGggPj0gMyA/IHRoaXMuc2VhcmNoVGV4dCA6IHVuZGVmaW5lZCxcbiAgICAgIGFkZFRvUXVlcnk6IHRoaXMuZ2V0Q2hpcFF1ZXJ5KHRoaXMuY2hpcHMubGVuZ3RoKSxcbiAgICAgIHF1ZXJ5czogW1xuICAgICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX09ORSxcbiAgICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9USFJFRSxcbiAgICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9USFJFRSxcbiAgICAgIF0sXG4gICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgIHNlYXJjaFR5cGU6IHRoaXMuc2VhcmNoVHlwZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hpcENvbG9yKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoaXBzQ29sb3JzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoQ2hpcHNDb2xvcnNFbnVtKTtcblxuICAgIHJldHVybiBjaGlwc0NvbG9yc1tpbmRleF07XG4gIH1cblxuICBwcml2YXRlIGdldENoaXBRdWVyeShpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBjaGlwc1F1ZXJ5ID0gW1xuICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9PTkUsXG4gICAgICBTZWFyY2hDb3VudEVudW0uU0VBUkNIX1RIUkVFLFxuICAgICAgU2VhcmNoQ291bnRFbnVtLlNFQVJDSF9USFJFRSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNoaXBzUXVlcnlbaW5kZXhdO1xuICB9XG5cbiAgcHVibGljIGdldFN2Z1BhdGgoXG4gICAgcHJvcGVydHlOYW1lOiBrZXlvZiB0eXBlb2YgU2VhcmNoTXVsdGlwbGVTdGF0ZXNSb3V0ZXNcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU2VhcmNoTXVsdGlwbGVTdGF0ZXNSb3V0ZXNbcHJvcGVydHlOYW1lXSBhcyBzdHJpbmc7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkZW50aXR5KGluZGV4OiBudW1iZXIsIGNoaXA6IENoaXBzTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBjYXBpdGFsaXplSW5wdXQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaE11bHRpcGxlU3RhdGVzU2VydmljZS5zZW5kQ3VycmVudFNlYXJjaFRhYmxlRGF0YShudWxsKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZWFyY2gtY2hpcHMtY29udGFpbmVyIGQtZmxleFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIGQtZmxleFwiXG4gICAgW25nQ2xhc3NdPVwieyBcbiAgICAgICdzZWFyY2gtaW5wdXQtYWN0aXZlJzogb3BlblNlYXJjaCxcbiAgICAgICdjYS1mdWxsLXdpZHRoJzogaXNEZXRhaWxzUGFnZVNlYXJjaFxuICAgIH1cIlxuICA+XG4gICAgPCEtLSBJY29uIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyU2VhcmNoOyBlbHNlIHNlYXJjaENvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImljb24tY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tZGlzYWJsZWQnOiBjaGlwcy5sZW5ndGggPj0gMyB9XCJcbiAgICAgICAgKGNsaWNrKT1cImNoaXBzLmxlbmd0aCA8IDQgJiYgdG9nZ2xlU2VhcmNoKClcIlxuICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgIG9wZW5TZWFyY2hcbiAgICAgICAgICAgID8gY2hpcHMubGVuZ3RoID49IDNcbiAgICAgICAgICAgICAgPyAnTWF4IEFkZGVkJ1xuICAgICAgICAgICAgICA6ICdDbG9zZSdcbiAgICAgICAgICAgIDogY2hpcHMubGVuZ3RoID49IDNcbiAgICAgICAgICAgICAgPyAnTWF4IEFkZGVkJ1xuICAgICAgICAgICAgICA6ICdTZWFyY2gnXG4gICAgICAgIFwiXG4gICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICA+XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgIFtzdmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IDI2LCAnaGVpZ2h0LnB4JzogMjYgfVwiXG4gICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdzZWFyY2hCdXR0b24nKVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoQ29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImljb24tY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2goKVwiXG4gICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgb3BlblNlYXJjaFxuICAgICAgICAgICAgICA/ICdDbG9zZSdcbiAgICAgICAgICAgICAgOiAnU2VhcmNoJ1xuICAgICAgICBcIlxuICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgPlxuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAyNiwgJ2hlaWdodC5weCc6IDI2IH1cIlxuICAgICAgICAgIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnc2VhcmNoQnV0dG9uJylcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBCb3JkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImljb24tYm9yZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1ib3JkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cIm11bHRpcGxlLXNlYXJjaC1pbnB1dCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnY2EtZnVsbC13aWR0aCc6IGlzRGV0YWlsc1BhZ2VTZWFyY2h9XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3BlblNlYXJjaFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY2hpcHMubGVuZ3RoID49IDNcIlxuICAgICAgICAgICN0YWJsZVNlYXJjaElucHV0XG4gICAgICAgICAgaWQ9XCJ0YWJsZS1zZWFyY2hcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAoa2V5dXApPVwib25UeXBpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uRW50ZXIoKVwiXG4gICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgbWF4bGVuZ3RoPVwiMzBcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2FwaXRhbGl6ZUlucHV0KCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmluZCB7e1xuICAgICAgICAgICAgc2VsZWN0ZWRUYWJEYXRhLmdyaWROYW1lVGl0bGVcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZFRhYkRhdGEuZ3JpZE5hbWVUaXRsZVxuICAgICAgICAgICAgICA6ICdObyBUYWIgTmFtZSdcbiAgICAgICAgICB9fVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyU2VhcmNoICYmIG9wZW5TZWFyY2ggJiYgc2VhcmNoVGV4dC5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ0NvbmZpcm0nXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjNDI0MjQyJ1wiXG4gICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb25maXJtLWljb24gZC1mbGV4XCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ2FkZCcpXCJcbiAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwieyAnd2lkdGgucHgnOiAxOCwgJ2hlaWdodC5weCc6IDE4IH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkVudGVyKClcIlxuICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ0NsZWFyJ1wiXG4gICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1pY29uIGQtZmxleFwiXG5cbiAgICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdjbGVhclNlYXJjaCcpXCJcbiAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMTgsICdoZWlnaHQucHgnOiAxOCB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVHlwaW5nKCRldmVudClcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaXBzLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGlwcy1jb250YWluZXIgZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRvb2xiYXJTZWFyY2g7IGVsc2UgY2hpcENvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZGVudGl0eVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNoaXAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImkgfCBjaGlwQ2xhc3M6IGNoaXBzIDogY2hpcFRvRGVsZXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBjaGlwLnNlYXJjaFRleHQgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtY2hpcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJjaGlwVG9EZWxldGUgPSBpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiY2hpcFRvRGVsZXRlID0gLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDaGlwKGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogNiwgJ2hlaWdodC5weCc6IDYgfVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRTdmdQYXRoKCdjbGVhclNlYXJjaCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2NoaXBDb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUlkZW50aXR5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaSB8IGNoaXBDbGFzczogY2hpcHMgOiBjaGlwVG9EZWxldGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2hpcChpKVwiXG4gICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCInQ2xlYXInXCJcbiAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IGNoaXAuc2VhcmNoVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRlbGV0ZS1hbGwtY2hpcHMgcmVndWxhci1zdHlsZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICd0b29sYmFyLXN0eWxlJzogdG9vbGJhclNlYXJjaCB9XCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFsbENoaXBzKClcIlxuICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgIFttYWluQ2FUb29sdGlwXT1cIidDbGVhciBhbGwnXCJcbiAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjNDI0MjQyJ1wiXG4gICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgID5cbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgW3N2Z1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogMjMsICdoZWlnaHQucHgnOiAyMyB9XCJcbiAgICAgICAgICBbc3JjXT1cImdldFN2Z1BhdGgoJ2NsZWFyU2VhcmNoJylcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==