@po-ui/ng-components 5.22.3 → 5.22.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.
@@ -156,7 +156,7 @@ export class PoMenuComponent extends PoMenuBaseComponent {
156
156
  return menus.some(menu => {
157
157
  const formattedMenuLink = getFormattedLink(menu.link);
158
158
  const menuLinkPath = `${urlPathWithoutLastFragment}${formattedMenuLink.substr(formattedMenuLink.lastIndexOf('/'))}`;
159
- if (menuLinkPath === urlPath) {
159
+ if (menuLinkPath === urlPath && menuLinkPath === formattedMenuLink) {
160
160
  this.linkActive = formattedMenuLink;
161
161
  this.activateMenuItem(menu);
162
162
  return true;
@@ -494,4 +494,4 @@ PoMenuComponent.ctorParameters = () => [
494
494
  PoMenuComponent.propDecorators = {
495
495
  menuHeaderTemplate: [{ type: ContentChild, args: [PoMenuHeaderTemplateDirective, { static: true },] }]
496
496
  };
497
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbWVudS9wby1tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUVaLFVBQVUsRUFHVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUc1RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFbkYsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDL0IsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUZHO0FBTUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEsbUJBQW1CO0lBcUJ0RCxZQUNTLGNBQWlDLEVBQ2hDLE9BQW1CLEVBQ25CLFFBQW1CLEVBQ25CLE1BQWMsRUFDZCxnQkFBb0MsRUFDNUMsaUJBQXNDLEVBQ3RDLFdBQTBCLEVBQzFCLGVBQWtDO1FBRWxDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFUaEQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQXJCOUMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEIsT0FBRSxHQUFHLElBQUksRUFBRSxDQUFDO1FBRVosaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUdoQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxpQkFBWSxHQUFHLElBQUksQ0FBQztJQWlCNUIsQ0FBQztJQUVELElBQVksdUJBQXVCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RDLE9BQU87U0FDUjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzlELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsS0FBd0I7UUFDekQsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLFlBQVksR0FBRyxHQUFHLDBCQUEwQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FDM0UsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUNuQyxFQUFFLENBQUM7Z0JBRUosSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFO29CQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO29CQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3ZEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFlO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFO1lBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUMzQixZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTtRQUNKLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFnQixFQUFFLEVBQUU7WUFDekcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFELElBQUksR0FBRyxZQUFZLGFBQWEsSUFBSSxHQUFHLFlBQVksZ0JBQWdCLEVBQUU7Z0JBQ25FLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztRQUUzRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWpELElBQUksUUFBUSxFQUFFLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRVMsK0JBQStCO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2RixPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVGLENBQUM7SUFFUyxxQkFBcUIsQ0FBQyxrQkFBMkIsS0FBSztRQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFTywyQkFBMkI7UUFDakMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGVBQWUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDckcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBZ0I7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxlQUFlLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQzNDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDN0IsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXdCO1FBQzFDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsY0FBMEI7UUFDM0QsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssZUFBZSxFQUFFO1lBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFnQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxjQUFjLEVBQUU7WUFDbkMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssY0FBYyxFQUFFO1lBQzFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUN0QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFnQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUN2RSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUVqQyxNQUFNLGdCQUFnQixHQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUU3RCxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU3QyxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQWdCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVhLFdBQVcsQ0FBQyxNQUFjOztZQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTNDLElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhO29CQUNyQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzthQUM3QjtRQUNILENBQUM7S0FBQTtJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDckMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEUsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFjO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO2FBQ3JCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUUzQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0csQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFYSxlQUFlLENBQUMsU0FBaUIsRUFBRTs7WUFDL0MsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLGVBQWUsRUFBRTtnQkFDcEMsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhO3FCQUM1QixlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7cUJBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzNHLFNBQVMsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUMzQjtRQUNILENBQUM7S0FBQTtJQUVPLFNBQVMsQ0FBQyxLQUF3QixFQUFFLE1BQWMsRUFBRSxhQUF5QjtRQUNuRixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFOztZQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFakUsSUFBSSxjQUFjLElBQUksU0FBUyxFQUFFO2dCQUMvQixNQUFNLE9BQU8scUJBQVEsSUFBSSxDQUFFLENBQUM7Z0JBRTVCLElBQUksTUFBQSxPQUFPLENBQUMsUUFBUSwwQ0FBRSxNQUFNLEVBQUU7b0JBQzVCLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQztvQkFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzdDO2dCQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDdEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBd0IsRUFBRSxRQUFvQjtRQUMvRCxNQUFNLFNBQVMsR0FBRyxVQUFVLFNBQTRCLEVBQUUsRUFBRTtZQUMxRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDckQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7d0JBQ3hFLE9BQU8sSUFBSSxDQUFDO3FCQUNiO29CQUNELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLEtBQUssRUFBRTt3QkFDVCxPQUFPLEtBQUssQ0FBQztxQkFDZDtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBd0IsRUFBRSxJQUFnQjtRQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLFVBQVUsU0FBNEIsRUFBRSxRQUFRO1lBQ3BFLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFN0MsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssZUFBZSxFQUFFO2dCQUN2QyxNQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMzQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLE9BQU8sYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBd0IsRUFBRSxjQUEwQixFQUFFLGVBQTJCO1FBQzNHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQyxFQUFFO1lBQ3ZELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQWdCO1FBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUNFLElBQUksQ0FBQyxjQUFjO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDaEIsSUFBSSxDQUFDLHVCQUF1QjtZQUM1QixJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUN0RTtZQUNBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVPLDBCQUEwQixDQUNoQyxLQUF3QixFQUN4QixjQUEwQixFQUMxQixlQUEyQjtRQUUzQixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxjQUFjLENBQUMsU0FBcUI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUF3QjtRQUN4QyxnR0FBZ0c7UUFDaEcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUMvRSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsWUFBcUIsS0FBSztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMvQyxJQUFJLENBQUMsZUFBZTtnQkFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMxRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjtRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUM7Z0JBQzNDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUM3QixnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQWtCO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQTlkRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLDg2RkFBdUM7Z0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQzthQUMvQzs7O1lBcEhDLGlCQUFpQjtZQUlqQixVQUFVO1lBR1YsU0FBUztZQUcrQixNQUFNO1lBV3ZDLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGlCQUFpQjs7O2lDQThGdkIsWUFBWSxTQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWRMaW5rLCBpc01vYmlsZSwgb3BlbkV4dGVybmFsTGluaywgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xyXG5cclxuaW1wb3J0IHsgUG9NZW51QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbWVudS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby1tZW51LWhlYWRlci10ZW1wbGF0ZS9wby1tZW51LWhlYWRlci10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb01lbnVJdGVtIH0gZnJvbSAnLi9wby1tZW51LWl0ZW0uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9NZW51SXRlbUZpbHRlcmVkIH0gZnJvbSAnLi9wby1tZW51LWl0ZW0vcG8tbWVudS1pdGVtLWZpbHRlcmVkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvTWVudUl0ZW1zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1pdGVtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9NZW51R2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvTWVudVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XHJcblxyXG5jb25zdCBwb01lbnVEZWJvdW5jZVRpbWUgPSA0MDA7XHJcbmNvbnN0IHBvTWVudU1pbkxlbmd0aCA9IDM7XHJcbmNvbnN0IHBvTWVudVJvb3RMZXZlbCA9IDE7XHJcblxyXG4vKipcclxuICogQGRvY3NFeHRlbmRzIFBvTWVudUJhc2VDb21wb25lbnRcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIEFwYXJlY2UgY29tcGxldG8gZW0gdGVsYXMgY29tIGxhcmd1cmEgbWFpb3IgcXVlIDEyMDBweCwgY2FzbyBjb250csOhcmlvIG8gbWVudSDDqSBlc2NvbmRpZG8gZSBjaGFtYWRvIHBvciBtZWlvIGRlIHVtIGJvdMOjby5cclxuICpcclxuICogTyBtZW51IHRhbWLDqW0gcG9kZSBzZXIgY29sYXBzYWRvLiBFc3NhIG9ww6fDo28gw6kgaGFiaWxpdGFkYSBxdWFuZG8gdG9kb3Mgb3MgaXRlbnMgZGUgcHJpbWVpcm8gbsOtdmVsIHBvc3N1w61yZW0gw61jb25lcyBlIHRleHRvcyBjdXJ0b3MuXHJcbiAqIFNlIGNvbGFwc2Fkbywgc29tZW50ZSBvcyBpdGVucyBkZSBwcmltZWlybyBuw612ZWwgc2Vyw6NvIGV4aWJpZG9zIGUsIGNhc28gbyBpdGVtIHNlbGVjaW9uYWRvIHBvc3N1YSBzdWItbsOtdmVpcyxcclxuICogZW50w6NvIG8gbWVudSBhbHRlcm5hcsOhIG5vdmFtZW50ZSBwYXJhIG8gZXN0YWRvIGFiZXJ0by5cclxuICpcclxuICogRXhpc3RlIGEgcG9zc2liaWxpZGFkZSBkZSBjdXN0b21pemFyIGEgbG9nb21hcmNhLCBxdWUgw6kgZXhpYmlkYSBuYSBwYXJ0ZSBzdXBlcmlvciBkbyBjb21wb25lbnRlLlxyXG4gKlxyXG4gKiBFIHBhcmEgYWRpY2lvbmFyIHVtIGNvbnRlw7pkbyBwZXJzb25hbGl6YWRvIGVudHJlIGEgbG9nb21hcmNhIGUgbyBjYW1wbyBkZSBmaWx0cm8sXHJcbiAqIGJhc3RhIGFkaWNpb25hciBlc3RlIGNvbnRlw7pkbyBjb20gYSBkaXJldGl2YSBbKipwLW1lbnUtaGVhZGVyLXRlbXBsYXRlKipdKC9kb2N1bWVudGF0aW9uL3BvLW1lbnUtaGVhZGVyLXRlbXBsYXRlKS5cclxuICpcclxuICogQ2FzbyB1dGlsaXphciBvIGZpbHRybyBkZSBtZW51cywgw6kgcG9zc8OtdmVsIHJlYWxpemFyIGJ1c2NhcyBlbSBzZXJ2acOnbywgYXBlbmFzIGluZm9ybWFuZG8gYSBVUkwgZG8gc2VydmnDp28gb3UgYSBpbnN0w6JuY2lhIGRlXHJcbiAqIHVtIHNlcnZpw6dvIGN1c3RvbWl6YWRvIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgYFBvTWVudUZpbHRlcmAuXHJcbiAqXHJcbiAqIFBhcmEgbyBtZW51IGZ1bmNpb25hciBjb3JyZXRhbWVudGUgw6kgbmVjZXNzw6FyaW8gaW1wb3J0YXIgbyBgUm91dGVyTW9kdWxlYCBlIGBSb3V0ZXNgIGRvIG3Ds2R1bG8gcHJpbmNpcGFsIGRlXHJcbiAqICBzdWEgYXBsaWNhw6fDo286XHJcbiAqXHJcbiAqIGBgYGBcclxuICogaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4gKlxyXG4gKiAuLi5cclxuICpcclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbXHJcbiAqICAgICBSb3V0ZXJNb2R1bGUsXHJcbiAqICAgICBSb3V0ZXMsXHJcbiAqICAgICAuLi5cclxuICogICAgIFBvTW9kdWxlLFxyXG4gKiAgICAgLi4uXHJcbiAqICAgXSxcclxuICogICBkZWNsYXJhdGlvbnM6IFtcclxuICogICAgIEFwcENvbXBvbmVudFxyXG4gKiAgIF0sXHJcbiAqICAgcHJvdmlkZXJzOiBbXSxcclxuICogICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBBcHBNb2R1bGUgeyB9XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBBbMOpbSBkaXNzbyDDqSBuZWNlc3PDoXJpbyBjcmlhciB1bSBtw7NkdWxvIGNvbmZpZ3VyYW5kbyBhcyByb3RhcyBkYSBhcGxpY2HDp8Ojby5cclxuICpcclxuICogYGBgXHJcbiAqIGltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiAqXHJcbiAqIGltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuICpcclxuICogaW1wb3J0IHsgSGVsbG9Xb3JsZENvbXBvbmVudCB9IGZyb20gJy4vaGVsbG8td29ybGQvaGVsbG8td29ybGQuY29tcG9uZW50JztcclxuICpcclxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXHJcbiAqICAge3BhdGg6ICdoZWxsby13b3JsZCcsIGNvbXBvbmVudDogSGVsbG9Xb3JsZENvbXBvbmVudH1cclxuICogXTtcclxuICpcclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzLCB7dXNlSGFzaDogdHJ1ZX0pXSxcclxuICogICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxyXG4gKiB9KVxyXG4gKiBleHBvcnQgY2xhc3MgQXBwUm91dGluZ01vZHVsZSB7fVxyXG4gKiBgYGBcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtYmFzaWNcIiB0aXRsZT1cIlBPIE1lbnUgQmFzaWNcIj5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtYmFzaWMvc2FtcGxlLXBvLW1lbnUtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1iYXNpYy9zYW1wbGUtcG8tbWVudS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tZW51LWxhYnNcIiB0aXRsZT1cIlBPIE1lbnUgTGFic1wiPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1sYWJzL3NhbXBsZS1wby1tZW51LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1sYWJzL3NhbXBsZS1wby1tZW51LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1odW1hbi1yZXNvdXJjZXNcIiB0aXRsZT1cIlBPIE1lbnUgLSBIdW1hbiBSZXNvdXJjZXNcIj5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbUG9NZW51SXRlbXNTZXJ2aWNlLCBQb01lbnVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9NZW51Q29tcG9uZW50IGV4dGVuZHMgUG9NZW51QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBEb0NoZWNrIHtcclxuICBAQ29udGVudENoaWxkKFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51SGVhZGVyVGVtcGxhdGU6IFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xyXG5cclxuICBhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbTtcclxuICBjb2xsYXBzZWRNb2JpbGU6IGJvb2xlYW47XHJcbiAgZmlsdGVyTG9hZGluZyA9IGZhbHNlO1xyXG4gIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbTtcclxuICBpZCA9IHV1aWQoKTtcclxuICBsaW5rQWN0aXZlOiBzdHJpbmc7XHJcbiAgbW9iaWxlT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdGltZW91dEZpbHRlcjogYW55O1xyXG5cclxuICBwcml2YXRlIGZpbHRlcmluZ0l0ZW1zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtZW51SW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIG1lbnVQcmV2aW91cyA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcbiAgcHJpdmF0ZSBpdGVtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBtZW51SXRlbXNTZXJ2aWNlOiBQb01lbnVJdGVtc1NlcnZpY2UsXHJcbiAgICBtZW51R2xvYmFsU2VydmljZTogUG9NZW51R2xvYmFsU2VydmljZSxcclxuICAgIG1lbnVTZXJ2aWNlOiBQb01lbnVTZXJ2aWNlLFxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWVudUdsb2JhbFNlcnZpY2UsIG1lbnVTZXJ2aWNlLCBsYW5ndWFnZVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaXNBY3RpdmVJdGVtTWVudVN1Yk1lbnUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA+IHRoaXMuZ3JvdXBlZE1lbnVJdGVtWydsZXZlbCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuYWJsZUNvbGxhcHNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQgJiYgIXRoaXMuY29sbGFwc2VkTW9iaWxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuYWJsZUNvbGxhcHNlQnV0dG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgIXRoaXMuY29sbGFwc2VkICYmICF0aGlzLm1vYmlsZU9wZW5lZDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNGb290ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lbmFibGVDb2xsYXBzZUJ1dHRvbiB8fCB0aGlzLmVuYWJsZUNvbGxhcHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQ29sbGFwc2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgdGhpcy5jb2xsYXBzZWQ7XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJpbmdJdGVtcyAmJiB0aGlzLmZpbHRlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWVudUN1cnJlbnQgPSB0aGlzLnN0cmluZ2lmeSh0aGlzLm1lbnVzKTtcclxuXHJcbiAgICBpZiAodGhpcy5tZW51UHJldmlvdXMgIT09IG1lbnVDdXJyZW50IHx8ICF0aGlzLm1lbnVJbml0aWFsaXplZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcclxuICAgICAgdGhpcy52YWxpZGF0ZUNvbGxhcHNlQ2xhc3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5pdGVtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWVudUdsb2JhbFNlcnZpY2Uuc2VuZFJlbW92ZWRBcHBsaWNhdGlvbk1lbnUodGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9NZW51SXRlbSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1JvdXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm1lbnVHbG9iYWxTZXJ2aWNlLnNlbmRBcHBsaWNhdGlvbk1lbnUodGhpcyk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoOiBzdHJpbmcsIG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xyXG4gICAgaWYgKG1lbnVzKSB7XHJcbiAgICAgIGNvbnN0IHVybFBhdGhXaXRob3V0TGFzdEZyYWdtZW50ID0gdXJsUGF0aC5zdWJzdHIoMCwgdXJsUGF0aC5sYXN0SW5kZXhPZignLycpKTtcclxuICAgICAgcmV0dXJuIG1lbnVzLnNvbWUobWVudSA9PiB7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTWVudUxpbmsgPSBnZXRGb3JtYXR0ZWRMaW5rKG1lbnUubGluayk7XHJcbiAgICAgICAgY29uc3QgbWVudUxpbmtQYXRoID0gYCR7dXJsUGF0aFdpdGhvdXRMYXN0RnJhZ21lbnR9JHtmb3JtYXR0ZWRNZW51TGluay5zdWJzdHIoXHJcbiAgICAgICAgICBmb3JtYXR0ZWRNZW51TGluay5sYXN0SW5kZXhPZignLycpXHJcbiAgICAgICAgKX1gO1xyXG5cclxuICAgICAgICBpZiAobWVudUxpbmtQYXRoID09PSB1cmxQYXRoKSB7XHJcbiAgICAgICAgICB0aGlzLmxpbmtBY3RpdmUgPSBmb3JtYXR0ZWRNZW51TGluaztcclxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVNZW51SXRlbShtZW51KTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoLCBtZW51LnN1Ykl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUGF0aDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubGlua0FjdGl2ZSB8fCB0aGlzLmxpbmtBY3RpdmUgIT09IHVybFBhdGgpIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoLCB0aGlzLm1lbnVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIDxhIGlkPVwiY29sYXBzZU1ldGhvZFwiPjwvYT5cclxuICAgKlxyXG4gICAqICpNw6l0b2RvIHBhcmEgY29sYXBzYXIgKHJldHJhaXIpIG8gbWVudS5cclxuICAgKi9cclxuICBjb2xsYXBzZSgpIHtcclxuICAgIHRoaXMudmFsaWRhdGVUb2dnbGVNZW51KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZGVib3VuY2VGaWx0ZXIoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRGaWx0ZXIpO1xyXG5cclxuICAgIHRoaXMudGltZW91dEZpbHRlciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclByb2Nlc3MoZmlsdGVyKTtcclxuICAgIH0sIHBvTWVudURlYm91bmNlVGltZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiA8YSBpZD1cImV4cGFuZE1ldGhvZFwiPjwvYT5cclxuICAgKlxyXG4gICAqICpNw6l0b2RvIHBhcmEgZXhwYW5kaXIgKGF1bWVudGFyKSBvIG1lbnUuXHJcbiAgICovXHJcbiAgZXhwYW5kKCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZVRvZ2dsZU1lbnUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlVG9NZW51SXRlbSgpIHtcclxuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbiA9IHRoaXMubWVudUl0ZW1zU2VydmljZS5yZWNlaXZlRnJvbUNoaWxkTWVudUNsaWNrZWQoKS5zdWJzY3JpYmUoKG1lbnU6IFBvTWVudUl0ZW0pID0+IHtcclxuICAgICAgdGhpcy5jbGlja01lbnVJdGVtKG1lbnUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVUb1JvdXRlKCkge1xyXG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgdmFsIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xyXG4gICAgICAgIGNvbnN0IHVybFJvdXRlciA9IHRoaXMuY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUm91dGVyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiA8YSBpZD1cInRvZ2dsZU1ldGhvZFwiPjwvYT5cclxuICAgKiAqTcOpdG9kbyBxdWUgY29sYXBzYSBlIGV4cGFuZGUgbyBtZW51IGFsdGVybmFkYW1lbnRlLlxyXG4gICAqXHJcbiAgICogPiAqT3MgbcOpdG9kb3MgYXBlbmFzIHbDo28gY29sYXBzYXIvZXhwYW5kaXIgbyBtZW51IHNlOlxyXG4gICAqICAtIFRvZG9zIG9zIGl0ZW5zIGRlIG1lbnUgdGl2ZXJlbSB2YWxvciBuYXMgcHJvcHJpZWRhZGVzIGBpY29uYCBlIGBzaG9ydExhYmVsYC5cclxuICAgKi9cclxuICB0b2dnbGUoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlVG9nZ2xlTWVudSghdGhpcy5jb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudU1vYmlsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9iaWxlT3BlbmVkID0gIXRoaXMubW9iaWxlT3BlbmVkO1xyXG4gICAgdGhpcy5jb2xsYXBzZWRNb2JpbGUgPSB0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLm1vYmlsZU9wZW5lZDtcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XHJcblxyXG4gICAgaWYgKGlzTW9iaWxlKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZVJlc2l6ZUxpc3RlbmVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpIHtcclxuICAgIGNvbnN0IGNoaWxkcmVuUHJpbWFyeSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCkucm9vdC5jaGlsZHJlblsncHJpbWFyeSddO1xyXG5cclxuICAgIHJldHVybiBjaGlsZHJlblByaW1hcnkgPyBgLyR7Y2hpbGRyZW5QcmltYXJ5LnNlZ21lbnRzLm1hcChpdCA9PiBpdC5wYXRoKS5qb2luKCcvJyl9YCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRlQ29sbGFwc2VDbGFzcyhjb2xsYXBzZWRNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICB0aGlzLnJlbmRlcmVyW3RoaXMuaXNDb2xsYXBzZWQgJiYgIWNvbGxhcHNlZE1vYmlsZSA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSh3cmFwcGVyLCAncG8tY29sbGFwc2VkLW1lbnUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGVDb2xsYXBzZVN1Yk1lbnVJdGVtKCkge1xyXG4gICAgdGhpcy5jbGVhckdyb3VwTWVudUlmRmlyc3RMZXZlbCh0aGlzLmFjdGl2ZU1lbnVJdGVtKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29sbGFwc2VkICYmIHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwgJiYgdGhpcy5pc0FjdGl2ZUl0ZW1NZW51U3ViTWVudSkge1xyXG4gICAgICB0aGlzLm9wZW5QYXJlbnRNZW51KHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZU1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSBtZW51O1xyXG4gICAgdGhpcy5saW5rQWN0aXZlID0gbWVudS5saW5rO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpIHtcclxuICAgICAgdGhpcy5vcGVuUGFyZW50TWVudSh0aGlzLmFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHtcclxuICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLFxyXG4gICAgICBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSxcclxuICAgICAgYWN0aXZhdGVkQnlSb3V0ZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFyZVN1Yk1lbnVzKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xyXG4gICAgcmV0dXJuIG1lbnVzLmV2ZXJ5KG1lbnUgPT4gbWVudVsnbGV2ZWwnXSA+IHBvTWVudVJvb3RMZXZlbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyR3JvdXBNZW51SWZGaXJzdExldmVsKGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtKSB7XHJcbiAgICBpZiAoYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPT09IHBvTWVudVJvb3RMZXZlbCkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xpY2tNZW51SXRlbShtZW51OiBQb01lbnVJdGVtKSB7XHJcbiAgICBpZiAobWVudS5hY3Rpb24pIHtcclxuICAgICAgdGhpcy5leGVjdXRlTWVudUFjdGlvbihtZW51KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWVudVsndHlwZSddID09PSAnZXh0ZXJuYWxMaW5rJykge1xyXG4gICAgICBvcGVuRXh0ZXJuYWxMaW5rKG1lbnUubGluayk7XHJcbiAgICB9IGVsc2UgaWYgKG1lbnVbJ3R5cGUnXSA9PT0gJ2ludGVybmFsTGluaycpIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKG1lbnUpO1xyXG4gICAgfSBlbHNlIGlmIChtZW51Wyd0eXBlJ10gPT09ICdzdWJJdGVtcycpIHtcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyaW5nSXRlbXMpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ3JvdXBNZW51SXRlbShtZW51KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWVudVsndHlwZSddICE9PSAnc3ViSXRlbXMnKSB7XHJcbiAgICAgIHRoaXMubW9iaWxlT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRUb01lbnVJdGVtRmlsdGVyZWQobWVudUl0ZW06IGFueSA9IHsgbGFiZWw6ICcnLCBsaW5rOiAnJyB9KTogUG9NZW51SXRlbUZpbHRlcmVkIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIGxpbmsgfSA9IG1lbnVJdGVtO1xyXG5cclxuICAgIGNvbnN0IG1lbnVJdGVtRmlsdGVyZWQ6IFBvTWVudUl0ZW1GaWx0ZXJlZCA9IHsgbGFiZWwsIGxpbmsgfTtcclxuXHJcbiAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbUZpbHRlcmVkKTtcclxuXHJcbiAgICByZXR1cm4gbWVudUl0ZW1GaWx0ZXJlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudG9nZ2xlUmVzaXplKCk7XHJcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlTWVudUFjdGlvbihtZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XHJcbiAgICBtZW51LmFjdGlvbihtZW51KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsdGVySXRlbXMoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyaW1GaWx0ZXIgPSBmaWx0ZXIgJiYgZmlsdGVyLnRyaW0oKTtcclxuXHJcbiAgICBpZiAodHJpbUZpbHRlcikge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcclxuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5maWx0ZXJTZXJ2aWNlXHJcbiAgICAgICAgPyBhd2FpdCB0aGlzLmZpbHRlck9uU2VydmljZSh0cmltRmlsdGVyKVxyXG4gICAgICAgIDogdGhpcy5maWx0ZXJMb2NhbEl0ZW1zKHRyaW1GaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLm1lbnVzXTtcclxuICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMb2NhbEl0ZW1zKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gW107XHJcblxyXG4gICAgdGhpcy5maW5kSXRlbXModGhpcy5tZW51cywgZmlsdGVyLnRvTG93ZXJDYXNlKCksIGZpbHRlcmVkSXRlbXMpO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJQcm9jZXNzKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbHRlckxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZmlsdGVySXRlbXMoZmlsdGVyKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd05vRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHsgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSB9KTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJPblNlcnZpY2Uoc2VhcmNoOiBzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKHNlYXJjaC5sZW5ndGggPj0gcG9NZW51TWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2VcclxuICAgICAgICAuZ2V0RmlsdGVyZWREYXRhKHNlYXJjaCwgdGhpcy5wYXJhbXMpXHJcbiAgICAgICAgLnBpcGUobWFwKG1lbnVJdGVtc0ZpbHRlcmVkID0+IG1lbnVJdGVtc0ZpbHRlcmVkLm1hcChtZW51SXRlbSA9PiB0aGlzLmNvbnZlcnRUb01lbnVJdGVtRmlsdGVyZWQobWVudUl0ZW0pKSkpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEl0ZW1zKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPiwgZmlsdGVyOiBzdHJpbmcsIGZpbHRlcmVkSXRlbXM6IEFycmF5PGFueT4pIHtcclxuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XHJcbiAgICAgIGNvbnN0IGhhc0FjdGlvbiA9IG1lbnUuYWN0aW9uIHx8IG1lbnUubGluaztcclxuICAgICAgY29uc3QgbGFiZWxIYXNGaWx0ZXIgPSBtZW51LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyKTtcclxuXHJcbiAgICAgIGlmIChsYWJlbEhhc0ZpbHRlciAmJiBoYXNBY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBuZXdNZW51ID0geyAuLi5tZW51IH07XHJcblxyXG4gICAgICAgIGlmIChuZXdNZW51LnN1Ykl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGRlbGV0ZSBuZXdNZW51LnN1Ykl0ZW1zO1xyXG4gICAgICAgICAgbmV3TWVudVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShuZXdNZW51KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZpbHRlcmVkSXRlbXMucHVzaChuZXdNZW51KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG1lbnUuc3ViSXRlbXMpIHtcclxuICAgICAgICB0aGlzLmZpbmRJdGVtcyhtZW51LnN1Ykl0ZW1zLCBmaWx0ZXIsIGZpbHRlcmVkSXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnVJdGVtOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XHJcbiAgICBjb25zdCBnZXRQYXJlbnQgPSBmdW5jdGlvbiAobWVudUl0ZW1zOiBBcnJheTxQb01lbnVJdGVtPiwgaWQpIHtcclxuICAgICAgaWYgKG1lbnVJdGVtcykge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtZW51SXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBtZW51ID0gbWVudUl0ZW1zW2luZGV4XTtcclxuICAgICAgICAgIGlmIChtZW51LnN1Ykl0ZW1zICYmIG1lbnUuc3ViSXRlbXMuZmluZChzdWJJdGVtID0+IHN1Ykl0ZW1bJ2lkJ10gPT09IGlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbWVudTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZ2V0UGFyZW50KG1lbnUuc3ViSXRlbXMsIGlkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGdldFBhcmVudChtZW51cywgbWVudUl0ZW1bJ2lkJ10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kUm9vdFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnU6IFBvTWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcclxuICAgIGNvbnN0IGZpbmRQYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQ7XHJcblxyXG4gICAgY29uc3QgZ2V0Um9vdFBhcmVudCA9IGZ1bmN0aW9uIChtZW51SXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xyXG4gICAgICBsZXQgcGFyZW50ID0gZmluZFBhcmVudChtZW51SXRlbXMsIG1lbnVJdGVtKTtcclxuXHJcbiAgICAgIGlmIChwYXJlbnRbJ2xldmVsJ10gIT09IHBvTWVudVJvb3RMZXZlbCkge1xyXG4gICAgICAgIHBhcmVudCA9IGdldFJvb3RQYXJlbnQobWVudUl0ZW1zLCBwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGdldFJvb3RQYXJlbnQobWVudXMsIG1lbnUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY3RpdmVNZW51UGFyZW50KG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPiwgYWN0aXZlTWVudUl0ZW06IFBvTWVudUl0ZW0sIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbSkge1xyXG4gICAgaWYgKHRoaXMuYXJlU3ViTWVudXMoW2dyb3VwZWRNZW51SXRlbSwgYWN0aXZlTWVudUl0ZW1dKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maW5kUm9vdFBhcmVudChtZW51cywgYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBncm91cE1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZU1lbnVDb2xsYXBzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVbJ2lzT3BlbmVkJ10gPSAhbWVudVsnaXNPcGVuZWQnXTtcclxuICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbWVudTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gJiZcclxuICAgICAgbWVudVsnaXNPcGVuZWQnXSAmJlxyXG4gICAgICB0aGlzLmlzQWN0aXZlSXRlbU1lbnVTdWJNZW51ICYmXHJcbiAgICAgIHRoaXMuaXNSb290TWVudUVxdWFsR3JvdXBlZE1lbnUodGhpcy5tZW51cywgdGhpcy5hY3RpdmVNZW51SXRlbSwgbWVudSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0odGhpcy5hY3RpdmVNZW51SXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoeyBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1Jvb3RNZW51RXF1YWxHcm91cGVkTWVudShcclxuICAgIG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPixcclxuICAgIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtLFxyXG4gICAgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtXHJcbiAgKSB7XHJcbiAgICBjb25zdCBhY3RpdmVNZW51Um9vdFBhcmVudCA9IHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIHJldHVybiBhY3RpdmVNZW51Um9vdFBhcmVudFsnaWQnXSA9PT0gZ3JvdXBlZE1lbnVJdGVtWydpZCddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuUGFyZW50TWVudShjaGlsZE1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudCh0aGlzLm1lbnVzLCBjaGlsZE1lbnUpO1xyXG4gICAgcGFyZW50Wydpc09wZW5lZCddID0gdHJ1ZTtcclxuICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93Tm9EYXRhKCkge1xyXG4gICAgdGhpcy5ub0RhdGEgPSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdHJpbmdpZnkobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KTogc3RyaW5nIHtcclxuICAgIC8vIG7Do28gZmF6IG8gc3RyaW5naWZ5IGRhIHByb3ByaWVkYWRlIGljb24sIHBvaXMgcG9kZSBjb250ZXIgb2JqZXRvIGNvbXBsZXhvIGUgZGlzcGFyYXIgdW0gZXJyby5cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLm1lbnVzLCAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoa2V5ICE9PSAnaWNvbicpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVHcm91cGVkTWVudUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbVsnaXNPcGVuZWQnXSA9ICF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFsbG93Q29sbGFwc2VNZW51O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gY29sbGFwc2VkO1xyXG5cclxuICAgIGlmICh0aGlzLmdyb3VwZWRNZW51SXRlbSAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID1cclxuICAgICAgICB0aGlzLmdldEFjdGl2ZU1lbnVQYXJlbnQodGhpcy5tZW51cywgdGhpcy5hY3RpdmVNZW51SXRlbSwgdGhpcy5ncm91cGVkTWVudUl0ZW0pIHx8IHRoaXMuZ3JvdXBlZE1lbnVJdGVtO1xyXG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVDb2xsYXBzZVN1Yk1lbnVJdGVtKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHtcclxuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sXHJcbiAgICAgICAgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0sXHJcbiAgICAgICAgYWN0aXZhdGVkQnlSb3V0ZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubW9iaWxlT3BlbmVkKSB7XHJcbiAgICAgIHRoaXMubW9iaWxlT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVDb2xsYXBzZUNsYXNzKHRoaXMuY29sbGFwc2VkTW9iaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVUb2dnbGVNZW51KGNvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmFsbG93Q29sbGFwc2VNZW51KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRvZ2dsZU1lbnVDb2xsYXBzZShjb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVNZW51KCkge1xyXG4gICAgdGhpcy5tZW51SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRNZW51RXh0cmFQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5tZW51c107XHJcbiAgICB0aGlzLm1lbnVQcmV2aW91cyA9IHRoaXMuc3RyaW5naWZ5KHRoaXMubWVudXMpO1xyXG4gICAgdGhpcy52YWxpZGF0ZU1lbnVzKHRoaXMubWVudXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
497
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbWVudS9wby1tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUVaLFVBQVUsRUFHVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUc1RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFbkYsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDL0IsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUZHO0FB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R0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7WUE5ZEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxTQUFTO2dCQUNuQiw4NkZBQXVDO2dCQUN2QyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUM7YUFDL0M7OztZQXBIQyxpQkFBaUI7WUFJakIsVUFBVTtZQUdWLFNBQVM7WUFHK0IsTUFBTTtZQVd2QyxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixpQkFBaUI7OztpQ0E4RnZCLFlBQVksU0FBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBEb0NoZWNrLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkTGluaywgaXNNb2JpbGUsIG9wZW5FeHRlcm5hbExpbmssIHV1aWQgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcclxuXHJcbmltcG9ydCB7IFBvTWVudUJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLW1lbnUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb01lbnVIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tbWVudS1oZWFkZXItdGVtcGxhdGUvcG8tbWVudS1oZWFkZXItdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUG9NZW51SXRlbSB9IGZyb20gJy4vcG8tbWVudS1pdGVtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvTWVudUl0ZW1GaWx0ZXJlZCB9IGZyb20gJy4vcG8tbWVudS1pdGVtL3BvLW1lbnUtaXRlbS1maWx0ZXJlZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQb01lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtaXRlbXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvTWVudUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb01lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgcG9NZW51RGVib3VuY2VUaW1lID0gNDAwO1xyXG5jb25zdCBwb01lbnVNaW5MZW5ndGggPSAzO1xyXG5jb25zdCBwb01lbnVSb290TGV2ZWwgPSAxO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzRXh0ZW5kcyBQb01lbnVCYXNlQ29tcG9uZW50XHJcbiAqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBBcGFyZWNlIGNvbXBsZXRvIGVtIHRlbGFzIGNvbSBsYXJndXJhIG1haW9yIHF1ZSAxMjAwcHgsIGNhc28gY29udHLDoXJpbyBvIG1lbnUgw6kgZXNjb25kaWRvIGUgY2hhbWFkbyBwb3IgbWVpbyBkZSB1bSBib3TDo28uXHJcbiAqXHJcbiAqIE8gbWVudSB0YW1iw6ltIHBvZGUgc2VyIGNvbGFwc2Fkby4gRXNzYSBvcMOnw6NvIMOpIGhhYmlsaXRhZGEgcXVhbmRvIHRvZG9zIG9zIGl0ZW5zIGRlIHByaW1laXJvIG7DrXZlbCBwb3NzdcOtcmVtIMOtY29uZXMgZSB0ZXh0b3MgY3VydG9zLlxyXG4gKiBTZSBjb2xhcHNhZG8sIHNvbWVudGUgb3MgaXRlbnMgZGUgcHJpbWVpcm8gbsOtdmVsIHNlcsOjbyBleGliaWRvcyBlLCBjYXNvIG8gaXRlbSBzZWxlY2lvbmFkbyBwb3NzdWEgc3ViLW7DrXZlaXMsXHJcbiAqIGVudMOjbyBvIG1lbnUgYWx0ZXJuYXLDoSBub3ZhbWVudGUgcGFyYSBvIGVzdGFkbyBhYmVydG8uXHJcbiAqXHJcbiAqIEV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgY3VzdG9taXphciBhIGxvZ29tYXJjYSwgcXVlIMOpIGV4aWJpZGEgbmEgcGFydGUgc3VwZXJpb3IgZG8gY29tcG9uZW50ZS5cclxuICpcclxuICogRSBwYXJhIGFkaWNpb25hciB1bSBjb250ZcO6ZG8gcGVyc29uYWxpemFkbyBlbnRyZSBhIGxvZ29tYXJjYSBlIG8gY2FtcG8gZGUgZmlsdHJvLFxyXG4gKiBiYXN0YSBhZGljaW9uYXIgZXN0ZSBjb250ZcO6ZG8gY29tIGEgZGlyZXRpdmEgWyoqcC1tZW51LWhlYWRlci10ZW1wbGF0ZSoqXSgvZG9jdW1lbnRhdGlvbi9wby1tZW51LWhlYWRlci10ZW1wbGF0ZSkuXHJcbiAqXHJcbiAqIENhc28gdXRpbGl6YXIgbyBmaWx0cm8gZGUgbWVudXMsIMOpIHBvc3PDrXZlbCByZWFsaXphciBidXNjYXMgZW0gc2VydmnDp28sIGFwZW5hcyBpbmZvcm1hbmRvIGEgVVJMIGRvIHNlcnZpw6dvIG91IGEgaW5zdMOibmNpYSBkZVxyXG4gKiB1bSBzZXJ2acOnbyBjdXN0b21pemFkbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb01lbnVGaWx0ZXJgLlxyXG4gKlxyXG4gKiBQYXJhIG8gbWVudSBmdW5jaW9uYXIgY29ycmV0YW1lbnRlIMOpIG5lY2Vzc8OhcmlvIGltcG9ydGFyIG8gYFJvdXRlck1vZHVsZWAgZSBgUm91dGVzYCBkbyBtw7NkdWxvIHByaW5jaXBhbCBkZVxyXG4gKiAgc3VhIGFwbGljYcOnw6NvOlxyXG4gKlxyXG4gKiBgYGBgXHJcbiAqIGltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuICpcclxuICogLi4uXHJcbiAqXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqICAgaW1wb3J0czogW1xyXG4gKiAgICAgUm91dGVyTW9kdWxlLFxyXG4gKiAgICAgUm91dGVzLFxyXG4gKiAgICAgLi4uXHJcbiAqICAgICBQb01vZHVsZSxcclxuICogICAgIC4uLlxyXG4gKiAgIF0sXHJcbiAqICAgZGVjbGFyYXRpb25zOiBbXHJcbiAqICAgICBBcHBDb21wb25lbnRcclxuICogICBdLFxyXG4gKiAgIHByb3ZpZGVyczogW10sXHJcbiAqICAgYm9vdHN0cmFwOiBbQXBwQ29tcG9uZW50XVxyXG4gKiB9KVxyXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICpcclxuICogQWzDqW0gZGlzc28gw6kgbmVjZXNzw6FyaW8gY3JpYXIgdW0gbcOzZHVsbyBjb25maWd1cmFuZG8gYXMgcm90YXMgZGEgYXBsaWNhw6fDo28uXHJcbiAqXHJcbiAqIGBgYFxyXG4gKiBpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4gKlxyXG4gKiBpbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbiAqXHJcbiAqIGltcG9ydCB7IEhlbGxvV29ybGRDb21wb25lbnQgfSBmcm9tICcuL2hlbGxvLXdvcmxkL2hlbGxvLXdvcmxkLmNvbXBvbmVudCc7XHJcbiAqXHJcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gKiAgIHtwYXRoOiAnaGVsbG8td29ybGQnLCBjb21wb25lbnQ6IEhlbGxvV29ybGRDb21wb25lbnR9XHJcbiAqIF07XHJcbiAqXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqICAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JSb290KHJvdXRlcywge3VzZUhhc2g6IHRydWV9KV0sXHJcbiAqICAgZXhwb3J0czogW1JvdXRlck1vZHVsZV1cclxuICogfSlcclxuICogZXhwb3J0IGNsYXNzIEFwcFJvdXRpbmdNb2R1bGUge31cclxuICogYGBgXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1tZW51LWJhc2ljXCIgdGl0bGU9XCJQTyBNZW51IEJhc2ljXCI+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWJhc2ljL3NhbXBsZS1wby1tZW51LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtYmFzaWMvc2FtcGxlLXBvLW1lbnUtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1sYWJzXCIgdGl0bGU9XCJQTyBNZW51IExhYnNcIj5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtbGFicy9zYW1wbGUtcG8tbWVudS1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtbGFicy9zYW1wbGUtcG8tbWVudS1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzXCIgdGl0bGU9XCJQTyBNZW51IC0gSHVtYW4gUmVzb3VyY2VzXCI+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuc2VydmljZS50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncG8tbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1BvTWVudUl0ZW1zU2VydmljZSwgUG9NZW51U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBvTWVudUNvbXBvbmVudCBleHRlbmRzIFBvTWVudUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgRG9DaGVjayB7XHJcbiAgQENvbnRlbnRDaGlsZChQb01lbnVIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgbWVudUhlYWRlclRlbXBsYXRlOiBQb01lbnVIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZTtcclxuXHJcbiAgYWN0aXZlTWVudUl0ZW06IFBvTWVudUl0ZW07XHJcbiAgY29sbGFwc2VkTW9iaWxlOiBib29sZWFuO1xyXG4gIGZpbHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICBncm91cGVkTWVudUl0ZW06IFBvTWVudUl0ZW07XHJcbiAgaWQgPSB1dWlkKCk7XHJcbiAgbGlua0FjdGl2ZTogc3RyaW5nO1xyXG4gIG1vYmlsZU9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRpbWVvdXRGaWx0ZXI6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJpbmdJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbWVudUluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBtZW51UHJldmlvdXMgPSBudWxsO1xyXG4gIHByaXZhdGUgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XHJcblxyXG4gIHByaXZhdGUgaXRlbVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWVudUl0ZW1zU2VydmljZTogUG9NZW51SXRlbXNTZXJ2aWNlLFxyXG4gICAgbWVudUdsb2JhbFNlcnZpY2U6IFBvTWVudUdsb2JhbFNlcnZpY2UsXHJcbiAgICBtZW51U2VydmljZTogUG9NZW51U2VydmljZSxcclxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKG1lbnVHbG9iYWxTZXJ2aWNlLCBtZW51U2VydmljZSwgbGFuZ3VhZ2VTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGlzQWN0aXZlSXRlbU1lbnVTdWJNZW51KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiB0aGlzLmdyb3VwZWRNZW51SXRlbVsnbGV2ZWwnXTtcclxuICB9XHJcblxyXG4gIGdldCBlbmFibGVDb2xsYXBzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ29sbGFwc2VkICYmICF0aGlzLmNvbGxhcHNlZE1vYmlsZTtcclxuICB9XHJcblxyXG4gIGdldCBlbmFibGVDb2xsYXBzZUJ1dHRvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmFsbG93Q29sbGFwc2VNZW51ICYmICF0aGlzLmNvbGxhcHNlZCAmJiAhdGhpcy5tb2JpbGVPcGVuZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzRm9vdGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlQ29sbGFwc2VCdXR0b24gfHwgdGhpcy5lbmFibGVDb2xsYXBzZTtcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxhcHNlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFsbG93Q29sbGFwc2VNZW51ICYmIHRoaXMuY29sbGFwc2VkO1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCkge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyaW5nSXRlbXMgJiYgdGhpcy5maWx0ZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lbnVDdXJyZW50ID0gdGhpcy5zdHJpbmdpZnkodGhpcy5tZW51cyk7XHJcblxyXG4gICAgaWYgKHRoaXMubWVudVByZXZpb3VzICE9PSBtZW51Q3VycmVudCB8fCAhdGhpcy5tZW51SW5pdGlhbGl6ZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVNZW51KCk7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVDb2xsYXBzZUNsYXNzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1lbnVHbG9iYWxTZXJ2aWNlLnNlbmRSZW1vdmVkQXBwbGljYXRpb25NZW51KHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvTWVudUl0ZW0oKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9Sb3V0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5tZW51R2xvYmFsU2VydmljZS5zZW5kQXBwbGljYXRpb25NZW51KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVNZW51QnlVcmwodXJsUGF0aDogc3RyaW5nLCBtZW51czogQXJyYXk8UG9NZW51SXRlbT4pIHtcclxuICAgIGlmIChtZW51cykge1xyXG4gICAgICBjb25zdCB1cmxQYXRoV2l0aG91dExhc3RGcmFnbWVudCA9IHVybFBhdGguc3Vic3RyKDAsIHVybFBhdGgubGFzdEluZGV4T2YoJy8nKSk7XHJcbiAgICAgIHJldHVybiBtZW51cy5zb21lKG1lbnUgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE1lbnVMaW5rID0gZ2V0Rm9ybWF0dGVkTGluayhtZW51LmxpbmspO1xyXG4gICAgICAgIGNvbnN0IG1lbnVMaW5rUGF0aCA9IGAke3VybFBhdGhXaXRob3V0TGFzdEZyYWdtZW50fSR7Zm9ybWF0dGVkTWVudUxpbmsuc3Vic3RyKFxyXG4gICAgICAgICAgZm9ybWF0dGVkTWVudUxpbmsubGFzdEluZGV4T2YoJy8nKVxyXG4gICAgICAgICl9YDtcclxuXHJcbiAgICAgICAgaWYgKG1lbnVMaW5rUGF0aCA9PT0gdXJsUGF0aCAmJiBtZW51TGlua1BhdGggPT09IGZvcm1hdHRlZE1lbnVMaW5rKSB7XHJcbiAgICAgICAgICB0aGlzLmxpbmtBY3RpdmUgPSBmb3JtYXR0ZWRNZW51TGluaztcclxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVNZW51SXRlbShtZW51KTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoLCBtZW51LnN1Ykl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUGF0aDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubGlua0FjdGl2ZSB8fCB0aGlzLmxpbmtBY3RpdmUgIT09IHVybFBhdGgpIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoLCB0aGlzLm1lbnVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIDxhIGlkPVwiY29sYXBzZU1ldGhvZFwiPjwvYT5cclxuICAgKlxyXG4gICAqICpNw6l0b2RvIHBhcmEgY29sYXBzYXIgKHJldHJhaXIpIG8gbWVudS5cclxuICAgKi9cclxuICBjb2xsYXBzZSgpIHtcclxuICAgIHRoaXMudmFsaWRhdGVUb2dnbGVNZW51KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZGVib3VuY2VGaWx0ZXIoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRGaWx0ZXIpO1xyXG5cclxuICAgIHRoaXMudGltZW91dEZpbHRlciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclByb2Nlc3MoZmlsdGVyKTtcclxuICAgIH0sIHBvTWVudURlYm91bmNlVGltZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiA8YSBpZD1cImV4cGFuZE1ldGhvZFwiPjwvYT5cclxuICAgKlxyXG4gICAqICpNw6l0b2RvIHBhcmEgZXhwYW5kaXIgKGF1bWVudGFyKSBvIG1lbnUuXHJcbiAgICovXHJcbiAgZXhwYW5kKCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZVRvZ2dsZU1lbnUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlVG9NZW51SXRlbSgpIHtcclxuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbiA9IHRoaXMubWVudUl0ZW1zU2VydmljZS5yZWNlaXZlRnJvbUNoaWxkTWVudUNsaWNrZWQoKS5zdWJzY3JpYmUoKG1lbnU6IFBvTWVudUl0ZW0pID0+IHtcclxuICAgICAgdGhpcy5jbGlja01lbnVJdGVtKG1lbnUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVUb1JvdXRlKCkge1xyXG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgdmFsIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xyXG4gICAgICAgIGNvbnN0IHVybFJvdXRlciA9IHRoaXMuY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVNZW51QnlVcmwodXJsUm91dGVyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiA8YSBpZD1cInRvZ2dsZU1ldGhvZFwiPjwvYT5cclxuICAgKiAqTcOpdG9kbyBxdWUgY29sYXBzYSBlIGV4cGFuZGUgbyBtZW51IGFsdGVybmFkYW1lbnRlLlxyXG4gICAqXHJcbiAgICogPiAqT3MgbcOpdG9kb3MgYXBlbmFzIHbDo28gY29sYXBzYXIvZXhwYW5kaXIgbyBtZW51IHNlOlxyXG4gICAqICAtIFRvZG9zIG9zIGl0ZW5zIGRlIG1lbnUgdGl2ZXJlbSB2YWxvciBuYXMgcHJvcHJpZWRhZGVzIGBpY29uYCBlIGBzaG9ydExhYmVsYC5cclxuICAgKi9cclxuICB0b2dnbGUoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlVG9nZ2xlTWVudSghdGhpcy5jb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudU1vYmlsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9iaWxlT3BlbmVkID0gIXRoaXMubW9iaWxlT3BlbmVkO1xyXG4gICAgdGhpcy5jb2xsYXBzZWRNb2JpbGUgPSB0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLm1vYmlsZU9wZW5lZDtcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XHJcblxyXG4gICAgaWYgKGlzTW9iaWxlKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZVJlc2l6ZUxpc3RlbmVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpIHtcclxuICAgIGNvbnN0IGNoaWxkcmVuUHJpbWFyeSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCkucm9vdC5jaGlsZHJlblsncHJpbWFyeSddO1xyXG5cclxuICAgIHJldHVybiBjaGlsZHJlblByaW1hcnkgPyBgLyR7Y2hpbGRyZW5QcmltYXJ5LnNlZ21lbnRzLm1hcChpdCA9PiBpdC5wYXRoKS5qb2luKCcvJyl9YCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRlQ29sbGFwc2VDbGFzcyhjb2xsYXBzZWRNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICB0aGlzLnJlbmRlcmVyW3RoaXMuaXNDb2xsYXBzZWQgJiYgIWNvbGxhcHNlZE1vYmlsZSA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSh3cmFwcGVyLCAncG8tY29sbGFwc2VkLW1lbnUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGVDb2xsYXBzZVN1Yk1lbnVJdGVtKCkge1xyXG4gICAgdGhpcy5jbGVhckdyb3VwTWVudUlmRmlyc3RMZXZlbCh0aGlzLmFjdGl2ZU1lbnVJdGVtKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29sbGFwc2VkICYmIHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwgJiYgdGhpcy5pc0FjdGl2ZUl0ZW1NZW51U3ViTWVudSkge1xyXG4gICAgICB0aGlzLm9wZW5QYXJlbnRNZW51KHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZU1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSBtZW51O1xyXG4gICAgdGhpcy5saW5rQWN0aXZlID0gbWVudS5saW5rO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpIHtcclxuICAgICAgdGhpcy5vcGVuUGFyZW50TWVudSh0aGlzLmFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHtcclxuICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLFxyXG4gICAgICBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSxcclxuICAgICAgYWN0aXZhdGVkQnlSb3V0ZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFyZVN1Yk1lbnVzKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xyXG4gICAgcmV0dXJuIG1lbnVzLmV2ZXJ5KG1lbnUgPT4gbWVudVsnbGV2ZWwnXSA+IHBvTWVudVJvb3RMZXZlbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyR3JvdXBNZW51SWZGaXJzdExldmVsKGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtKSB7XHJcbiAgICBpZiAoYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPT09IHBvTWVudVJvb3RMZXZlbCkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xpY2tNZW51SXRlbShtZW51OiBQb01lbnVJdGVtKSB7XHJcbiAgICBpZiAobWVudS5hY3Rpb24pIHtcclxuICAgICAgdGhpcy5leGVjdXRlTWVudUFjdGlvbihtZW51KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWVudVsndHlwZSddID09PSAnZXh0ZXJuYWxMaW5rJykge1xyXG4gICAgICBvcGVuRXh0ZXJuYWxMaW5rKG1lbnUubGluayk7XHJcbiAgICB9IGVsc2UgaWYgKG1lbnVbJ3R5cGUnXSA9PT0gJ2ludGVybmFsTGluaycpIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKG1lbnUpO1xyXG4gICAgfSBlbHNlIGlmIChtZW51Wyd0eXBlJ10gPT09ICdzdWJJdGVtcycpIHtcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyaW5nSXRlbXMpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ3JvdXBNZW51SXRlbShtZW51KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWVudVsndHlwZSddICE9PSAnc3ViSXRlbXMnKSB7XHJcbiAgICAgIHRoaXMubW9iaWxlT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRUb01lbnVJdGVtRmlsdGVyZWQobWVudUl0ZW06IGFueSA9IHsgbGFiZWw6ICcnLCBsaW5rOiAnJyB9KTogUG9NZW51SXRlbUZpbHRlcmVkIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIGxpbmsgfSA9IG1lbnVJdGVtO1xyXG5cclxuICAgIGNvbnN0IG1lbnVJdGVtRmlsdGVyZWQ6IFBvTWVudUl0ZW1GaWx0ZXJlZCA9IHsgbGFiZWwsIGxpbmsgfTtcclxuXHJcbiAgICB0aGlzLnNldE1lbnVJdGVtUHJvcGVydGllcyhtZW51SXRlbUZpbHRlcmVkKTtcclxuXHJcbiAgICByZXR1cm4gbWVudUl0ZW1GaWx0ZXJlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudG9nZ2xlUmVzaXplKCk7XHJcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlTWVudUFjdGlvbihtZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XHJcbiAgICBtZW51LmFjdGlvbihtZW51KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsdGVySXRlbXMoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRyaW1GaWx0ZXIgPSBmaWx0ZXIgJiYgZmlsdGVyLnRyaW0oKTtcclxuXHJcbiAgICBpZiAodHJpbUZpbHRlcikge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcclxuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5maWx0ZXJTZXJ2aWNlXHJcbiAgICAgICAgPyBhd2FpdCB0aGlzLmZpbHRlck9uU2VydmljZSh0cmltRmlsdGVyKVxyXG4gICAgICAgIDogdGhpcy5maWx0ZXJMb2NhbEl0ZW1zKHRyaW1GaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLm1lbnVzXTtcclxuICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMb2NhbEl0ZW1zKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gW107XHJcblxyXG4gICAgdGhpcy5maW5kSXRlbXModGhpcy5tZW51cywgZmlsdGVyLnRvTG93ZXJDYXNlKCksIGZpbHRlcmVkSXRlbXMpO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJQcm9jZXNzKGZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbHRlckxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZmlsdGVySXRlbXMoZmlsdGVyKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd05vRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHsgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSB9KTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJPblNlcnZpY2Uoc2VhcmNoOiBzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKHNlYXJjaC5sZW5ndGggPj0gcG9NZW51TWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2VcclxuICAgICAgICAuZ2V0RmlsdGVyZWREYXRhKHNlYXJjaCwgdGhpcy5wYXJhbXMpXHJcbiAgICAgICAgLnBpcGUobWFwKG1lbnVJdGVtc0ZpbHRlcmVkID0+IG1lbnVJdGVtc0ZpbHRlcmVkLm1hcChtZW51SXRlbSA9PiB0aGlzLmNvbnZlcnRUb01lbnVJdGVtRmlsdGVyZWQobWVudUl0ZW0pKSkpXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEl0ZW1zKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPiwgZmlsdGVyOiBzdHJpbmcsIGZpbHRlcmVkSXRlbXM6IEFycmF5PGFueT4pIHtcclxuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XHJcbiAgICAgIGNvbnN0IGhhc0FjdGlvbiA9IG1lbnUuYWN0aW9uIHx8IG1lbnUubGluaztcclxuICAgICAgY29uc3QgbGFiZWxIYXNGaWx0ZXIgPSBtZW51LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyKTtcclxuXHJcbiAgICAgIGlmIChsYWJlbEhhc0ZpbHRlciAmJiBoYXNBY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBuZXdNZW51ID0geyAuLi5tZW51IH07XHJcblxyXG4gICAgICAgIGlmIChuZXdNZW51LnN1Ykl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGRlbGV0ZSBuZXdNZW51LnN1Ykl0ZW1zO1xyXG4gICAgICAgICAgbmV3TWVudVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShuZXdNZW51KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZpbHRlcmVkSXRlbXMucHVzaChuZXdNZW51KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG1lbnUuc3ViSXRlbXMpIHtcclxuICAgICAgICB0aGlzLmZpbmRJdGVtcyhtZW51LnN1Ykl0ZW1zLCBmaWx0ZXIsIGZpbHRlcmVkSXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnVJdGVtOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XHJcbiAgICBjb25zdCBnZXRQYXJlbnQgPSBmdW5jdGlvbiAobWVudUl0ZW1zOiBBcnJheTxQb01lbnVJdGVtPiwgaWQpIHtcclxuICAgICAgaWYgKG1lbnVJdGVtcykge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtZW51SXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBtZW51ID0gbWVudUl0ZW1zW2luZGV4XTtcclxuICAgICAgICAgIGlmIChtZW51LnN1Ykl0ZW1zICYmIG1lbnUuc3ViSXRlbXMuZmluZChzdWJJdGVtID0+IHN1Ykl0ZW1bJ2lkJ10gPT09IGlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbWVudTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZ2V0UGFyZW50KG1lbnUuc3ViSXRlbXMsIGlkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGdldFBhcmVudChtZW51cywgbWVudUl0ZW1bJ2lkJ10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kUm9vdFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnU6IFBvTWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcclxuICAgIGNvbnN0IGZpbmRQYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQ7XHJcblxyXG4gICAgY29uc3QgZ2V0Um9vdFBhcmVudCA9IGZ1bmN0aW9uIChtZW51SXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xyXG4gICAgICBsZXQgcGFyZW50ID0gZmluZFBhcmVudChtZW51SXRlbXMsIG1lbnVJdGVtKTtcclxuXHJcbiAgICAgIGlmIChwYXJlbnRbJ2xldmVsJ10gIT09IHBvTWVudVJvb3RMZXZlbCkge1xyXG4gICAgICAgIHBhcmVudCA9IGdldFJvb3RQYXJlbnQobWVudUl0ZW1zLCBwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGdldFJvb3RQYXJlbnQobWVudXMsIG1lbnUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY3RpdmVNZW51UGFyZW50KG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPiwgYWN0aXZlTWVudUl0ZW06IFBvTWVudUl0ZW0sIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbSkge1xyXG4gICAgaWYgKHRoaXMuYXJlU3ViTWVudXMoW2dyb3VwZWRNZW51SXRlbSwgYWN0aXZlTWVudUl0ZW1dKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maW5kUm9vdFBhcmVudChtZW51cywgYWN0aXZlTWVudUl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBncm91cE1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZU1lbnVDb2xsYXBzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVbJ2lzT3BlbmVkJ10gPSAhbWVudVsnaXNPcGVuZWQnXTtcclxuICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbWVudTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gJiZcclxuICAgICAgbWVudVsnaXNPcGVuZWQnXSAmJlxyXG4gICAgICB0aGlzLmlzQWN0aXZlSXRlbU1lbnVTdWJNZW51ICYmXHJcbiAgICAgIHRoaXMuaXNSb290TWVudUVxdWFsR3JvdXBlZE1lbnUodGhpcy5tZW51cywgdGhpcy5hY3RpdmVNZW51SXRlbSwgbWVudSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0odGhpcy5hY3RpdmVNZW51SXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoeyBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1Jvb3RNZW51RXF1YWxHcm91cGVkTWVudShcclxuICAgIG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPixcclxuICAgIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtLFxyXG4gICAgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtXHJcbiAgKSB7XHJcbiAgICBjb25zdCBhY3RpdmVNZW51Um9vdFBhcmVudCA9IHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcclxuICAgIHJldHVybiBhY3RpdmVNZW51Um9vdFBhcmVudFsnaWQnXSA9PT0gZ3JvdXBlZE1lbnVJdGVtWydpZCddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuUGFyZW50TWVudShjaGlsZE1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudCh0aGlzLm1lbnVzLCBjaGlsZE1lbnUpO1xyXG4gICAgcGFyZW50Wydpc09wZW5lZCddID0gdHJ1ZTtcclxuICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93Tm9EYXRhKCkge1xyXG4gICAgdGhpcy5ub0RhdGEgPSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdHJpbmdpZnkobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KTogc3RyaW5nIHtcclxuICAgIC8vIG7Do28gZmF6IG8gc3RyaW5naWZ5IGRhIHByb3ByaWVkYWRlIGljb24sIHBvaXMgcG9kZSBjb250ZXIgb2JqZXRvIGNvbXBsZXhvIGUgZGlzcGFyYXIgdW0gZXJyby5cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLm1lbnVzLCAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoa2V5ICE9PSAnaWNvbicpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVHcm91cGVkTWVudUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbVsnaXNPcGVuZWQnXSA9ICF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFsbG93Q29sbGFwc2VNZW51O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gY29sbGFwc2VkO1xyXG5cclxuICAgIGlmICh0aGlzLmdyb3VwZWRNZW51SXRlbSAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID1cclxuICAgICAgICB0aGlzLmdldEFjdGl2ZU1lbnVQYXJlbnQodGhpcy5tZW51cywgdGhpcy5hY3RpdmVNZW51SXRlbSwgdGhpcy5ncm91cGVkTWVudUl0ZW0pIHx8IHRoaXMuZ3JvdXBlZE1lbnVJdGVtO1xyXG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVDb2xsYXBzZVN1Yk1lbnVJdGVtKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHtcclxuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sXHJcbiAgICAgICAgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0sXHJcbiAgICAgICAgYWN0aXZhdGVkQnlSb3V0ZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlUmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubW9iaWxlT3BlbmVkKSB7XHJcbiAgICAgIHRoaXMubW9iaWxlT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVDb2xsYXBzZUNsYXNzKHRoaXMuY29sbGFwc2VkTW9iaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVUb2dnbGVNZW51KGNvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmFsbG93Q29sbGFwc2VNZW51KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRvZ2dsZU1lbnVDb2xsYXBzZShjb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVNZW51KCkge1xyXG4gICAgdGhpcy5tZW51SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRNZW51RXh0cmFQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5tZW51c107XHJcbiAgICB0aGlzLm1lbnVQcmV2aW91cyA9IHRoaXMuc3RyaW5naWZ5KHRoaXMubWVudXMpO1xyXG4gICAgdGhpcy52YWxpZGF0ZU1lbnVzKHRoaXMubWVudXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -28732,7 +28732,7 @@ class PoMenuComponent extends PoMenuBaseComponent {
28732
28732
  return menus.some(menu => {
28733
28733
  const formattedMenuLink = getFormattedLink(menu.link);
28734
28734
  const menuLinkPath = `${urlPathWithoutLastFragment}${formattedMenuLink.substr(formattedMenuLink.lastIndexOf('/'))}`;
28735
- if (menuLinkPath === urlPath) {
28735
+ if (menuLinkPath === urlPath && menuLinkPath === formattedMenuLink) {
28736
28736
  this.linkActive = formattedMenuLink;
28737
28737
  this.activateMenuItem(menu);
28738
28738
  return true;