@ieeesa-npm/events-and-meetings 0.2.3 → 0.2.4

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.
@@ -633,4 +633,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
633
633
  }], routePaths: [{
634
634
  type: Input
635
635
  }] } });
636
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1NZWV0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUUzSSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsMEhBQTBIO0FBQzFILE9BQU8sS0FBSyxTQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUtMLGVBQWUsRUFFZixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFFVixxQkFBcUIsRUFDckIsU0FBUyxFQUNULDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsZUFBZSxFQUVmLGtCQUFrQixFQUVuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsU0FBUyxHQUdWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxjQUFjLEVB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QWlCLENBQUMsSUFBSTtxUUFRNUIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQW1FRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JlYXRlTW9kaWZ5RXZlbnRPck1lZXRpbmdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1ldmVudC1vci1tZWV0aW5nL2NyZWF0ZS1tb2RpZnktZXZlbnQtb3ItbWVldGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V2ZW50cy1hbmQtbWVldGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIFRvRG86IGNvbnN0YW50cy5qc29uIHRvIGJlIG1haW50YWluZWQgYXQgbGlicmFyeSBzaWRlIGFzIGEgZmFsbGJhY2sgaWYgbm90IGZvdW5kIGFwcGxpY2F0aW9uIHNwZWNpZmljIGZyb20gc2VydmVyIHNpZGUuXHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7XHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFRhYmxlQWN0aW9ucyxcclxuICBUb2dnbGVCdXR0b24sXHJcbiAgSWNvbkJ1dHRvbixcclxuICBGaWx0ZXJDb21wb25lbnQsXHJcbiAgQ2hpcE9wdGlvbixcclxuICBDaGlwc1R5cGUsXHJcbiAgU2VhcmNoQ29tcG9uZW50LFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgTWVudSxcclxuICBUb2dnbGVCdXR0b25Db21wb25lbnQsXHJcbiAgQWxpZ25UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgVGFibGVDb2x1bW5UeXBlLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICBMZWdlbmRcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEV2ZW50c0FuZE1lZXRpbmdzLFxyXG4gIEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZCxcclxufSBmcm9tICcuL21vZGVscy9ldmVudHMtYW5kLW1lZXRpbmdzLWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBEYXRlRm9ybWF0cyB9IGZyb20gJy4vYXNzZXRzL2RhdGUtZm9ybWF0cyc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVmlld0VkaXRBY3Rpb24gfSBmcm9tICcuL21vZGVscy92aWV3LWVkaXQtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZSB9IGZyb20gJy4vbW9kZWxzL2xpc3QtY2FsZW5kYXItdmlldy1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9ldmVudC1tZWV0aW5nLWZ1bmN0aW9uLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBNZWV0aW5nUGVybWlzc2lvbnMsXHJcbiAgVXNlclBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvbWVldGluZy1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvcm91dGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWQsXHJcbiAgTWVldGluZyxcclxufSBmcm9tICcuL21vZGVscy9tZWV0aW5ncy11bmRlci1ldmVudHMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEV2ZW50QWN0aW9uLFxyXG4gIE1lZXRpbmdBY3Rpb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvZXZlbnQtb3ItbWVldGluZy1tZW51LWFjdGlvbi5tb2RlbCc7XHJcbmNvbnN0IENPTFVNTl9ERUYgPSB7XHJcbiAgbmFtZTogJ25hbWUnLFxyXG4gIHN0YXJ0RGF0ZVRpbWU6ICdzdGFydC1kYXRlLXRpbWUnLFxyXG4gIGVuZERhdGVUaW1lOiAnZW5kLWRhdGUtdGltZScsXHJcbiAgdGltZVpvbmU6ICd0aW1lLXpvbmUnLFxyXG4gIGdyb3VwOiAncmVsYXRlZC1ncm91cCcsXHJcbiAgbG9jYXRpb246ICdsb2NhdGlvbicsXHJcbn07XHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBhbmQgbWVldGluZyBmZWF0dXJlc1xyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nQ29tcG9uZW50LFxyXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gICAgVG9nZ2xlQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIEZpbHRlckNvbXBvbmVudCxcclxuICAgIFNlYXJjaENvbXBvbmVudCxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50cy1hbmQtTWVldGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2V2ZW50cy1hbmQtTWVldGluZ3MuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBzZWFyY2hQbGFjZWhvbGRlclRleHQhOiBzdHJpbmc7XHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICBldmVudERhdGEhOiBFdmVudHNBbmRNZWV0aW5ncztcclxuICBtZWV0aW5nRGF0YSE6IEV2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2VsZWN0ZWREYXRhITogYW55O1xyXG4gIG1lbnVEYXRhITogTWVudTtcclxuICBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBkZWZhdWx0U29ydGVkQ29sdW1uID0gJ3N0YXJ0RGF0ZVRpbWUnO1xyXG4gIG5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbiA9ICdtZWV0aW5nU3REYXRlJztcclxuICBmaWx0ZXJzOiBDaGlwT3B0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiBGaWx0ZXJUeXBlLkdST1VQX05BTUUsXHJcbiAgICAgIG5hbWU6IEZpbHRlclR5cGUuR1JPVVBfTkFNRSxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IEZpbHRlclR5cGUuU1RBVFVTLFxyXG4gICAgICBuYW1lOiBGaWx0ZXJUeXBlLlNUQVRVUyxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgc2NyZWVuVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8udmlld0V2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucz8uWzFdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzLnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIG5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy5zY3JlZW5UZXh0cz8ucGFnZVNpemVPcHRpb25zPy5bMV0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHMucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeSA9IHRoaXMuc2NyZWVuVGV4dHM/LmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnk7XHJcbiAgY29sdW1uSGVhZGluZyA9IHRoaXMuc2NyZWVuVGV4dHM/LmNvbHVtblNjaGVtYT8uY29sdW1uSGVhZGluZztcclxuICB2aWV3QWxsTWVldGluZ3NUZXh0ID0gdGhpcy5zY3JlZW5UZXh0cz8udmlld0FsbE1lZXRpbmdzO1xyXG4gIGNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIGV2ZW50c0FuZE1lZXRpbmdzQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNTZWFyY2hOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNBZGROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICAgIGlzUGFnaW5hdGlvbk5lZWRlZDogdHJ1ZSxcclxuICB9O1xyXG4gIGV2ZW50QW5kTWVldGluZ0xlZ2VuZHM6IExlZ2VuZFtdID0gdGhpcy5jb25zdGFudHM/LmV2ZW50T3JNZWV0aW5nTGVnZW5kcztcclxuICBsaXN0T3JDYWxlbmRhclZpZXdzOiBUb2dnbGVCdXR0b25bXSA9IHRoaXMuc2NyZWVuVGV4dHM/LnRvZ2dsZUJ1dHRvbnM7XHJcbiAgZGVsZXRlQnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5zY3JlZW5UZXh0cz8uYnV0dG9ucz8uWzFdO1xyXG4gIGNyZWF0ZUJ1dHRvbjogSWNvbkJ1dHRvbiA9IHRoaXMuc2NyZWVuVGV4dHM/LmJ1dHRvbnM/LlswXTtcclxuICBldmVudEFuZE1lZXRpbmdWaWV3VHlwZSA9IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGU7XHJcbiAgc2VsZWN0ZWRWaWV3VHlwZTogRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZSA9XHJcbiAgICBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkxJU1RfVklFVztcclxuICBldmVudHNBbmRNZWV0aW5nc0xpc3Q6IEV2ZW50c0FuZE1lZXRpbmdzW10gPSBbXTtcclxuICB1c2VyTWVldGluZ1Blcm1pc3Npb25zITogTWVldGluZ1Blcm1pc3Npb25zW107XHJcbiAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZTtcclxuICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGlzRGVsZXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGlzQ3JlYXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZDogc3RyaW5nW10gPSBbXTtcclxuICAvLyBUb0RvIGVtaXQgdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGV2ZW50cyBvZiBDUkVBVEUsIFZJRVcsIEVESVQgZXZlbnRzIGFuZCBtZWV0aW5ncyB1c2luZyBAT3V0cHV0IGFzIHdlIGRpc2N1c3NlZCB0aGUgY29uc3VtZXIgYXBwbGljYXRpb24gbWF5IGxvYWQgdGhlIG1lZXRpbmcgYW5kIGV2ZW50cyBjb21wb25lbnRzIGludG8gdGhlIHRhYmJlZCB2aWV3IG9yIG90aGVyIHdheSBpbnN0ZWFkIG9mIHJvdXRpbmdcclxuICBASW5wdXQoKSByb3V0ZVBhdGhzITogRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnO1xyXG4gIG1lZXRpbmdzOiBNZWV0aW5nW10gPSBbXTtcclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlOiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvblNlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlbGV0ZUJ1dHRvbikgdGhpcy5kZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnREYXRhKG51bGwpO1xyXG4gICAgdGhpcy5yb3V0ZVBhdGhzID0gdGhpcy5yb3V0ZVBhdGhzID8/IHRoaXMuY29uc3RhbnRzPy5yb3V0ZUNvbmZpZ1BhdGg7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0Um91dGVQYXRocyh0aGlzLnJvdXRlUGF0aHMpO1xyXG4gICAgdGhpcy51c2VyTWVldGluZ1Blcm1pc3Npb25zID1cclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNlcnZpY2UuZmlsdGVyVXNlck1lZXRpbmdQZXJtaXNzaW9ucyhcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgICApO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldEFwcENvbmZpZyhcclxuICAgICAgdGhpcy5hcGlCYXNlVVJMLFxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFVzZXJNZWV0aW5nUGVybWlzc2lvbnMoXHJcbiAgICAgIHRoaXMudXNlck1lZXRpbmdQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEdyb3VwcygpLnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5pc0NyZWF0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWQgPVxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5DUkVBVEVfRVZFTlQpO1xyXG4gICAgdGhpcy5maWx0ZXJFdmVudEFuZE1lZXRpbmdBY3Rpb25zKCk7XHJcbiAgICB0aGlzLmlzRGVsZXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICAgIFBlcm1pc3Npb25UeXBlLkRFTEVURV9FVkVOVFxyXG4gICAgICApICYmXHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICAgIFBlcm1pc3Npb25UeXBlLkRFTEVURV9NRUVUSU5HXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5TY2hlbWEoKTtcclxuICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3Moe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogbnVsbCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IGZhbHNlLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciB0aGUgZXZlbnQgYW5kIG1lZXRpbmcgYWN0aW9ucyBiYXNlZCBvbiBldmVudCBhbmQgbWVldGluZyBwZXJtaXNzaW9ucy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBmaWx0ZXJFdmVudEFuZE1lZXRpbmdBY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2NyZWVuVGV4dHM/LmV2ZW50QWN0aW9ucylcclxuICAgICAgdGhpcy5zY3JlZW5UZXh0cy5ldmVudEFjdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEZpbHRlcmVkRXZlbnRBY3Rpb25zKFxyXG4gICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cy5ldmVudEFjdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgaWYgKHRoaXMuc2NyZWVuVGV4dHM/Lm1lZXRpbmdBY3Rpb25zKVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzLm1lZXRpbmdBY3Rpb25zID1cclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRGaWx0ZXJlZE1lZXRpbmdBY3Rpb25zKFxyXG4gICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cy5tZWV0aW5nQWN0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRhYmxlIGNvbHVtbiBzY2hlbWEgdG8gZGlzcGxheSB0aGUgbWVldGluZyBhbmQgZXZlbnQgZGV0YWlscyBpbiB0YWJ1bGFyIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMSxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuTkVTVEVEX1RBQkxFLFxyXG4gICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5ORVNURURfVEFCTEUsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5oYXNDaGlsZHJlbixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubmFtZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lm5hbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5uYW1lfWAsXHJcbiAgICAgICAgaXNDb250ZW50VW5kZXJMaW5rOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5zdGFydERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc3RhcnREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgIWVsZW1lbnQuaXNNZWV0aW5nRXZlbnRcclxuICAgICAgICAgICAgPyBgJHttb21lbnQoZWxlbWVudC5zdGFydERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5zdGFydERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICAgICAgKX1gXHJcbiAgICAgICAgICAgIDogYCR7bW9tZW50KGVsZW1lbnQuc3RhcnREYXRlVGltZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5lbmREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgIWVsZW1lbnQuaXNNZWV0aW5nRXZlbnRcclxuICAgICAgICAgICAgPyBgJHttb21lbnQoZWxlbWVudC5lbmREYXRlVGltZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgICAgICl9PGJyPiR7bW9tZW50KGVsZW1lbnQuZW5kRGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICAgICApfWBcclxuICAgICAgICAgICAgOiBgJHttb21lbnQoZWxlbWVudC5lbmREYXRlVGltZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8udGltZVpvbmUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy50aW1lWm9uZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC50aW1lWm9uZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA3LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZ3JvdXAsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5ncm91cCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC5ncm91cE5hbWUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogOCxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmxvY2F0aW9uLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubG9jYXRpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQubWVldGluZ0xvY2F0aW9uID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDksXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmFjdGlvbnMsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5tZW51QWN0aW9ufWAsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBldmVudHMgYW5kIG1lZXRpbmdzIGxpc3QgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7R2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RXZlbnRzQW5kTWVldGluZ3MocGF5bG9hZDogR2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0RXZlbnRzQW5kTWVldGluZ3MocGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NMaXN0ID0gW107XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZXZlbnRNZWV0aW5nTGlzdD8uZm9yRWFjaCgoZXZlbnRNZWV0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gZXZlbnRNZWV0aW5nLmlzTWVldGluZ0V2ZW50XHJcbiAgICAgICAgICAgICAgPyB0aGlzLnNjcmVlblRleHRzPy5ldmVudFxyXG4gICAgICAgICAgICAgIDogdGhpcy5zY3JlZW5UZXh0cz8ubWVldGluZztcclxuICAgICAgICAgICAgZXZlbnRNZWV0aW5nLnRvb2xUaXBUZXh0ID0gZXZlbnRNZWV0aW5nLm5hbWUgKyAnICcgKyB0aXRsZTtcclxuICAgICAgICAgICAgZXZlbnRNZWV0aW5nLmNvbnRlbnRVbmRlckxpbmsgPSBldmVudE1lZXRpbmcuc3RhdHVzO1xyXG4gICAgICAgICAgICBldmVudE1lZXRpbmcubGVnZW5kQ29sb3IgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEV2ZW50T3JNZWV0aW5nTGVnZW5kQ29sb3IoXHJcbiAgICAgICAgICAgICAgICBldmVudE1lZXRpbmc/LnN0YXR1c1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NMaXN0LnB1c2goZXZlbnRNZWV0aW5nKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdCA9IHRoaXMubWFwTWVudUFjdGlvblRvTGlzdChcclxuICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3RcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdCA9IFsuLi50aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdF07XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZyA9IHsgLi4udGhpcy5wYWdpbmF0b3JDb25maWcgfTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWJsZSByb3cgYWN0aW9ucyBmb3IgZWFjaCByb3cgb2YgZXZlbnRzIGFuZCBtZWV0aW5ncyB0YWJsZSB0aGVuIHJldHVybnMgRXZlbnNBbmRNZWV0aW5ncy5cclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdzW119XHJcbiAgICogKiBAcmV0dXJuIHtFdmVudHNBbmRNZWV0aW5nc1tdfSAtSXQgcmV0dXJucyBldmVudHNBbmRNZWV0aW5nc0xpc3Qgd2l0aCBtZW51IGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggZWFjaCByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbWFwTWVudUFjdGlvblRvTGlzdChcclxuICAgIGV2ZW50c0FuZE1lZXRpbmdzTGlzdDogRXZlbnRzQW5kTWVldGluZ3NbXVxyXG4gICk6IEV2ZW50c0FuZE1lZXRpbmdzW10ge1xyXG4gICAgZXZlbnRzQW5kTWVldGluZ3NMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5tZW51QWN0aW9uID0gaXRlbS5pc01lZXRpbmdFdmVudFxyXG4gICAgICAgID8gdGhpcy5zY3JlZW5UZXh0cz8uZXZlbnRBY3Rpb25zXHJcbiAgICAgICAgOiB0aGlzLnNjcmVlblRleHRzPy5tZWV0aW5nQWN0aW9ucztcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGV2ZW50c0FuZE1lZXRpbmdzTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIG1lZXRpbmdzIGFuZCBldmVudHMgbGlzdCBkZXRhaWxzIG9uIGNoYW5nZSBvZiB0YWJsZSBwYWdpbmF0aW9uLlxyXG4gICAqIEBwYXJhbSB7e1BhZ2VFdmVudH19IHBhZ2VFdmVudFxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRXZlbnRzQW5kTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3Moe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogJycsXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiBmYWxzZSxcclxuICAgICAgICBwYWdlOiBwYWdlRXZlbnQucGFnZUluZGV4ICsgMSxcclxuICAgICAgICBzaXplOiBwYWdlRXZlbnQucGFnZVNpemUsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGNsaWNrIGV2ZW50IG5hdmlnYXRlIHRvIHZpZXcgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbmF2aWdhdGVUb1ZpZXdEZXRhaWxzUGFnZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyh0cnVlKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPSBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgIGlmIChldmVudD8ucm93Py5pc01lZXRpbmdFdmVudCkge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSBldmVudD8ucm93Py5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlUGF0aHMuZWRpdEV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gZXZlbnQ/LnJvdz8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byBjcmVhdGUgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlVG9DcmVhdGVFdmVudE1lZXRpbmdGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9XHJcbiAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEU7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSAnJztcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gJyc7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5jcmVhdGVFdmVudE1lZXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBiZXR3ZWVuIHRoZSBMaXN0IHZpZXcgb3IgQ2FsZW5kYXIgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQnV0dG9uQ2hhbmdlKHRvZ2dsZUJ1dHRvbjogVG9nZ2xlQnV0dG9uKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmlld1R5cGUgPVxyXG4gICAgICB0b2dnbGVCdXR0b24/LmlkID09PSBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkxJU1RfVklFV1xyXG4gICAgICAgID8gRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZS5MSVNUX1ZJRVdcclxuICAgICAgICA6IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGUuQ0FMRU5EQVJfVklFVztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSBzZWFyY2ggZmllbGQgb24gY2xpY2sgb2Ygc2VhcmNoIGljb24gaW4gY2FzZSBvZiBtb2JpbGUgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRXZlbnRNZWV0aW5nU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiBjbGljayBtZW51IGl0ZW1zIG5hdmlnYXRlIHRvIGVkaXQgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaGFuZGxlRWRpdEFjdGlvbnMocm93OiBhbnkpIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKHRydWUpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSByb3c7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGE/LmxhYmVsID09PSBWaWV3RWRpdEFjdGlvbi5WSUVXX0VESVRfRVZFTlRfREVUQUlMUykge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRFdmVudElkID0gdGhpcy5ldmVudERhdGE/LmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5lZGl0RXZlbnQpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGE/LmxhYmVsID09PSBWaWV3RWRpdEFjdGlvbi5WSUVXX0VESVRfTUVFVElOR19ERVRBSUxTXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9XHJcbiAgICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVQ7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gdGhpcy5ldmVudERhdGE/LmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5lZGl0TWVldGluZyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YT8uaWQgPT09IEV2ZW50QWN0aW9uLkRFTEVURV9FVkVOVCB8fFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uREVMRVRFX01FRVRJTkdcclxuICAgICkge1xyXG4gICAgICB0aGlzLm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCh0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGE/LmlkID09PSBFdmVudEFjdGlvbi5DUkVBVEVfTUVFVElORykge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuQ1JFQVRFO1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyhmYWxzZSk7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkRXZlbnRJZCA9IHRoaXMuZXZlbnREYXRhPy5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlUGF0aHMuZWRpdEV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gY2xpY2sgZXZlbnQgbmF2aWdhdGUgdG8gZWRpdCBtZWV0aW5nIG9yIGV2ZW50IHBhZ2UuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICogQHBhcmFtIHsqfSBldmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdEV2ZW50TWVldGluZyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50RGF0YSA9IGV2ZW50O1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50T3JNZWV0aW5nSWQgPSBbXTtcclxuICAgIGlmIChldmVudD8uaWQpIHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkLnB1c2goZXZlbnQ/LmlkKTtcclxuICAgIGVsc2UgaWYgKGV2ZW50Py5tZWV0aW5nSWQpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkLnB1c2goZXZlbnQ/Lm1lZXRpbmdJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgaWRzIG9mIGFsbCB0aGUgc2VsZWN0ZWQgZXZlbnRzIGFuZCBtZWV0aW5ncyB0byBiZSBkZWxldGVkLlxyXG4gICAqIEBwYXJhbSB7Kn0gc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkTWVldGluZ3NBbmRFdmVudHNUb0RlbGV0ZShcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc0lkcyA9IFtdO1xyXG4gICAgc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5ncz8uZm9yRWFjaCgoZXZlbnRPck1lZXRpbmc6IEV2ZW50c0FuZE1lZXRpbmdzKSA9PiB7XHJcbiAgICAgIGlmIChldmVudE9yTWVldGluZz8uaWQpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzLnB1c2goZXZlbnRPck1lZXRpbmcuaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc0lkcy5sZW5ndGggPT09IDA7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGV2ZW50cyBhbmQgbWVldGluZ3MgZGVsZXRlIGNvbmZpcm1hdGlvbiBtb2RhbCBhbmQgY2FsbHMgZGVsZXRlRXZlbnRzT3JNZWV0aW5ncyBtZXRob2Qgb24gY29uZmlybWF0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbChpc1NpbmdsZURlbGV0ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzPy5kZWxldGVFdmVudHNPck1lZXRpbmdzPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3QgZGVsZXRlTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTogY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZSxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IEFsaWduVHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlTW9kYWxPcHRpb25zLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1kZWxldGUtZXZlbnRzLW1lZXRpbmdzLW1vZGFsJ10sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVFdmVudHNPck1lZXRpbmdzKGlzU2luZ2xlRGVsZXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZW5kcyBBUEkgUmVxdWVzdCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGV2ZW50cyBhbmQgbWVldGluZ3MgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlRXZlbnRzT3JNZWV0aW5ncyhpc1NpbmdsZURlbGV0ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvdW50ID0gaXNTaW5nbGVEZWxldGVcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZD8ubGVuZ3RoXHJcbiAgICAgIDogdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzLmxlbmd0aDtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVFdmVudHNPck1lZXRpbmdzKHtcclxuICAgICAgICBwYXlsb2FkOiBpc1NpbmdsZURlbGV0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZFxyXG4gICAgICAgICAgOiB0aGlzLnNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3NJZHMsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRFdmVudHNBbmRNZWV0aW5ncyh7XHJcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgICBldmVudElkOiBudWxsLFxyXG4gICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgY291bnQgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZUV2ZW50c09yTWVldGluZ3M/Lm1lc3NhZ2U/LnN1Y2Nlc3NcclxuICAgICAgICAgICAgICAgID8uZGVsZXRpb24sXHJcbiAgICAgICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLlNVQ0NFU1MsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBjcmVhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZXZlbnQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5tYXBNZWV0aW5nc0luZm9Ub0RhdGFUYWJsZShcclxuICAgICAgICAgICAgICByZXNwb25zZT8uYm9keT8ubWVldGluZ3NcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMubmVzdGVkVGFibGVQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLm1lZXRpbmdzPy5sZW5ndGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFibGUgY29sdW1uIHNjaGVtYSBhbmQgZ2V0cyBtZWV0aW5ncyBvZiB0aGUgc2VsZWN0ZWQgZXZlbnQgdXNpbmcgZXZlbnQgaWQgZnJvbSBzZXJ2ZXIgdG8gZGlzcGxheSB0aGUgbWVldGluZ3MgaW4gdGhlIG5lc3RlZCB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdzfSBldmVudERldGFpbFxyXG4gICAqL1xyXG4gIGdldEV2ZW50TWVldGluZ3NPblJvd0V4cGFuZChldmVudERldGFpbDogRXZlbnRzQW5kTWVldGluZ3MpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZU5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50RGV0YWlsPy5pZCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLm5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBzaXplOiB0aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGFibGUgY29sdW1uIHNjaGVtYSB0byBkaXNwbGF5IHRoZSBtZWV0aW5ncyB1bmRlciBhbiBldmVudCBpbiB0YWJ1bGFyIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplTmVzdGVkVGFibGVDb2x1bW5TY2hlbWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5uYW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubmFtZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuTElOSyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm1lZXRpbmdUaXRsZX1gLFxyXG4gICAgICAgIGlzQ29udGVudFVuZGVyTGluazogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAyLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uc3RhcnREYXRlVGltZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LnN0YXJ0RGF0ZVRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke21vbWVudChlbGVtZW50Lm1lZXRpbmdTdERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5tZWV0aW5nU3REYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5lbmREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ0VkRGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy50aW1lWm9uZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LnRpbWVab25lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHtlbGVtZW50LnRpbWVab25lID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDUsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5ncm91cCxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lmdyb3VwLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHtlbGVtZW50Lmdyb3VwTmFtZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubG9jYXRpb24sXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5sb2NhdGlvbixcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC5tZWV0aW5nTG9jYXRpb24gPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNyxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uYWN0aW9ucyxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LmFjdGlvbn1gLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ1wiXHJcbiAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmctLW1vYmlsZS12aWV3IHAtMCcgOiAnJ1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPHBcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLWhlYWRsaW5lLWxnLTM0J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcmVlblRleHRzPy50aXRsZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLWxnLTMgZ2FwLW1kLTMgZ2FwLXNtLTMgZ2FwLTMgY29sLW1kLTUgY29sLWxnLTQganVzdGlmeS1jb250ZW50LWVuZCBwcy0wXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVZpZXdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoRmllbGRcIj4gPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpc0NyZWF0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19faGVhZGVyX19jcmVhdGUtYnV0dG9uIGQtbm9uZSBkLXNtLW5vbmUgZC1tZC1ibG9jayBkLWxnLWJsb2NrIGQteGwtYmxvY2sgY29sLWxnLTMgcGItMFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9DcmVhdGVFdmVudE1lZXRpbmdGb3JtKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX2NyZWF0ZS1idXR0b25fX2ljb24gbWUtMlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cImNyZWF0ZUJ1dHRvbj8uaWNvblVSTFwiPjwvdXNlPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19faGVhZGVyX19jcmVhdGUtYnV0dG9uX19sYWJlbFwiPnt7XHJcbiAgICAgICAgICBjcmVhdGVCdXR0b24/LmxhYmVsXHJcbiAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX21vYmlsZS1pY29ucyBnYXAtMlwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzY3JlZW5UZXh0cz8uc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcclxuICAgICAgICAoY2xpY2spPVwib25FdmVudE1lZXRpbmdTZWFyY2goKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3Mgc2VhcmNoLWV2ZW50cy1tZWV0aW5ncy1pY29uXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXNDcmVhdGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJjcmVhdGVCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwibmF2aWdhdGVUb0NyZWF0ZUV2ZW50TWVldGluZ0Zvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkPlxyXG4gICAgPGllZWVzYS1zZWFyY2hcclxuICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwic2NyZWVuVGV4dHM/LnNlYXJjaFBsYWNlaG9sZGVyVGV4dFwiXHJcbiAgICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3NlYXJjaC13cmFwcGVyXCJcclxuICAgID48L2llZWVzYS1zZWFyY2g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGllZWVzYS1maWx0ZXIgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiPjwvaWVlZXNhLWZpbHRlcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3ZpZXdcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlldyA/ICdpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX192aWV3LS1tb2JpbGUtdmlldyBwLTAnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3RhYi1hY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19fdGFiLWFjdGlvbi0tbW9iaWxlLXZpZXcgcGItMydcclxuICAgICAgICAgIDogJydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGllZWVzYS10b2dnbGUtYnV0dG9uXHJcbiAgICAgICAgW3NlbGVjdGVkTGFiZWxdPVwibGlzdE9yQ2FsZW5kYXJWaWV3c1swXT8ubGFiZWwgPz8gJydcIlxyXG4gICAgICAgIFtidXR0b25zXT1cImxpc3RPckNhbGVuZGFyVmlld3NcIlxyXG4gICAgICAgICh0b2dnbGVTZWxlY3RlZCk9XCJvblRvZ2dsZUJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLXRvZ2dsZS1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJkZWxldGVCdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiaXNEZWxldGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCgpXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2RlbGV0ZS1idXR0b25cIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpZWVlc2EtZGF0YS10YWJsZVxyXG4gICAgICAqbmdJZj1cInNlbGVjdGVkVmlld1R5cGUgPT09IGV2ZW50QW5kTWVldGluZ1ZpZXdUeXBlLkxJU1RfVklFV1wiXHJcbiAgICAgIFt0YWJsZURhdGFJbmZvXT1cImV2ZW50c0FuZE1lZXRpbmdzTGlzdFwiXHJcbiAgICAgIFtuZXN0ZWRUYWJsZURhdGFJbmZvXT1cIm1lZXRpbmdzXCJcclxuICAgICAgW2NvbHVtblNjaGVtYUluZm9dPVwiY29sdW1uU2NoZW1hXCJcclxuICAgICAgW25lc3RlZFRhYmxlQ29sdW1uU2NoZW1hSW5mb109XCJuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYVwiXHJcbiAgICAgIFtwYWdpbmF0b3JDb25maWddPVwicGFnaW5hdG9yQ29uZmlnXCJcclxuICAgICAgW25lc3RlZFBhZ2luYXRvckNvbmZpZ109XCJuZXN0ZWRUYWJsZVBhZ2luYXRvckNvbmZpZ1wiXHJcbiAgICAgIFt2aWV3QWxsXT1cInZpZXdBbGxNZWV0aW5nc1RleHRcIlxyXG4gICAgICBbdGFibGVBY3Rpb25zXT1cImV2ZW50c0FuZE1lZXRpbmdzQWN0aW9uc1wiXHJcbiAgICAgIFtuZXN0ZWRUYWJsZVJvd0FjdGlvbnNdPVwic2NyZWVuVGV4dHM/Lm1lZXRpbmdBY3Rpb25zXCJcclxuICAgICAgW2NsYXNzTmFtZV09XCInaWVlZXNhLXZpZXctZXZlbnRzLWFuZC1tZWV0aW5ncydcIlxyXG4gICAgICBbbGVnZW5kc109XCJldmVudEFuZE1lZXRpbmdMZWdlbmRzXCJcclxuICAgICAgKGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayk9XCJuYXZpZ2F0ZVRvVmlld0RldGFpbHNQYWdlKCRldmVudClcIlxyXG4gICAgICAobWVudUFjdGlvbkNsaWNrKT1cImVkaXRFdmVudE1lZXRpbmcoJGV2ZW50KVwiXHJcbiAgICAgIChyb3dFeHBhbnNpb25DbGljayk9XCJnZXRFdmVudE1lZXRpbmdzT25Sb3dFeHBhbmQoJGV2ZW50KVwiXHJcbiAgICAgIChzZWxlY3RBY3Rpb25NZW51KT1cImhhbmRsZUVkaXRBY3Rpb25zKCRldmVudClcIlxyXG4gICAgICAocGFnaW5hdGlvbkNoYW5nZSk9XCJvbkV2ZW50c0FuZE1lZXRpbmdzVGFibGVQYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoc2VsZWN0ZWRSb3dzSW5mbyk9XCJnZXRTZWxlY3RlZE1lZXRpbmdzQW5kRXZlbnRzVG9EZWxldGUoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
636
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1tZWV0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvZXZlbnRzLWFuZC1NZWV0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUUzSSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsMEhBQTBIO0FBQzFILE9BQU8sS0FBSyxTQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUtMLGVBQWUsRUFFZixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFFVixxQkFBcUIsRUFDckIsU0FBUyxFQUNULDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsZUFBZSxFQUVmLGtCQUFrQixFQUVuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsU0FBUyxHQUdWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxjQUFjLEVB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QWlCLENBQUMsSUFBSTtxUUFRNUIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQW1FRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JlYXRlTW9kaWZ5RXZlbnRPck1lZXRpbmdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1ldmVudC1vci1tZWV0aW5nL2NyZWF0ZS1tb2RpZnktZXZlbnQtb3ItbWVldGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V2ZW50cy1hbmQtbWVldGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIFRvRG86IGNvbnN0YW50cy5qc29uIHRvIGJlIG1haW50YWluZWQgYXQgbGlicmFyeSBzaWRlIGFzIGEgZmFsbGJhY2sgaWYgbm90IGZvdW5kIGFwcGxpY2F0aW9uIHNwZWNpZmljIGZyb20gc2VydmVyIHNpZGUuXHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7XHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFRhYmxlQWN0aW9ucyxcclxuICBUb2dnbGVCdXR0b24sXHJcbiAgSWNvbkJ1dHRvbixcclxuICBGaWx0ZXJDb21wb25lbnQsXHJcbiAgQ2hpcE9wdGlvbixcclxuICBDaGlwc1R5cGUsXHJcbiAgU2VhcmNoQ29tcG9uZW50LFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgTWVudSxcclxuICBUb2dnbGVCdXR0b25Db21wb25lbnQsXHJcbiAgQWxpZ25UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgVGFibGVDb2x1bW5UeXBlLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICBMZWdlbmRcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEV2ZW50c0FuZE1lZXRpbmdzLFxyXG4gIEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZCxcclxufSBmcm9tICcuL21vZGVscy9ldmVudHMtYW5kLW1lZXRpbmdzLWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBEYXRlRm9ybWF0cyB9IGZyb20gJy4vYXNzZXRzL2RhdGUtZm9ybWF0cyc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVmlld0VkaXRBY3Rpb24gfSBmcm9tICcuL21vZGVscy92aWV3LWVkaXQtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZSB9IGZyb20gJy4vbW9kZWxzL2xpc3QtY2FsZW5kYXItdmlldy1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9ldmVudC1tZWV0aW5nLWZ1bmN0aW9uLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBNZWV0aW5nUGVybWlzc2lvbnMsXHJcbiAgVXNlclBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvbWVldGluZy1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnIH0gZnJvbSAnQGllZWVzYS1ucG0vc2hhcmVkJztcclxuaW1wb3J0IHtcclxuICBHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWQsXHJcbiAgTWVldGluZyxcclxufSBmcm9tICcuL21vZGVscy9tZWV0aW5ncy11bmRlci1ldmVudHMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEV2ZW50QWN0aW9uLFxyXG4gIE1lZXRpbmdBY3Rpb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvZXZlbnQtb3ItbWVldGluZy1tZW51LWFjdGlvbi5tb2RlbCc7XHJcbmNvbnN0IENPTFVNTl9ERUYgPSB7XHJcbiAgbmFtZTogJ25hbWUnLFxyXG4gIHN0YXJ0RGF0ZVRpbWU6ICdzdGFydC1kYXRlLXRpbWUnLFxyXG4gIGVuZERhdGVUaW1lOiAnZW5kLWRhdGUtdGltZScsXHJcbiAgdGltZVpvbmU6ICd0aW1lLXpvbmUnLFxyXG4gIGdyb3VwOiAncmVsYXRlZC1ncm91cCcsXHJcbiAgbG9jYXRpb246ICdsb2NhdGlvbicsXHJcbn07XHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBhbmQgbWVldGluZyBmZWF0dXJlc1xyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nQ29tcG9uZW50LFxyXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gICAgVG9nZ2xlQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIEZpbHRlckNvbXBvbmVudCxcclxuICAgIFNlYXJjaENvbXBvbmVudCxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50cy1hbmQtTWVldGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2V2ZW50cy1hbmQtTWVldGluZ3MuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBzZWFyY2hQbGFjZWhvbGRlclRleHQhOiBzdHJpbmc7XHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICBldmVudERhdGEhOiBFdmVudHNBbmRNZWV0aW5ncztcclxuICBtZWV0aW5nRGF0YSE6IEV2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2VsZWN0ZWREYXRhITogYW55O1xyXG4gIG1lbnVEYXRhITogTWVudTtcclxuICBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBkZWZhdWx0U29ydGVkQ29sdW1uID0gJ3N0YXJ0RGF0ZVRpbWUnO1xyXG4gIG5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbiA9ICdtZWV0aW5nU3REYXRlJztcclxuICBmaWx0ZXJzOiBDaGlwT3B0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiBGaWx0ZXJUeXBlLkdST1VQX05BTUUsXHJcbiAgICAgIG5hbWU6IEZpbHRlclR5cGUuR1JPVVBfTkFNRSxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IEZpbHRlclR5cGUuU1RBVFVTLFxyXG4gICAgICBuYW1lOiBGaWx0ZXJUeXBlLlNUQVRVUyxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgc2NyZWVuVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8udmlld0V2ZW50c0FuZE1lZXRpbmdzO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucz8uWzFdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzLnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIG5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy5zY3JlZW5UZXh0cz8ucGFnZVNpemVPcHRpb25zPy5bMV0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHMucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeSA9IHRoaXMuc2NyZWVuVGV4dHM/LmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnk7XHJcbiAgY29sdW1uSGVhZGluZyA9IHRoaXMuc2NyZWVuVGV4dHM/LmNvbHVtblNjaGVtYT8uY29sdW1uSGVhZGluZztcclxuICB2aWV3QWxsTWVldGluZ3NUZXh0ID0gdGhpcy5zY3JlZW5UZXh0cz8udmlld0FsbE1lZXRpbmdzO1xyXG4gIGNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIGV2ZW50c0FuZE1lZXRpbmdzQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNTZWFyY2hOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNBZGROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICAgIGlzUGFnaW5hdGlvbk5lZWRlZDogdHJ1ZSxcclxuICB9O1xyXG4gIGV2ZW50QW5kTWVldGluZ0xlZ2VuZHM6IExlZ2VuZFtdID0gdGhpcy5jb25zdGFudHM/LmV2ZW50T3JNZWV0aW5nTGVnZW5kcztcclxuICBsaXN0T3JDYWxlbmRhclZpZXdzOiBUb2dnbGVCdXR0b25bXSA9IHRoaXMuc2NyZWVuVGV4dHM/LnRvZ2dsZUJ1dHRvbnM7XHJcbiAgZGVsZXRlQnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5zY3JlZW5UZXh0cz8uYnV0dG9ucz8uWzFdO1xyXG4gIGNyZWF0ZUJ1dHRvbjogSWNvbkJ1dHRvbiA9IHRoaXMuc2NyZWVuVGV4dHM/LmJ1dHRvbnM/LlswXTtcclxuICBldmVudEFuZE1lZXRpbmdWaWV3VHlwZSA9IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGU7XHJcbiAgc2VsZWN0ZWRWaWV3VHlwZTogRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZSA9XHJcbiAgICBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkxJU1RfVklFVztcclxuICBldmVudHNBbmRNZWV0aW5nc0xpc3Q6IEV2ZW50c0FuZE1lZXRpbmdzW10gPSBbXTtcclxuICB1c2VyTWVldGluZ1Blcm1pc3Npb25zITogTWVldGluZ1Blcm1pc3Npb25zW107XHJcbiAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZTtcclxuICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGlzRGVsZXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGlzQ3JlYXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZDogc3RyaW5nW10gPSBbXTtcclxuICAvLyBUb0RvIGVtaXQgdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGV2ZW50cyBvZiBDUkVBVEUsIFZJRVcsIEVESVQgZXZlbnRzIGFuZCBtZWV0aW5ncyB1c2luZyBAT3V0cHV0IGFzIHdlIGRpc2N1c3NlZCB0aGUgY29uc3VtZXIgYXBwbGljYXRpb24gbWF5IGxvYWQgdGhlIG1lZXRpbmcgYW5kIGV2ZW50cyBjb21wb25lbnRzIGludG8gdGhlIHRhYmJlZCB2aWV3IG9yIG90aGVyIHdheSBpbnN0ZWFkIG9mIHJvdXRpbmdcclxuICBASW5wdXQoKSByb3V0ZVBhdGhzITogRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnO1xyXG4gIG1lZXRpbmdzOiBNZWV0aW5nW10gPSBbXTtcclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlOiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvblNlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlbGV0ZUJ1dHRvbikgdGhpcy5kZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnREYXRhKG51bGwpO1xyXG4gICAgdGhpcy5yb3V0ZVBhdGhzID0gdGhpcy5yb3V0ZVBhdGhzID8/IHRoaXMuY29uc3RhbnRzPy5yb3V0ZUNvbmZpZ1BhdGg7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0Um91dGVQYXRocyh0aGlzLnJvdXRlUGF0aHMpO1xyXG4gICAgdGhpcy51c2VyTWVldGluZ1Blcm1pc3Npb25zID1cclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNlcnZpY2UuZmlsdGVyVXNlck1lZXRpbmdQZXJtaXNzaW9ucyhcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgICApO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldEFwcENvbmZpZyhcclxuICAgICAgdGhpcy5hcGlCYXNlVVJMLFxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFVzZXJNZWV0aW5nUGVybWlzc2lvbnMoXHJcbiAgICAgIHRoaXMudXNlck1lZXRpbmdQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEdyb3VwcygpLnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5pc0NyZWF0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWQgPVxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5DUkVBVEVfRVZFTlQpO1xyXG4gICAgdGhpcy5maWx0ZXJFdmVudEFuZE1lZXRpbmdBY3Rpb25zKCk7XHJcbiAgICB0aGlzLmlzRGVsZXRlRXZlbnRBbmRNZWV0aW5nQWxsb3dlZCA9XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICAgIFBlcm1pc3Npb25UeXBlLkRFTEVURV9FVkVOVFxyXG4gICAgICApICYmXHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICAgIFBlcm1pc3Npb25UeXBlLkRFTEVURV9NRUVUSU5HXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5TY2hlbWEoKTtcclxuICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3Moe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogbnVsbCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgYXNjZW5kaW5nT3JkZXI6IGZhbHNlLFxyXG4gICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWc/LnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciB0aGUgZXZlbnQgYW5kIG1lZXRpbmcgYWN0aW9ucyBiYXNlZCBvbiBldmVudCBhbmQgbWVldGluZyBwZXJtaXNzaW9ucy5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBmaWx0ZXJFdmVudEFuZE1lZXRpbmdBY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2NyZWVuVGV4dHM/LmV2ZW50QWN0aW9ucylcclxuICAgICAgdGhpcy5zY3JlZW5UZXh0cy5ldmVudEFjdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEZpbHRlcmVkRXZlbnRBY3Rpb25zKFxyXG4gICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cy5ldmVudEFjdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgaWYgKHRoaXMuc2NyZWVuVGV4dHM/Lm1lZXRpbmdBY3Rpb25zKVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzLm1lZXRpbmdBY3Rpb25zID1cclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRGaWx0ZXJlZE1lZXRpbmdBY3Rpb25zKFxyXG4gICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cy5tZWV0aW5nQWN0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRhYmxlIGNvbHVtbiBzY2hlbWEgdG8gZGlzcGxheSB0aGUgbWVldGluZyBhbmQgZXZlbnQgZGV0YWlscyBpbiB0YWJ1bGFyIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMSxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuTkVTVEVEX1RBQkxFLFxyXG4gICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5ORVNURURfVEFCTEUsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5oYXNDaGlsZHJlbixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubmFtZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lm5hbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5uYW1lfWAsXHJcbiAgICAgICAgaXNDb250ZW50VW5kZXJMaW5rOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5zdGFydERhdGVUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc3RhcnREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgIWVsZW1lbnQuaXNNZWV0aW5nRXZlbnRcclxuICAgICAgICAgICAgPyBgJHttb21lbnQoZWxlbWVudC5zdGFydERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5zdGFydERhdGVUaW1lKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICAgICAgKX1gXHJcbiAgICAgICAgICAgIDogYCR7bW9tZW50KGVsZW1lbnQuc3RhcnREYXRlVGltZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5lbmREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgIWVsZW1lbnQuaXNNZWV0aW5nRXZlbnRcclxuICAgICAgICAgICAgPyBgJHttb21lbnQoZWxlbWVudC5lbmREYXRlVGltZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgICAgICl9PGJyPiR7bW9tZW50KGVsZW1lbnQuZW5kRGF0ZVRpbWUpLmZvcm1hdChcclxuICAgICAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICAgICApfWBcclxuICAgICAgICAgICAgOiBgJHttb21lbnQoZWxlbWVudC5lbmREYXRlVGltZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8udGltZVpvbmUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy50aW1lWm9uZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC50aW1lWm9uZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA3LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZ3JvdXAsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5ncm91cCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC5ncm91cE5hbWUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogOCxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmxvY2F0aW9uLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubG9jYXRpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke2VsZW1lbnQubWVldGluZ0xvY2F0aW9uID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDksXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmFjdGlvbnMsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5tZW51QWN0aW9ufWAsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBldmVudHMgYW5kIG1lZXRpbmdzIGxpc3QgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7R2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RXZlbnRzQW5kTWVldGluZ3MocGF5bG9hZDogR2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0RXZlbnRzQW5kTWVldGluZ3MocGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NMaXN0ID0gW107XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZXZlbnRNZWV0aW5nTGlzdD8uZm9yRWFjaCgoZXZlbnRNZWV0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gZXZlbnRNZWV0aW5nLmlzTWVldGluZ0V2ZW50XHJcbiAgICAgICAgICAgICAgPyB0aGlzLnNjcmVlblRleHRzPy5ldmVudFxyXG4gICAgICAgICAgICAgIDogdGhpcy5zY3JlZW5UZXh0cz8ubWVldGluZztcclxuICAgICAgICAgICAgZXZlbnRNZWV0aW5nLnRvb2xUaXBUZXh0ID0gZXZlbnRNZWV0aW5nLm5hbWUgKyAnICcgKyB0aXRsZTtcclxuICAgICAgICAgICAgZXZlbnRNZWV0aW5nLmNvbnRlbnRVbmRlckxpbmsgPSBldmVudE1lZXRpbmcuc3RhdHVzO1xyXG4gICAgICAgICAgICBldmVudE1lZXRpbmcubGVnZW5kQ29sb3IgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEV2ZW50T3JNZWV0aW5nTGVnZW5kQ29sb3IoXHJcbiAgICAgICAgICAgICAgICBldmVudE1lZXRpbmc/LnN0YXR1c1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NMaXN0LnB1c2goZXZlbnRNZWV0aW5nKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdCA9IHRoaXMubWFwTWVudUFjdGlvblRvTGlzdChcclxuICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc0xpc3RcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdCA9IFsuLi50aGlzLmV2ZW50c0FuZE1lZXRpbmdzTGlzdF07XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZyA9IHsgLi4udGhpcy5wYWdpbmF0b3JDb25maWcgfTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWJsZSByb3cgYWN0aW9ucyBmb3IgZWFjaCByb3cgb2YgZXZlbnRzIGFuZCBtZWV0aW5ncyB0YWJsZSB0aGVuIHJldHVybnMgRXZlbnNBbmRNZWV0aW5ncy5cclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdzW119XHJcbiAgICogKiBAcmV0dXJuIHtFdmVudHNBbmRNZWV0aW5nc1tdfSAtSXQgcmV0dXJucyBldmVudHNBbmRNZWV0aW5nc0xpc3Qgd2l0aCBtZW51IGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggZWFjaCByb3cuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbWFwTWVudUFjdGlvblRvTGlzdChcclxuICAgIGV2ZW50c0FuZE1lZXRpbmdzTGlzdDogRXZlbnRzQW5kTWVldGluZ3NbXVxyXG4gICk6IEV2ZW50c0FuZE1lZXRpbmdzW10ge1xyXG4gICAgZXZlbnRzQW5kTWVldGluZ3NMaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5tZW51QWN0aW9uID0gaXRlbS5pc01lZXRpbmdFdmVudFxyXG4gICAgICAgID8gdGhpcy5zY3JlZW5UZXh0cz8uZXZlbnRBY3Rpb25zXHJcbiAgICAgICAgOiB0aGlzLnNjcmVlblRleHRzPy5tZWV0aW5nQWN0aW9ucztcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGV2ZW50c0FuZE1lZXRpbmdzTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIG1lZXRpbmdzIGFuZCBldmVudHMgbGlzdCBkZXRhaWxzIG9uIGNoYW5nZSBvZiB0YWJsZSBwYWdpbmF0aW9uLlxyXG4gICAqIEBwYXJhbSB7e1BhZ2VFdmVudH19IHBhZ2VFdmVudFxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRXZlbnRzQW5kTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RXZlbnRzQW5kTWVldGluZ3Moe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogJycsXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiBmYWxzZSxcclxuICAgICAgICBwYWdlOiBwYWdlRXZlbnQucGFnZUluZGV4ICsgMSxcclxuICAgICAgICBzaXplOiBwYWdlRXZlbnQucGFnZVNpemUsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGNsaWNrIGV2ZW50IG5hdmlnYXRlIHRvIHZpZXcgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbmF2aWdhdGVUb1ZpZXdEZXRhaWxzUGFnZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyh0cnVlKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPSBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgIGlmIChldmVudD8ucm93Py5pc01lZXRpbmdFdmVudCkge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSBldmVudD8ucm93Py5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlUGF0aHMuZWRpdEV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gZXZlbnQ/LnJvdz8uaWQ7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5yb3V0ZVBhdGhzLmVkaXRNZWV0aW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byBjcmVhdGUgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5hdmlnYXRlVG9DcmVhdGVFdmVudE1lZXRpbmdGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9XHJcbiAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEU7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPSAnJztcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gJyc7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5jcmVhdGVFdmVudE1lZXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyBiZXR3ZWVuIHRoZSBMaXN0IHZpZXcgb3IgQ2FsZW5kYXIgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQnV0dG9uQ2hhbmdlKHRvZ2dsZUJ1dHRvbjogVG9nZ2xlQnV0dG9uKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmlld1R5cGUgPVxyXG4gICAgICB0b2dnbGVCdXR0b24/LmlkID09PSBFdmVudHNBbmRNZWV0aW5nc1ZpZXdUeXBlLkxJU1RfVklFV1xyXG4gICAgICAgID8gRXZlbnRzQW5kTWVldGluZ3NWaWV3VHlwZS5MSVNUX1ZJRVdcclxuICAgICAgICA6IEV2ZW50c0FuZE1lZXRpbmdzVmlld1R5cGUuQ0FMRU5EQVJfVklFVztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSBzZWFyY2ggZmllbGQgb24gY2xpY2sgb2Ygc2VhcmNoIGljb24gaW4gY2FzZSBvZiBtb2JpbGUgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRXZlbnRNZWV0aW5nU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiBjbGljayBtZW51IGl0ZW1zIG5hdmlnYXRlIHRvIGVkaXQgbWVldGluZyBvciBldmVudCBwYWdlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaGFuZGxlRWRpdEFjdGlvbnMocm93OiBhbnkpIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKHRydWUpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSByb3c7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGE/LmxhYmVsID09PSBWaWV3RWRpdEFjdGlvbi5WSUVXX0VESVRfRVZFTlRfREVUQUlMUykge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRFdmVudElkID0gdGhpcy5ldmVudERhdGE/LmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5lZGl0RXZlbnQpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGE/LmxhYmVsID09PSBWaWV3RWRpdEFjdGlvbi5WSUVXX0VESVRfTUVFVElOR19ERVRBSUxTXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9XHJcbiAgICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVQ7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gdGhpcy5ldmVudERhdGE/LmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVQYXRocy5lZGl0TWVldGluZyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YT8uaWQgPT09IEV2ZW50QWN0aW9uLkRFTEVURV9FVkVOVCB8fFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uREVMRVRFX01FRVRJTkdcclxuICAgICkge1xyXG4gICAgICB0aGlzLm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCh0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGE/LmlkID09PSBFdmVudEFjdGlvbi5DUkVBVEVfTUVFVElORykge1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuQ1JFQVRFO1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyhmYWxzZSk7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkRXZlbnRJZCA9IHRoaXMuZXZlbnREYXRhPy5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlUGF0aHMuZWRpdEV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gY2xpY2sgZXZlbnQgbmF2aWdhdGUgdG8gZWRpdCBtZWV0aW5nIG9yIGV2ZW50IHBhZ2UuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICogQHBhcmFtIHsqfSBldmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdEV2ZW50TWVldGluZyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50RGF0YSA9IGV2ZW50O1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50T3JNZWV0aW5nSWQgPSBbXTtcclxuICAgIGlmIChldmVudD8uaWQpIHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkLnB1c2goZXZlbnQ/LmlkKTtcclxuICAgIGVsc2UgaWYgKGV2ZW50Py5tZWV0aW5nSWQpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudE9yTWVldGluZ0lkLnB1c2goZXZlbnQ/Lm1lZXRpbmdJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgaWRzIG9mIGFsbCB0aGUgc2VsZWN0ZWQgZXZlbnRzIGFuZCBtZWV0aW5ncyB0byBiZSBkZWxldGVkLlxyXG4gICAqIEBwYXJhbSB7Kn0gc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkTWVldGluZ3NBbmRFdmVudHNUb0RlbGV0ZShcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBzZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc0lkcyA9IFtdO1xyXG4gICAgc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5ncz8uZm9yRWFjaCgoZXZlbnRPck1lZXRpbmc6IEV2ZW50c0FuZE1lZXRpbmdzKSA9PiB7XHJcbiAgICAgIGlmIChldmVudE9yTWVldGluZz8uaWQpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzLnB1c2goZXZlbnRPck1lZXRpbmcuaWQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuc2VsZWN0ZWRFdmVudHNBbmRNZWV0aW5nc0lkcy5sZW5ndGggPT09IDA7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGV2ZW50cyBhbmQgbWVldGluZ3MgZGVsZXRlIGNvbmZpcm1hdGlvbiBtb2RhbCBhbmQgY2FsbHMgZGVsZXRlRXZlbnRzT3JNZWV0aW5ncyBtZXRob2Qgb24gY29uZmlybWF0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbChpc1NpbmdsZURlbGV0ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzPy5kZWxldGVFdmVudHNPck1lZXRpbmdzPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3QgZGVsZXRlTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTogY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZSxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IEFsaWduVHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlTW9kYWxPcHRpb25zLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1kZWxldGUtZXZlbnRzLW1lZXRpbmdzLW1vZGFsJ10sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVFdmVudHNPck1lZXRpbmdzKGlzU2luZ2xlRGVsZXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZW5kcyBBUEkgUmVxdWVzdCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGV2ZW50cyBhbmQgbWVldGluZ3MgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlRXZlbnRzT3JNZWV0aW5ncyhpc1NpbmdsZURlbGV0ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvdW50ID0gaXNTaW5nbGVEZWxldGVcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZD8ubGVuZ3RoXHJcbiAgICAgIDogdGhpcy5zZWxlY3RlZEV2ZW50c0FuZE1lZXRpbmdzSWRzLmxlbmd0aDtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVFdmVudHNPck1lZXRpbmdzKHtcclxuICAgICAgICBwYXlsb2FkOiBpc1NpbmdsZURlbGV0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRXZlbnRPck1lZXRpbmdJZFxyXG4gICAgICAgICAgOiB0aGlzLnNlbGVjdGVkRXZlbnRzQW5kTWVldGluZ3NJZHMsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRFdmVudHNBbmRNZWV0aW5ncyh7XHJcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgICBldmVudElkOiBudWxsLFxyXG4gICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgY291bnQgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZUV2ZW50c09yTWVldGluZ3M/Lm1lc3NhZ2U/LnN1Y2Nlc3NcclxuICAgICAgICAgICAgICAgID8uZGVsZXRpb24sXHJcbiAgICAgICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLlNVQ0NFU1MsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBjcmVhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZXZlbnQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPVxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5tYXBNZWV0aW5nc0luZm9Ub0RhdGFUYWJsZShcclxuICAgICAgICAgICAgICByZXNwb25zZT8uYm9keT8ubWVldGluZ3NcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMubmVzdGVkVGFibGVQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLm1lZXRpbmdzPy5sZW5ndGg7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFibGUgY29sdW1uIHNjaGVtYSBhbmQgZ2V0cyBtZWV0aW5ncyBvZiB0aGUgc2VsZWN0ZWQgZXZlbnQgdXNpbmcgZXZlbnQgaWQgZnJvbSBzZXJ2ZXIgdG8gZGlzcGxheSB0aGUgbWVldGluZ3MgaW4gdGhlIG5lc3RlZCB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdzfSBldmVudERldGFpbFxyXG4gICAqL1xyXG4gIGdldEV2ZW50TWVldGluZ3NPblJvd0V4cGFuZChldmVudERldGFpbDogRXZlbnRzQW5kTWVldGluZ3MpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZU5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50RGV0YWlsPy5pZCxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLm5lc3RlZFRhYmxlRGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgcGFnZTogMSxcclxuICAgICAgICBzaXplOiB0aGlzLm5lc3RlZFRhYmxlUGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGFibGUgY29sdW1uIHNjaGVtYSB0byBkaXNwbGF5IHRoZSBtZWV0aW5ncyB1bmRlciBhbiBldmVudCBpbiB0YWJ1bGFyIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplTmVzdGVkVGFibGVDb2x1bW5TY2hlbWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5uYW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ubmFtZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuTElOSyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm1lZXRpbmdUaXRsZX1gLFxyXG4gICAgICAgIGlzQ29udGVudFVuZGVyTGluazogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAyLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uc3RhcnREYXRlVGltZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LnN0YXJ0RGF0ZVRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke21vbWVudChlbGVtZW50Lm1lZXRpbmdTdERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5tZWV0aW5nU3REYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5lbmREYXRlVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ0VkRGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy50aW1lWm9uZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LnRpbWVab25lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHtlbGVtZW50LnRpbWVab25lID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDUsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5ncm91cCxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lmdyb3VwLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHtlbGVtZW50Lmdyb3VwTmFtZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubG9jYXRpb24sXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5sb2NhdGlvbixcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7ZWxlbWVudC5tZWV0aW5nTG9jYXRpb24gPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNyxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uYWN0aW9ucyxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LmFjdGlvbn1gLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ1wiXHJcbiAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmctLW1vYmlsZS12aWV3IHAtMCcgOiAnJ1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2hlYWRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPHBcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLWhlYWRsaW5lLWxnLTM0J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcmVlblRleHRzPy50aXRsZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLWxnLTMgZ2FwLW1kLTMgZ2FwLXNtLTMgZ2FwLTMgY29sLW1kLTUgY29sLWxnLTQganVzdGlmeS1jb250ZW50LWVuZCBwcy0wXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVZpZXdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoRmllbGRcIj4gPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpc0NyZWF0ZUV2ZW50QW5kTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19faGVhZGVyX19jcmVhdGUtYnV0dG9uIGQtbm9uZSBkLXNtLW5vbmUgZC1tZC1ibG9jayBkLWxnLWJsb2NrIGQteGwtYmxvY2sgY29sLWxnLTMgcGItMFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9DcmVhdGVFdmVudE1lZXRpbmdGb3JtKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX2NyZWF0ZS1idXR0b25fX2ljb24gbWUtMlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cImNyZWF0ZUJ1dHRvbj8uaWNvblVSTFwiPjwvdXNlPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19faGVhZGVyX19jcmVhdGUtYnV0dG9uX19sYWJlbFwiPnt7XHJcbiAgICAgICAgICBjcmVhdGVCdXR0b24/LmxhYmVsXHJcbiAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX19oZWFkZXJfX21vYmlsZS1pY29ucyBnYXAtMlwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzY3JlZW5UZXh0cz8uc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcclxuICAgICAgICAoY2xpY2spPVwib25FdmVudE1lZXRpbmdTZWFyY2goKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3Mgc2VhcmNoLWV2ZW50cy1tZWV0aW5ncy1pY29uXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXNDcmVhdGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJjcmVhdGVCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwibmF2aWdhdGVUb0NyZWF0ZUV2ZW50TWVldGluZ0Zvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkPlxyXG4gICAgPGllZWVzYS1zZWFyY2hcclxuICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwic2NyZWVuVGV4dHM/LnNlYXJjaFBsYWNlaG9sZGVyVGV4dFwiXHJcbiAgICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3NlYXJjaC13cmFwcGVyXCJcclxuICAgID48L2llZWVzYS1zZWFyY2g+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2ZpbHRlci0tbW9iaWxlLXZpZXcnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGllZWVzYS1maWx0ZXIgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiPjwvaWVlZXNhLWZpbHRlcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3ZpZXdcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlldyA/ICdpZWVlc2EtZXZlbnRzLWFuZC1tZWV0aW5nX192aWV3LS1tb2JpbGUtdmlldyBwLTAnIDogJydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX3RhYi1hY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLWV2ZW50cy1hbmQtbWVldGluZ19fdGFiLWFjdGlvbi0tbW9iaWxlLXZpZXcgcGItMydcclxuICAgICAgICAgIDogJydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGllZWVzYS10b2dnbGUtYnV0dG9uXHJcbiAgICAgICAgW3NlbGVjdGVkTGFiZWxdPVwibGlzdE9yQ2FsZW5kYXJWaWV3c1swXT8ubGFiZWwgPz8gJydcIlxyXG4gICAgICAgIFtidXR0b25zXT1cImxpc3RPckNhbGVuZGFyVmlld3NcIlxyXG4gICAgICAgICh0b2dnbGVTZWxlY3RlZCk9XCJvblRvZ2dsZUJ1dHRvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLXRvZ2dsZS1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJkZWxldGVCdXR0b25cIlxyXG4gICAgICAgICpuZ0lmPVwiaXNEZWxldGVFdmVudEFuZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCgpXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ldmVudHMtYW5kLW1lZXRpbmdfX2RlbGV0ZS1idXR0b25cIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpZWVlc2EtZGF0YS10YWJsZVxyXG4gICAgICAqbmdJZj1cInNlbGVjdGVkVmlld1R5cGUgPT09IGV2ZW50QW5kTWVldGluZ1ZpZXdUeXBlLkxJU1RfVklFV1wiXHJcbiAgICAgIFt0YWJsZURhdGFJbmZvXT1cImV2ZW50c0FuZE1lZXRpbmdzTGlzdFwiXHJcbiAgICAgIFtuZXN0ZWRUYWJsZURhdGFJbmZvXT1cIm1lZXRpbmdzXCJcclxuICAgICAgW2NvbHVtblNjaGVtYUluZm9dPVwiY29sdW1uU2NoZW1hXCJcclxuICAgICAgW25lc3RlZFRhYmxlQ29sdW1uU2NoZW1hSW5mb109XCJuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYVwiXHJcbiAgICAgIFtwYWdpbmF0b3JDb25maWddPVwicGFnaW5hdG9yQ29uZmlnXCJcclxuICAgICAgW25lc3RlZFBhZ2luYXRvckNvbmZpZ109XCJuZXN0ZWRUYWJsZVBhZ2luYXRvckNvbmZpZ1wiXHJcbiAgICAgIFt2aWV3QWxsXT1cInZpZXdBbGxNZWV0aW5nc1RleHRcIlxyXG4gICAgICBbdGFibGVBY3Rpb25zXT1cImV2ZW50c0FuZE1lZXRpbmdzQWN0aW9uc1wiXHJcbiAgICAgIFtuZXN0ZWRUYWJsZVJvd0FjdGlvbnNdPVwic2NyZWVuVGV4dHM/Lm1lZXRpbmdBY3Rpb25zXCJcclxuICAgICAgW2NsYXNzTmFtZV09XCInaWVlZXNhLXZpZXctZXZlbnRzLWFuZC1tZWV0aW5ncydcIlxyXG4gICAgICBbbGVnZW5kc109XCJldmVudEFuZE1lZXRpbmdMZWdlbmRzXCJcclxuICAgICAgKGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayk9XCJuYXZpZ2F0ZVRvVmlld0RldGFpbHNQYWdlKCRldmVudClcIlxyXG4gICAgICAobWVudUFjdGlvbkNsaWNrKT1cImVkaXRFdmVudE1lZXRpbmcoJGV2ZW50KVwiXHJcbiAgICAgIChyb3dFeHBhbnNpb25DbGljayk9XCJnZXRFdmVudE1lZXRpbmdzT25Sb3dFeHBhbmQoJGV2ZW50KVwiXHJcbiAgICAgIChzZWxlY3RBY3Rpb25NZW51KT1cImhhbmRsZUVkaXRBY3Rpb25zKCRldmVudClcIlxyXG4gICAgICAocGFnaW5hdGlvbkNoYW5nZSk9XCJvbkV2ZW50c0FuZE1lZXRpbmdzVGFibGVQYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoc2VsZWN0ZWRSb3dzSW5mbyk9XCJnZXRTZWxlY3RlZE1lZXRpbmdzQW5kRXZlbnRzVG9EZWxldGUoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -558,4 +558,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
558
558
  providedIn: 'root',
559
559
  }]
560
560
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.HttpService }, { type: i2.AlertsService }, { type: i3.UserPermissionsService }, { type: i2.GlobalErrorHandlerService }]; } });
561
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWFuZC1tZWV0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZlbnRzLWFuZC1tZWV0aW5ncy9zcmMvbGliL3NlcnZpY2VzL2V2ZW50cy1hbmQtbWVldGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEtBQUssV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBS3hELE9BQU8sRUFDTCxTQUFTLEdBSVYsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRixPQUFPLEVBS0wsMEJBQTBCLEdBRTNCLE1BQU0sMEJBQTBCLENBQUM7QUFXbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBbUI1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEdBQ2QsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFLdEQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQWlCbkM7SUFDRSwwQ0FBMEM7SUFDbkMsTUFBaUI7SUFDeEIsMENBQTBDO0lBQ2xDLFdBQXdCO0lBQ2hDLDBDQUEwQztJQUNsQyxZQUEyQjtJQUNuQywwQ0FBMEM7SUFDbEMscUJBQTZDO0lBQ3JELDBDQUEwQztJQUNsQyx5QkFBb0QsQ0FBQyw2Q0FBNkM7O1FBUm5HLFdBQU0sR0FBTixNQUFNLENBQVc7UUFFaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFeEIsaUJBQVksR0FBWixZ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RUFBRSxTQUFTLEVBQUUsS0FBSztTQUN4RSxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxVQUF1QztRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsNEJBQTRCLENBQUMsTUFBYztRQUN6QyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsQ0FDM0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQzNDLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCwwQkFBMEIsQ0FBQyxRQUFtQjtRQUM1QyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzsrR0F0bkJVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgY2F0Y2hFcnJvciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlT3JFZGl0TWVldGluZ1BheWxvYWQsXHJcbiAgQ3JlYXRlT3JFZGl0TWVldGluZ1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9jcmVhdGUtbWVldGluZy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICBIdHRwU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgTWVldGluZ1R5cGVSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9tZWV0aW5nLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRUeXBlUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvZXZlbnQtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucyB9IGZyb20gJy4uL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgR2V0R3JvdXBSZXNwb25zZSwgR3JvdXBJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLXJlc3BvbnNlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3RPcHRpb24sXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbiAgTWVudSxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBDb25maXJtYXRpb25Nb2RhbERhdGEsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVPckVkaXRFdmVudFBheWxvYWQsXHJcbiAgQ3JlYXRlT3JFZGl0RXZlbnRSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvY3JlYXRlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBFdmVudERhdGVzLFxyXG4gIEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCxcclxuICBHZXRNZWV0aW5nc0J5RXZlbnRJZFJlc3BvbnNlLFxyXG4gIE1lZXRpbmcsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL21lZXRpbmdzLXVuZGVyLWV2ZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkLFxyXG4gIEdldEV2ZW50c0FuZE1lZXRpbmdzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50cy1hbmQtbWVldGluZ3MtbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbixcclxuICBFdmVudERldGFpbHNSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvdmlldy1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IE1lZXRpbmdEZXRhaWxzUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdmlldy1tZWV0aW5nLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50LW1lZXRpbmctZnVuY3Rpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIE1lZXRpbmdQZXJtaXNzaW9ucyxcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuLi9tb2RlbHMvbWVldGluZy1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlRXZlbnRzT3JNZWV0aW5nc1BheWxvYWQsXHJcbiAgRGVsZXRlRXZlbnRzT3JNZWV0aW5nc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9kZWxldGUtZXZlbnRzLW1lZXRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBFdmVudEFjdGlvbixcclxuICBNZWV0aW5nQWN0aW9uLFxyXG59IGZyb20gJy4uL21vZGVscy9ldmVudC1vci1tZWV0aW5nLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvcm91dGUtY29uZmlnLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBFdmVudHMgYW5kIE1lZXRpbmdzIHNlcnZpY2UgaXMgYW4gYWJzdHJhY3QgbGF5ZXIgYW5kIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBtZWV0aW5ncyBhbmQgZXZlbnRzIEFQSSBjYWxscyBhbmQgbWFpbnRhaW5lZCB0aGUgcmV1c2FibGUgbG9naWNzLlxyXG4gKiBAY2xhc3MgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlIHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgZXJyb3JNZXNzYWdlcyA9IHRoaXMuY29uc3RhbnRzPy5lcnJvcnM7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuICBzZWxlY3RlZEV2ZW50SWQhOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRNZWV0aW5nSWQhOiBzdHJpbmc7XHJcbiAgYWN0aW9uVHlwZSE6IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZTtcclxuICB1c2VyUGVybWlzc2lvbiE6IFVzZXJQZXJtaXNzaW9uW107XHJcbiAgaXNFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VkID0gZmFsc2U7XHJcbiAgaXNTdGFuZGFsb25lTWVldGluZyA9IHRydWU7XHJcbiAgZ3JvdXBzITogR3JvdXBJbmZvW107XHJcbiAgdXNlck1lZXRpbmdQZXJtaXNzaW9ucyE6IE1lZXRpbmdQZXJtaXNzaW9uc1tdO1xyXG4gIHNlbGVjdGVkRXZlbnREYXRhITogRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbiB8IEV2ZW50RGF0ZXMgfCBudWxsO1xyXG4gIGNhbkNsb3NlQWRkTWVldGluZ01vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGZvcm1TdGF0dXNDaGFuZ2VOb3RpZmllciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByb3V0ZVBhdGhzITogRXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvblNlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZXRBcHBDb25maWcoYXBpQmFzZVVybDogc3RyaW5nLCB1c2VyUGVybWlzc2lvbjogYW55W10pIHtcclxuICAgIHRoaXMuYXBpQmFzZVVybCA9IGFwaUJhc2VVcmw7XHJcbiAgICB0aGlzLnVzZXJQZXJtaXNzaW9uID0gdXNlclBlcm1pc3Npb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxscyBjcmVhdGUgbWVldGluZyBBUEkgYWxvbmcgd2l0aCBwYXNzZWQgQ3JlYXRlTWVldGluZ1BheWxvYWQgdXNpbmcgSHR0cFNlcnZpY2UgcG9zdERhdGEuXHJcbiAgICogQHBhcmFtIHtDcmVhdGVNZWV0aW5nUGF5bG9hZH0gY3JlYXRlTWVldGluZ1BheWxvYWQgLWNyZWF0ZSBtZWV0aW5nIGZvcm0gZGF0YVxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPENyZWF0ZU1lZXRpbmdSZXNwb25zZT59IC1yZXR1cm5zIGNyZWF0ZSBtZWV0aW5nIEFQSSByZXNwb25zZSAoc3VjY2VzcyBvciBlcnJvcikgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgY3JlYXRlTWVldGluZyhcclxuICAgIGNyZWF0ZU1lZXRpbmdQYXlsb2FkOiBDcmVhdGVPckVkaXRNZWV0aW5nUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlT3JFZGl0TWVldGluZ1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9tZWV0aW5ncy9jcmVhdGVgLCBjcmVhdGVNZWV0aW5nUGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBtZWV0aW5nIHR5cGVzIGZyb20gc2VydmVyIGFuZCByZXR1cm5zIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxNZWV0aW5nVHlwZVJlc3BvbnNlPn0gLSByZXR1cm5zIG1lZXRpbmcgdHlwZXMgc3VjY2VzcyBvciBlcnJvciByZXNwb25zZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0TWVldGluZ1R5cGVzKCk6IE9ic2VydmFibGU8TWVldGluZ1R5cGVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9jb25maWcvbWVldGluZ190eXBlYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBldmVudCB0eXBlcyBmcm9tIHNlcnZlciBhbmQgcmV0dXJucyBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXZlbnRUeXBlUmVzcG9uc2U+fSAtIHJldHVybnMgZXZlbnQgdHlwZXMgc3VjY2VzcyBvciBlcnJvciByZXNwb25zZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RXZlbnRUeXBlcygpOiBPYnNlcnZhYmxlPEV2ZW50VHlwZVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2NvbmZpZy9ldmVudF90eXBlYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHBhcnNlIHRoZSBlcnJvciBjb2RlcyBhbmQgcmV0dXJuIHRoZSByZXNwZWN0aXZlIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggY29kZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBlcnJvckNvZGVzXHJcbiAgICogQHJldHVybiB7c3RyaW5nW119IGVycm9yTWVzc2FnZVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBwYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZXJyb3JDb2Rlcz8uZm9yRWFjaCgoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZUtleSA9IGVycm9yQ29kZXNbXHJcbiAgICAgICAgaW5kZXhcclxuICAgICAgXSBhcyBrZXlvZiB0eXBlb2YgdGhpcy5lcnJvck1lc3NhZ2VzO1xyXG4gICAgICBlcnJvck1lc3NhZ2UucHVzaChcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXNbZXJyb3JNZXNzYWdlS2V5XSA/PyB0aGlzLmVycm9yTWVzc2FnZXM/LmRlZmF1bHRcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBldmVudCBvciBtZWV0aW5nIGZvcm0gY2hhbmdlIHN0YXR1cy5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQ2hhbmdlZFxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VTdGF0dXMoaXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRXZlbnRPck1lZXRpbmdGb3JtQ2hhbmdlZCA9IGlzQ2hhbmdlZDtcclxuICAgIHRoaXMuZm9ybVN0YXR1c0NoYW5nZU5vdGlmaWVyJC5uZXh0KGlzQ2hhbmdlZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgZXZlbnQgb3IgbWVldGluZyBmb3JtIGNoYW5nZSBzdGF0dXMuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RXZlbnRPck1lZXRpbmdGb3JtQ2hhbmdlU3RhdHVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBJUCBBZGRyZXNzIFJhbmdlIGZvcm0gZmllbGQgY3VzdG9tIHZhbGlkYXRvci5cclxuICAgKiBAcmV0dXJuIHtWYWxpZGF0b3JGbn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgaXBBZGRyZXNzUmFuZ2VWYWxpZGF0b3IoaXBBZGRyZXNzUmFuZ2VNYXhDb3VudDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAhZm9ybUNvbnRyb2w/LnZhbHVlICYmXHJcbiAgICAgICAgKGZvcm1Db250cm9sPy52YWx1ZT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgIGZvcm1Db250cm9sPy52YWx1ZT8ubGVuZ3RoID09PSAwKVxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGVsc2UgaWYgKCFmb3JtQ29udHJvbD8udmFsdWU/LnRyaW0oKSAmJiBmb3JtQ29udHJvbD8udmFsdWU/Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgcmV0dXJuIHsgcGF0dGVybjogdHJ1ZSB9O1xyXG4gICAgICBjb25zdCBpcEFkZHJlc3NSYW5nZTogc3RyaW5nW10gPSBmb3JtQ29udHJvbD8udmFsdWU/LnNwbGl0KCcsJyk7XHJcbiAgICAgIGxldCBpc1ZhbGlkSXBBZGRyZXNzID0gdHJ1ZTtcclxuICAgICAgaXBBZGRyZXNzUmFuZ2U/LmZvckVhY2goKGlwQWRkcmVzcykgPT4ge1xyXG4gICAgICAgIGlwQWRkcmVzcz8uc3BsaXQoJy8nKT8uZm9yRWFjaCgoaXAsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGlzVmFsaWRJcEFkZHJlc3MgJiZcclxuICAgICAgICAgICAgRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMuaXBBZGRyZXNzUmFuZ2UudGVzdChcclxuICAgICAgICAgICAgICBpcD8udHJpbSgpXHJcbiAgICAgICAgICAgICkgJiZcclxuICAgICAgICAgICAgaW5kZXggPCAyICYmXHJcbiAgICAgICAgICAgIE51bWJlcihpcD8udHJpbSgpPy5zcGxpdCgnLicpPy5bM10pIDwgMjU3XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAgIGlzVmFsaWRJcEFkZHJlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgZWxzZSBpc1ZhbGlkSXBBZGRyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaXNWYWxpZElwQWRkcmVzcyAmJiBpcEFkZHJlc3NSYW5nZT8ubGVuZ3RoID4gaXBBZGRyZXNzUmFuZ2VNYXhDb3VudClcclxuICAgICAgICByZXR1cm4geyBtYXg6IHRydWUgfTtcclxuICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgaXNWYWxpZElwQWRkcmVzcyAmJlxyXG4gICAgICAgIGlwQWRkcmVzc1JhbmdlPy5sZW5ndGggPD0gaXBBZGRyZXNzUmFuZ2VNYXhDb3VudFxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIHJldHVybiB7IHBhdHRlcm46IHRydWUgfTtcclxuICAgIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgcm9vdCBncm91cHMgb2Ygc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGZyb20gQVBJIGFuZCByZXR1cm5zIEdldEdyb3VwUmVzcG9uc2UgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldEdyb3VwUmVzcG9uc2U+fSAtIHJldHVybnMgbGlzdCBvZiBncm91cHMgd2hlbiBzdWNjZXNzIGVsc2UgYXNzb2NpYXRlZCBlcnJvci5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzKCk6IE9ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9ncm91cHMvYWxsR3JvdXBzT2ZVc2VyYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ncm91cHMgPSByZXNwb25zZT8uYm9keTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXRpbGl0eSBmdW5jdGlvbiB0byBzb3J0IHRoZSBkcm9wZG93biBvcHRpb25zIGluIGFzY2VuZGluZyBvcmRlci5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbltdfSBsaXN0XHJcbiAgICogQHJldHVybiB7U2VsZWN0T3B0aW9uW119LlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzb3J0T3B0aW9ucyhsaXN0OiBTZWxlY3RPcHRpb25bXSk6IFNlbGVjdE9wdGlvbltdIHtcclxuICAgIGNvbnN0IGNsb25lZFZhbHVlID0gWy4uLmxpc3RdO1xyXG4gICAgY29uc3Qgc29ydCA9IGNsb25lZFZhbHVlLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgaWYgKGEubmFtZS50b0xvd2VyQ2FzZSgpID09PSBiLm5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIDA7XHJcbiAgICAgIGlmIChhLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2FsbCcpIHJldHVybiAtMTtcclxuICAgICAgaWYgKGIubmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYWxsJykgcmV0dXJuIDE7XHJcbiAgICAgIGlmIChhLm5hbWUudG9Mb3dlckNhc2UoKSA8IGIubmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gLTE7XHJcbiAgICAgIGlmIChhLm5hbWUudG9Mb3dlckNhc2UoKSA+IGIubmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzb3J0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdHMgY3JlYXRlIGV2ZW50IGZvcm0gZGF0YSB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UgZm9yIGNyZWF0aW5nIG5ldyBldmVudC5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZUV2ZW50UGF5bG9hZH0gY3JlYXRlRXZlbnRQYXlsb2FkIC1jcmVhdGUgZXZlbnQgZm9ybSBkYXRhXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8Q3JlYXRlRXZlbnRSZXNwb25zZT59IC1yZXR1cm5zIGNyZWF0ZSBldmVudCBBUEkgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZXJyb3IpIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGNyZWF0ZUV2ZW50KFxyXG4gICAgY3JlYXRlRXZlbnRQYXlsb2FkOiBDcmVhdGVPckVkaXRFdmVudFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZU9yRWRpdEV2ZW50UmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2V2ZW50L2NyZWF0ZWAsIGNyZWF0ZUV2ZW50UGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBtZWV0aW5nIGNyZWF0ZWQgdW5kZXIgZXZlbnRzIGZyb20gQVBJIGFuZCByZXR1cm5zIGl0IGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRNZWV0aW5nc0J5RXZlbnRJZFJlc3BvbnNlPn0gLUl0IHJldHVybnMgbWVldGluZ3MgaWYgc3VjY2VzcyBlbHNlIGVycm9yLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRNZWV0aW5nc0J5RXZlbnRJZChcclxuICAgIHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8R2V0TWVldGluZ3NCeUV2ZW50SWRSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvbWVldGluZ3NEZXRhaWxzYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzcG9uc2UuYm9keT8ubWVldGluZ3M/Lm1hcChcclxuICAgICAgICAgICAgKG1lZXRpbmc6IE1lZXRpbmcpID0+XHJcbiAgICAgICAgICAgICAgKG1lZXRpbmcuZ3JvdXBOYW1lID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBzPy5maW5kKChncm91cCkgPT4gZ3JvdXAuZ3JvdXBJZCA9PT0gbWVldGluZy5ncm91cElkKVxyXG4gICAgICAgICAgICAgICAgICA/Lmdyb3VwTmFtZSA/PyAnJylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIGV2ZW50IGlkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudElkXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkRXZlbnRJZChldmVudElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFdmVudElkID0gZXZlbnRJZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgc2VsZWN0ZWQgZXZlbnQgaWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRTZWxlY3RlZEV2ZW50SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRXZlbnRJZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmlsdGVyIHRoZSBkcm9wZG93biBvcHRpb25zIG9uIHRoZSBiYXNpcyBvZiBzZWFyY2ggdGVybS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7eyBzZWFyY2hFdmVudDogRXZlbnQ7IGNvbnRyb2xOYW1lOiBzdHJpbmcgfX0gc2VhcmNoVGVybVxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9uW119IGRlZmF1bHRPcHRpb25zXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25bXX0gZmlsdGVyZWRPcHRpb25zXHJcbiAgICogQHJldHVybiB7Kn0gU2VsZWN0T3B0aW9uW11cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZmlsdGVyT3B0aW9ucyhcclxuICAgIHNlYXJjaFRlcm06IHsgc2VhcmNoRXZlbnQ6IEV2ZW50OyBjb250cm9sTmFtZTogc3RyaW5nIH0sXHJcbiAgICBkZWZhdWx0T3B0aW9uczogU2VsZWN0T3B0aW9uW10sXHJcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IFNlbGVjdE9wdGlvbltdXHJcbiAgKTogU2VsZWN0T3B0aW9uW10ge1xyXG4gICAgaWYgKCFzZWFyY2hUZXJtLnNlYXJjaEV2ZW50KSB7XHJcbiAgICAgIGZpbHRlcmVkT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsdGVyZWRPcHRpb25zID0gZGVmYXVsdE9wdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChvcHRpb24pID0+XHJcbiAgICAgICAgICBvcHRpb24ubmFtZVxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAuaW5kZXhPZihzZWFyY2hUZXJtLnNlYXJjaEV2ZW50LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgPiAtMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbHRlcmVkT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBkcm9wZG93biBvcHRpb25zIG9mIGV2ZW50IHR5cGVzIGFuZCByZWxhdGVkIGdyb3VwIGZvcm0gZmllbGRzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25bXX0gb3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcbiAgICBmb3JtQ29udHJvbElucHV0UHJvcGVydHk6IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdIHwgQ2hlY2tib3hPcHRpb25bXSxcclxuICAgIGR5bmFtaWNGb3JtQ29tcG9uZW50OiBEeW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IGR5bmFtaWNGb3JtQ29tcG9uZW50Py5mb3JtRmllbGRzPy50b0FycmF5KCk7XHJcbiAgICBmb3JtRmllbGRzPy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uY29uZmlnPy5jb250cm9sTmFtZSA9PT1cclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZSAmJlxyXG4gICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uW2Zvcm1Db250cm9sSW5wdXRQcm9wZXJ0eV1cclxuICAgICAgKVxyXG4gICAgICAgIGZvcm1GaWVsZC5jb21wb25lbnQuaW5zdGFuY2VbZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XSA9IG9wdGlvbnM7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgY3VzdG9tIGVycm9yc1xyXG4gICAqIEBwYXJhbSB7Kn0gZXJyb3JcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXJyb3JDb2RlcyA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpICYmICFlcnJvcj8uZXJyb3I/LnN0YXR1cykge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB0aGlzLnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZT8uc2hvd01lc3NhZ2Uoe1xyXG4gICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlLFxyXG4gICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLkVSUk9SLFxyXG4gICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvciAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIGRhdGUgdGltZSB0byBVVEMgZm9ybWF0XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVUaW1lXHJcbiAgICogQHJldHVybiB7Kn0gIHsoc3RyaW5nIHwgbnVsbCl9XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnZlcnREYXRlVGltZVRvVVRDKGRhdGVUaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGVUaW1lKSB7XHJcbiAgICAgIHJldHVybiBtb21lbnQoZGF0ZVRpbWUpLnV0Yyh0cnVlKS5mb3JtYXQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlVGltZTtcclxuICB9XHJcbiAgLyogR2V0IHRoZSBldmVudCBkZXRhaWxzIGZvciB0aGUgZ2l2ZW4gZXZlbnQgaWQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50SWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV2ZW50RGV0YWlsc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RXZlbnREZXRhaWxzKGV2ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXZlbnREZXRhaWxzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvZXZlbnQvJHtldmVudElkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgbWVldGluZyBkZXRhaWxzIGZvciB0aGUgZ2l2ZW4gbWVldGluZyBpZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxNZWV0aW5nRGV0YWlsc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0TWVldGluZ0RldGFpbHMobWVldGluZ0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1lZXRpbmdEZXRhaWxzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvbWVldGluZy8ke21lZXRpbmdJZH1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBtZWV0aW5nIGlkIGZyb20gdGhlIGV2ZW50cyBhbmQgbWVldGluZyBkZXRhaWxzIHBhZ2UuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lZXRpbmdJZFxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZE1lZXRpbmdJZChtZWV0aW5nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZCA9IG1lZXRpbmdJZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBzZWxlY3RlZCBtZWV0aW5nIGlkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRTZWxlY3RlZE1lZXRpbmdJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTWVldGluZ0lkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGlzU3RhbmRhbG9uZU1lZXRpbmcgZmxhZyBzdGF0dXNcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzU3RhbmRhbG9uZU1lZXRpbmdcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0U3RhbmRhbG9uZU1lZXRpbmdTdGF0dXMoaXNTdGFuZGFsb25lTWVldGluZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1N0YW5kYWxvbmVNZWV0aW5nID0gaXNTdGFuZGFsb25lTWVldGluZztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBpc1N0YW5kYWxvbmVNZWV0aW5nIGZsYWcgc3RhdHVzXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzU3RhbmRhbG9uZU1lZXRpbmc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIEV2ZW50IGFuZCBNZWV0aW5nIExpc3QgZnJvbSBBUEkgYW5kIHJldHVybnMgaXQgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAcGFyYW0ge0dldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZH0gcGF5bG9hZCB0byBnZXQgZXZlbnQgYW5kIG1lZXRpbmcgbGlzdFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0RXZlbnRzQW5kTWVldGluZ3NSZXNwb25zZT59LXJldHVybnMgbGlzdCBvZiBldmVudHMgYW5kIG1lZXRpbmdzIGlmIHN1Y2Nlc3MgZWxzZSBlcnJvci5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RXZlbnRzQW5kTWVldGluZ3MoXHJcbiAgICBwYXlsb2FkOiBHZXRFdmVudHNBbmRNZWV0aW5nc1BheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPEdldEV2ZW50c0FuZE1lZXRpbmdzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2V2ZW50c0FuZE1lZXRpbmdzYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWxldGVzIHRoZSBzZWxlY3RlZCBldmVudHMgYW5kIG1lZXRpbmdzIHByb3ZpZGVkIGluIHRoZSBwYXlsb2FkLlxyXG4gICAqIEBwYXJhbSB7RGVsZXRlRXZlbnRzT3JNZWV0aW5nc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPERlbGV0ZUV2ZW50c09yTWVldGluZ3NSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGRlbGV0ZUV2ZW50c09yTWVldGluZ3MoXHJcbiAgICBwYXlsb2FkOiBEZWxldGVFdmVudHNPck1lZXRpbmdzUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8RGVsZXRlRXZlbnRzT3JNZWV0aW5nc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2V2ZW50c0FuZE1lZXRpbmdzYCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXNlciBtZWV0aW5nIHBlcm1pc3Npb25zXHJcbiAgICogQHBhcmFtIHtHcm91cFBlcm1pc3Npb25bXX0gdXNlckdyb3VwUGVybWlzc2lvbnNcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0VXNlck1lZXRpbmdQZXJtaXNzaW9ucyh1c2VyR3JvdXBQZXJtaXNzaW9uczogTWVldGluZ1Blcm1pc3Npb25zW10pIHtcclxuICAgIHRoaXMudXNlck1lZXRpbmdQZXJtaXNzaW9ucyA9IHVzZXJHcm91cFBlcm1pc3Npb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGVzIG1lZXRpbmcgZGV0YWlscyB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHBhcmFtIHsoRWRpdE1lZXRpbmdQYXlsb2FkKX0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RWRpdE1lZXRpbmdSZXNwb25zZT59XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGVkaXRNZWV0aW5nKFxyXG4gICAgZWRpdE1lZXRpbmdQYXlsb2FkOiBDcmVhdGVPckVkaXRNZWV0aW5nUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlT3JFZGl0TWVldGluZ1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2VkaXRgLCBlZGl0TWVldGluZ1BheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvblNlcnZpY2UudmFsaWRhdGVBY2Nlc3NQZXJtaXNzaW9uKFxyXG4gICAgICBwZXJtaXNzaW9uVHlwZSxcclxuICAgICAgdGhpcy51c2VyTWVldGluZ1Blcm1pc3Npb25zXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBmaWx0ZXJlZCBtZWV0aW5nIG1lbnUgYWN0aW9ucyBiYXNlZCBvbiBhY2Nlc3MgcGVybWlzc2lvbi5cclxuICAgKiBAcGFyYW0ge01lbnVbXX0gdGFibGVBY3Rpb25zXHJcbiAgICogQHJldHVybiB7TWVudVtdfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWx0ZXJlZE1lZXRpbmdBY3Rpb25zKGFjdGlvbnM6IE1lbnVbXSk6IE1lbnVbXSB7XHJcbiAgICByZXR1cm4gYWN0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAoYWN0aW9uOiBNZW51KSA9PlxyXG4gICAgICAgIChhY3Rpb24uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19NRUVUSU5HICYmXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlQWNjZXNzKFBlcm1pc3Npb25UeXBlLlZJRVdfTUVFVElOR1MpKSB8fFxyXG4gICAgICAgIChhY3Rpb24uaWQgPT09IE1lZXRpbmdBY3Rpb24uREVMRVRFX01FRVRJTkcgJiZcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuREVMRVRFX01FRVRJTkcpKSB8fFxyXG4gICAgICAgIChhY3Rpb24uaWQgPT09IE1lZXRpbmdBY3Rpb24uVklFV19BR0VOREEgJiZcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuVklFV19BR0VOREEpKSB8fFxyXG4gICAgICAgIChhY3Rpb24uaWQgPT09IE1lZXRpbmdBY3Rpb24uQ1JFQVRFX0FHRU5EQSAmJlxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5BRERfQUdFTkRBKSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZXZlbnQgZGV0YWlscyB0byBzZXJ2ZXIgdXNpbmcgSHR0cFNlcnZpY2UuXHJcbiAgICogQHBhcmFtIHsoRWRpdEV2ZW50UGF5bG9hZCl9IHBheWxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVkaXRFdmVudFJlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZWRpdEV2ZW50KFxyXG4gICAgZWRpdEV2ZW50UGF5bG9hZDogQ3JlYXRlT3JFZGl0RXZlbnRQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVPckVkaXRFdmVudFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucHV0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2V2ZW50L2VkaXRgLCBlZGl0RXZlbnRQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZpbHRlcmVkIGV2ZW50IG1lbnUgYWN0aW9ucyBiYXNlZCBvbiBhY2Nlc3MgcGVybWlzc2lvbi5cclxuICAgKiBAcGFyYW0ge01lbnVbXX0gYWN0aW9uc1xyXG4gICAqIEByZXR1cm4ge01lbnVbXX1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RmlsdGVyZWRFdmVudEFjdGlvbnMoYWN0aW9uczogTWVudVtdKTogTWVudVtdIHtcclxuICAgIHJldHVybiBhY3Rpb25zPy5maWx0ZXIoXHJcbiAgICAgIChhY3Rpb246IE1lbnUpID0+XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gRXZlbnRBY3Rpb24uVklFV19FVkVOVCAmJlxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5WSUVXX0VWRU5UUykpIHx8XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gRXZlbnRBY3Rpb24uQ1JFQVRFX01FRVRJTkcgJiZcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuQ1JFQVRFX01FRVRJTkcpKSB8fFxyXG4gICAgICAgIChhY3Rpb24uaWQgPT09IEV2ZW50QWN0aW9uLkRFTEVURV9FVkVOVCAmJlxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5ERUxFVEVfRVZFTlQpKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgZXZlbnQgaW5mb3JtYXRpb24uXHJcbiAgICogQHBhcmFtIHsoRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbiB8IEV2ZW50RGF0ZXMpfSBldmVudERhdGFcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRFdmVudERhdGEoXHJcbiAgICBldmVudERhdGE6IEV2ZW50RGV0YWlsc0NvbmZpZ3VyYXRpb24gfCBFdmVudERhdGVzIHwgbnVsbFxyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YSA9IGV2ZW50RGF0YTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgc2VsZWN0ZWQgZXZlbnQgaW5mb3JtYXRpb24uXHJcbiAgICogQHJldHVybiB7Kn0gIHsoRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbiB8IEV2ZW50RGF0ZXMpfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRTZWxlY3RlZEV2ZW50RGF0YSgpOiBFdmVudERldGFpbHNDb25maWd1cmF0aW9uIHwgRXZlbnREYXRlcyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFdmVudERhdGE7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGNvbmZpcm1hdGlvbiBtb2RhbCBhbmQgcmV0dXJucyB0aGUgbW9kYWwgcmVmZXJlbmNlLlxyXG4gICAqIEBwYXJhbSB7Q29uZmlybWF0aW9uTW9kYWxEYXRhfSBjb25maXJtYXRpb25Nb2RhbERhdGFcclxuICAgKiBAcmV0dXJuIHtNYXREaWFsb2dSZWY8TW9kYWxDb25maXJtYXRpb25Db21wb25lbnQ+fVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBvcGVuQ29uZmlybWF0aW9uTW9kYWwoXHJcbiAgICBjb25maXJtYXRpb25Nb2RhbERhdGE6IENvbmZpcm1hdGlvbk1vZGFsRGF0YVxyXG4gICk6IE1hdERpYWxvZ1JlZjxNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudD4ge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogY29uZmlybWF0aW9uTW9kYWxEYXRhLFxyXG4gICAgICB3aWR0aDogJzI1JScsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLW1vZGFsLWNvbmZpcm0tZGlhbG9nJ10sXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmNyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGlhbG9nUmVmO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBwYXNzZWQgcm91dGUgcGF0aHMuXHJcbiAgICogQHBhcmFtIHtFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWd9IHJvdXRlUGF0aHNcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0Um91dGVQYXRocyhyb3V0ZVBhdGhzOiBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWcpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVQYXRocyA9IHJvdXRlUGF0aHM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHJvdXRlIHBhdGhzLlxyXG4gICAqIEByZXR1cm4ge0V2ZW50c0FuZE1lZXRpbmdSb3V0ZUNvbmZpZ31cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0Um91dGVQYXRocygpOiBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVQYXRocztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbGVnZW5kIGNvbG9yIGhleCB2YWx1ZSBiYXNlZCBvbiBwYXNzZWQgZXZlbnQgb3IgbWVldGluZyBzdGF0dXMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXR1c1xyXG4gICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0RXZlbnRPck1lZXRpbmdMZWdlbmRDb2xvcihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25zdGFudHM/LmV2ZW50T3JNZWV0aW5nU3RhdHVzPy5bXHJcbiAgICAgIHN0YXR1cz8uc3BsaXQoJyAnKT8uam9pbignJykudG9Mb3dlckNhc2UoKVxyXG4gICAgXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWFwcyBjYW5EZWxldGUgYW5kIGxlZ2VuZCBjb2xvciB0byBwYXNzZWQgbWVldGluZ3MuXHJcbiAgICogQHBhcmFtIHtNZWV0aW5nW119IG1lZXRpbmdzXHJcbiAgICogQHJldHVybiB7TWVldGluZ1tdfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBtYXBNZWV0aW5nc0luZm9Ub0RhdGFUYWJsZShtZWV0aW5nczogTWVldGluZ1tdKTogTWVldGluZ1tdIHtcclxuICAgIG1lZXRpbmdzPy5tYXAoKG1lZXRpbmcpID0+IHtcclxuICAgICAgbWVldGluZy5jYW5EZWxldGUgPSB0cnVlO1xyXG4gICAgICBtZWV0aW5nLmxlZ2VuZENvbG9yID0gdGhpcy5nZXRFdmVudE9yTWVldGluZ0xlZ2VuZENvbG9yKG1lZXRpbmcuc3RhdHVzKTtcclxuICAgICAgbWVldGluZy5jb250ZW50VW5kZXJMaW5rID0gbWVldGluZy5zdGF0dXM7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBtZWV0aW5ncztcclxuICB9XHJcbn1cclxuIl19
561
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWFuZC1tZWV0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZlbnRzLWFuZC1tZWV0aW5ncy9zcmMvbGliL3NlcnZpY2VzL2V2ZW50cy1hbmQtbWVldGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEtBQUssV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBS3hELE9BQU8sRUFDTCxTQUFTLEdBSVYsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRixPQUFPLEVBS0wsMEJBQTBCLEdBRTNCLE1BQU0sMEJBQTBCLENBQUM7QUFXbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBbUI1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEdBQ2QsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFLdEQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQWlCbkM7SUFDRSwwQ0FBMEM7SUFDbkMsTUFBaUI7SUFDeEIsMENBQTBDO0lBQ2xDLFdBQXdCO0lBQ2hDLDBDQUEwQztJQUNsQyxZQUEyQjtJQUNuQywwQ0FBMEM7SUFDbEMscUJBQTZDO0lBQ3JELDBDQUEwQztJQUNsQyx5QkFBb0QsQ0FBQyw2Q0FBNkM7O1FBUm5HLFdBQU0sR0FBTixNQUFNLENBQVc7UUFFaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFeEIsaUJBQVksR0FBWixZ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RUFBRSxTQUFTLEVBQUUsS0FBSztTQUN4RSxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxVQUF1QztRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsNEJBQTRCLENBQUMsTUFBYztRQUN6QyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsQ0FDM0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQzNDLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCwwQkFBMEIsQ0FBQyxRQUFtQjtRQUM1QyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzsrR0F0bkJVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgY2F0Y2hFcnJvciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlT3JFZGl0TWVldGluZ1BheWxvYWQsXHJcbiAgQ3JlYXRlT3JFZGl0TWVldGluZ1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9jcmVhdGUtbWVldGluZy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICBIdHRwU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgTWVldGluZ1R5cGVSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9tZWV0aW5nLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRUeXBlUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvZXZlbnQtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucyB9IGZyb20gJy4uL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgR2V0R3JvdXBSZXNwb25zZSwgR3JvdXBJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwLXJlc3BvbnNlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3RPcHRpb24sXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbiAgTWVudSxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBDb25maXJtYXRpb25Nb2RhbERhdGEsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVPckVkaXRFdmVudFBheWxvYWQsXHJcbiAgQ3JlYXRlT3JFZGl0RXZlbnRSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvY3JlYXRlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBFdmVudERhdGVzLFxyXG4gIEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCxcclxuICBHZXRNZWV0aW5nc0J5RXZlbnRJZFJlc3BvbnNlLFxyXG4gIE1lZXRpbmcsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL21lZXRpbmdzLXVuZGVyLWV2ZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkLFxyXG4gIEdldEV2ZW50c0FuZE1lZXRpbmdzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50cy1hbmQtbWVldGluZ3MtbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbixcclxuICBFdmVudERldGFpbHNSZXNwb25zZSxcclxufSBmcm9tICcuLi9tb2RlbHMvdmlldy1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IE1lZXRpbmdEZXRhaWxzUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdmlldy1tZWV0aW5nLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2V2ZW50LW1lZXRpbmctZnVuY3Rpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIE1lZXRpbmdQZXJtaXNzaW9ucyxcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuLi9tb2RlbHMvbWVldGluZy1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlRXZlbnRzT3JNZWV0aW5nc1BheWxvYWQsXHJcbiAgRGVsZXRlRXZlbnRzT3JNZWV0aW5nc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9kZWxldGUtZXZlbnRzLW1lZXRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBFdmVudEFjdGlvbixcclxuICBNZWV0aW5nQWN0aW9uLFxyXG59IGZyb20gJy4uL21vZGVscy9ldmVudC1vci1tZWV0aW5nLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWcgfSBmcm9tICdAaWVlZXNhLW5wbS9zaGFyZWQnO1xyXG5cclxuLyoqXHJcbiAqIEV2ZW50cyBhbmQgTWVldGluZ3Mgc2VydmljZSBpcyBhbiBhYnN0cmFjdCBsYXllciBhbmQgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIG1lZXRpbmdzIGFuZCBldmVudHMgQVBJIGNhbGxzIGFuZCBtYWludGFpbmVkIHRoZSByZXVzYWJsZSBsb2dpY3MuXHJcbiAqIEBjbGFzcyBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBlcnJvck1lc3NhZ2VzID0gdGhpcy5jb25zdGFudHM/LmVycm9ycztcclxuICBhcGlCYXNlVXJsITogc3RyaW5nO1xyXG4gIHNlbGVjdGVkRXZlbnRJZCE6IHN0cmluZztcclxuICBzZWxlY3RlZE1lZXRpbmdJZCE6IHN0cmluZztcclxuICBhY3Rpb25UeXBlITogRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlO1xyXG4gIHVzZXJQZXJtaXNzaW9uITogVXNlclBlcm1pc3Npb25bXTtcclxuICBpc0V2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZWQgPSBmYWxzZTtcclxuICBpc1N0YW5kYWxvbmVNZWV0aW5nID0gdHJ1ZTtcclxuICBncm91cHMhOiBHcm91cEluZm9bXTtcclxuICB1c2VyTWVldGluZ1Blcm1pc3Npb25zITogTWVldGluZ1Blcm1pc3Npb25zW107XHJcbiAgc2VsZWN0ZWRFdmVudERhdGEhOiBFdmVudERldGFpbHNDb25maWd1cmF0aW9uIHwgRXZlbnREYXRlcyB8IG51bGw7XHJcbiAgY2FuQ2xvc2VBZGRNZWV0aW5nTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgZm9ybVN0YXR1c0NoYW5nZU5vdGlmaWVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJvdXRlUGF0aHMhOiBFdmVudHNBbmRNZWV0aW5nUm91dGVDb25maWc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uU2VydmljZTogVXNlclBlcm1pc3Npb25zU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldEFwcENvbmZpZyhhcGlCYXNlVXJsOiBzdHJpbmcsIHVzZXJQZXJtaXNzaW9uOiBhbnlbXSkge1xyXG4gICAgdGhpcy5hcGlCYXNlVXJsID0gYXBpQmFzZVVybDtcclxuICAgIHRoaXMudXNlclBlcm1pc3Npb24gPSB1c2VyUGVybWlzc2lvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxzIGNyZWF0ZSBtZWV0aW5nIEFQSSBhbG9uZyB3aXRoIHBhc3NlZCBDcmVhdGVNZWV0aW5nUGF5bG9hZCB1c2luZyBIdHRwU2VydmljZSBwb3N0RGF0YS5cclxuICAgKiBAcGFyYW0ge0NyZWF0ZU1lZXRpbmdQYXlsb2FkfSBjcmVhdGVNZWV0aW5nUGF5bG9hZCAtY3JlYXRlIG1lZXRpbmcgZm9ybSBkYXRhXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8Q3JlYXRlTWVldGluZ1Jlc3BvbnNlPn0gLXJldHVybnMgY3JlYXRlIG1lZXRpbmcgQVBJIHJlc3BvbnNlIChzdWNjZXNzIG9yIGVycm9yKSBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBjcmVhdGVNZWV0aW5nKFxyXG4gICAgY3JlYXRlTWVldGluZ1BheWxvYWQ6IENyZWF0ZU9yRWRpdE1lZXRpbmdQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVPckVkaXRNZWV0aW5nUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L21lZXRpbmdzL2NyZWF0ZWAsIGNyZWF0ZU1lZXRpbmdQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIG1lZXRpbmcgdHlwZXMgZnJvbSBzZXJ2ZXIgYW5kIHJldHVybnMgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE1lZXRpbmdUeXBlUmVzcG9uc2U+fSAtIHJldHVybnMgbWVldGluZyB0eXBlcyBzdWNjZXNzIG9yIGVycm9yIHJlc3BvbnNlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRNZWV0aW5nVHlwZXMoKTogT2JzZXJ2YWJsZTxNZWV0aW5nVHlwZVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL2NvbmZpZy9tZWV0aW5nX3R5cGVgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGV2ZW50IHR5cGVzIGZyb20gc2VydmVyIGFuZCByZXR1cm5zIGFzIGFuIG9ic2VydmFibGUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFdmVudFR5cGVSZXNwb25zZT59IC0gcmV0dXJucyBldmVudCB0eXBlcyBzdWNjZXNzIG9yIGVycm9yIHJlc3BvbnNlLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRFdmVudFR5cGVzKCk6IE9ic2VydmFibGU8RXZlbnRUeXBlUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5nZXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvY29uZmlnL2V2ZW50X3R5cGVgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgdGhlIGVycm9yIGNvZGVzIGFuZCByZXR1cm4gdGhlIHJlc3BlY3RpdmUgZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBjb2RlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGVycm9yQ29kZXNcclxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gZXJyb3JNZXNzYWdlXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBlcnJvck1lc3NhZ2U6IHN0cmluZ1tdID0gW107XHJcbiAgICBlcnJvckNvZGVzPy5mb3JFYWNoKChpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlS2V5ID0gZXJyb3JDb2Rlc1tcclxuICAgICAgICBpbmRleFxyXG4gICAgICBdIGFzIGtleW9mIHR5cGVvZiB0aGlzLmVycm9yTWVzc2FnZXM7XHJcbiAgICAgIGVycm9yTWVzc2FnZS5wdXNoKFxyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlc1tlcnJvck1lc3NhZ2VLZXldID8/IHRoaXMuZXJyb3JNZXNzYWdlcz8uZGVmYXVsdFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGV2ZW50IG9yIG1lZXRpbmcgZm9ybSBjaGFuZ2Ugc3RhdHVzLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNDaGFuZ2VkXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhpc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VkID0gaXNDaGFuZ2VkO1xyXG4gICAgdGhpcy5mb3JtU3RhdHVzQ2hhbmdlTm90aWZpZXIkLm5leHQoaXNDaGFuZ2VkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBldmVudCBvciBtZWV0aW5nIGZvcm0gY2hhbmdlIHN0YXR1cy5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VTdGF0dXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0V2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF0aW9uIG9mIElQIEFkZHJlc3MgUmFuZ2UgZm9ybSBmaWVsZCBjdXN0b20gdmFsaWRhdG9yLlxyXG4gICAqIEByZXR1cm4ge1ZhbGlkYXRvckZufVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBpcEFkZHJlc3NSYW5nZVZhbGlkYXRvcihpcEFkZHJlc3NSYW5nZU1heENvdW50OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICFmb3JtQ29udHJvbD8udmFsdWUgJiZcclxuICAgICAgICAoZm9ybUNvbnRyb2w/LnZhbHVlPy5sZW5ndGggPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2w/LnZhbHVlPy5sZW5ndGggPT09IDApXHJcbiAgICAgIClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgZWxzZSBpZiAoIWZvcm1Db250cm9sPy52YWx1ZT8udHJpbSgpICYmIGZvcm1Db250cm9sPy52YWx1ZT8ubGVuZ3RoID4gMClcclxuICAgICAgICByZXR1cm4geyBwYXR0ZXJuOiB0cnVlIH07XHJcbiAgICAgIGNvbnN0IGlwQWRkcmVzc1JhbmdlOiBzdHJpbmdbXSA9IGZvcm1Db250cm9sPy52YWx1ZT8uc3BsaXQoJywnKTtcclxuICAgICAgbGV0IGlzVmFsaWRJcEFkZHJlc3MgPSB0cnVlO1xyXG4gICAgICBpcEFkZHJlc3NSYW5nZT8uZm9yRWFjaCgoaXBBZGRyZXNzKSA9PiB7XHJcbiAgICAgICAgaXBBZGRyZXNzPy5zcGxpdCgnLycpPy5mb3JFYWNoKChpcCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXNWYWxpZElwQWRkcmVzcyAmJlxyXG4gICAgICAgICAgICBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucy5pcEFkZHJlc3NSYW5nZS50ZXN0KFxyXG4gICAgICAgICAgICAgIGlwPy50cmltKClcclxuICAgICAgICAgICAgKSAmJlxyXG4gICAgICAgICAgICBpbmRleCA8IDIgJiZcclxuICAgICAgICAgICAgTnVtYmVyKGlwPy50cmltKCk/LnNwbGl0KCcuJyk/LlszXSkgPCAyNTdcclxuICAgICAgICAgIClcclxuICAgICAgICAgICAgaXNWYWxpZElwQWRkcmVzcyA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlIGlzVmFsaWRJcEFkZHJlc3MgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChpc1ZhbGlkSXBBZGRyZXNzICYmIGlwQWRkcmVzc1JhbmdlPy5sZW5ndGggPiBpcEFkZHJlc3NSYW5nZU1heENvdW50KVxyXG4gICAgICAgIHJldHVybiB7IG1heDogdHJ1ZSB9O1xyXG4gICAgICBlbHNlIGlmIChcclxuICAgICAgICBpc1ZhbGlkSXBBZGRyZXNzICYmXHJcbiAgICAgICAgaXBBZGRyZXNzUmFuZ2U/Lmxlbmd0aCA8PSBpcEFkZHJlc3NSYW5nZU1heENvdW50XHJcbiAgICAgIClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgcmV0dXJuIHsgcGF0dGVybjogdHJ1ZSB9O1xyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyByb290IGdyb3VwcyBvZiBzcGVjaWZpZWQgYXBwbGljYXRpb24gZnJvbSBBUEkgYW5kIHJldHVybnMgR2V0R3JvdXBSZXNwb25zZSBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8R2V0R3JvdXBSZXNwb25zZT59IC0gcmV0dXJucyBsaXN0IG9mIGdyb3VwcyB3aGVuIHN1Y2Nlc3MgZWxzZSBhc3NvY2lhdGVkIGVycm9yLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRHcm91cHMoKTogT2JzZXJ2YWJsZTxHZXRHcm91cFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAuZ2V0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9L2dyb3Vwcy9hbGxHcm91cHNPZlVzZXJgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwcyA9IHJlc3BvbnNlPy5ib2R5O1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIHNvcnQgdGhlIGRyb3Bkb3duIG9wdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9uW119IGxpc3RcclxuICAgKiBAcmV0dXJuIHtTZWxlY3RPcHRpb25bXX0uXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIHNvcnRPcHRpb25zKGxpc3Q6IFNlbGVjdE9wdGlvbltdKTogU2VsZWN0T3B0aW9uW10ge1xyXG4gICAgY29uc3QgY2xvbmVkVmFsdWUgPSBbLi4ubGlzdF07XHJcbiAgICBjb25zdCBzb3J0ID0gY2xvbmVkVmFsdWUuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBpZiAoYS5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IGIubmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMDtcclxuICAgICAgaWYgKGEubmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYWxsJykgcmV0dXJuIC0xO1xyXG4gICAgICBpZiAoYi5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhbGwnKSByZXR1cm4gMTtcclxuICAgICAgaWYgKGEubmFtZS50b0xvd2VyQ2FzZSgpIDwgYi5uYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiAtMTtcclxuICAgICAgaWYgKGEubmFtZS50b0xvd2VyQ2FzZSgpID4gYi5uYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiAxO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNvcnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3N0cyBjcmVhdGUgZXZlbnQgZm9ybSBkYXRhIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZSBmb3IgY3JlYXRpbmcgbmV3IGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlRXZlbnRQYXlsb2FkfSBjcmVhdGVFdmVudFBheWxvYWQgLWNyZWF0ZSBldmVudCBmb3JtIGRhdGFcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxDcmVhdGVFdmVudFJlc3BvbnNlPn0gLXJldHVybnMgY3JlYXRlIGV2ZW50IEFQSSByZXNwb25zZSAoc3VjY2VzcyBvciBlcnJvcikgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgY3JlYXRlRXZlbnQoXHJcbiAgICBjcmVhdGVFdmVudFBheWxvYWQ6IENyZWF0ZU9yRWRpdEV2ZW50UGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlT3JFZGl0RXZlbnRSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvZXZlbnQvY3JlYXRlYCwgY3JlYXRlRXZlbnRQYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIG1lZXRpbmcgY3JlYXRlZCB1bmRlciBldmVudHMgZnJvbSBBUEkgYW5kIHJldHVybnMgaXQgYXMgYW4gb2JzZXJ2YWJsZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEdldE1lZXRpbmdzQnlFdmVudElkUmVzcG9uc2U+fSAtSXQgcmV0dXJucyBtZWV0aW5ncyBpZiBzdWNjZXNzIGVsc2UgZXJyb3IuXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKFxyXG4gICAgcGF5bG9hZDogR2V0TWVldGluZ3NCeUV2ZW50SWRQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxHZXRNZWV0aW5nc0J5RXZlbnRJZFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9tZWV0aW5ncy9tZWV0aW5nc0RldGFpbHNgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZS5ib2R5Py5tZWV0aW5ncz8ubWFwKFxyXG4gICAgICAgICAgICAobWVldGluZzogTWVldGluZykgPT5cclxuICAgICAgICAgICAgICAobWVldGluZy5ncm91cE5hbWUgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cHM/LmZpbmQoKGdyb3VwKSA9PiBncm91cC5ncm91cElkID09PSBtZWV0aW5nLmdyb3VwSWQpXHJcbiAgICAgICAgICAgICAgICAgID8uZ3JvdXBOYW1lID8/ICcnKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgZXZlbnQgaWQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50SWRcclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRFdmVudElkKGV2ZW50SWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50SWQgPSBldmVudElkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBldmVudCBpZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkRXZlbnRJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFdmVudElkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGaWx0ZXIgdGhlIGRyb3Bkb3duIG9wdGlvbnMgb24gdGhlIGJhc2lzIG9mIHNlYXJjaCB0ZXJtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHt7IHNlYXJjaEV2ZW50OiBFdmVudDsgY29udHJvbE5hbWU6IHN0cmluZyB9fSBzZWFyY2hUZXJtXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25bXX0gZGVmYXVsdE9wdGlvbnNcclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbltdfSBmaWx0ZXJlZE9wdGlvbnNcclxuICAgKiBAcmV0dXJuIHsqfSBTZWxlY3RPcHRpb25bXVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBmaWx0ZXJPcHRpb25zKFxyXG4gICAgc2VhcmNoVGVybTogeyBzZWFyY2hFdmVudDogRXZlbnQ7IGNvbnRyb2xOYW1lOiBzdHJpbmcgfSxcclxuICAgIGRlZmF1bHRPcHRpb25zOiBTZWxlY3RPcHRpb25bXSxcclxuICAgIGZpbHRlcmVkT3B0aW9uczogU2VsZWN0T3B0aW9uW11cclxuICApOiBTZWxlY3RPcHRpb25bXSB7XHJcbiAgICBpZiAoIXNlYXJjaFRlcm0uc2VhcmNoRXZlbnQpIHtcclxuICAgICAgZmlsdGVyZWRPcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXJlZE9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKG9wdGlvbikgPT5cclxuICAgICAgICAgIG9wdGlvbi5uYW1lXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5pbmRleE9mKHNlYXJjaFRlcm0uc2VhcmNoRXZlbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSA+IC0xXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsdGVyZWRPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGRyb3Bkb3duIG9wdGlvbnMgb2YgZXZlbnQgdHlwZXMgYW5kIHJlbGF0ZWQgZ3JvdXAgZm9ybSBmaWVsZHMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1Db250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbElucHV0UHJvcGVydHlcclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbltdfSBvcHRpb25zXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyxcclxuICAgIGZvcm1Db250cm9sSW5wdXRQcm9wZXJ0eTogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogU2VsZWN0T3B0aW9uW10gfCBDaGVja2JveE9wdGlvbltdLFxyXG4gICAgZHluYW1pY0Zvcm1Db21wb25lbnQ6IER5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtRmllbGRzID0gZHluYW1pY0Zvcm1Db21wb25lbnQ/LmZvcm1GaWVsZHM/LnRvQXJyYXkoKTtcclxuICAgIGZvcm1GaWVsZHM/LmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5jb25maWc/LmNvbnRyb2xOYW1lID09PVxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lICYmXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5bZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XVxyXG4gICAgICApXHJcbiAgICAgICAgZm9ybUZpZWxkLmNvbXBvbmVudC5pbnN0YW5jZVtmb3JtQ29udHJvbElucHV0UHJvcGVydHldID0gb3B0aW9ucztcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBjdXN0b20gZXJyb3JzXHJcbiAgICogQHBhcmFtIHsqfSBlcnJvclxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykgJiYgIWVycm9yPy5lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgZGF0ZSB0aW1lIHRvIFVUQyBmb3JtYXRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVRpbWVcclxuICAgKiBAcmV0dXJuIHsqfSAgeyhzdHJpbmcgfCBudWxsKX1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgY29udmVydERhdGVUaW1lVG9VVEMoZGF0ZVRpbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoZGF0ZVRpbWUpIHtcclxuICAgICAgcmV0dXJuIG1vbWVudChkYXRlVGltZSkudXRjKHRydWUpLmZvcm1hdCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGVUaW1lO1xyXG4gIH1cclxuICAvKiBHZXQgdGhlIGV2ZW50IGRldGFpbHMgZm9yIHRoZSBnaXZlbiBldmVudCBpZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRJZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXZlbnREZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRFdmVudERldGFpbHMoZXZlbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdmVudERldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9tZWV0aW5ncy9ldmVudC8ke2V2ZW50SWR9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBtZWV0aW5nIGRldGFpbHMgZm9yIHRoZSBnaXZlbiBtZWV0aW5nIGlkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZWV0aW5nSWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE1lZXRpbmdEZXRhaWxzUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRNZWV0aW5nRGV0YWlscyhtZWV0aW5nSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TWVldGluZ0RldGFpbHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLmdldERhdGEoYCR7dGhpcy5hcGlCYXNlVXJsfS9tZWV0aW5ncy9tZWV0aW5nLyR7bWVldGluZ0lkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIG1lZXRpbmcgaWQgZnJvbSB0aGUgZXZlbnRzIGFuZCBtZWV0aW5nIGRldGFpbHMgcGFnZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVldGluZ0lkXHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIHNldFNlbGVjdGVkTWVldGluZ0lkKG1lZXRpbmdJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTWVldGluZ0lkID0gbWVldGluZ0lkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIHNlbGVjdGVkIG1lZXRpbmcgaWQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkTWVldGluZ0lkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgaXNTdGFuZGFsb25lTWVldGluZyBmbGFnIHN0YXR1c1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNTdGFuZGFsb25lTWVldGluZ1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyhpc1N0YW5kYWxvbmVNZWV0aW5nOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU3RhbmRhbG9uZU1lZXRpbmcgPSBpc1N0YW5kYWxvbmVNZWV0aW5nO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGlzU3RhbmRhbG9uZU1lZXRpbmcgZmxhZyBzdGF0dXNcclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNTdGFuZGFsb25lTWVldGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgRXZlbnQgYW5kIE1lZXRpbmcgTGlzdCBmcm9tIEFQSSBhbmQgcmV0dXJucyBpdCBhcyBhbiBvYnNlcnZhYmxlLlxyXG4gICAqIEBwYXJhbSB7R2V0RXZlbnRzQW5kTWVldGluZ3NQYXlsb2FkfSBwYXlsb2FkIHRvIGdldCBldmVudCBhbmQgbWVldGluZyBsaXN0XHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxHZXRFdmVudHNBbmRNZWV0aW5nc1Jlc3BvbnNlPn0tcmV0dXJucyBsaXN0IG9mIGV2ZW50cyBhbmQgbWVldGluZ3MgaWYgc3VjY2VzcyBlbHNlIGVycm9yLlxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRFdmVudHNBbmRNZWV0aW5ncyhcclxuICAgIHBheWxvYWQ6IEdldEV2ZW50c0FuZE1lZXRpbmdzUGF5bG9hZFxyXG4gICk6IE9ic2VydmFibGU8R2V0RXZlbnRzQW5kTWVldGluZ3NSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvZXZlbnRzQW5kTWVldGluZ3NgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgdGhlIHNlbGVjdGVkIGV2ZW50cyBhbmQgbWVldGluZ3MgcHJvdmlkZWQgaW4gdGhlIHBheWxvYWQuXHJcbiAgICogQHBhcmFtIHtEZWxldGVFdmVudHNPck1lZXRpbmdzUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RGVsZXRlRXZlbnRzT3JNZWV0aW5nc1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZGVsZXRlRXZlbnRzT3JNZWV0aW5ncyhcclxuICAgIHBheWxvYWQ6IERlbGV0ZUV2ZW50c09yTWVldGluZ3NQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxEZWxldGVFdmVudHNPck1lZXRpbmdzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvZXZlbnRzQW5kTWVldGluZ3NgLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB1c2VyIG1lZXRpbmcgcGVybWlzc2lvbnNcclxuICAgKiBAcGFyYW0ge0dyb3VwUGVybWlzc2lvbltdfSB1c2VyR3JvdXBQZXJtaXNzaW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRVc2VyTWVldGluZ1Blcm1pc3Npb25zKHVzZXJHcm91cFBlcm1pc3Npb25zOiBNZWV0aW5nUGVybWlzc2lvbnNbXSkge1xyXG4gICAgdGhpcy51c2VyTWVldGluZ1Blcm1pc3Npb25zID0gdXNlckdyb3VwUGVybWlzc2lvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgbWVldGluZyBkZXRhaWxzIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0geyhFZGl0TWVldGluZ1BheWxvYWQpfSBwYXlsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFZGl0TWVldGluZ1Jlc3BvbnNlPn1cclxuICAgKiBAbWVtYmVyb2YgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICovXHJcbiAgZWRpdE1lZXRpbmcoXHJcbiAgICBlZGl0TWVldGluZ1BheWxvYWQ6IENyZWF0ZU9yRWRpdE1lZXRpbmdQYXlsb2FkXHJcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVPckVkaXRNZWV0aW5nUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvZWRpdGAsIGVkaXRNZWV0aW5nUGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgcGVybWlzc2lvbiBiYXNlZCBhY2Nlc3MgZm9yIHByb3ZpZGVkIGZlYXR1cmUuXHJcbiAgICogQHBhcmFtIHtQZXJtaXNzaW9uVHlwZX0gcGVybWlzc2lvblR5cGVcclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJQZXJtaXNzaW9uU2VydmljZS52YWxpZGF0ZUFjY2Vzc1Blcm1pc3Npb24oXHJcbiAgICAgIHBlcm1pc3Npb25UeXBlLFxyXG4gICAgICB0aGlzLnVzZXJNZWV0aW5nUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZpbHRlcmVkIG1lZXRpbmcgbWVudSBhY3Rpb25zIGJhc2VkIG9uIGFjY2VzcyBwZXJtaXNzaW9uLlxyXG4gICAqIEBwYXJhbSB7TWVudVtdfSB0YWJsZUFjdGlvbnNcclxuICAgKiBAcmV0dXJuIHtNZW51W119XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEZpbHRlcmVkTWVldGluZ0FjdGlvbnMoYWN0aW9uczogTWVudVtdKTogTWVudVtdIHtcclxuICAgIHJldHVybiBhY3Rpb25zPy5maWx0ZXIoXHJcbiAgICAgIChhY3Rpb246IE1lbnUpID0+XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX01FRVRJTkcgJiZcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuVklFV19NRUVUSU5HUykpIHx8XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gTWVldGluZ0FjdGlvbi5ERUxFVEVfTUVFVElORyAmJlxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5ERUxFVEVfTUVFVElORykpIHx8XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gTWVldGluZ0FjdGlvbi5WSUVXX0FHRU5EQSAmJlxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5WSUVXX0FHRU5EQSkpIHx8XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gTWVldGluZ0FjdGlvbi5DUkVBVEVfQUdFTkRBICYmXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlQWNjZXNzKFBlcm1pc3Npb25UeXBlLkFERF9BR0VOREEpKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBldmVudCBkZXRhaWxzIHRvIHNlcnZlciB1c2luZyBIdHRwU2VydmljZS5cclxuICAgKiBAcGFyYW0geyhFZGl0RXZlbnRQYXlsb2FkKX0gcGF5bG9hZFxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RWRpdEV2ZW50UmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBlZGl0RXZlbnQoXHJcbiAgICBlZGl0RXZlbnRQYXlsb2FkOiBDcmVhdGVPckVkaXRFdmVudFBheWxvYWRcclxuICApOiBPYnNlcnZhYmxlPENyZWF0ZU9yRWRpdEV2ZW50UmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vbWVldGluZ3MvZXZlbnQvZWRpdGAsIGVkaXRFdmVudFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZmlsdGVyZWQgZXZlbnQgbWVudSBhY3Rpb25zIGJhc2VkIG9uIGFjY2VzcyBwZXJtaXNzaW9uLlxyXG4gICAqIEBwYXJhbSB7TWVudVtdfSBhY3Rpb25zXHJcbiAgICogQHJldHVybiB7TWVudVtdfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWx0ZXJlZEV2ZW50QWN0aW9ucyhhY3Rpb25zOiBNZW51W10pOiBNZW51W10ge1xyXG4gICAgcmV0dXJuIGFjdGlvbnM/LmZpbHRlcihcclxuICAgICAgKGFjdGlvbjogTWVudSkgPT5cclxuICAgICAgICAoYWN0aW9uLmlkID09PSBFdmVudEFjdGlvbi5WSUVXX0VWRU5UICYmXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlQWNjZXNzKFBlcm1pc3Npb25UeXBlLlZJRVdfRVZFTlRTKSkgfHxcclxuICAgICAgICAoYWN0aW9uLmlkID09PSBFdmVudEFjdGlvbi5DUkVBVEVfTUVFVElORyAmJlxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5DUkVBVEVfTUVFVElORykpIHx8XHJcbiAgICAgICAgKGFjdGlvbi5pZCA9PT0gRXZlbnRBY3Rpb24uREVMRVRFX0VWRU5UICYmXHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlQWNjZXNzKFBlcm1pc3Npb25UeXBlLkRFTEVURV9FVkVOVCkpXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBldmVudCBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0geyhFdmVudERldGFpbHNDb25maWd1cmF0aW9uIHwgRXZlbnREYXRlcyl9IGV2ZW50RGF0YVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZEV2ZW50RGF0YShcclxuICAgIGV2ZW50RGF0YTogRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbiB8IEV2ZW50RGF0ZXMgfCBudWxsXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXZlbnREYXRhID0gZXZlbnREYXRhO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBzZWxlY3RlZCBldmVudCBpbmZvcm1hdGlvbi5cclxuICAgKiBAcmV0dXJuIHsqfSAgeyhFdmVudERldGFpbHNDb25maWd1cmF0aW9uIHwgRXZlbnREYXRlcyl9XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkRXZlbnREYXRhKCk6IEV2ZW50RGV0YWlsc0NvbmZpZ3VyYXRpb24gfCBFdmVudERhdGVzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgY29uZmlybWF0aW9uIG1vZGFsIGFuZCByZXR1cm5zIHRoZSBtb2RhbCByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtDb25maXJtYXRpb25Nb2RhbERhdGF9IGNvbmZpcm1hdGlvbk1vZGFsRGF0YVxyXG4gICAqIEByZXR1cm4ge01hdERpYWxvZ1JlZjxNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudD59XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIG9wZW5Db25maXJtYXRpb25Nb2RhbChcclxuICAgIGNvbmZpcm1hdGlvbk1vZGFsRGF0YTogQ29uZmlybWF0aW9uTW9kYWxEYXRhXHJcbiAgKTogTWF0RGlhbG9nUmVmPE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBjb25maXJtYXRpb25Nb2RhbERhdGEsXHJcbiAgICAgIHdpZHRoOiAnMjUlJyxcclxuICAgICAgcGFuZWxDbGFzczogWydpZWVlc2EtbW9kYWwtY29uZmlybS1kaWFsb2cnXSxcclxuICAgICAgYXV0b0ZvY3VzOiAnZGlhbG9nJyxcclxuICAgICAgYXJpYUxhYmVsOiB0aGlzLmNvbnN0YW50cz8uY3JlYXRlTW9kaWZ5RXZlbnRPck1lZXRpbmc/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHBhc3NlZCByb3V0ZSBwYXRocy5cclxuICAgKiBAcGFyYW0ge0V2ZW50c0FuZE1lZXRpbmdSb3V0ZUNvbmZpZ30gcm91dGVQYXRoc1xyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBzZXRSb3V0ZVBhdGhzKHJvdXRlUGF0aHM6IEV2ZW50c0FuZE1lZXRpbmdSb3V0ZUNvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZVBhdGhzID0gcm91dGVQYXRocztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcm91dGUgcGF0aHMuXHJcbiAgICogQHJldHVybiB7RXZlbnRzQW5kTWVldGluZ1JvdXRlQ29uZmlnfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRSb3V0ZVBhdGhzKCk6IEV2ZW50c0FuZE1lZXRpbmdSb3V0ZUNvbmZpZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhdGhzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsZWdlbmQgY29sb3IgaGV4IHZhbHVlIGJhc2VkIG9uIHBhc3NlZCBldmVudCBvciBtZWV0aW5nIHN0YXR1cy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzXHJcbiAgICogQHJldHVybiB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKi9cclxuICBnZXRFdmVudE9yTWVldGluZ0xlZ2VuZENvbG9yKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnN0YW50cz8uZXZlbnRPck1lZXRpbmdTdGF0dXM/LltcclxuICAgICAgc3RhdHVzPy5zcGxpdCgnICcpPy5qb2luKCcnKS50b0xvd2VyQ2FzZSgpXHJcbiAgICBdO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBNYXBzIGNhbkRlbGV0ZSBhbmQgbGVnZW5kIGNvbG9yIHRvIHBhc3NlZCBtZWV0aW5ncy5cclxuICAgKiBAcGFyYW0ge01lZXRpbmdbXX0gbWVldGluZ3NcclxuICAgKiBAcmV0dXJuIHtNZWV0aW5nW119XHJcbiAgICogQG1lbWJlcm9mIEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqL1xyXG4gIG1hcE1lZXRpbmdzSW5mb1RvRGF0YVRhYmxlKG1lZXRpbmdzOiBNZWV0aW5nW10pOiBNZWV0aW5nW10ge1xyXG4gICAgbWVldGluZ3M/Lm1hcCgobWVldGluZykgPT4ge1xyXG4gICAgICBtZWV0aW5nLmNhbkRlbGV0ZSA9IHRydWU7XHJcbiAgICAgIG1lZXRpbmcubGVnZW5kQ29sb3IgPSB0aGlzLmdldEV2ZW50T3JNZWV0aW5nTGVnZW5kQ29sb3IobWVldGluZy5zdGF0dXMpO1xyXG4gICAgICBtZWV0aW5nLmNvbnRlbnRVbmRlckxpbmsgPSBtZWV0aW5nLnN0YXR1cztcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG1lZXRpbmdzO1xyXG4gIH1cclxufVxyXG4iXX0=