ca-components 1.6.1 → 1.6.12

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 (27) hide show
  1. package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +1 -1
  2. package/esm2022/lib/components/ca-filters/components/ca-location-filter/utils/constants/location-filter.constants.mjs +2 -2
  3. package/esm2022/lib/components/ca-input/base-classes/ca-input-base-helpres.mjs +1 -1
  4. package/esm2022/lib/components/ca-input/base-classes/ca-input-base.mjs +1 -1
  5. package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +1 -1
  6. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +1 -1
  7. package/esm2022/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.mjs +1 -1
  8. package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +1 -1
  9. package/esm2022/lib/components/ca-map/ca-map.component.mjs +1 -1
  10. package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +1 -1
  11. package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +69 -26
  12. package/esm2022/public-api.mjs +2 -1
  13. package/fesm2022/ca-components.mjs +69 -31
  14. package/fesm2022/ca-components.mjs.map +1 -1
  15. package/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.d.ts +1 -1
  16. package/lib/components/ca-input/base-classes/ca-input-base-helpres.d.ts +1 -1
  17. package/lib/components/ca-input/base-classes/ca-input-base.d.ts +2 -2
  18. package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +1 -1
  19. package/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.d.ts +1 -1
  20. package/lib/components/ca-map/ca-map.component.d.ts +1 -1
  21. package/lib/components/ca-tab-switch/ca-tab-switch.component.d.ts +8 -9
  22. package/package.json +1 -1
  23. package/public-api.d.ts +1 -0
  24. package/esm2022/lib/components/ca-tab-switch/models/hover-style.model.mjs +0 -2
  25. package/esm2022/lib/components/ca-tab-switch/utils/constants/tab-switch.constants.mjs +0 -7
  26. package/lib/components/ca-tab-switch/models/hover-style.model.d.ts +0 -4
  27. package/lib/components/ca-tab-switch/utils/constants/tab-switch.constants.d.ts +0 -6
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
182
182
  }], styledValueEmitter: [{
183
183
  type: Output
184
184
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtbm90ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1ub3RlL2NhLWlucHV0LW5vdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtbm90ZS9jYS1pbnB1dC1ub3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsVUFBVTtBQUNWLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsUUFBUTtBQUNSLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxRQUFRO0FBQ1IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLFlBQVk7QUFDWixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsWUFBWTtBQUNaLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3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QyxrQkFBa0IsQ0FBQyxDQUFDOzs0RkFrQnpDLG9CQUFvQjtrQkF0QmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxjQUN4QyxJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFFbEIsT0FBTzt3QkFDUCxZQUFZO3FCQUNiLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7d0RBR2MsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRy9CLElBQUk7c0JBQWhCLEtBQUs7Z0JBUU8sYUFBYTtzQkFBekIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbi8vIHBpcGVzXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYWZlLWh0bWwucGlwZSc7XG5cbi8vaGVscGVyXG5pbXBvcnQgeyBDb3B5UGFzdGVIZWxwZXIgfSBmcm9tICcuLi9jYS1ub3RlL3V0aWxzL2hlbHBlci9jb3B5LXBhc3RlLmhlbHBlcic7XG4vL2NvbXBvbmVudHNcbmltcG9ydCB7IENhTm90ZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NhLW5vdGUtY29udGFpbmVyL2NhLW5vdGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1zcGlubmVyL2NhLXNwaW5uZXIuY29tcG9uZW50Jztcbi8vYW5pbWF0aW9uXG5pbXBvcnQgeyBhY2NvcmRpb25BbmltYXRpb24gfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL2FjY29yZGlvbi1hbmltYXRpb24nO1xuLy9zdmctcm91dGVzXG5pbXBvcnQgeyBTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9zdmctcm91dGVzL3BheXJvbGwtbGlzdC1zdW1tYXJ5LXN2Zy1yb3V0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2EtaW5wdXQtbm90ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1pbnB1dC1ub3RlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQtbm90ZS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbYWNjb3JkaW9uQW5pbWF0aW9uKCdzaG93SGlkZUNhcmRCb2R5JyldLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gTW9kdWxlXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdiTW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIC8vIENvbXBvbmVudFxuICAgIENhTm90ZUNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBDYVNwaW5uZXJDb21wb25lbnQsXG5cbiAgICAvLyBQaXBlXG4gICAgU2FmZUh0bWxQaXBlLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0Tm90ZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ21haW5fZWRpdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIG5vdGVSZWY6XG4gICAgfCBFbGVtZW50UmVmXG4gICAgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ25vdGVDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbm90ZUNvbnRhaW5lciE6IENhTm90ZUNvbnRhaW5lckNvbXBvbmVudDtcblxuICBASW5wdXQoKSBzZXQgbm90ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKFxuICAgICAgKHZhbHVlICYmIHZhbHVlICE9ICcnICYmIHZhbHVlICE9ICdudWxsJyAmJiAhdGhpcy5pc1ZhbHVlKSB8fFxuICAgICAgdGhpcy5pc0JsYW5rTm90ZVxuICAgICkge1xuICAgICAgdGhpcy5zaG93Tm90ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBzZXQgaXNWaXNpYmxlTm90ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubm9BY3RpdmUgPSB2YWx1ZSA/ICdhY3RpdmUnIDogJ2lubmFjdGl2ZSc7XG4gICAgdGhpcy5faXNWaXNpYmxlTm90ZSA9IHZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIEBJbnB1dCgpIGlzQmxhbmtOb3RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG5vdGVUeXBlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZW50aXR5SWQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGVudGl0eVR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBoYXNEZWZBcnJvdzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzVmlzaWJsZUFycm93OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbm90ZUxhYmVsOiBzdHJpbmcgPSAnTm90ZSc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnVHlwZSBTb21ldGhpbmcuLi4nO1xuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAT3V0cHV0KCkgc3R5bGVkVmFsdWVFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8vbm90ZSBwcm9wZXJ0aWVzXG4gIHB1YmxpYyBfaXNWaXNpYmxlTm90ZTogYm9vbGVhbiB8IHN0cmluZyA9ICdudWxsJztcbiAgcHVibGljIHNlbGVjdGlvblRha2VuITogU2VsZWN0aW9uO1xuICBwdWJsaWMgcmFuZ2UhOiBSYW5nZTtcbiAgcHJpdmF0ZSBpc1ZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Tm90ZSE6IHN0cmluZztcbiAgcHVibGljIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGJsdXJOb3RlVGltZW91dCE6IE5vZGVKUy5UaW1lb3V0O1xuICBwdWJsaWMgbm9BY3RpdmUhOiBzdHJpbmc7XG5cbiAgLy9zYXZpbmdcbiAgcHVibGljIGlzU2F2aW5nTm90ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHNhdmVJbnRlcnZhbDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzU2F2ZUludGVydmFsU3RhcnRlZCE6IGJvb2xlYW47XG4gIHB1YmxpYyBzYXZlZFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIG9wZW5Ob3RlKCk6IHZvaWQge1xuICAgIHRoaXMubm9BY3RpdmUgPSAnJztcbiAgICB0aGlzLl9pc1Zpc2libGVOb3RlID0gIXRoaXMuX2lzVmlzaWJsZU5vdGU7XG5cbiAgICBpZiAodGhpcy5faXNWaXNpYmxlTm90ZSkge1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoZWNrRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5faXNWaXNpYmxlTm90ZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgfSwgMTUwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmFsdWUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pc1ZhbHVlID0gdHJ1ZTtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy52YWx1ZSA9IHRhcmdldC5pbm5lckhUTUw7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZU5vdGUoYWxsb3dTYXZlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlID09ICc8YnI+Jykge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgnPGJyPicsICcnKTtcbiAgICB9XG4gICAgaWYgKGFsbG93U2F2ZSkge1xuICAgICAgdGhpcy5zYXZlZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIGNvbnN0IHZhbCA9ICF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUgPT0gJycgPyBudWxsIDogdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub3RlVHlwZSA9PSAnZGV0YWlscy1jYXJkJyAmJlxuICAgICAgdGhpcy5lbnRpdHlJZCAmJlxuICAgICAgdGhpcy5lbnRpdHlUeXBlICE9ICcnXG4gICAgKSB7XG4gICAgICB0aGlzLmlzU2F2aW5nTm90ZSA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc1NhdmluZ05vdGUgPSBmYWxzZTtcbiAgICAgIH0sIDcwMCk7XG4gICAgICB0aGlzLnVwZGF0ZU5vdGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlZFZhbHVlRW1pdHRlci5lbWl0KHRoaXMubm90ZVJlZiEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xuICB9XG5cbiAgcHVibGljIHN0b3BCbHVyUmVtb3ZlVGltZW91dCgpOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5ibHVyTm90ZVRpbWVvdXQpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrQWN0aXZlSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90ZUNvbnRhaW5lciAmJiB0aGlzLm5vdGVDb250YWluZXI/LmNoZWNrQWN0aXZlSXRlbXMpIHtcbiAgICAgIHRoaXMubm90ZUNvbnRhaW5lcj8uY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgcHJlcGFyZUZvclRleHRSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkhO1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblRha2VuLnJhbmdlQ291bnQgJiYgdGhpcy5zZWxlY3Rpb25UYWtlbi5nZXRSYW5nZUF0KSB7XG4gICAgICB0aGlzLnJhbmdlID0gdGhpcy5zZWxlY3Rpb25UYWtlbi5nZXRSYW5nZUF0KDApO1xuICAgICAgdGhpcy5zZWxlY3Rpb25UYWtlbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4uYWRkUmFuZ2UodGhpcy5yYW5nZSk7XG5cbiAgICAgIHRoaXMuYmx1ck5vdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgICB0aGlzLmlzU2F2ZUludGVydmFsU3RhcnRlZCA9IGZhbHNlO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zYXZlSW50ZXJ2YWwpO1xuICAgIGlmICh0aGlzLnNhdmVkVmFsdWUgIT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zYXZlTm90ZSh0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlZFZhbHVlRW1pdHRlci5lbWl0KHRoaXMubm90ZVJlZiEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5vdGUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Tm90ZSA9IHRoaXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBDb3B5UGFzdGVIZWxwZXIub25QYXN0ZShldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBTdmdSb3V0ZXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdmdSb3V0ZXNbcHJvcGVydHlOYW1lXSBhcyBzdHJpbmc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJub3RlLWNvbnRhaW5lciB7eyBjdXN0b21DbGFzcyB9fVwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJub3RlLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgW2NsYXNzLnBvaW50ZXJdPVwiaXNWaXNpYmxlQXJyb3dcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vdGUtbGFiZWxcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogX2lzVmlzaWJsZU5vdGUgPyAnIzQyNDI0MicgOiAnIzZDNkM2QycgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaXNWaXNpYmxlQXJyb3cgPyBvcGVuTm90ZSgpIDogJydcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBub3RlTGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJub3RlX3Rvb2xzX2NvbnRhaW5lclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaXNWaXNpYmxlQXJyb3cgJiYgIV9pc1Zpc2libGVOb3RlID8gb3Blbk5vdGUoKSA6ICcnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1ub3RlLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICNub3RlQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgW2lzRXhwYW5kZWRdPVwiX2lzVmlzaWJsZU5vdGUgJiYgX2lzVmlzaWJsZU5vdGUgIT0gJ251bGwnXCJcbiAgICAgICAgICAgICAgICBbcmFuZ2VdPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25UYWtlbl09XCJzZWxlY3Rpb25UYWtlblwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbaXNQb3BvdmVyTm90ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRWRpdG9yXT1cIm5vdGVSZWY/Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICAgICAgICAgIFtpc1Zpc2libGVBcnJvd109XCJpc1Zpc2libGVBcnJvd1wiXG4gICAgICAgICAgICAgICAgKHN0b3BCbHVyUmVtb3ZlVGltZW91dCk9XCJzdG9wQmx1clJlbW92ZVRpbWVvdXQoKVwiXG4gICAgICAgICAgICA+PC9hcHAtY2Etbm90ZS1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoaXNWaXNpYmxlQXJyb3cpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGVfdXBwZXJfaG9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGUtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGU6IF9pc1Zpc2libGVOb3RlICYmIF9pc1Zpc2libGVOb3RlICE9ICdudWxsJyxcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNEZWZBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0U3ZnUGF0aCgnZG93bkFycm93JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldFN2Z1BhdGgoJ3VwQXJyb3cnKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk5vdGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBCb2R5IC0tPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5vdGUtYm9keVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIm5vQWN0aXZlXCJcbiAgICAgICAgI25vdGVCb2R5XG4gICAgICAgIFtAc2hvd0hpZGVDYXJkQm9keV09XCJ7XG4gICAgICAgICAgICB2YWx1ZTogX2lzVmlzaWJsZU5vdGUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzBweCcsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnMHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI21haW5fZWRpdG9yXG4gICAgICAgICAgICBpZD1cIm1haW5fZWRpdG9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibm90ZS10ZXh0YXJlYVwiXG4gICAgICAgICAgICBbY2xhc3MuZGV0YWlsc190ZXh0YXJlYV09XCJub3RlVHlwZSA9PSAnZGV0YWlscy1jYXJkJ1wiXG4gICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGV4dF09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGlucHV0KT1cImNoYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cImNoZWNrRm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJwcmVwYXJlRm9yVGV4dFJhbmdlKClcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzaG93Tm90ZSB8IHNhZmVIdG1sXCJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgPCEtLSBTcGlubmVyIC0tPlxuICAgICAgICBAaWYgKGlzU2F2aW5nTm90ZSAmJiBub3RlVHlwZSA9PSAnZGV0YWlscy1jYXJkJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXIgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2JsdWVEYXJrJ1wiXG4gICAgICAgICAgICAgICAgPjwvYXBwLWNhLXNwaW5uZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtbm90ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1ub3RlL2NhLWlucHV0LW5vdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtbm90ZS9jYS1pbnB1dC1ub3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsVUFBVTtBQUNWLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsUUFBUTtBQUNSLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxRQUFRO0FBQ1IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLFlBQVk7QUFDWixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsWUFBWTtBQUNaLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3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QyxrQkFBa0IsQ0FBQyxDQUFDOzs0RkFrQnpDLG9CQUFvQjtrQkF0QmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxjQUN4QyxJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFFbEIsT0FBTzt3QkFDUCxZQUFZO3FCQUNiLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7d0RBR2MsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRy9CLElBQUk7c0JBQWhCLEtBQUs7Z0JBUU8sYUFBYTtzQkFBekIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbi8vIHBpcGVzXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYWZlLWh0bWwucGlwZSc7XG5cbi8vaGVscGVyXG5pbXBvcnQgeyBDb3B5UGFzdGVIZWxwZXIgfSBmcm9tICcuLi9jYS1ub3RlL3V0aWxzL2hlbHBlci9jb3B5LXBhc3RlLmhlbHBlcic7XG4vL2NvbXBvbmVudHNcbmltcG9ydCB7IENhTm90ZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NhLW5vdGUtY29udGFpbmVyL2NhLW5vdGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1zcGlubmVyL2NhLXNwaW5uZXIuY29tcG9uZW50Jztcbi8vYW5pbWF0aW9uXG5pbXBvcnQgeyBhY2NvcmRpb25BbmltYXRpb24gfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL2FjY29yZGlvbi1hbmltYXRpb24nO1xuLy9zdmctcm91dGVzXG5pbXBvcnQgeyBTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9zdmctcm91dGVzL3BheXJvbGwtbGlzdC1zdW1tYXJ5LXN2Zy1yb3V0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2EtaW5wdXQtbm90ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1pbnB1dC1ub3RlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQtbm90ZS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbYWNjb3JkaW9uQW5pbWF0aW9uKCdzaG93SGlkZUNhcmRCb2R5JyldLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gTW9kdWxlXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdiTW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIC8vIENvbXBvbmVudFxuICAgIENhTm90ZUNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBDYVNwaW5uZXJDb21wb25lbnQsXG5cbiAgICAvLyBQaXBlXG4gICAgU2FmZUh0bWxQaXBlLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0Tm90ZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ21haW5fZWRpdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIG5vdGVSZWY6XG4gICAgfCBFbGVtZW50UmVmXG4gICAgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ25vdGVDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbm90ZUNvbnRhaW5lciE6IENhTm90ZUNvbnRhaW5lckNvbXBvbmVudDtcblxuICBASW5wdXQoKSBzZXQgbm90ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKFxuICAgICAgKHZhbHVlICYmIHZhbHVlICE9ICcnICYmIHZhbHVlICE9ICdudWxsJyAmJiAhdGhpcy5pc1ZhbHVlKSB8fFxuICAgICAgdGhpcy5pc0JsYW5rTm90ZVxuICAgICkge1xuICAgICAgdGhpcy5zaG93Tm90ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBzZXQgaXNWaXNpYmxlTm90ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubm9BY3RpdmUgPSB2YWx1ZSA/ICdhY3RpdmUnIDogJ2lubmFjdGl2ZSc7XG4gICAgdGhpcy5faXNWaXNpYmxlTm90ZSA9IHZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIEBJbnB1dCgpIGlzQmxhbmtOb3RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG5vdGVUeXBlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZW50aXR5SWQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGVudGl0eVR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBoYXNEZWZBcnJvdzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzVmlzaWJsZUFycm93OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbm90ZUxhYmVsOiBzdHJpbmcgPSAnTm90ZSc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnVHlwZSBTb21ldGhpbmcuLi4nO1xuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAT3V0cHV0KCkgc3R5bGVkVmFsdWVFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8vbm90ZSBwcm9wZXJ0aWVzXG4gIHB1YmxpYyBfaXNWaXNpYmxlTm90ZTogYm9vbGVhbiB8IHN0cmluZyA9ICdudWxsJztcbiAgcHVibGljIHNlbGVjdGlvblRha2VuITogU2VsZWN0aW9uO1xuICBwdWJsaWMgcmFuZ2UhOiBSYW5nZTtcbiAgcHJpdmF0ZSBpc1ZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Tm90ZSE6IHN0cmluZztcbiAgcHVibGljIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGJsdXJOb3RlVGltZW91dCE6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwdWJsaWMgbm9BY3RpdmUhOiBzdHJpbmc7XG5cbiAgLy9zYXZpbmdcbiAgcHVibGljIGlzU2F2aW5nTm90ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHNhdmVJbnRlcnZhbDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzU2F2ZUludGVydmFsU3RhcnRlZCE6IGJvb2xlYW47XG4gIHB1YmxpYyBzYXZlZFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIG9wZW5Ob3RlKCk6IHZvaWQge1xuICAgIHRoaXMubm9BY3RpdmUgPSAnJztcbiAgICB0aGlzLl9pc1Zpc2libGVOb3RlID0gIXRoaXMuX2lzVmlzaWJsZU5vdGU7XG5cbiAgICBpZiAodGhpcy5faXNWaXNpYmxlTm90ZSkge1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoZWNrRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5faXNWaXNpYmxlTm90ZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgfSwgMTUwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVmFsdWUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pc1ZhbHVlID0gdHJ1ZTtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy52YWx1ZSA9IHRhcmdldC5pbm5lckhUTUw7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZU5vdGUoYWxsb3dTYXZlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlID09ICc8YnI+Jykge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgnPGJyPicsICcnKTtcbiAgICB9XG4gICAgaWYgKGFsbG93U2F2ZSkge1xuICAgICAgdGhpcy5zYXZlZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIGNvbnN0IHZhbCA9ICF0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUgPT0gJycgPyBudWxsIDogdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub3RlVHlwZSA9PSAnZGV0YWlscy1jYXJkJyAmJlxuICAgICAgdGhpcy5lbnRpdHlJZCAmJlxuICAgICAgdGhpcy5lbnRpdHlUeXBlICE9ICcnXG4gICAgKSB7XG4gICAgICB0aGlzLmlzU2F2aW5nTm90ZSA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc1NhdmluZ05vdGUgPSBmYWxzZTtcbiAgICAgIH0sIDcwMCk7XG4gICAgICB0aGlzLnVwZGF0ZU5vdGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlZFZhbHVlRW1pdHRlci5lbWl0KHRoaXMubm90ZVJlZiEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xuICB9XG5cbiAgcHVibGljIHN0b3BCbHVyUmVtb3ZlVGltZW91dCgpOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5ibHVyTm90ZVRpbWVvdXQpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrQWN0aXZlSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90ZUNvbnRhaW5lciAmJiB0aGlzLm5vdGVDb250YWluZXI/LmNoZWNrQWN0aXZlSXRlbXMpIHtcbiAgICAgIHRoaXMubm90ZUNvbnRhaW5lcj8uY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgcHJlcGFyZUZvclRleHRSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkhO1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblRha2VuLnJhbmdlQ291bnQgJiYgdGhpcy5zZWxlY3Rpb25UYWtlbi5nZXRSYW5nZUF0KSB7XG4gICAgICB0aGlzLnJhbmdlID0gdGhpcy5zZWxlY3Rpb25UYWtlbi5nZXRSYW5nZUF0KDApO1xuICAgICAgdGhpcy5zZWxlY3Rpb25UYWtlbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4uYWRkUmFuZ2UodGhpcy5yYW5nZSk7XG5cbiAgICAgIHRoaXMuYmx1ck5vdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgICB0aGlzLmlzU2F2ZUludGVydmFsU3RhcnRlZCA9IGZhbHNlO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zYXZlSW50ZXJ2YWwpO1xuICAgIGlmICh0aGlzLnNhdmVkVmFsdWUgIT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zYXZlTm90ZSh0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlZFZhbHVlRW1pdHRlci5lbWl0KHRoaXMubm90ZVJlZiEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5vdGUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Tm90ZSA9IHRoaXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBDb3B5UGFzdGVIZWxwZXIub25QYXN0ZShldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBTdmdSb3V0ZXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdmdSb3V0ZXNbcHJvcGVydHlOYW1lXSBhcyBzdHJpbmc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJub3RlLWNvbnRhaW5lciB7eyBjdXN0b21DbGFzcyB9fVwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJub3RlLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgW2NsYXNzLnBvaW50ZXJdPVwiaXNWaXNpYmxlQXJyb3dcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vdGUtbGFiZWxcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogX2lzVmlzaWJsZU5vdGUgPyAnIzQyNDI0MicgOiAnIzZDNkM2QycgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaXNWaXNpYmxlQXJyb3cgPyBvcGVuTm90ZSgpIDogJydcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBub3RlTGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJub3RlX3Rvb2xzX2NvbnRhaW5lclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaXNWaXNpYmxlQXJyb3cgJiYgIV9pc1Zpc2libGVOb3RlID8gb3Blbk5vdGUoKSA6ICcnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1ub3RlLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICNub3RlQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgW2lzRXhwYW5kZWRdPVwiX2lzVmlzaWJsZU5vdGUgJiYgX2lzVmlzaWJsZU5vdGUgIT0gJ251bGwnXCJcbiAgICAgICAgICAgICAgICBbcmFuZ2VdPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25UYWtlbl09XCJzZWxlY3Rpb25UYWtlblwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbaXNQb3BvdmVyTm90ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRWRpdG9yXT1cIm5vdGVSZWY/Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICAgICAgICAgIFtpc1Zpc2libGVBcnJvd109XCJpc1Zpc2libGVBcnJvd1wiXG4gICAgICAgICAgICAgICAgKHN0b3BCbHVyUmVtb3ZlVGltZW91dCk9XCJzdG9wQmx1clJlbW92ZVRpbWVvdXQoKVwiXG4gICAgICAgICAgICA+PC9hcHAtY2Etbm90ZS1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoaXNWaXNpYmxlQXJyb3cpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGVfdXBwZXJfaG9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGUtYXJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGU6IF9pc1Zpc2libGVOb3RlICYmIF9pc1Zpc2libGVOb3RlICE9ICdudWxsJyxcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNEZWZBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0U3ZnUGF0aCgnZG93bkFycm93JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldFN2Z1BhdGgoJ3VwQXJyb3cnKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk5vdGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBCb2R5IC0tPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5vdGUtYm9keVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIm5vQWN0aXZlXCJcbiAgICAgICAgI25vdGVCb2R5XG4gICAgICAgIFtAc2hvd0hpZGVDYXJkQm9keV09XCJ7XG4gICAgICAgICAgICB2YWx1ZTogX2lzVmlzaWJsZU5vdGUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzBweCcsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnMHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI21haW5fZWRpdG9yXG4gICAgICAgICAgICBpZD1cIm1haW5fZWRpdG9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibm90ZS10ZXh0YXJlYVwiXG4gICAgICAgICAgICBbY2xhc3MuZGV0YWlsc190ZXh0YXJlYV09XCJub3RlVHlwZSA9PSAnZGV0YWlscy1jYXJkJ1wiXG4gICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGV4dF09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGlucHV0KT1cImNoYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cImNoZWNrRm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJwcmVwYXJlRm9yVGV4dFJhbmdlKClcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzaG93Tm90ZSB8IHNhZmVIdG1sXCJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgPCEtLSBTcGlubmVyIC0tPlxuICAgICAgICBAaWYgKGlzU2F2aW5nTm90ZSAmJiBub3RlVHlwZSA9PSAnZGV0YWlscy1jYXJkJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXIgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2JsdWVEYXJrJ1wiXG4gICAgICAgICAgICAgICAgPjwvYXBwLWNhLXNwaW5uZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
350
350
  }], openInMapEvent: [{
351
351
  type: Output
352
352
  }] } });
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL2NhLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBWTlDLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFL0QsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQXVCdEUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDVyxFQUFxQixFQUNwQixFQUFjLEVBQ2QsUUFBbUI7SUFFM0IsV0FBVztJQUNILGlCQUF1QztRQUx4QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUduQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBVXpDLDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDdEQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUNyRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQ3pELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFaEMsd0JBQW1CLEdBQXFDLEVBQUUsQ0FBQztRQUUzRCxlQUFVLEdBQWdCLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDO1FBQ2xFLFlBQU8sR0FBVyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RCxjQUFTLEdBQWUsbUJBQW1CLENBQUMsa0JBQWtCLENBQUM7UUFDL0QsUUFBRyxHQUEyQixJQUFJLENBQUM7UUFDbkMsZUFBVSxHQUFXLGtCQUFrQixDQUFDO1FBQ3hDLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBRTFCLHlCQUFvQixHQUF1QixJQUFJLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV0RCxtQkFBYyxHQUFrQyxFQUFFLENBQUM7UUFFbkQseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFcEMsd0JBQW1CLEdBQTRCLENBQUMsQ0FBQztRQUVoRCxxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO0lBdkMxQyxDQUFDO0lBS0osSUFBYSxJQUFJLENBQUMsTUFBbUI7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBa0NELFFBQVE7UUFDSixzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsVUFBdUI7UUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQ25ELFVBQVUsRUFDVixJQUFJLENBQUMsb0JBQW9CLENBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsa0JBQWtCO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzs7WUFDN0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxRQUFnQjtRQUN2QyxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxhQUFhLENBQUMsVUFBdUI7UUFDeEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQ25ELFVBQVUsRUFDVixJQUFJLENBQUMsb0JBQW9CLENBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsa0JBQWtCO1lBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7O1lBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sVUFBVSxDQUFDLFdBQTRCO1FBTTFDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUMvQyxZQUFZLENBQUMsc0JBQXNCLENBQ3RDLENBQUM7WUFDRixJQUFJLENBQUMsR0FBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsR0FBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7WUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRTFELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FDNUIsU0FBUyxDQUFDLG9CQUFvQixDQUMxQixZQUFzQixFQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQzFCLENBQUM7Z0JBQ04sT0FBTztvQkFDSCxTQUFTLEVBQUUsU0FBUztvQkFDcEIsV0FBVyxFQUFFLFNBQVM7b0JBQ3RCLFlBQVksRUFBRSxHQUFHO29CQUNqQixXQUFXLEVBQUUsV0FBVztpQkFDM0IsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSx3QkFBd0I7UUFDM0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sdUJBQXVCLENBQzFCLFVBQXVCLEVBQ3ZCLFdBQWdDO1FBRWhDLE9BQU8sQ0FDSCxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUc7WUFDdEQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQ3pELENBQUM7SUFDTixDQUFDO0lBRU0sd0JBQXdCO1FBQzNCLElBQUksSUFBSSxDQUFDLG9CQUFvQjtZQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxZQUFZLENBQUMsWUFBc0I7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTdDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixNQUFNLGFBQWEsR0FBRyxZQUFZO2dCQUM5QixDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLGlDQUFpQztZQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUV6QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNyQixNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUMvQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNMLE1BQU0sV0FBVyxHQUFHOzRCQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVM7NEJBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBVTt5QkFDdkIsQ0FBQzt3QkFDRixPQUFPLFdBQVcsQ0FBQztvQkFDdkIsQ0FBQyxDQUNKLENBQUM7b0JBRUYsTUFBTSxhQUFhLEdBQWdDO3dCQUMvQyxJQUFJLEVBQUUsbUJBQW1CO3dCQUN6QixRQUFRLEVBQUUsSUFBSTt3QkFDZCxXQUFXLEVBQ1AsS0FBSyxDQUFDLFdBQVcsSUFBSSxhQUFhLENBQUMsWUFBWTt3QkFDbkQsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVE7NEJBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYTtnQ0FDbkIsYUFBYSxDQUFDLGNBQWM7NEJBQzlCLENBQUMsQ0FBQyxDQUFDO3dCQUNQLFlBQVksRUFDUixLQUFLLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQyxhQUFhO3dCQUNyRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVE7NEJBQ2pCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlO2dDQUN0QixtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQzs0QkFDL0MsQ0FBQyxDQUFDLElBQUk7d0JBQ1YsTUFBTSxFQUFFLEtBQUs7cUJBQ2hCLENBQUM7b0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQW1CLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDN0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUNsRCxVQUFVLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FDekIsQ0FBQztZQUNGLElBQUksVUFBVTtnQkFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDckIsVUFBVSxFQUNWLG1CQUFtQixDQUFDLFFBQVEsQ0FDL0IsQ0FBQztZQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFFbEMsT0FBTztnQkFDSCxHQUFHLE1BQU07Z0JBQ1QsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUU7YUFDakMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUM1QixDQUFDLGFBQTBCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ2xELFdBQVcsR0FBRyxTQUFTLENBQzFCLENBQUM7WUFDRixJQUFJLFVBQVU7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3JCLFVBQVUsRUFDVixtQkFBbUIsQ0FBQyxRQUFRLENBQy9CLENBQUM7WUFDTixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLENBQUMsQ0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUTtZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHO2dCQUNkLEdBQUcsSUFBSSxDQUFDLFVBQVU7Z0JBQ2xCLE1BQU0sRUFBRSxZQUFZLENBQUMsc0JBQXNCO2FBQzlDLENBQUM7UUFFTixNQUFNLGtCQUFrQixHQUFHO1lBQ3ZCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDdEMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ2xDLENBQUM7UUFFRixJQUFJLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE1BQU0sa0JBQWtCLEdBQ3BCLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXRELElBQUksQ0FBQyxHQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLElBQUksa0JBQWtCLENBQUMsTUFBTTtnQkFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPO2dCQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFvQjtRQUN4QyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRW5DLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixNQUFNLFlBQVksR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxVQUFrQztRQUMzRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDbkQsVUFBVSxFQUNWLElBQUksQ0FBQyxvQkFBb0IsQ0FDNUIsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFRO1lBQ3hCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFlO1NBQ2xDLENBQUM7UUFFRixlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBaUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUN6RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDakQsSUFBSSxFQUNKLFVBQVUsQ0FDYixDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBRTlDLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRW5FLE1BQU0sWUFBWSxHQUFHLGVBQWU7Z0JBQ2hDLENBQUMsQ0FBQyxXQUFXLEdBQUcsU0FBUztnQkFDekIsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBRTNCLE1BQU0sZUFBZSxHQUFHLGVBQWU7Z0JBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWE7Z0JBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUV4QyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBRS9CLElBQUksZUFBZTtvQkFBRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDOztvQkFDbEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztnQkFFeEMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUV2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDdkMsTUFBTSxVQUFVLEdBQ1osSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUV0RCxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsZUFBZSxLQUFLLGVBQWUsQ0FBQzt3QkFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3RCLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLGVBQWUsRUFDZixVQUFVLENBQ2IsQ0FBQztvQkFFTixJQUNJLFVBQVU7d0JBQ1YsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FDM0IsbUJBQW1CLENBQUMsUUFBUSxDQUMvQjt3QkFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDbEIsVUFBVSxFQUNWLG1CQUFtQixDQUFDLFFBQVEsQ0FDL0IsQ0FBQztvQkFFTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxlQUFlLENBQUM7b0JBQzdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxlQUFlLENBQUM7b0JBRTdDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzVCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNYLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLFVBQVUsR0FDWixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRXRELElBQ0ksVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQzNCLG1CQUFtQixDQUFDLFFBQVEsQ0FDL0I7b0JBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3JCLFVBQVUsRUFDVixtQkFBbUIsQ0FBQyxRQUFRLENBQy9CLENBQUM7Z0JBRU4sVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztRQUV2QyxJQUFJLENBQUMsa0JBQWtCO1lBQUUsSUFBSSxDQUFDLEdBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUxRCxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQW9CO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0I7WUFDL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvRCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlDLElBQ0ksT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNO2dCQUN2QixPQUFPLENBQUMsY0FBYyxFQUFFLE1BQU07Z0JBQzlCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsTUFBTTtnQkFFOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sWUFBWSxDQUFDLFdBQXdCO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3hDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDTCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7WUFDOUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3JELEVBQUUsRUFBRSxDQUFDO1FBRU4sT0FBTyxTQUFTLElBQUksSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQjthQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0F6YVEsY0FBYzttR0FBZCxjQUFjLDZZQVNaLFNBQVMsd1BDekV4Qix5ektBd0pBO2dCRHBHUSxVQUFVO2dCQUNWLGdCQUFnQix5aURBQ2hCLFlBQVksNEhBQ1osb0JBQW9CLGdPQUNwQixnQkFBZ0I7Z0JBRWhCLGFBQWE7Z0JBQ2Isc0JBQXNCLDhNQUN0Qix1QkFBdUI7OzRGQUlsQixjQUFjO2tCQWxCMUIsU0FBUzsrQkFDSSxZQUFZLGNBR1YsSUFBSSxXQUNQO3dCQUNMLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUVoQixhQUFhO3dCQUNiLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3FCQUMxQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzBLQVdJLElBQUk7c0JBQTVDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDVixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFZixJQUFJO3NCQUFoQixLQUFLO2dCQUlJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8vIE1vZHVsZXNcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgR29vZ2xlTWFwLCBHb29nbGVNYXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgR29vZ2xlTWFwRW51bSB9IGZyb20gJy4uL2NhLW1hcC9lbnVtcy9nb29nbGUtbWFwLmVudW0nO1xuaW1wb3J0IHsgTWFwTWFya2VyU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7XG4gICAgSU1hcE1hcmtlcnMsXG4gICAgSUNhTWFwUHJvcHMsXG4gICAgSU1hcE9wdGlvbnMsXG4gICAgSVJvdXRlUGF0aCxcbiAgICBJTWFwQm91bmRzWm9vbSxcbiAgICBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhLFxufSBmcm9tICcuLi9jYS1tYXAvbW9kZWxzJztcblxuLy8gSGVscGVyc1xuaW1wb3J0IHsgTWFwSGVscGVyIH0gZnJvbSAnLi4vY2EtbWFwL3V0aWxzL2hlbHBlcnMvbWFwLmhlbHBlcic7XG5cbi8vIENvbnN0YW50c1xuaW1wb3J0IHsgTWFwT3B0aW9uc0NvbnN0YW50cywgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgTWFwTWFya2VySWNvblNlcnZpY2UgfSBmcm9tICcuL3V0aWxzL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtbWFwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBHb29nbGVNYXBzTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBOZ2JUb29sdGlwTW9kdWxlLFxuXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FNYXBEcm9wZG93bkNvbXBvbmVudCxcbiAgICAgICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDYU1hcENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblxuICAgICAgICAvLyBTZXJ2aWNlc1xuICAgICAgICBwcml2YXRlIG1hcmtlckljb25TZXJ2aWNlOiBNYXBNYXJrZXJJY29uU2VydmljZVxuICAgICkge31cbiAgICBAVmlld0NoaWxkKEdvb2dsZU1hcCwgeyBzdGF0aWM6IGZhbHNlIH0pIG1hcHMhOiBHb29nbGVNYXA7XG4gICAgQFZpZXdDaGlsZCgnbWFya2VyRHJvcGRvd24nKSBtYXJrZXJEcm9wZG93biE6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnY2x1c3RlckRyb3Bkb3duJykgY2x1c3RlckRyb3Bkb3duITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHNldCBkYXRhKHZhbHVlczogSUNhTWFwUHJvcHMpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVNYXBEYXRhKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTWFya2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYXBNYXJrZXJzPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTGlzdFNjcm9sbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwTWFya2Vycz4oKTtcbiAgICBAT3V0cHV0KCkgZ2V0SW5mb1dpbmRvd0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgYm91bmRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hcEJvdW5kc1pvb20+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5Jbk1hcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgZGlyZWN0aW9uc1JlbmRlcmVyczogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyW10gPSBbXTtcblxuICAgIHB1YmxpYyBtYXBPcHRpb25zOiBJTWFwT3B0aW9ucyA9IE1hcE9wdGlvbnNDb25zdGFudHMuREVGQVVMVF9NQVBfT1BUSU9OUztcbiAgICBwdWJsaWMgbWFwWm9vbTogbnVtYmVyID0gTWFwT3B0aW9uc0NvbnN0YW50cy5ERUZBVUxUX01BUF9aT09NO1xuICAgIHB1YmxpYyBtYXBDZW50ZXI6IElSb3V0ZVBhdGggPSBNYXBPcHRpb25zQ29uc3RhbnRzLkRFRkFVTFRfTUFQX0NFTlRFUjtcbiAgICBwdWJsaWMgbWFwOiBnb29nbGUubWFwcy5NYXAgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgbWFwU3R5bGVJZDogc3RyaW5nID0gJ2Q2ODE5MDRhMzkwYTg0MDInO1xuICAgIHB1YmxpYyBtYXBEYXRhOiBJQ2FNYXBQcm9wcyA9IHt9O1xuXG4gICAgcHVibGljIG9wZW5lZEluZm9XaW5kb3dEYXRhOiBJTWFwTWFya2VycyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBhcmVhRmlsdGVyRGF0YSA9IE1hcE9wdGlvbnNDb25zdGFudHMuQVJFQV9GSUxURVJfREFUQTtcblxuICAgIHB1YmxpYyByb3V0ZVBvbHlsaW5lczogZ29vZ2xlLm1hcHMuUG9seWxpbmVPcHRpb25zW10gPSBbXTtcblxuICAgIHB1YmxpYyBpc01hcmtlckRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0NsdXN0ZXJEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNNYXBDZW50ZXJTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNBcmVhRmlsdGVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duVGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCBudW1iZXIgPSAwO1xuXG4gICAgcHJpdmF0ZSBjbHVzdGVyTWFya2VySWRzOiBJTWFwTWFya2Vyc1tdID0gW107XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8gUmVzZXQgYWxsIGljb25zIHRvIHRoZWlyIGluaXRpYWwgc3RhdGUgb24gcGFnZSBsb2FkXG4gICAgICAgIHRoaXMucmVzZXRNYXJrZXJzSWNvbnMoKTtcblxuICAgICAgICB0aGlzLmdldE1hcmtlclNlcnZpY2VEYXRhKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlSW5mb1dpbmRvdygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbHVzdGVyTWFya2VyQ2xpY2sobWFya2VySXRlbTogSU1hcE1hcmtlcnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgIG1hcmtlckl0ZW0sXG4gICAgICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMuY2x1c3Rlck1hcmtlckNsaWNrLmVtaXQobWFya2VySXRlbSk7XG4gICAgICAgIGVsc2UgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWFya2VySW5mb1dpbmRvdyhtYXJrZXJJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChtYXJrZXJJZCkgdGhpcy5nZXRJbmZvV2luZG93RGF0YS5lbWl0KG1hcmtlcklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NYXJrZXJDbGljayhtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0luZm9XaW5kb3dPcGVuZWQgPSB0aGlzLmNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgICAgICAgICAgbWFya2VySXRlbSxcbiAgICAgICAgICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGFcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlzSW5mb1dpbmRvd09wZW5lZCkgdGhpcy5nZXRNYXJrZXJJbmZvV2luZG93KG1hcmtlckl0ZW0uZGF0YS5pZCk7XG4gICAgICAgIGVsc2UgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NYXBSZWFkeShtYXBJbnN0YW5jZTogZ29vZ2xlLm1hcHMuTWFwKToge1xuICAgICAgICBmaWxsQ29sb3I/OiBzdHJpbmc7XG4gICAgICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgICAgICBzdHJva2VXZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgIGZpbGxPcGFjaXR5PzogbnVtYmVyO1xuICAgIH0gfCB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXAgPSBtYXBJbnN0YW5jZTtcblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhPy5kYXJrTW9kZSkge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVkTWFwVHlwZSA9IG5ldyBnb29nbGUubWFwcy5TdHlsZWRNYXBUeXBlKFxuICAgICAgICAgICAgICAgIE1hcENvbnN0YW50cy5HT09HTEVfTUFQX0RBUktfU1RZTEVTXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5tYXAhLm1hcFR5cGVzLnNldChHb29nbGVNYXBFbnVtLkRBUktfTUFQLCBzdHlsZWRNYXBUeXBlKTtcbiAgICAgICAgICAgIHRoaXMubWFwIS5zZXRNYXBUeXBlSWQoR29vZ2xlTWFwRW51bS5EQVJLX01BUCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVCb3VuZGFyaWVzVXJsID0gdGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybC51cmw7XG4gICAgICAgICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5kYXRhLmxvYWRHZW9Kc29uKHN0YXRlQm91bmRhcmllc1VybCk7XG5cbiAgICAgICAgICAgIHRoaXMubWFwcy5nb29nbGVNYXA/LmRhdGEuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZURlbnNpdHkgPSBmZWF0dXJlLmdldFByb3BlcnR5KCdkZW5zaXR5Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWxsQ29sb3IsIGZpbGxPcGFjaXR5IH0gPVxuICAgICAgICAgICAgICAgICAgICBNYXBIZWxwZXIuZ2V0RmlsbENvbG9yRm9yU3RhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZURlbnNpdHkgYXMgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBEYXRhLnZpZXcgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6IGZpbGxDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjRUVFRUVFJyxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAwLjYsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiBmaWxsT3BhY2l0eSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgdGhpcy5zZXRNYXBTdHlsZXMoKTtcbiAgICAgICAgdGhpcy5nZXRNYXBJZGxlRXZlbnQobWFwSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZE1hcmtlckl0ZW0uZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgIG1hcmtlckl0ZW06IElNYXBNYXJrZXJzLFxuICAgICAgICBtYXJrZXJJdGVtMj86IElNYXBNYXJrZXJzIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgbWFya2VySXRlbS5wb3NpdGlvbi5sYXQgPT09IG1hcmtlckl0ZW0yPy5wb3NpdGlvbj8ubGF0ICYmXG4gICAgICAgICAgICBtYXJrZXJJdGVtLnBvc2l0aW9uLmxuZyA9PT0gbWFya2VySXRlbTI/LnBvc2l0aW9uPy5sbmdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSlcbiAgICAgICAgICAgIHRoaXMuY2x1c3Rlckxpc3RTY3JvbGxFdmVudC5lbWl0KHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblpvb21DaGFuZ2UoaXNNaW51c0NsaWNrPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Wm9vbUxldmVsID0gdGhpcy5tYXA/LmdldFpvb20oKTtcblxuICAgICAgICBpZiAoY3VycmVudFpvb21MZXZlbCkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFpvb21MZXZlbCA9IGlzTWludXNDbGlja1xuICAgICAgICAgICAgICAgID8gY3VycmVudFpvb21MZXZlbCAtIDFcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRab29tTGV2ZWwgKyAxO1xuICAgICAgICAgICAgdGhpcy5tYXA/LnNldFpvb20obmV4dFpvb21MZXZlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcGVuSW5NYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbkluTWFwRXZlbnQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMpIHtcbiAgICAgICAgICAgIC8vIENsZWFyIHByZXZpb3VzIHJvdXRlIHBvbHlsaW5lc1xuICAgICAgICAgICAgdGhpcy5yb3V0ZVBvbHlsaW5lcyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLm1hcERhdGEucm91dGVQYXRocyEuZm9yRWFjaCgocm91dGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlLmRlY29kZWRTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2x5TGluZUNvb3JkaW5hdGVzID0gcm91dGUuZGVjb2RlZFNoYXBlPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IGl0ZW0ubGF0aXR1ZGUhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbmc6IGl0ZW0ubG9uZ2l0dWRlISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVBvbHlsaW5lOiBnb29nbGUubWFwcy5Qb2x5bGluZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwb2x5TGluZUNvb3JkaW5hdGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VvZGVzaWM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZS5zdHJva2VDb2xvciB8fCBHb29nbGVNYXBFbnVtLlNUUk9LRV9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6ICFyb3V0ZS5pc0Rhc2hlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcm91dGUuc3Ryb2tlT3BhY2l0eSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR29vZ2xlTWFwRW51bS5TVFJPS0VfT1BBQ0lUWVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdlaWdodDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZS5zdHJva2VXZWlnaHQgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfV0VJR0hULFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbnM6IHJvdXRlLmlzRGFzaGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAocm91dGUuZGFzaGVkTGluZVN0eWxlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfREFTSEVEX0xJTkVfSUNPTilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVQb2x5bGluZXMucHVzaChyb3V0ZVBvbHlsaW5lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRNYXJrZXJzSWNvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwRGF0YS5tYXJrZXJzPy5tYXAoKG1hcmtlcjogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb24gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAnI21hcmtlci0nICsgbWFya2VyLmlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hcmtlckljb24pXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbixcbiAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubWFya2VyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgekluZGV4OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFwRGF0YS5jbHVzdGVyTWFya2Vycz8ubWFwKFxuICAgICAgICAgICAgKGNsdXN0ZXJNYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2x1c3RlcklkID0gdGhpcy5nZXRDbHVzdGVySWQoY2x1c3Rlck1hcmtlcik7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAnI2NsdXN0ZXItJyArIGNsdXN0ZXJJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlckljb24pXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDbHVzdGVyRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNYXBTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1hcERhdGE/LmRhcmtNb2RlKVxuICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IE1hcENvbnN0YW50cy5HT09HTEVfTUFQX0RBUktfU1RZTEVTLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBhbGxNYXJrZXJzQ29tYmluZWQgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLm1hcERhdGEuY2x1c3Rlck1hcmtlcnMgPz8gW10pLFxuICAgICAgICAgICAgLi4uKHRoaXMubWFwRGF0YS5tYXJrZXJzID8/IFtdKSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoYWxsTWFya2Vyc0NvbWJpbmVkPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcENlbnRlckFuZEJvdW5kcyA9XG4gICAgICAgICAgICAgICAgTWFwSGVscGVyLmdldE1hcENlbnRlckFuZFpvb20oYWxsTWFya2Vyc0NvbWJpbmVkKTtcblxuICAgICAgICAgICAgdGhpcy5tYXAhLnBhblRvKG1hcENlbnRlckFuZEJvdW5kcy5tYXBDZW50ZXIpO1xuICAgICAgICAgICAgaWYgKG1hcENlbnRlckFuZEJvdW5kcy5ib3VuZHMpXG4gICAgICAgICAgICAgICAgdGhpcy5tYXA/LmZpdEJvdW5kcyhtYXBDZW50ZXJBbmRCb3VuZHMuYm91bmRzKTtcbiAgICAgICAgICAgIGlmIChtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSlcbiAgICAgICAgICAgICAgICB0aGlzLm1hcD8uc2V0Wm9vbShtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNNYXBDZW50ZXJTZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXBJZGxlRXZlbnQobWFwOiBnb29nbGUubWFwcy5NYXApOiB2b2lkIHtcbiAgICAgICAgbWFwLmFkZExpc3RlbmVyKCdpZGxlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VuZEJvdW5kc0NoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBCb3VuZHMgPSB0aGlzLm1hcC5nZXRCb3VuZHMoKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcFpvb20gPSB0aGlzLm1hcC5nZXRab29tKCk7XG5cbiAgICAgICAgICAgIGlmIChtYXBCb3VuZHMgJiYgbWFwWm9vbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kc09iamVjdCA9IHsgYm91bmRzOiBtYXBCb3VuZHMsIHpvb206IG1hcFpvb20gfTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5kc0NoYW5nZWQuZW1pdChib3VuZHNPYmplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuTWFya2VySW5mb1dpbmRvdyhtYXJrZXJJdGVtOiBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgICAgICBtYXJrZXJJdGVtLFxuICAgICAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkTWFya2VycyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMubWFwRGF0YS5tYXJrZXJzISxcbiAgICAgICAgICAgIC4uLnRoaXMubWFwRGF0YS5jbHVzdGVyTWFya2VycyEsXG4gICAgICAgIF07XG5cbiAgICAgICAgY29tYmluZWRNYXJrZXJzLmZvckVhY2goKGl0ZW06IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkTWFya2VyID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgIG1hcmtlckl0ZW1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzQ2x1c3Rlck1hcmtlciA9IGl0ZW0/LmRhdGE/LmNvdW50ID4gMTtcblxuICAgICAgICAgICAgY29uc3QgY2x1c3RlcklkID0gaXNDbHVzdGVyTWFya2VyID8gdGhpcy5nZXRDbHVzdGVySWQoaXRlbSkgOiBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBtYXJrZXJJY29uSWQgPSBpc0NsdXN0ZXJNYXJrZXJcbiAgICAgICAgICAgICAgICA/ICcjY2x1c3Rlci0nICsgY2x1c3RlcklkXG4gICAgICAgICAgICAgICAgOiAnI21hcmtlci0nICsgaXRlbS5pZDtcblxuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25FbGVtZW50ID0gaXNDbHVzdGVyTWFya2VyXG4gICAgICAgICAgICAgICAgPyB0aGlzLmNsdXN0ZXJEcm9wZG93bi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0aGlzLm1hcmtlckRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zID0geyB6SW5kZXg6IDk5OSB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzQ2x1c3Rlck1hcmtlcikgdGhpcy5pc01hcmtlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5pc0NsdXN0ZXJEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5Ecm9wZG93blRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IobWFya2VySWNvbklkKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIShtYXJrZXJJY29uPy5wcmV2aW91c1NpYmxpbmcgPT09IGRyb3Bkb3duRWxlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uPy5wYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFtYXJrZXJJY29uLmNsYXNzTGlzdD8uY29udGFpbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gIWlzQ2x1c3Rlck1hcmtlcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NsdXN0ZXJEcm9wZG93bk9wZW4gPSBpc0NsdXN0ZXJNYXJrZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJJY29uID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IobWFya2VySWNvbklkKTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbj8uY2xhc3NMaXN0Py5jb250YWlucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uU0VMRUNURURcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zID0geyB6SW5kZXg6IGluZGV4ICsgMSB9O1xuICAgICAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSA9IG1hcmtlckl0ZW07XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMubWFwIS5wYW5UbyhtYXJrZXJJdGVtLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlSW5mb1dpbmRvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldE1hcmtlcnNJY29ucygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBudWxsKSwgMjUwKTtcblxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVuRHJvcGRvd25UaW1lb3V0KTtcbiAgICAgICAgdGhpcy5pc01hcmtlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2x1c3RlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU1hcERhdGEobmV3RGF0YTogSUNhTWFwUHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXBEYXRhID0geyAuLi5uZXdEYXRhIH07XG5cbiAgICAgICAgaWYgKHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpXG4gICAgICAgICAgICB0aGlzLm9wZW5NYXJrZXJJbmZvV2luZG93KHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpO1xuXG4gICAgICAgIGlmIChuZXdEYXRhICYmICF0aGlzLmlzTWFwQ2VudGVyU2V0ICYmIHRoaXMubWFwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5tYXJrZXJzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICBuZXdEYXRhLmNsdXN0ZXJNYXJrZXJzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnJvdXRpbmdNYXJrZXJzPy5sZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1hcFN0eWxlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlzcGxheSByb3V0ZXMgZm9yIHJvdXRpbmdNYXJrZXJzXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDbHVzdGVySWQoY2x1c3RlckRhdGE6IElNYXBNYXJrZXJzKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXJJZCA9IHRoaXMuY2x1c3Rlck1hcmtlcklkcy5maW5kKFxuICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgY2x1c3RlckRhdGEucG9zaXRpb24ubGF0ID09PSBpdGVtLnBvc2l0aW9uLmxhdCAmJlxuICAgICAgICAgICAgICAgIGNsdXN0ZXJEYXRhLnBvc2l0aW9uLmxuZyA9PT0gaXRlbS5wb3NpdGlvbi5sbmdcbiAgICAgICAgKT8uaWQ7XG5cbiAgICAgICAgcmV0dXJuIGNsdXN0ZXJJZCB8fCBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWFya2VyU2VydmljZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya2VySWNvblNlcnZpY2UuY2x1c3Rlck1hcmtlcklkcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNsdXN0ZXJJZHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsdXN0ZXJNYXJrZXJJZHMgPSBjbHVzdGVySWRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGdvb2dsZS1tYXBcbiAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCJcbiAgICBbY2xhc3MuZGFyay1tb2RlLW1hcF09XCJtYXBEYXRhLmRhcmtNb2RlXCJcbiAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICB3aWR0aD1cIjEwMCVcIlxuICAgIFt6b29tXT1cIm1hcFpvb21cIlxuICAgIFtjZW50ZXJdPVwibWFwQ2VudGVyXCJcbiAgICBbb3B0aW9uc109XCJtYXBPcHRpb25zXCJcbiAgICBbbWFwSWRdPVwibWFwU3R5bGVJZFwiXG4gICAgKG1hcEluaXRpYWxpemVkKT1cIm9uTWFwUmVhZHkoJGV2ZW50KVwiXG4+XG4gICAgQGZvciAobWFya2VyIG9mIG1hcERhdGEubWFya2VyczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIG1hcmtlci5kYXRhLmlkKSB7XG4gICAgICAgIDxtYXAtYWR2YW5jZWQtbWFya2VyXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwibWFya2VyLnBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cIm1hcmtlci5jb250ZW50XCJcbiAgICAgICAgICAgIFt6SW5kZXhdPVwiXG4gICAgICAgICAgICAgICAgb3BlbmVkSW5mb1dpbmRvd0RhdGE/LmRhdGE/LmlkID09PSBtYXJrZXIuZGF0YS5pZCA/IDk5OSA6IGlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobWFwQ2xpY2spPVwib25NYXJrZXJDbGljayhtYXJrZXIpXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgPGRpdlxuICAgICAgICAjbWFya2VyRHJvcGRvd25cbiAgICAgICAgY2xhc3M9XCJtYXJrZXItZHJvcGRvd24gZHJvcGRvd24taGlkZGVuXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZHJvcGRvd24taGlkZGVuJzogIWlzTWFya2VyRHJvcGRvd25PcGVuIH1cIlxuICAgID5cbiAgICAgICAgPGFwcC1jYS1tYXAtZHJvcGRvd25cbiAgICAgICAgICAgIFtpbmZvV2luZG93Q29udGVudF09XCJcbiAgICAgICAgICAgICAgICAhaXNDbHVzdGVyRHJvcGRvd25PcGVuXG4gICAgICAgICAgICAgICAgICAgID8gb3BlbmVkSW5mb1dpbmRvd0RhdGE/LmluZm9XaW5kb3dDb250ZW50IVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWFya2VyRGF0YV09XCJvcGVuZWRJbmZvV2luZG93RGF0YT8uZGF0YVwiXG4gICAgICAgICAgICAob25DbHVzdGVySXRlbUNsaWNrKT1cImdldE1hcmtlckluZm9XaW5kb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCgpXCJcbiAgICAgICAgICAgIChvbkJhY2tCdXR0b25DbGljayk9XCJvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID48L2FwcC1jYS1tYXAtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICBAZm9yIChcbiAgICAgICAgY2x1c3Rlck1hcmtlciBvZiBtYXBEYXRhLmNsdXN0ZXJNYXJrZXJzO1xuICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgdHJhY2sgY2x1c3Rlck1hcmtlci5wb3NpdGlvblxuICAgICkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImNsdXN0ZXJNYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwiY2x1c3Rlck1hcmtlci5jb250ZW50XCJcbiAgICAgICAgICAgIFt6SW5kZXhdPVwiXG4gICAgICAgICAgICAgICAgY2hlY2tJbmZvV2luZG93UG9zaXRpb24oY2x1c3Rlck1hcmtlciwgb3BlbmVkSW5mb1dpbmRvd0RhdGEpXG4gICAgICAgICAgICAgICAgICAgID8gOTk5XG4gICAgICAgICAgICAgICAgICAgIDogaVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChtYXBDbGljayk9XCJvbkNsdXN0ZXJNYXJrZXJDbGljayhjbHVzdGVyTWFya2VyKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXAtYWR2YW5jZWQtbWFya2VyPlxuICAgIH1cblxuICAgIEBmb3IgKHJvdXRlIG9mIHJvdXRlUG9seWxpbmVzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICA8bWFwLXBvbHlsaW5lIFtvcHRpb25zXT1cInJvdXRlXCI+PC9tYXAtcG9seWxpbmU+XG4gICAgfVxuXG4gICAgPGRpdlxuICAgICAgICAjY2x1c3RlckRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwibWFya2VyLWRyb3Bkb3duIGNsdXN0ZXItZHJvcGRvd24gZHJvcGRvd24taGlkZGVuXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZHJvcGRvd24taGlkZGVuJzogIWlzQ2x1c3RlckRyb3Bkb3duT3BlbiB9XCJcbiAgICA+XG4gICAgICAgIDxhcHAtY2EtbWFwLWRyb3Bkb3duXG4gICAgICAgICAgICBbaW5mb1dpbmRvd0NvbnRlbnRdPVwiXG4gICAgICAgICAgICAgICAgIWlzTWFya2VyRHJvcGRvd25PcGVuXG4gICAgICAgICAgICAgICAgICAgID8gb3BlbmVkSW5mb1dpbmRvd0RhdGE/LmluZm9XaW5kb3dDb250ZW50IVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWFya2VyRGF0YV09XCJvcGVuZWRJbmZvV2luZG93RGF0YT8uZGF0YVwiXG4gICAgICAgICAgICAob25DbHVzdGVySXRlbUNsaWNrKT1cImdldE1hcmtlckluZm9XaW5kb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCgpXCJcbiAgICAgICAgICAgIChvbkJhY2tCdXR0b25DbGljayk9XCJvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID48L2FwcC1jYS1tYXAtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzQXJlYUZpbHRlckFjdGl2ZSkge1xuICAgICAgICA8bWFwLWNpcmNsZVxuICAgICAgICAgICAgW29wdGlvbnNdPVwiYXJlYUZpbHRlckRhdGEub3B0aW9uc1wiXG4gICAgICAgICAgICBbY2VudGVyXT1cImFyZWFGaWx0ZXJEYXRhLmNlbnRlclwiXG4gICAgICAgICAgICBbcmFkaXVzXT1cImFyZWFGaWx0ZXJEYXRhLnJhZGl1c1wiXG4gICAgICAgID48L21hcC1jaXJjbGU+XG4gICAgfVxuXG4gICAgQGZvciAocm91dGluZ01hcmtlciBvZiBtYXBEYXRhLnJvdXRpbmdNYXJrZXJzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInJvdXRpbmdNYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwicm91dGluZ01hcmtlci5jb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgQGlmIChtYXBEYXRhLmlzT3BlbkluTWFwU2hvd24pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcGVuLWluLW1hcC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIG1haW5DYVRvb2x0aXA9XCJPcGVuIGluIE1hcFwiXG4gICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiM0MjQyNDJcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlbkluTWFwKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBzdmctc2l6ZS0xOFwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL2NvbW1vbi9pY19sb2NhdGlvbl9tYXAuc3ZnXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKG1hcERhdGEuaXNab29tU2hvd24pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtYXAtem9vbS1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWVuZCBnYXAtMVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2ZsZXgtY29sdW1uJzogIW1hcERhdGEuaXNWZXJ0aWNhbFpvb20sXG4gICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXpvb20tYnV0dG9ucyc6IG1hcERhdGEuaXNWZXJ0aWNhbFpvb20sXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwLXpvb20tYnV0dG9ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1jb2x1bW5dPVwibWFwRGF0YS5pc1ZlcnRpY2FsWm9vbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInpvb20tYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC0xXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uWm9vbUNoYW5nZSh0cnVlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9wb3B1cC9NaW51cy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9jb21tb24vaWNfcGx1cy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC16b29tLXJhbmdlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS10ZXh0IGNhLWZvbnQtbWVkaXVtXCI+NTAgbWk8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZ29vZ2xlLW1hcD5cbiJdfQ==
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbWFwL2NhLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBWTlDLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFL0QsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFB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aW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8vIE1vZHVsZXNcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgR29vZ2xlTWFwLCBHb29nbGVNYXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwLWRyb3Bkb3duL2NhLW1hcC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgR29vZ2xlTWFwRW51bSB9IGZyb20gJy4uL2NhLW1hcC9lbnVtcy9nb29nbGUtbWFwLmVudW0nO1xuaW1wb3J0IHsgTWFwTWFya2VyU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7XG4gICAgSU1hcE1hcmtlcnMsXG4gICAgSUNhTWFwUHJvcHMsXG4gICAgSU1hcE9wdGlvbnMsXG4gICAgSVJvdXRlUGF0aCxcbiAgICBJTWFwQm91bmRzWm9vbSxcbiAgICBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhLFxufSBmcm9tICcuLi9jYS1tYXAvbW9kZWxzJztcblxuLy8gSGVscGVyc1xuaW1wb3J0IHsgTWFwSGVscGVyIH0gZnJvbSAnLi4vY2EtbWFwL3V0aWxzL2hlbHBlcnMvbWFwLmhlbHBlcic7XG5cbi8vIENvbnN0YW50c1xuaW1wb3J0IHsgTWFwT3B0aW9uc0NvbnN0YW50cywgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgTWFwTWFya2VySWNvblNlcnZpY2UgfSBmcm9tICcuL3V0aWxzL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtbWFwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1tYXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBHb29nbGVNYXBzTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBOZ2JUb29sdGlwTW9kdWxlLFxuXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FNYXBEcm9wZG93bkNvbXBvbmVudCxcbiAgICAgICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDYU1hcENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcblxuICAgICAgICAvLyBTZXJ2aWNlc1xuICAgICAgICBwcml2YXRlIG1hcmtlckljb25TZXJ2aWNlOiBNYXBNYXJrZXJJY29uU2VydmljZVxuICAgICkge31cbiAgICBAVmlld0NoaWxkKEdvb2dsZU1hcCwgeyBzdGF0aWM6IGZhbHNlIH0pIG1hcHMhOiBHb29nbGVNYXA7XG4gICAgQFZpZXdDaGlsZCgnbWFya2VyRHJvcGRvd24nKSBtYXJrZXJEcm9wZG93biE6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnY2x1c3RlckRyb3Bkb3duJykgY2x1c3RlckRyb3Bkb3duITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHNldCBkYXRhKHZhbHVlczogSUNhTWFwUHJvcHMpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVNYXBEYXRhKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTWFya2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElNYXBNYXJrZXJzPigpO1xuICAgIEBPdXRwdXQoKSBjbHVzdGVyTGlzdFNjcm9sbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFwTWFya2Vycz4oKTtcbiAgICBAT3V0cHV0KCkgZ2V0SW5mb1dpbmRvd0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgYm91bmRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hcEJvdW5kc1pvb20+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5Jbk1hcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgZGlyZWN0aW9uc1JlbmRlcmVyczogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyW10gPSBbXTtcblxuICAgIHB1YmxpYyBtYXBPcHRpb25zOiBJTWFwT3B0aW9ucyA9IE1hcE9wdGlvbnNDb25zdGFudHMuREVGQVVMVF9NQVBfT1BUSU9OUztcbiAgICBwdWJsaWMgbWFwWm9vbTogbnVtYmVyID0gTWFwT3B0aW9uc0NvbnN0YW50cy5ERUZBVUxUX01BUF9aT09NO1xuICAgIHB1YmxpYyBtYXBDZW50ZXI6IElSb3V0ZVBhdGggPSBNYXBPcHRpb25zQ29uc3RhbnRzLkRFRkFVTFRfTUFQX0NFTlRFUjtcbiAgICBwdWJsaWMgbWFwOiBnb29nbGUubWFwcy5NYXAgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgbWFwU3R5bGVJZDogc3RyaW5nID0gJ2Q2ODE5MDRhMzkwYTg0MDInO1xuICAgIHB1YmxpYyBtYXBEYXRhOiBJQ2FNYXBQcm9wcyA9IHt9O1xuXG4gICAgcHVibGljIG9wZW5lZEluZm9XaW5kb3dEYXRhOiBJTWFwTWFya2VycyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBhcmVhRmlsdGVyRGF0YSA9IE1hcE9wdGlvbnNDb25zdGFudHMuQVJFQV9GSUxURVJfREFUQTtcblxuICAgIHB1YmxpYyByb3V0ZVBvbHlsaW5lczogZ29vZ2xlLm1hcHMuUG9seWxpbmVPcHRpb25zW10gPSBbXTtcblxuICAgIHB1YmxpYyBpc01hcmtlckRyb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0NsdXN0ZXJEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNNYXBDZW50ZXJTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNBcmVhRmlsdGVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXIgPSAwO1xuXG4gICAgcHJpdmF0ZSBjbHVzdGVyTWFya2VySWRzOiBJTWFwTWFya2Vyc1tdID0gW107XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8gUmVzZXQgYWxsIGljb25zIHRvIHRoZWlyIGluaXRpYWwgc3RhdGUgb24gcGFnZSBsb2FkXG4gICAgICAgIHRoaXMucmVzZXRNYXJrZXJzSWNvbnMoKTtcblxuICAgICAgICB0aGlzLmdldE1hcmtlclNlcnZpY2VEYXRhKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlSW5mb1dpbmRvdygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbHVzdGVyTWFya2VyQ2xpY2sobWFya2VySXRlbTogSU1hcE1hcmtlcnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbmZvV2luZG93T3BlbmVkID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgIG1hcmtlckl0ZW0sXG4gICAgICAgICAgICB0aGlzLm9wZW5lZEluZm9XaW5kb3dEYXRhXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMuY2x1c3Rlck1hcmtlckNsaWNrLmVtaXQobWFya2VySXRlbSk7XG4gICAgICAgIGVsc2UgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWFya2VySW5mb1dpbmRvdyhtYXJrZXJJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChtYXJrZXJJZCkgdGhpcy5nZXRJbmZvV2luZG93RGF0YS5lbWl0KG1hcmtlcklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NYXJrZXJDbGljayhtYXJrZXJJdGVtOiBJTWFwTWFya2Vycyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0luZm9XaW5kb3dPcGVuZWQgPSB0aGlzLmNoZWNrSW5mb1dpbmRvd1Bvc2l0aW9uKFxuICAgICAgICAgICAgbWFya2VySXRlbSxcbiAgICAgICAgICAgIHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGFcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWlzSW5mb1dpbmRvd09wZW5lZCkgdGhpcy5nZXRNYXJrZXJJbmZvV2luZG93KG1hcmtlckl0ZW0uZGF0YS5pZCk7XG4gICAgICAgIGVsc2UgdGhpcy5jbG9zZUluZm9XaW5kb3coKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25NYXBSZWFkeShtYXBJbnN0YW5jZTogZ29vZ2xlLm1hcHMuTWFwKToge1xuICAgICAgICBmaWxsQ29sb3I/OiBzdHJpbmc7XG4gICAgICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgICAgICBzdHJva2VXZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgIGZpbGxPcGFjaXR5PzogbnVtYmVyO1xuICAgIH0gfCB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXAgPSBtYXBJbnN0YW5jZTtcblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhPy5kYXJrTW9kZSkge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGVkTWFwVHlwZSA9IG5ldyBnb29nbGUubWFwcy5TdHlsZWRNYXBUeXBlKFxuICAgICAgICAgICAgICAgIE1hcENvbnN0YW50cy5HT09HTEVfTUFQX0RBUktfU1RZTEVTXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5tYXAhLm1hcFR5cGVzLnNldChHb29nbGVNYXBFbnVtLkRBUktfTUFQLCBzdHlsZWRNYXBUeXBlKTtcbiAgICAgICAgICAgIHRoaXMubWFwIS5zZXRNYXBUeXBlSWQoR29vZ2xlTWFwRW51bS5EQVJLX01BUCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVCb3VuZGFyaWVzVXJsID0gdGhpcy5tYXBEYXRhLnN0YXRlQm91bmRhcmllc1VybC51cmw7XG4gICAgICAgICAgICB0aGlzLm1hcHMuZ29vZ2xlTWFwPy5kYXRhLmxvYWRHZW9Kc29uKHN0YXRlQm91bmRhcmllc1VybCk7XG5cbiAgICAgICAgICAgIHRoaXMubWFwcy5nb29nbGVNYXA/LmRhdGEuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZURlbnNpdHkgPSBmZWF0dXJlLmdldFByb3BlcnR5KCdkZW5zaXR5Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWxsQ29sb3IsIGZpbGxPcGFjaXR5IH0gPVxuICAgICAgICAgICAgICAgICAgICBNYXBIZWxwZXIuZ2V0RmlsbENvbG9yRm9yU3RhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZURlbnNpdHkgYXMgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBEYXRhLnZpZXcgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6IGZpbGxDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjRUVFRUVFJyxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAwLjYsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiBmaWxsT3BhY2l0eSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbmRCb3VuZHNDaGFuZ2VkRXZlbnQoKTtcbiAgICAgICAgdGhpcy5zZXRNYXBTdHlsZXMoKTtcbiAgICAgICAgdGhpcy5nZXRNYXBJZGxlRXZlbnQobWFwSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3RlZE1hcmtlckl0ZW0uZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgIG1hcmtlckl0ZW06IElNYXBNYXJrZXJzLFxuICAgICAgICBtYXJrZXJJdGVtMj86IElNYXBNYXJrZXJzIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgbWFya2VySXRlbS5wb3NpdGlvbi5sYXQgPT09IG1hcmtlckl0ZW0yPy5wb3NpdGlvbj8ubGF0ICYmXG4gICAgICAgICAgICBtYXJrZXJJdGVtLnBvc2l0aW9uLmxuZyA9PT0gbWFya2VySXRlbTI/LnBvc2l0aW9uPy5sbmdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSlcbiAgICAgICAgICAgIHRoaXMuY2x1c3Rlckxpc3RTY3JvbGxFdmVudC5lbWl0KHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblpvb21DaGFuZ2UoaXNNaW51c0NsaWNrPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Wm9vbUxldmVsID0gdGhpcy5tYXA/LmdldFpvb20oKTtcblxuICAgICAgICBpZiAoY3VycmVudFpvb21MZXZlbCkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFpvb21MZXZlbCA9IGlzTWludXNDbGlja1xuICAgICAgICAgICAgICAgID8gY3VycmVudFpvb21MZXZlbCAtIDFcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRab29tTGV2ZWwgKyAxO1xuICAgICAgICAgICAgdGhpcy5tYXA/LnNldFpvb20obmV4dFpvb21MZXZlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcGVuSW5NYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbkluTWFwRXZlbnQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXBEYXRhLnJvdXRlUGF0aHMpIHtcbiAgICAgICAgICAgIC8vIENsZWFyIHByZXZpb3VzIHJvdXRlIHBvbHlsaW5lc1xuICAgICAgICAgICAgdGhpcy5yb3V0ZVBvbHlsaW5lcyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLm1hcERhdGEucm91dGVQYXRocyEuZm9yRWFjaCgocm91dGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlLmRlY29kZWRTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2x5TGluZUNvb3JkaW5hdGVzID0gcm91dGUuZGVjb2RlZFNoYXBlPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IGl0ZW0ubGF0aXR1ZGUhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbmc6IGl0ZW0ubG9uZ2l0dWRlISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVBvbHlsaW5lOiBnb29nbGUubWFwcy5Qb2x5bGluZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwb2x5TGluZUNvb3JkaW5hdGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VvZGVzaWM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZS5zdHJva2VDb2xvciB8fCBHb29nbGVNYXBFbnVtLlNUUk9LRV9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6ICFyb3V0ZS5pc0Rhc2hlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcm91dGUuc3Ryb2tlT3BhY2l0eSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR29vZ2xlTWFwRW51bS5TVFJPS0VfT1BBQ0lUWVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdlaWdodDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZS5zdHJva2VXZWlnaHQgfHwgR29vZ2xlTWFwRW51bS5TVFJPS0VfV0VJR0hULFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbnM6IHJvdXRlLmlzRGFzaGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAocm91dGUuZGFzaGVkTGluZVN0eWxlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfREFTSEVEX0xJTkVfSUNPTilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVQb2x5bGluZXMucHVzaChyb3V0ZVBvbHlsaW5lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRNYXJrZXJzSWNvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFwRGF0YS5tYXJrZXJzPy5tYXAoKG1hcmtlcjogSU1hcE1hcmtlcnMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb24gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAnI21hcmtlci0nICsgbWFya2VyLmlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hcmtlckljb24pXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbixcbiAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubWFya2VyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgekluZGV4OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFwRGF0YS5jbHVzdGVyTWFya2Vycz8ubWFwKFxuICAgICAgICAgICAgKGNsdXN0ZXJNYXJrZXI6IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2x1c3RlcklkID0gdGhpcy5nZXRDbHVzdGVySWQoY2x1c3Rlck1hcmtlcik7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFya2VySWNvbiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAnI2NsdXN0ZXItJyArIGNsdXN0ZXJJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlckljb24pXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDbHVzdGVyRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNYXBTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1hcERhdGE/LmRhcmtNb2RlKVxuICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubWFwT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IE1hcENvbnN0YW50cy5HT09HTEVfTUFQX0RBUktfU1RZTEVTLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBhbGxNYXJrZXJzQ29tYmluZWQgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5tYXBEYXRhLnJvdXRpbmdNYXJrZXJzID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLm1hcERhdGEuY2x1c3Rlck1hcmtlcnMgPz8gW10pLFxuICAgICAgICAgICAgLi4uKHRoaXMubWFwRGF0YS5tYXJrZXJzID8/IFtdKSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoYWxsTWFya2Vyc0NvbWJpbmVkPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcENlbnRlckFuZEJvdW5kcyA9XG4gICAgICAgICAgICAgICAgTWFwSGVscGVyLmdldE1hcENlbnRlckFuZFpvb20oYWxsTWFya2Vyc0NvbWJpbmVkKTtcblxuICAgICAgICAgICAgdGhpcy5tYXAhLnBhblRvKG1hcENlbnRlckFuZEJvdW5kcy5tYXBDZW50ZXIpO1xuICAgICAgICAgICAgaWYgKG1hcENlbnRlckFuZEJvdW5kcy5ib3VuZHMpXG4gICAgICAgICAgICAgICAgdGhpcy5tYXA/LmZpdEJvdW5kcyhtYXBDZW50ZXJBbmRCb3VuZHMuYm91bmRzKTtcbiAgICAgICAgICAgIGlmIChtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSlcbiAgICAgICAgICAgICAgICB0aGlzLm1hcD8uc2V0Wm9vbShtYXBDZW50ZXJBbmRCb3VuZHMubWFwWm9vbSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNNYXBDZW50ZXJTZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXBJZGxlRXZlbnQobWFwOiBnb29nbGUubWFwcy5NYXApOiB2b2lkIHtcbiAgICAgICAgbWFwLmFkZExpc3RlbmVyKCdpZGxlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZW5kQm91bmRzQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VuZEJvdW5kc0NoYW5nZWRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBCb3VuZHMgPSB0aGlzLm1hcC5nZXRCb3VuZHMoKTtcbiAgICAgICAgICAgIGNvbnN0IG1hcFpvb20gPSB0aGlzLm1hcC5nZXRab29tKCk7XG5cbiAgICAgICAgICAgIGlmIChtYXBCb3VuZHMgJiYgbWFwWm9vbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kc09iamVjdCA9IHsgYm91bmRzOiBtYXBCb3VuZHMsIHpvb206IG1hcFpvb20gfTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5kc0NoYW5nZWQuZW1pdChib3VuZHNPYmplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuTWFya2VySW5mb1dpbmRvdyhtYXJrZXJJdGVtOiBJTWFwU2VsZWN0ZWRNYXJrZXJEYXRhKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzSW5mb1dpbmRvd09wZW5lZCA9IHRoaXMuY2hlY2tJbmZvV2luZG93UG9zaXRpb24oXG4gICAgICAgICAgICBtYXJrZXJJdGVtLFxuICAgICAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkTWFya2VycyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMubWFwRGF0YS5tYXJrZXJzISxcbiAgICAgICAgICAgIC4uLnRoaXMubWFwRGF0YS5jbHVzdGVyTWFya2VycyEsXG4gICAgICAgIF07XG5cbiAgICAgICAgY29tYmluZWRNYXJrZXJzLmZvckVhY2goKGl0ZW06IElNYXBNYXJrZXJzLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkTWFya2VyID0gdGhpcy5jaGVja0luZm9XaW5kb3dQb3NpdGlvbihcbiAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgIG1hcmtlckl0ZW1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzQ2x1c3Rlck1hcmtlciA9IGl0ZW0/LmRhdGE/LmNvdW50ID4gMTtcblxuICAgICAgICAgICAgY29uc3QgY2x1c3RlcklkID0gaXNDbHVzdGVyTWFya2VyID8gdGhpcy5nZXRDbHVzdGVySWQoaXRlbSkgOiBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBtYXJrZXJJY29uSWQgPSBpc0NsdXN0ZXJNYXJrZXJcbiAgICAgICAgICAgICAgICA/ICcjY2x1c3Rlci0nICsgY2x1c3RlcklkXG4gICAgICAgICAgICAgICAgOiAnI21hcmtlci0nICsgaXRlbS5pZDtcblxuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25FbGVtZW50ID0gaXNDbHVzdGVyTWFya2VyXG4gICAgICAgICAgICAgICAgPyB0aGlzLmNsdXN0ZXJEcm9wZG93bi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0aGlzLm1hcmtlckRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zID0geyB6SW5kZXg6IDk5OSB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzQ2x1c3Rlck1hcmtlcikgdGhpcy5pc01hcmtlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5pc0NsdXN0ZXJEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5Ecm9wZG93blRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtlckljb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IobWFya2VySWNvbklkKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIShtYXJrZXJJY29uPy5wcmV2aW91c1NpYmxpbmcgPT09IGRyb3Bkb3duRWxlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uPy5wYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFtYXJrZXJJY29uLmNsYXNzTGlzdD8uY29udGFpbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5TRUxFQ1RFRFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTWFya2VyRHJvcGRvd25PcGVuID0gIWlzQ2x1c3Rlck1hcmtlcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NsdXN0ZXJEcm9wZG93bk9wZW4gPSBpc0NsdXN0ZXJNYXJrZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXJrZXJJY29uID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IobWFya2VySWNvbklkKTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgbWFya2VySWNvbj8uY2xhc3NMaXN0Py5jb250YWlucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uU0VMRUNURURcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLlNFTEVDVEVEXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25zID0geyB6SW5kZXg6IGluZGV4ICsgMSB9O1xuICAgICAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcGVuZWRJbmZvV2luZG93RGF0YSA9IG1hcmtlckl0ZW07XG5cbiAgICAgICAgaWYgKCFpc0luZm9XaW5kb3dPcGVuZWQpIHRoaXMubWFwIS5wYW5UbyhtYXJrZXJJdGVtLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlSW5mb1dpbmRvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldE1hcmtlcnNJY29ucygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMub3BlbmVkSW5mb1dpbmRvd0RhdGEgPSBudWxsKSwgMjUwKTtcblxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVuRHJvcGRvd25UaW1lb3V0KTtcbiAgICAgICAgdGhpcy5pc01hcmtlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2x1c3RlckRyb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRNYXJrZXJJdGVtLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU1hcERhdGEobmV3RGF0YTogSUNhTWFwUHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXBEYXRhID0geyAuLi5uZXdEYXRhIH07XG5cbiAgICAgICAgaWYgKHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpXG4gICAgICAgICAgICB0aGlzLm9wZW5NYXJrZXJJbmZvV2luZG93KHRoaXMubWFwRGF0YS5zZWxlY3RlZE1hcmtlckRhdGEpO1xuXG4gICAgICAgIGlmIChuZXdEYXRhICYmICF0aGlzLmlzTWFwQ2VudGVyU2V0ICYmIHRoaXMubWFwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5tYXJrZXJzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICBuZXdEYXRhLmNsdXN0ZXJNYXJrZXJzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnJvdXRpbmdNYXJrZXJzPy5sZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1hcFN0eWxlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlzcGxheSByb3V0ZXMgZm9yIHJvdXRpbmdNYXJrZXJzXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDbHVzdGVySWQoY2x1c3RlckRhdGE6IElNYXBNYXJrZXJzKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXJJZCA9IHRoaXMuY2x1c3Rlck1hcmtlcklkcy5maW5kKFxuICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgY2x1c3RlckRhdGEucG9zaXRpb24ubGF0ID09PSBpdGVtLnBvc2l0aW9uLmxhdCAmJlxuICAgICAgICAgICAgICAgIGNsdXN0ZXJEYXRhLnBvc2l0aW9uLmxuZyA9PT0gaXRlbS5wb3NpdGlvbi5sbmdcbiAgICAgICAgKT8uaWQ7XG5cbiAgICAgICAgcmV0dXJuIGNsdXN0ZXJJZCB8fCBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWFya2VyU2VydmljZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya2VySWNvblNlcnZpY2UuY2x1c3Rlck1hcmtlcklkcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNsdXN0ZXJJZHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsdXN0ZXJNYXJrZXJJZHMgPSBjbHVzdGVySWRzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGdvb2dsZS1tYXBcbiAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCJcbiAgICBbY2xhc3MuZGFyay1tb2RlLW1hcF09XCJtYXBEYXRhLmRhcmtNb2RlXCJcbiAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICB3aWR0aD1cIjEwMCVcIlxuICAgIFt6b29tXT1cIm1hcFpvb21cIlxuICAgIFtjZW50ZXJdPVwibWFwQ2VudGVyXCJcbiAgICBbb3B0aW9uc109XCJtYXBPcHRpb25zXCJcbiAgICBbbWFwSWRdPVwibWFwU3R5bGVJZFwiXG4gICAgKG1hcEluaXRpYWxpemVkKT1cIm9uTWFwUmVhZHkoJGV2ZW50KVwiXG4+XG4gICAgQGZvciAobWFya2VyIG9mIG1hcERhdGEubWFya2VyczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIG1hcmtlci5kYXRhLmlkKSB7XG4gICAgICAgIDxtYXAtYWR2YW5jZWQtbWFya2VyXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwibWFya2VyLnBvc2l0aW9uXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cIm1hcmtlci5jb250ZW50XCJcbiAgICAgICAgICAgIFt6SW5kZXhdPVwiXG4gICAgICAgICAgICAgICAgb3BlbmVkSW5mb1dpbmRvd0RhdGE/LmRhdGE/LmlkID09PSBtYXJrZXIuZGF0YS5pZCA/IDk5OSA6IGlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobWFwQ2xpY2spPVwib25NYXJrZXJDbGljayhtYXJrZXIpXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgPGRpdlxuICAgICAgICAjbWFya2VyRHJvcGRvd25cbiAgICAgICAgY2xhc3M9XCJtYXJrZXItZHJvcGRvd24gZHJvcGRvd24taGlkZGVuXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZHJvcGRvd24taGlkZGVuJzogIWlzTWFya2VyRHJvcGRvd25PcGVuIH1cIlxuICAgID5cbiAgICAgICAgPGFwcC1jYS1tYXAtZHJvcGRvd25cbiAgICAgICAgICAgIFtpbmZvV2luZG93Q29udGVudF09XCJcbiAgICAgICAgICAgICAgICAhaXNDbHVzdGVyRHJvcGRvd25PcGVuXG4gICAgICAgICAgICAgICAgICAgID8gb3BlbmVkSW5mb1dpbmRvd0RhdGE/LmluZm9XaW5kb3dDb250ZW50IVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWFya2VyRGF0YV09XCJvcGVuZWRJbmZvV2luZG93RGF0YT8uZGF0YVwiXG4gICAgICAgICAgICAob25DbHVzdGVySXRlbUNsaWNrKT1cImdldE1hcmtlckluZm9XaW5kb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCgpXCJcbiAgICAgICAgICAgIChvbkJhY2tCdXR0b25DbGljayk9XCJvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID48L2FwcC1jYS1tYXAtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICBAZm9yIChcbiAgICAgICAgY2x1c3Rlck1hcmtlciBvZiBtYXBEYXRhLmNsdXN0ZXJNYXJrZXJzO1xuICAgICAgICBsZXQgaSA9ICRpbmRleDtcbiAgICAgICAgdHJhY2sgY2x1c3Rlck1hcmtlci5wb3NpdGlvblxuICAgICkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImNsdXN0ZXJNYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwiY2x1c3Rlck1hcmtlci5jb250ZW50XCJcbiAgICAgICAgICAgIFt6SW5kZXhdPVwiXG4gICAgICAgICAgICAgICAgY2hlY2tJbmZvV2luZG93UG9zaXRpb24oY2x1c3Rlck1hcmtlciwgb3BlbmVkSW5mb1dpbmRvd0RhdGEpXG4gICAgICAgICAgICAgICAgICAgID8gOTk5XG4gICAgICAgICAgICAgICAgICAgIDogaVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChtYXBDbGljayk9XCJvbkNsdXN0ZXJNYXJrZXJDbGljayhjbHVzdGVyTWFya2VyKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXAtYWR2YW5jZWQtbWFya2VyPlxuICAgIH1cblxuICAgIEBmb3IgKHJvdXRlIG9mIHJvdXRlUG9seWxpbmVzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICA8bWFwLXBvbHlsaW5lIFtvcHRpb25zXT1cInJvdXRlXCI+PC9tYXAtcG9seWxpbmU+XG4gICAgfVxuXG4gICAgPGRpdlxuICAgICAgICAjY2x1c3RlckRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwibWFya2VyLWRyb3Bkb3duIGNsdXN0ZXItZHJvcGRvd24gZHJvcGRvd24taGlkZGVuXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZHJvcGRvd24taGlkZGVuJzogIWlzQ2x1c3RlckRyb3Bkb3duT3BlbiB9XCJcbiAgICA+XG4gICAgICAgIDxhcHAtY2EtbWFwLWRyb3Bkb3duXG4gICAgICAgICAgICBbaW5mb1dpbmRvd0NvbnRlbnRdPVwiXG4gICAgICAgICAgICAgICAgIWlzTWFya2VyRHJvcGRvd25PcGVuXG4gICAgICAgICAgICAgICAgICAgID8gb3BlbmVkSW5mb1dpbmRvd0RhdGE/LmluZm9XaW5kb3dDb250ZW50IVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbWFya2VyRGF0YV09XCJvcGVuZWRJbmZvV2luZG93RGF0YT8uZGF0YVwiXG4gICAgICAgICAgICAob25DbHVzdGVySXRlbUNsaWNrKT1cImdldE1hcmtlckluZm9XaW5kb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbHVzdGVyTGlzdFNjcm9sbFRvRW5kKT1cIm9uQ2x1c3Rlckxpc3RTY3JvbGxUb0VuZCgpXCJcbiAgICAgICAgICAgIChvbkJhY2tCdXR0b25DbGljayk9XCJvbkNsdXN0ZXJCYWNrQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID48L2FwcC1jYS1tYXAtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzQXJlYUZpbHRlckFjdGl2ZSkge1xuICAgICAgICA8bWFwLWNpcmNsZVxuICAgICAgICAgICAgW29wdGlvbnNdPVwiYXJlYUZpbHRlckRhdGEub3B0aW9uc1wiXG4gICAgICAgICAgICBbY2VudGVyXT1cImFyZWFGaWx0ZXJEYXRhLmNlbnRlclwiXG4gICAgICAgICAgICBbcmFkaXVzXT1cImFyZWFGaWx0ZXJEYXRhLnJhZGl1c1wiXG4gICAgICAgID48L21hcC1jaXJjbGU+XG4gICAgfVxuXG4gICAgQGZvciAocm91dGluZ01hcmtlciBvZiBtYXBEYXRhLnJvdXRpbmdNYXJrZXJzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICA8bWFwLWFkdmFuY2VkLW1hcmtlclxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInJvdXRpbmdNYXJrZXIucG9zaXRpb25cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwicm91dGluZ01hcmtlci5jb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICA8L21hcC1hZHZhbmNlZC1tYXJrZXI+XG4gICAgfVxuXG4gICAgQGlmIChtYXBEYXRhLmlzT3BlbkluTWFwU2hvd24pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcGVuLWluLW1hcC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIG1haW5DYVRvb2x0aXA9XCJPcGVuIGluIE1hcFwiXG4gICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiM0MjQyNDJcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlbkluTWFwKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBzdmctc2l6ZS0xOFwiXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2NhLWNvbXBvbmVudHMvc3ZnL2NvbW1vbi9pY19sb2NhdGlvbl9tYXAuc3ZnXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKG1hcERhdGEuaXNab29tU2hvd24pIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtYXAtem9vbS1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWVuZCBnYXAtMVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2ZsZXgtY29sdW1uJzogIW1hcERhdGEuaXNWZXJ0aWNhbFpvb20sXG4gICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXpvb20tYnV0dG9ucyc6IG1hcERhdGEuaXNWZXJ0aWNhbFpvb20sXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFwLXpvb20tYnV0dG9ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1jb2x1bW5dPVwibWFwRGF0YS5pc1ZlcnRpY2FsWm9vbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInpvb20tYnV0dG9uLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC0xXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uWm9vbUNoYW5nZSh0cnVlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9wb3B1cC9NaW51cy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiem9vbS1idXR0b24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25ab29tQ2hhbmdlKGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9jYS1jb21wb25lbnRzL3N2Zy9jb21tb24vaWNfcGx1cy5zdmdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC16b29tLXJhbmdlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS10ZXh0IGNhLWZvbnQtbWVkaXVtXCI+NTAgbWk8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZ29vZ2xlLW1hcD5cbiJdfQ==
@@ -197,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
197
197
  }], stopBlurRemoveTimeout: [{
198
198
  type: Output
199
199
  }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2Etbm90ZS1jb250YWluZXIvY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2Etbm90ZS1jb250YWluZXIvY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdELFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRWhHLGFBQWE7QUFDYixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQU0zRixRQUFRO0FBQ1IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFNUYsWUFBWTtBQUNaLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDOzs7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QkFBb0IsZ09BQ3BCLFNBQVM7Z0JBRVQsWUFBWTtnQkFDWix1QkFBdUIsdU5BRWIsQ0FBQyxlQUFlLENBQUM7OzRGQUVsQix3QkFBd0I7a0JBaEJwQyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsU0FBUzt3QkFFVCxZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEIsY0FDVyxDQUFDLGVBQWUsQ0FBQzt3REFHcEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUkscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8vIEFuaW1hdGlvbnNcbmltcG9ydCB7IHBpY2t1cEFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9uJztcblxuLy8gTW9kdWxlc1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gQ29uc3RhbnRzXG5pbXBvcnQgeyBOb3RlQ29uZmlnQ29uc3RhbnRzIH0gZnJvbSAnLi4vY2Etbm90ZS1jb250YWluZXIvdXRpbHMvY29uc3RhbnRzL25vdGUtY29uZmlnLmNvbnN0YW50JztcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7IE5vdGVBY3RpdmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25vdGUtYWN0aXZlLW9wdGlvbnMubW9kZWwnO1xuaW1wb3J0IHsgTm90ZUNvbG9ycyB9IGZyb20gJy4uL2NhLW5vdGUtY29udGFpbmVyL21vZGVscy9ub3RlLWNvbG9ycy5tb2RlbCc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBOb3RlU2VsZWN0ZWRDb2xvclN0cmluZ0VudW0gfSBmcm9tICcuLi9jYS1ub3RlLWNvbnRhaW5lci9lbnVtcy9ub3RlLXNlbGVjdGVkLWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgTm90ZURlZmF1bHRTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2Etbm90ZS1jb250YWluZXIvZW51bXMvbm90ZS1kZWZhdWx0LXN0cmluZy5lbnVtJztcblxuLy9zdmctcm91dGVzXG5pbXBvcnQgeyBOb3RlQ29udGFpbmVyU3ZnUm91dGVzIH0gZnJvbSAnLi4vY2Etbm90ZS1jb250YWluZXIvdXRpbHMvc3ZnLXJvdXRlcy9ub3RlLWNvbnRhaW5lci1zdmctcm91dGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLW5vdGUtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLW5vdGUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIC8vIE1vZHVsZVxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRcbiAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgXSxcbiAgYW5pbWF0aW9uczogW3BpY2t1cEFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIENhTm90ZUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdmFsdWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJhbmdlITogUmFuZ2U7XG4gIEBJbnB1dCgpIHNlbGVjdGlvblRha2VuITogU2VsZWN0aW9uO1xuICBASW5wdXQoKSBpc0V4cGFuZGVkITogYm9vbGVhbiB8IHN0cmluZztcbiAgQElucHV0KCkgaXNQYXJraW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUG9wb3Zlck5vdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNWaXNpYmxlQXJyb3c6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSB0eXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZEVkaXRvciE6IEhUTUxEaXZFbGVtZW50O1xuXG4gIEBPdXRwdXQoKSBzdG9wQmx1clJlbW92ZVRpbWVvdXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy9Db2xvcnNcbiAgcHVibGljIHNlbGVjdGVkUGF0ZXJuQ29sb3I6IHN0cmluZyA9IE5vdGVTZWxlY3RlZENvbG9yU3RyaW5nRW51bS5HUkFZX1JHQjtcbiAgcHVibGljIGFjdGl2ZU9wdGlvbnM6IE5vdGVBY3RpdmVPcHRpb25zIHwgYW55ID0ge1xuICAgIC4uLk5vdGVDb25maWdDb25zdGFudHMubm90ZUFjdGl2ZU9wdGlvbnMsXG4gIH07XG4gIHB1YmxpYyBjb250YWluZXJDb2xvcnMhOiBOb3RlQ29sb3JzW107XG4gIHB1YmxpYyBzZWxlY3RlZENvbG9yTmFtZSE6IE5vdGVDb2xvcnM7XG5cbiAgLy9UaW1lb3V0XG4gIHByaXZhdGUgc2xvd1RpbWVvdXQhOiBOb2RlSlMuVGltZW91dDtcbiAgcHJpdmF0ZSBsYXN0U2F2ZWRJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLy9QYXR0ZXJuXG4gIHByaXZhdGUgaXNEZWZhdWx0Q29sb3JTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzU2hvd0NvbG9yUGF0dGVybiE6IGJvb2xlYW47XG4gIHB1YmxpYyBpc0Nsb3NlZFBhdHRlcm46IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzSG92ZXJpbmdBcnJvd1BpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldENvbnRhaW5lckNvbG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDb250YWluZXJzQ29sb3IoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJDb2xvcnMuc29ydCgoYSkgPT4ge1xuICAgICAgaWYgKGFbTm90ZURlZmF1bHRTdHJpbmdFbnVtLkNPTE9SXSAhPT0gdGhpcy5zZWxlY3RlZENvbG9yTmFtZS5jb2xvcikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlRWRpdG9yKGFjdGlvbjogc3RyaW5nLCBjb2xvcj86IHN0cmluZywgaW5keD86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3RvcEJsdXJSZW1vdmVUaW1lb3V0LmVtaXQoKTtcbiAgICBpZiAoaW5keCB8fCBpbmR4ID09PSAwKSB0aGlzLnNlbGVjdGVkQ29sb3JOYW1lID0gdGhpcy5jb250YWluZXJDb2xvcnNbaW5keF07XG5cbiAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25UYWtlbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4uYWRkUmFuZ2UodGhpcy5yYW5nZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb24gIT09IE5vdGVEZWZhdWx0U3RyaW5nRW51bS5GT1JFX0NPTE9SMikge1xuICAgICAgdGhpcy5pc1Nob3dDb2xvclBhdHRlcm4gPSBmYWxzZTtcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uc1thY3Rpb25dID0gIXRoaXMuYWN0aXZlT3B0aW9uc1thY3Rpb25dO1xuICAgICAgaWYgKCF0aGlzLmFjdGl2ZU9wdGlvbnNbYWN0aW9uXSkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5yZXBsYWNlKCc8YnI+JywgJycpID09PSAnJylcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblRha2VuLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKFxuICAgICAgICAgIE5vdGVEZWZhdWx0U3RyaW5nRW51bS5DU1NfU1RZTEUsXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgTm90ZURlZmF1bHRTdHJpbmdFbnVtLkZBTFNFXG4gICAgICAgICk7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGFjdGlvbiwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb2N1c0VsZW1lbnQoKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoYWN0aW9uLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmxhc3RTYXZlZEluZGV4ICE9IGluZHgpIHRoaXMuZmlsdGVyQ29udGFpbmVyc0NvbG9yKCk7XG5cbiAgICAgIHRoaXMubGFzdFNhdmVkSW5kZXggPSBpbmR4IHx8IC0xO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhdGVybkNvbG9yID0gY29sb3IgfHwgJ2dyZXknO1xuICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKE5vdGVEZWZhdWx0U3RyaW5nRW51bS5GT1JFX0NPTE9SMiwgZmFsc2UsIGNvbG9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcHVibGljIHRvZ2dsZVBhdHRlcm4oKTogdm9pZCB7XG4gICAgdGhpcy5pc1Nob3dDb2xvclBhdHRlcm4gPSAhdGhpcy5pc1Nob3dDb2xvclBhdHRlcm47XG5cbiAgICBpZiAoIXRoaXMuaXNTaG93Q29sb3JQYXR0ZXJuKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWRQYXR0ZXJuID0gZmFsc2U7XG4gICAgICB9LCAzMDApO1xuICAgIGVsc2UgdGhpcy5pc0Nsb3NlZFBhdHRlcm4gPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGhvdmVyaW5nQXJyb3codmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzSG92ZXJpbmdBcnJvd1BpY2tlciA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250YWluZXJDb2xvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJDb2xvcnMgPVxuICAgICAgdGhpcy50eXBlID09PSBOb3RlRGVmYXVsdFN0cmluZ0VudW0uREFSS1xuICAgICAgICA/IFsuLi5Ob3RlQ29uZmlnQ29uc3RhbnRzLm5vdGVEYXJrQ29sb3JzXVxuICAgICAgICA6IFsuLi5Ob3RlQ29uZmlnQ29uc3RhbnRzLm5vdGVMaWdodENvbG9yc107XG5cbiAgICB0aGlzLnNlbGVjdGVkQ29sb3JOYW1lID0ge1xuICAgICAgbmFtZTogdGhpcy5jb250YWluZXJDb2xvcnNbMF0ubmFtZSxcbiAgICAgIGNvbG9yOiB0aGlzLmNvbnRhaW5lckNvbG9yc1swXS5jb2xvcixcbiAgICB9O1xuICB9XG5cbiAgLyoqRnVuY3Rpb24gcmV0cnVuIGlkICovXG4gIHB1YmxpYyBpZGVudGl0eShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBOb3RlQ29udGFpbmVyU3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTm90ZUNvbnRhaW5lclN2Z1JvdXRlc1twcm9wZXJ0eU5hbWVdIGFzIHN0cmluZztcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFZGl0b3IpIHRoaXMuc2VsZWN0ZWRFZGl0b3IuZm9jdXMoKTtcbiAgICBlbHNlIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE5vdGVEZWZhdWx0U3RyaW5nRW51bS5NQUlOX0VESVRPUikhLmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tBY3RpdmVJdGVtcygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdCBpbiB0aGlzLmFjdGl2ZU9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uc1thY3RdID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoYWN0KTtcblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2xvd1RpbWVvdXQpO1xuICAgICAgdGhpcy5zbG93VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaW5kZWRDb2xvciA9IHRoaXMuY29udGFpbmVyQ29sb3JzLmZpbmQoXG4gICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICBpdGVtLmNvbG9yID09PVxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlDb21tYW5kVmFsdWUoTm90ZURlZmF1bHRTdHJpbmdFbnVtLkZPUkVfQ09MT1IpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvck5hbWUgPSBmaW5kZWRDb2xvclxuICAgICAgICAgID8gZmluZGVkQ29sb3JcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgY29sb3I6IE5vdGVTZWxlY3RlZENvbG9yU3RyaW5nRW51bS5HUkFZX1JHQixcbiAgICAgICAgICAgICAgbmFtZTogTm90ZVNlbGVjdGVkQ29sb3JTdHJpbmdFbnVtLkdSQVksXG4gICAgICAgICAgICB9O1xuICAgICAgfSwgMjAwKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQYXRlcm5Db2xvciA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKFxuICAgICAgICBOb3RlRGVmYXVsdFN0cmluZ0VudW0uRk9SRV9DT0xPUlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0RlZmF1bHRDb2xvclNldCkge1xuICAgICAgdGhpcy5jb250YWluZXJDb2xvcnMubWFwKChjb2wsIGluZHgpID0+IHtcbiAgICAgICAgaWYgKGNvbC5jb2xvciA9PT0gdGhpcy5zZWxlY3RlZFBhdGVybkNvbG9yKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yTmFtZSA9IHRoaXMuY29udGFpbmVyQ29sb3JzW2luZHhdO1xuXG4gICAgICAgICAgaWYgKHRoaXMubGFzdFNhdmVkSW5kZXggIT0gaW5keCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJzQ29sb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sYXN0U2F2ZWRJbmRleCA9IGluZHg7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRWxlbWVudCgpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KCk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXRlcm5Db2xvciA9IGNvbC5jb2xvcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2hvd0NvbG9yUGF0dGVybiA9IGZhbHNlO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNFeHBhbmRlZFwiXG4gICAgW2NsYXNzLnBhcmtpbmdfZWRpdG9yX21lbnVdPVwiaXNQYXJraW5nXCJcbiAgICBbY2xhc3Mub3BlbmVkX3BhcmtpbmdfZWRpdG9yLmp1c3RpZnktY29udGVudC1lbmRdPVwiXG4gICAgICAgIGlzUGFya2luZyAmJiBpc1Nob3dDb2xvclBhdHRlcm5cbiAgICBcIlxuICAgIFtjbGFzcy5kYXJrXT1cInR5cGUgPT09ICdkYXJrJ1wiXG4gICAgY2xhc3M9XCJlZGl0b3JfbWVudSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbj5cbiAgICBAaWYgKCFpc1BhcmtpbmcgfHwgKGlzUGFya2luZyAmJiAhaXNTaG93Q29sb3JQYXR0ZXJuKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udF9lZGl0b3IgZC1mbGV4XCIgW2NsYXNzLnBhcmtpbmdfZm9udF9lZGl0b3JdPVwiaXNQYXJraW5nXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVFZGl0b3IoJ2JvbGQnKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVPcHRpb25zLmJvbGRcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0eXBlID09PSAnZGFyaycgPyAnIzJGMkYyRicgOiAnIzZDNkM2QydcIlxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCInQm9sZCdcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRvcl9idXR0b25zIG1haW5fY29tbWFuZHMgYm9sZF90ZXh0IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnYm9sZFJvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVFZGl0b3IoJ2l0YWxpYycpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZU9wdGlvbnMuaXRhbGljXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwidHlwZSA9PT0gJ2RhcmsnID8gJyMyRjJGMkYnIDogJyM2QzZDNkMnXCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ0l0YWxpYydcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRvcl9idXR0b25zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtYWluX2NvbW1hbmRzIGl0YWxpY190ZXh0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdpdGFsbGljUm91dGUnKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZUVkaXRvcigndW5kZXJsaW5lJylcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlT3B0aW9ucy51bmRlcmxpbmVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0eXBlID09PSAnZGFyaycgPyAnIzJGMkYyRicgOiAnIzZDNkM2QydcIlxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCInVW5kZXJsaW5lJ1wiXG4gICAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yX2J1dHRvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1haW5fY29tbWFuZHMgdW5kZXJsaW5lX3RleHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ3VuZGVybGluZVJvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZV9zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYXR0ZXJuKClcIlxuICAgICAgICAgICAgW2NsYXNzLm5vX29wYWNpdHldPVwiaXNTaG93Q29sb3JQYXR0ZXJuXCJcbiAgICAgICAgICAgIFtjbGFzcy5wYXJraW5nX3Rvb2x0aXAuZC1mbGV4Lmp1c3RpZnktY29udGVudC1lbmRdPVwiXG4gICAgICAgICAgICAgICAgaXNQYXJraW5nICYmIGlzU2hvd0NvbG9yUGF0dGVyblxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yX2J1dHRvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHRleHRfY29sb3IganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICBbY2xhc3MucG9wb3Zlcl90ZXh0X2NvbG9yLmp1c3RpZnktY29udGVudC1zdGFydF09XCJpc1BvcG92ZXJOb3RlXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNTaG93Q29sb3JQYXR0ZXJuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3JzX3BhdHRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBpZD1cImNvbG9yc19wYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5jbG9zZWRfcGF0dGVybl09XCIhaXNDbG9zZWRQYXR0ZXJuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaW5wdXRfbm90ZS5mbGV4LXJldmVyc2VdPVwiIWlzUG9wb3Zlck5vdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBwYXRlcm5Db2wgb2YgY29udGFpbmVyQ29sb3JzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5keCA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2sgaW5keFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUVkaXRvcignZm9yZUNvbG9yJywgcGF0ZXJuQ29sLmNvbG9yLCBpbmR4KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicGF0ZXJuQ29sLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRlX2VsZW1lbnRzXT1cImluZHggJiYgIWlzU2hvd0NvbG9yUGF0dGVyblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5keCAmJiAhaXNTaG93Q29sb3JQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlID09PSAnZGFyaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcjMkYyRjJGJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyM2QzZDNkMnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5keCA9PT0gMCAmJiAhaXNTaG93Q29sb3JQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0NvbG9yIFBpY2tlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbmR4ICYmICFpc1Nob3dDb2xvclBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAhaW5keCAmJiBpc1Nob3dDb2xvclBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0Nsb3NlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXRlcm5Db2wubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yX2J1dHRvbnNfY29sb3JzIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LXN0YXJ0XT1cImlzUG9wb3Zlck5vdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6ICFpc1Nob3dDb2xvclBhdHRlcm4gJiYgaW5keCA/IDAgOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmluZ0Fycm93KCEhaXNTaG93Q29sb3JQYXR0ZXJuICYmICFpbmR4KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyaW5nQXJyb3coZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaW5keCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvcl9waWNrZXJfYXJyb3cgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsaXBfYXJyb3ddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWlzUG9wb3Zlck5vdGUgJiYgaXNTaG93Q29sb3JQYXR0ZXJuKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzUG9wb3Zlck5vdGUgJiYgIWlzU2hvd0NvbG9yUGF0dGVybilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnJlZ3VsYXJfaWNvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc1BvcG92ZXJOb3RlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Nob3dDb2xvclBhdHRlcm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0hvdmVyaW5nQXJyb3dQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc1Nob3dDb2xvclBhdHRlcm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaG92ZXJpbmdfcGlja2VyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzSG92ZXJpbmdBcnJvd1BpY2tlciAmJiBpc1Nob3dDb2xvclBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNIb3ZlcmluZ0Fycm93UGlja2VyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTaG93Q29sb3JQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0U3ZnUGF0aCgnY2hlY2tSb3V0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0U3ZnUGF0aCgnYXJyb3dSb3V0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCFpc1BhcmtpbmcgJiYgIWlzUG9wb3Zlck5vdGUgJiYgaXNWaXNpYmxlQXJyb3cpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGVfYm9yZGVyX2xpbmVcIiBbY2xhc3MuZGFya109XCJ0eXBlID09PSAnZGFyaydcIj48L2Rpdj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2Etbm90ZS1jb250YWluZXIvY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2Etbm90ZS1jb250YWluZXIvY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdELFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRWhHLGFBQWE7QUFDYixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQU0zRixRQUFRO0FBQ1IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFNUYsWUFBWTtBQUNaLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDOzs7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QkFBb0IsZ09BQ3BCLFNBQVM7Z0JBRVQsWUFBWTtnQkFDWix1QkFBdUIsdU5BRWIsQ0FBQyxlQUFlLENBQUM7OzRGQUVsQix3QkFBd0I7a0JBaEJwQyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsU0FBUzt3QkFFVCxZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEIsY0FDVyxDQUFDLGVBQWUsQ0FBQzt3REFHcEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUkscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8vIEFuaW1hdGlvbnNcbmltcG9ydCB7IHBpY2t1cEFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9uJztcblxuLy8gTW9kdWxlc1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gQ29uc3RhbnRzXG5pbXBvcnQgeyBOb3RlQ29uZmlnQ29uc3RhbnRzIH0gZnJvbSAnLi4vY2Etbm90ZS1jb250YWluZXIvdXRpbHMvY29uc3RhbnRzL25vdGUtY29uZmlnLmNvbnN0YW50JztcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7IE5vdGVBY3RpdmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25vdGUtYWN0aXZlLW9wdGlvbnMubW9kZWwnO1xuaW1wb3J0IHsgTm90ZUNvbG9ycyB9IGZyb20gJy4uL2NhLW5vdGUtY29udGFpbmVyL21vZGVscy9ub3RlLWNvbG9ycy5tb2RlbCc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBOb3RlU2VsZWN0ZWRDb2xvclN0cmluZ0VudW0gfSBmcm9tICcuLi9jYS1ub3RlLWNvbnRhaW5lci9lbnVtcy9ub3RlLXNlbGVjdGVkLWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgTm90ZURlZmF1bHRTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2Etbm90ZS1jb250YWluZXIvZW51bXMvbm90ZS1kZWZhdWx0LXN0cmluZy5lbnVtJztcblxuLy9zdmctcm91dGVzXG5pbXBvcnQgeyBOb3RlQ29udGFpbmVyU3ZnUm91dGVzIH0gZnJvbSAnLi4vY2Etbm90ZS1jb250YWluZXIvdXRpbHMvc3ZnLXJvdXRlcy9ub3RlLWNvbnRhaW5lci1zdmctcm91dGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLW5vdGUtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLW5vdGUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Etbm90ZS1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIC8vIE1vZHVsZVxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRcbiAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgXSxcbiAgYW5pbWF0aW9uczogW3BpY2t1cEFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIENhTm90ZUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdmFsdWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJhbmdlITogUmFuZ2U7XG4gIEBJbnB1dCgpIHNlbGVjdGlvblRha2VuITogU2VsZWN0aW9uO1xuICBASW5wdXQoKSBpc0V4cGFuZGVkITogYm9vbGVhbiB8IHN0cmluZztcbiAgQElucHV0KCkgaXNQYXJraW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUG9wb3Zlck5vdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNWaXNpYmxlQXJyb3c6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSB0eXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZEVkaXRvciE6IEhUTUxEaXZFbGVtZW50O1xuXG4gIEBPdXRwdXQoKSBzdG9wQmx1clJlbW92ZVRpbWVvdXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy9Db2xvcnNcbiAgcHVibGljIHNlbGVjdGVkUGF0ZXJuQ29sb3I6IHN0cmluZyA9IE5vdGVTZWxlY3RlZENvbG9yU3RyaW5nRW51bS5HUkFZX1JHQjtcbiAgcHVibGljIGFjdGl2ZU9wdGlvbnM6IE5vdGVBY3RpdmVPcHRpb25zIHwgYW55ID0ge1xuICAgIC4uLk5vdGVDb25maWdDb25zdGFudHMubm90ZUFjdGl2ZU9wdGlvbnMsXG4gIH07XG4gIHB1YmxpYyBjb250YWluZXJDb2xvcnMhOiBOb3RlQ29sb3JzW107XG4gIHB1YmxpYyBzZWxlY3RlZENvbG9yTmFtZSE6IE5vdGVDb2xvcnM7XG5cbiAgLy9UaW1lb3V0XG4gIHByaXZhdGUgc2xvd1RpbWVvdXQhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBsYXN0U2F2ZWRJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLy9QYXR0ZXJuXG4gIHByaXZhdGUgaXNEZWZhdWx0Q29sb3JTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzU2hvd0NvbG9yUGF0dGVybiE6IGJvb2xlYW47XG4gIHB1YmxpYyBpc0Nsb3NlZFBhdHRlcm46IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzSG92ZXJpbmdBcnJvd1BpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldENvbnRhaW5lckNvbG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDb250YWluZXJzQ29sb3IoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJDb2xvcnMuc29ydCgoYSkgPT4ge1xuICAgICAgaWYgKGFbTm90ZURlZmF1bHRTdHJpbmdFbnVtLkNPTE9SXSAhPT0gdGhpcy5zZWxlY3RlZENvbG9yTmFtZS5jb2xvcikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlRWRpdG9yKGFjdGlvbjogc3RyaW5nLCBjb2xvcj86IHN0cmluZywgaW5keD86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3RvcEJsdXJSZW1vdmVUaW1lb3V0LmVtaXQoKTtcbiAgICBpZiAoaW5keCB8fCBpbmR4ID09PSAwKSB0aGlzLnNlbGVjdGVkQ29sb3JOYW1lID0gdGhpcy5jb250YWluZXJDb2xvcnNbaW5keF07XG5cbiAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25UYWtlbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uVGFrZW4uYWRkUmFuZ2UodGhpcy5yYW5nZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb24gIT09IE5vdGVEZWZhdWx0U3RyaW5nRW51bS5GT1JFX0NPTE9SMikge1xuICAgICAgdGhpcy5pc1Nob3dDb2xvclBhdHRlcm4gPSBmYWxzZTtcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uc1thY3Rpb25dID0gIXRoaXMuYWN0aXZlT3B0aW9uc1thY3Rpb25dO1xuICAgICAgaWYgKCF0aGlzLmFjdGl2ZU9wdGlvbnNbYWN0aW9uXSkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5yZXBsYWNlKCc8YnI+JywgJycpID09PSAnJylcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblRha2VuLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKFxuICAgICAgICAgIE5vdGVEZWZhdWx0U3RyaW5nRW51bS5DU1NfU1RZTEUsXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgTm90ZURlZmF1bHRTdHJpbmdFbnVtLkZBTFNFXG4gICAgICAgICk7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGFjdGlvbiwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb2N1c0VsZW1lbnQoKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoYWN0aW9uLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmxhc3RTYXZlZEluZGV4ICE9IGluZHgpIHRoaXMuZmlsdGVyQ29udGFpbmVyc0NvbG9yKCk7XG5cbiAgICAgIHRoaXMubGFzdFNhdmVkSW5kZXggPSBpbmR4IHx8IC0xO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhdGVybkNvbG9yID0gY29sb3IgfHwgJ2dyZXknO1xuICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKE5vdGVEZWZhdWx0U3RyaW5nRW51bS5GT1JFX0NPTE9SMiwgZmFsc2UsIGNvbG9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcHVibGljIHRvZ2dsZVBhdHRlcm4oKTogdm9pZCB7XG4gICAgdGhpcy5pc1Nob3dDb2xvclBhdHRlcm4gPSAhdGhpcy5pc1Nob3dDb2xvclBhdHRlcm47XG5cbiAgICBpZiAoIXRoaXMuaXNTaG93Q29sb3JQYXR0ZXJuKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWRQYXR0ZXJuID0gZmFsc2U7XG4gICAgICB9LCAzMDApO1xuICAgIGVsc2UgdGhpcy5pc0Nsb3NlZFBhdHRlcm4gPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGhvdmVyaW5nQXJyb3codmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzSG92ZXJpbmdBcnJvd1BpY2tlciA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250YWluZXJDb2xvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJDb2xvcnMgPVxuICAgICAgdGhpcy50eXBlID09PSBOb3RlRGVmYXVsdFN0cmluZ0VudW0uREFSS1xuICAgICAgICA/IFsuLi5Ob3RlQ29uZmlnQ29uc3RhbnRzLm5vdGVEYXJrQ29sb3JzXVxuICAgICAgICA6IFsuLi5Ob3RlQ29uZmlnQ29uc3RhbnRzLm5vdGVMaWdodENvbG9yc107XG5cbiAgICB0aGlzLnNlbGVjdGVkQ29sb3JOYW1lID0ge1xuICAgICAgbmFtZTogdGhpcy5jb250YWluZXJDb2xvcnNbMF0ubmFtZSxcbiAgICAgIGNvbG9yOiB0aGlzLmNvbnRhaW5lckNvbG9yc1swXS5jb2xvcixcbiAgICB9O1xuICB9XG5cbiAgLyoqRnVuY3Rpb24gcmV0cnVuIGlkICovXG4gIHB1YmxpYyBpZGVudGl0eShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBOb3RlQ29udGFpbmVyU3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTm90ZUNvbnRhaW5lclN2Z1JvdXRlc1twcm9wZXJ0eU5hbWVdIGFzIHN0cmluZztcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFZGl0b3IpIHRoaXMuc2VsZWN0ZWRFZGl0b3IuZm9jdXMoKTtcbiAgICBlbHNlIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE5vdGVEZWZhdWx0U3RyaW5nRW51bS5NQUlOX0VESVRPUikhLmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tBY3RpdmVJdGVtcygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdCBpbiB0aGlzLmFjdGl2ZU9wdGlvbnMpIHtcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uc1thY3RdID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoYWN0KTtcblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2xvd1RpbWVvdXQpO1xuICAgICAgdGhpcy5zbG93VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaW5kZWRDb2xvciA9IHRoaXMuY29udGFpbmVyQ29sb3JzLmZpbmQoXG4gICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICBpdGVtLmNvbG9yID09PVxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlDb21tYW5kVmFsdWUoTm90ZURlZmF1bHRTdHJpbmdFbnVtLkZPUkVfQ09MT1IpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvck5hbWUgPSBmaW5kZWRDb2xvclxuICAgICAgICAgID8gZmluZGVkQ29sb3JcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgY29sb3I6IE5vdGVTZWxlY3RlZENvbG9yU3RyaW5nRW51bS5HUkFZX1JHQixcbiAgICAgICAgICAgICAgbmFtZTogTm90ZVNlbGVjdGVkQ29sb3JTdHJpbmdFbnVtLkdSQVksXG4gICAgICAgICAgICB9O1xuICAgICAgfSwgMjAwKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQYXRlcm5Db2xvciA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKFxuICAgICAgICBOb3RlRGVmYXVsdFN0cmluZ0VudW0uRk9SRV9DT0xPUlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0RlZmF1bHRDb2xvclNldCkge1xuICAgICAgdGhpcy5jb250YWluZXJDb2xvcnMubWFwKChjb2wsIGluZHgpID0+IHtcbiAgICAgICAgaWYgKGNvbC5jb2xvciA9PT0gdGhpcy5zZWxlY3RlZFBhdGVybkNvbG9yKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yTmFtZSA9IHRoaXMuY29udGFpbmVyQ29sb3JzW2luZHhdO1xuXG4gICAgICAgICAgaWYgKHRoaXMubGFzdFNhdmVkSW5kZXggIT0gaW5keCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJzQ29sb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sYXN0U2F2ZWRJbmRleCA9IGluZHg7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRWxlbWVudCgpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KCk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXRlcm5Db2xvciA9IGNvbC5jb2xvcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2hvd0NvbG9yUGF0dGVybiA9IGZhbHNlO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNFeHBhbmRlZFwiXG4gICAgW2NsYXNzLnBhcmtpbmdfZWRpdG9yX21lbnVdPVwiaXNQYXJraW5nXCJcbiAgICBbY2xhc3Mub3BlbmVkX3BhcmtpbmdfZWRpdG9yLmp1c3RpZnktY29udGVudC1lbmRdPVwiXG4gICAgICAgIGlzUGFya2luZyAmJiBpc1Nob3dDb2xvclBhdHRlcm5cbiAgICBcIlxuICAgIFtjbGFzcy5kYXJrXT1cInR5cGUgPT09ICdkYXJrJ1wiXG4gICAgY2xhc3M9XCJlZGl0b3JfbWVudSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbj5cbiAgICBAaWYgKCFpc1BhcmtpbmcgfHwgKGlzUGFya2luZyAmJiAhaXNTaG93Q29sb3JQYXR0ZXJuKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udF9lZGl0b3IgZC1mbGV4XCIgW2NsYXNzLnBhcmtpbmdfZm9udF9lZGl0b3JdPVwiaXNQYXJraW5nXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVFZGl0b3IoJ2JvbGQnKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVPcHRpb25zLmJvbGRcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0eXBlID09PSAnZGFyaycgPyAnIzJGMkYyRicgOiAnIzZDNkM2QydcIlxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCInQm9sZCdcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRvcl9idXR0b25zIG1haW5fY29tbWFuZHMgYm9sZF90ZXh0IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnYm9sZFJvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVFZGl0b3IoJ2l0YWxpYycpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZU9wdGlvbnMuaXRhbGljXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwidHlwZSA9PT0gJ2RhcmsnID8gJyMyRjJGMkYnIDogJyM2QzZDNkMnXCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiJ0l0YWxpYydcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRvcl9idXR0b25zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtYWluX2NvbW1hbmRzIGl0YWxpY190ZXh0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdpdGFsbGljUm91dGUnKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZUVkaXRvcigndW5kZXJsaW5lJylcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlT3B0aW9ucy51bmRlcmxpbmVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJ0eXBlID09PSAnZGFyaycgPyAnIzJGMkYyRicgOiAnIzZDNkM2QydcIlxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCInVW5kZXJsaW5lJ1wiXG4gICAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yX2J1dHRvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1haW5fY29tbWFuZHMgdW5kZXJsaW5lX3RleHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ3VuZGVybGluZVJvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZV9zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYXR0ZXJuKClcIlxuICAgICAgICAgICAgW2NsYXNzLm5vX29wYWNpdHldPVwiaXNTaG93Q29sb3JQYXR0ZXJuXCJcbiAgICAgICAgICAgIFtjbGFzcy5wYXJraW5nX3Rvb2x0aXAuZC1mbGV4Lmp1c3RpZnktY29udGVudC1lbmRdPVwiXG4gICAgICAgICAgICAgICAgaXNQYXJraW5nICYmIGlzU2hvd0NvbG9yUGF0dGVyblxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yX2J1dHRvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHRleHRfY29sb3IganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICBbY2xhc3MucG9wb3Zlcl90ZXh0X2NvbG9yLmp1c3RpZnktY29udGVudC1zdGFydF09XCJpc1BvcG92ZXJOb3RlXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNTaG93Q29sb3JQYXR0ZXJuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3JzX3BhdHRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBpZD1cImNvbG9yc19wYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5jbG9zZWRfcGF0dGVybl09XCIhaXNDbG9zZWRQYXR0ZXJuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaW5wdXRfbm90ZS5mbGV4LXJldmVyc2VdPVwiIWlzUG9wb3Zlck5vdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICBwYXRlcm5Db2wgb2YgY29udGFpbmVyQ29sb3JzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5keCA9ICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2sgaW5keFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUVkaXRvcignZm9yZUNvbG9yJywgcGF0ZXJuQ29sLmNvbG9yLCBpbmR4KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicGF0ZXJuQ29sLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRlX2VsZW1lbnRzXT1cImluZHggJiYgIWlzU2hvd0NvbG9yUGF0dGVyblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5keCAmJiAhaXNTaG93Q29sb3JQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlID09PSAnZGFyaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcjMkYyRjJGJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyM2QzZDNkMnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5keCA9PT0gMCAmJiAhaXNTaG93Q29sb3JQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0NvbG9yIFBpY2tlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbmR4ICYmICFpc1Nob3dDb2xvclBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAhaW5keCAmJiBpc1Nob3dDb2xvclBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0Nsb3NlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXRlcm5Db2wubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yX2J1dHRvbnNfY29sb3JzIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LXN0YXJ0XT1cImlzUG9wb3Zlck5vdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6ICFpc1Nob3dDb2xvclBhdHRlcm4gJiYgaW5keCA/IDAgOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmluZ0Fycm93KCEhaXNTaG93Q29sb3JQYXR0ZXJuICYmICFpbmR4KVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyaW5nQXJyb3coZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaW5keCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvcl9waWNrZXJfYXJyb3cgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZsaXBfYXJyb3ddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWlzUG9wb3Zlck5vdGUgJiYgaXNTaG93Q29sb3JQYXR0ZXJuKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzUG9wb3Zlck5vdGUgJiYgIWlzU2hvd0NvbG9yUGF0dGVybilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnJlZ3VsYXJfaWNvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc1BvcG92ZXJOb3RlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Nob3dDb2xvclBhdHRlcm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc0hvdmVyaW5nQXJyb3dQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc1Nob3dDb2xvclBhdHRlcm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaG92ZXJpbmdfcGlja2VyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzSG92ZXJpbmdBcnJvd1BpY2tlciAmJiBpc1Nob3dDb2xvclBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNIb3ZlcmluZ0Fycm93UGlja2VyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTaG93Q29sb3JQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0U3ZnUGF0aCgnY2hlY2tSb3V0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0U3ZnUGF0aCgnYXJyb3dSb3V0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCFpc1BhcmtpbmcgJiYgIWlzUG9wb3Zlck5vdGUgJiYgaXNWaXNpYmxlQXJyb3cpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGVfYm9yZGVyX2xpbmVcIiBbY2xhc3MuZGFya109XCJ0eXBlID09PSAnZGFyaydcIj48L2Rpdj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==