@stemy/ngx-utils 13.5.2 → 13.5.3

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.
@@ -121,4 +121,4 @@ export const GLOBAL_TEMPLATES = new InjectionToken("global-templates");
121
121
  // --- Valued promise ---
122
122
  export class ValuedPromise extends Promise {
123
123
  }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQXlDM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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LEdBQWdDLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBc0R2RyxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFhRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxJQUFJLGNBQWMsQ0FBYyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBMkIsSUFBSSxjQUFjLENBQVMsb0JBQW9CLENBQUMsQ0FBQztBQUtyRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHdCQUF3QixDQUFDLENBQUM7QUFjaEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGtCQUFrQixDQUFDLENBQUM7QUFvQjdGLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8sYUFBaUIsU0FBUSxPQUFVO0NBRS9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTmdab25lLCBQcm92aWRlciwgVGVtcGxhdGVSZWYsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEYXRhLCBSb3V0ZSwgVXJsVHJlZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7UmVmbGVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9yZWZsZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuLy8gLS0tIFV0aWxzXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc29sdmVGYWN0b3J5IHtcclxuICAgIGZ1bmM6IEZ1bmN0aW9uO1xyXG4gICAgdHlwZT86IGFueTtcclxuICAgIHBhcmFtcz86IGFueVtdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzQ29sb3Ige1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHI6IG51bWJlciwgcHVibGljIGc6IG51bWJlciwgcHVibGljIGI6IG51bWJlciwgcHVibGljIGE6IG51bWJlciA9IDI1NSkge1xyXG5cclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEljb24gc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSWNvblNlcnZpY2Uge1xyXG4gICAgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIGljb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgIGdldEljb24oaWNvbjogc3RyaW5nLCBhY3RpdmVJY29uOiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElDT05fU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJSWNvblNlcnZpY2U+KFwiaWNvbi1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIExhbmd1YWdlIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9uIHtcclxuICAgIGxhbmc6IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZyB7XHJcbiAgICB1bmF2YWlsYWJsZT86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZ3Mge1xyXG4gICAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcclxuICAgIGRldkxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIHNldHRpbmdzPzoge1tsYW5nOiBzdHJpbmddOiBJTGFuZ3VhZ2VTZXR0aW5nfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIFdhc20gc2VydmljZSAtLS1cclxuZXhwb3J0IHR5cGUgVHlwZWRBcnJheSA9XHJcbiAgICB8IEludDhBcnJheVxyXG4gICAgfCBJbnQxNkFycmF5XHJcbiAgICB8IEludDMyQXJyYXlcclxuICAgIHwgVWludDhBcnJheVxyXG4gICAgfCBVaW50OENsYW1wZWRBcnJheVxyXG4gICAgfCBVaW50MTZBcnJheVxyXG4gICAgfCBVaW50MzJBcnJheVxyXG4gICAgfCBGbG9hdDMyQXJyYXlcclxuICAgIHwgRmxvYXQ2NEFycmF5O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzbUV4cG9ydHMge1xyXG4gICAgSEVBUDg6IEludDhBcnJheTtcclxuICAgIEhFQVAxNjogSW50MTZBcnJheSxcclxuICAgIEhFQVAzMjogSW50MzJBcnJheSxcclxuICAgIEhFQVBVODogVWludDhBcnJheTtcclxuICAgIEhFQVBVMTY6IFVpbnQxNkFycmF5LFxyXG4gICAgSEVBUFUzMjogVWludDMyQXJyYXksXHJcbiAgICBIRUFQRjMyOiBGbG9hdDMyQXJyYXksXHJcbiAgICBIRUFQRjY0OiBGbG9hdDY0QXJyYXksXHJcbiAgICBtZW1vcnk6IFdlYkFzc2VtYmx5Lk1lbW9yeTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzaSB7XHJcbiAgICBpbnN0YW50aWF0ZShieXRlczogQXJyYXlCdWZmZXIpOiBQcm9taXNlPElXYXNtRXhwb3J0cz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhc20ge1xyXG4gICAgd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5OiBUeXBlZEFycmF5KTogUHJvbWlzZTxudW1iZXI+IHwgbnVtYmVyO1xyXG4gICAgcmVhZEFycmF5RnJvbU1lbW9yeTxUID0gVHlwZWRBcnJheT4ocG9pbnRlcjogbnVtYmVyLCBhcnJheTogVCk6IFByb21pc2U8VD4gfCBUO1xyXG4gICAgW2tleTogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhc21Bc3luYyB7XHJcbiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXk6IFR5cGVkQXJyYXkpOiBQcm9taXNlPG51bWJlcj47XHJcbiAgICByZWFkQXJyYXlGcm9tTWVtb3J5PFQgPSBUeXBlZEFycmF5Pihwb2ludGVyOiBudW1iZXIsIGFycmF5OiBUKTogVDtcclxuICAgIFtrZXk6IHN0cmluZ106ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgV0FTSV9JTVBMRU1FTlRBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPElXYXNpPj4oXCJ3YXNpLWltcGxlbWVudGF0aW9uXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gT2JqZWN0VHlwZSh0eXBlOiBzdHJpbmcpOiBDbGFzc0RlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgUmVmbGVjdFV0aWxzLmRlZmluZU1ldGFkYXRhKFwib2JqZWN0VHlwZVwiLCB0eXBlLCB0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gLS0tIFRpbWVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lciB7XHJcbiAgICBpZD86IGFueTtcclxuICAgIGZ1bmM/OiBGdW5jdGlvbjtcclxuICAgIHRpbWU/OiBudW1iZXI7XHJcbiAgICBydW4/OiAoKSA9PiB2b2lkO1xyXG4gICAgc2V0PzogKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHZvaWQ7XHJcbiAgICBjbGVhcj86ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8vIC0tLSBFeHRyYUl0ZW1Qcm9wZXJ0aWVzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElFeHRyYVByb3BlcnRpZXMge1xyXG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIEdyb3VwIGJ5IC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE1hcCB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBUcmFuc2xhdGUgLS0tXHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uUXVlcnkgPSBzdHJpbmcgfCBJVHJhbnNsYXRpb25zIHwgSVRyYW5zbGF0aW9uW107XHJcblxyXG4vLyAtLS0gUGFnaW5hdGlvbiAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnZUluZm8ge1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgbnVtYmVyOiBudW1iZXI7XHJcbiAgICBhY3RpdmU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25EYXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBtZXRhPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1Db250ZXh0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogYW55LCBwdWJsaWMgcGFyYWxsZWxJdGVtOiBhbnksIHB1YmxpYyBjb3VudDogbnVtYmVyLCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGFJbmRleDogbnVtYmVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZpcnN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSB0aGlzLmNvdW50IC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXZlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9kZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXZlbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHJvdyBpcyBkZXByZWNhdGVkIHVzZSBpdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHBhcmFsbGVsUm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcGFyYWxsZWxSb3cgaXMgZGVwcmVjYXRlZCB1c2UgcGFyYWxsZWxJdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWxsZWxJdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihmaWx0ZXJSeDogUmVnRXhwKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IE9iamVjdFV0aWxzLmlzT2JqZWN0KHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZS5tYXRjaChmaWx0ZXJSeCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBIdHRwIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBIZWFkZXJzIHtcclxuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUGFyYW1zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgbWV0aG9kPzogc3RyaW5nO1xyXG4gICAgYm9keT86IGFueTtcclxuICAgIGhlYWRlcnM/OiBJSHR0cEhlYWRlcnMgfCBIdHRwSGVhZGVycztcclxuICAgIG9yaWdpbmFsSGVhZGVycz86IElIdHRwSGVhZGVycztcclxuICAgIHBhcmFtcz86IElIdHRwUGFyYW1zO1xyXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiIHwgXCJyZXNwb25zZVwiO1xyXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogXCJhcnJheWJ1ZmZlclwiIHwgXCJibG9iXCIgfCBcImpzb25cIiB8IFwidGV4dFwiO1xyXG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICAgIHRpbWVvdXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlzc3VlQ29udGV4dCB7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvZ3Jlc3Mge1xyXG4gICAgcGVyY2VudGFnZT86IG51bWJlcjtcclxuICAgIGxvYWRlZD86IG51bWJlcjtcclxuICAgIHRvdGFsPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9ncmVzc0xpc3RlbmVyID0gKHByb2dyZXNzOiBJUHJvZ3Jlc3MpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgdHlwZSBQcm9taXNlRXhlY3V0b3IgPSAocmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlamVjdEhhbmRsZXI6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgYXR0YWNoQ291bnQ6IG51bWJlcjtcclxuICAgIHByb3RlY3RlZCBydW5Db3VudDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCwgZXhlY3V0b3I6IFByb21pc2VFeGVjdXRvcikge1xyXG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcclxuICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIgPSByZWplY3RIYW5kbGVyO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMucnVuQ291bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoZW48VFJlc3VsdDEsIFRSZXN1bHQyPihvbkZ1bGZpbGxlZD86ICgodmFsdWU6IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IFRSZXN1bHQxKSkgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBUUmVzdWx0MikpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQrKztcclxuICAgICAgICByZXR1cm4gc3VwZXIudGhlbih2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgcmV0dXJuIG9uRnVsZmlsbGVkID8gb25GdWxmaWxsZWQodmFsdWUpIDogbnVsbDtcclxuICAgICAgICB9LCAocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9uUmVqZWN0ZWQgPyBvblJlamVjdGVkKHJlYXNvbikgOiBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1JlamVjdEhhbmRsZXIgPSB0aGlzLmhhc1JlamVjdEhhbmRsZXIgfHwgKG9uUmVqZWN0ZWQgJiYgcmVzdWx0ICE9PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyKHRoaXMucnVuQ291bnQgPT0gdGhpcy5hdHRhY2hDb3VudCAmJiAhdGhpcy5oYXNSZWplY3RIYW5kbGVyID8gcmVhc29uIDogbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnkgfCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFNlcnZpY2Uge1xyXG4gICAgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2U7XHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBtYWtlTGlzdFBhcmFtcyhwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5Pzogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc/OiBib29sZWFuLCBmaWx0ZXI/OiBzdHJpbmcpOiBJSHR0cFBhcmFtcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1NfUkVRVUVTVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXF1ZXN0PihcImV4cHJlc3MtcmVxdWVzdFwiKTtcclxuXHJcbi8vIC0tLSBBcGkgc2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwaVNlcnZpY2UgZXh0ZW5kcyBJSHR0cFNlcnZpY2Uge1xyXG4gICAgY2FjaGU6IGFueTtcclxuICAgIGNsaWVudDogSHR0cENsaWVudDtcclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBsaXN0KHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVBJX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4oXCJhcGktc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBPcGVuQXBpIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdHlwZT86IHN0cmluZztcclxuICAgIGZvcm1hdD86IHN0cmluZztcclxuICAgIGNvbHVtbj86IGJvb2xlYW47XHJcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueTtcclxuICAgICRyZWY/OiBzdHJpbmc7XHJcbiAgICBhbGxPZj86IFJlYWRvbmx5QXJyYXk8eyRyZWY/OiBzdHJpbmd9PlxyXG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xyXG4gICAgZW51bT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZDogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYTtcclxufVxyXG5cclxuLy8gLS0tIER5bmFtaWMgdGFibGUgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlT3JkZXJzIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2x1bW4ge1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBzb3J0Pzogc3RyaW5nO1xyXG4gICAgZmlsdGVyPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2x1bW5zIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZUNvbHVtbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVUZW1wbGF0ZSB7XHJcbiAgICBjb2x1bW46IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgcHVyZTogYm9vbGVhbjtcclxuICAgIHJlZjogVGVtcGxhdGVSZWY8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVUZW1wbGF0ZXMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogSVRhYmxlVGVtcGxhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRhYmxlRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIHJvd3NQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuLCBmaWx0ZXI6IHN0cmluZykgPT4gUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG5cclxuLy8gLS0tIFJlc291cmNlIGlmIC0tLVxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJZkNvbnRleHQge1xyXG4gICAgcmVzb3VyY2U6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0gQ29uZmlnU2VydmljZSAtLS1cclxuZXhwb3J0IGNvbnN0IEFQUF9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFwiYXBwLWJhc2UtdXJsXCIpO1xyXG5cclxuZXhwb3J0IGNsYXNzIElDb25maWd1cmF0aW9uIHtcclxuICAgIGNkblVybD86IHN0cmluZztcclxuICAgIGJhc2VVcmw/OiBzdHJpbmc7XHJcbiAgICBiYXNlRG9tYWluPzogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRpb25Vcmw/OiBzdHJpbmc7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ1NlcnZpY2Uge1xyXG4gICAgcmVhZG9ubHkgY29uZmlnOiBJQ29uZmlndXJhdGlvbjtcclxuICAgIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcjtcclxuICAgIHJlYWRvbmx5IGxvYWQ6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xyXG4gICAgcmVhZG9ubHkgcm9vdEVsZW1lbnQ6IGFueTtcclxuICAgIGNsb25lUm9vdEVsZW0oKTogYW55O1xyXG4gICAgcHJlcGFyZVVybCh1cmw6IHN0cmluZywgZW5kaW5nOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRDb25maWdWYWx1ZShrZXk6IHN0cmluZyk6IGFueTtcclxuICAgIGdldFF1ZXJ5UGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ09ORklHX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNvbmZpZ1NlcnZpY2U+KFwiY29uZmlnLXNlcnZpY2VcIik7XHJcblxyXG5leHBvcnQgY29uc3QgQkFTRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNvbmZpZ3VyYXRpb24+KFwiYmFzZS1jb25maWdcIik7XHJcblxyXG5leHBvcnQgY29uc3QgU0NSSVBUX1BBUkFNUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KFwic2NyaXB0LXBhcmFtc1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBST09UX0VMRU1FTlQ6IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4oXCJhcHAtcm9vdC1lbGVtZW50XCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFU0laRV9ERUxBWTogSW5qZWN0aW9uVG9rZW48bnVtYmVyPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwicmVzaXplLWV2ZW50LWRlbGF5XCIpO1xyXG5cclxuLy8gLS0tIEVycm9yIGhhbmRsZXIgc2VydmljZSAtLS1cclxuZXhwb3J0IHR5cGUgRXJyb3JIYW5kbGVyQ2FsbGJhY2sgPSAoZXJyb3I6IHN0cmluZykgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNvbnN0IEVSUk9SX0hBTkRMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXJyb3JIYW5kbGVyQ2FsbGJhY2s+KFwiZXJyb3ItaGFuZGxlci1jYWxsYmFja1wiKTtcclxuXHJcbi8vIC0tLSBHbG9iYWwgdGVtcGxhdGVzIHNlcnZpY2VcclxuXHJcbmV4cG9ydCB0eXBlIEdsb2JhbENvbXBvbmVudE1vZGlmaWVyID0gKGNvbXBvbmVudDogYW55KSA9PiBhbnk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHbG9iYWxUZW1wbGF0ZXMge1xyXG4gICAgcmVhZG9ubHkgdGVtcGxhdGVzVXBkYXRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xyXG4gICAgZ2V0KGlkOiBzdHJpbmcsIGNvbXBvbmVudD86IGFueSk6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBhZGQoaWQ6IHN0cmluZywgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkO1xyXG4gICAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgYWRkQ29tcG9uZW50TW9kaWZpZXIoaWQ6IHN0cmluZywgbW9kaWZpZXI6IEdsb2JhbENvbXBvbmVudE1vZGlmaWVyKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEdMT0JBTF9URU1QTEFURVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXJyb3JIYW5kbGVyQ2FsbGJhY2s+KFwiZ2xvYmFsLXRlbXBsYXRlc1wiKTtcclxuXHJcbi8vIC0tLSBNb2R1bGUgLS0tXHJcbmV4cG9ydCB0eXBlIEFwcEluaXRpYWxpemVyRnVuYyA9ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTW9kdWxlQ29uZmlnIHtcclxuICAgIGFwaVNlcnZpY2U/OiBUeXBlPElBcGlTZXJ2aWNlPlxyXG4gICAgYXV0aFNlcnZpY2U/OiBUeXBlPElBdXRoU2VydmljZT47XHJcbiAgICBpY29uU2VydmljZT86IFR5cGU8SUljb25TZXJ2aWNlPjtcclxuICAgIGxhbmd1YWdlU2VydmljZT86IFR5cGU8SUxhbmd1YWdlU2VydmljZT47XHJcbiAgICB0b2FzdGVyU2VydmljZT86IFR5cGU8SVRvYXN0ZXJTZXJ2aWNlPjtcclxuICAgIHByb21pc2VTZXJ2aWNlPzogVHlwZTxJUHJvbWlzZVNlcnZpY2U+O1xyXG4gICAgY29uZmlnU2VydmljZT86IFR5cGU8SUNvbmZpZ1NlcnZpY2U+O1xyXG4gICAgZ2xvYmFsVGVtcGxhdGVzPzogVHlwZTxJR2xvYmFsVGVtcGxhdGVzPjtcclxuICAgIHdhc2lJbXBsZW1lbnRhdGlvbj86IFR5cGU8SVdhc2k+O1xyXG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcclxuICAgIGJhc2VVcmw/OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBzdHJpbmc7XHJcbiAgICByZXNpemVEZWxheT86IG51bWJlcjtcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQXlDM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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LEdBQWdDLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBdUR2RyxzQkFBc0I7QUFDdEIsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVMsY0FBYyxDQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFhRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxJQUFJLGNBQWMsQ0FBYyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBMkIsSUFBSSxjQUFjLENBQVMsb0JBQW9CLENBQUMsQ0FBQztBQUtyRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHdCQUF3QixDQUFDLENBQUM7QUFjaEcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGtCQUFrQixDQUFDLENBQUM7QUFvQjdGLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8sYUFBaUIsU0FBUSxPQUFVO0NBRS9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgTmdab25lLCBQcm92aWRlciwgVGVtcGxhdGVSZWYsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEYXRhLCBSb3V0ZSwgVXJsVHJlZX0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7UmVmbGVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9yZWZsZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuLy8gLS0tIFV0aWxzXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc29sdmVGYWN0b3J5IHtcclxuICAgIGZ1bmM6IEZ1bmN0aW9uO1xyXG4gICAgdHlwZT86IGFueTtcclxuICAgIHBhcmFtcz86IGFueVtdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzQ29sb3Ige1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIHI6IG51bWJlciwgcHVibGljIGc6IG51bWJlciwgcHVibGljIGI6IG51bWJlciwgcHVibGljIGE6IG51bWJlciA9IDI1NSkge1xyXG5cclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEljb24gc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSWNvblNlcnZpY2Uge1xyXG4gICAgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIGljb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAgIGdldEljb24oaWNvbjogc3RyaW5nLCBhY3RpdmVJY29uOiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IElDT05fU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJSWNvblNlcnZpY2U+KFwiaWNvbi1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIExhbmd1YWdlIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9uIHtcclxuICAgIGxhbmc6IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZyB7XHJcbiAgICB1bmF2YWlsYWJsZT86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2V0dGluZ3Mge1xyXG4gICAgbGFuZ3VhZ2VzOiBzdHJpbmdbXTtcclxuICAgIGRldkxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIHNldHRpbmdzPzoge1tsYW5nOiBzdHJpbmddOiBJTGFuZ3VhZ2VTZXR0aW5nfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIFdhc20gc2VydmljZSAtLS1cclxuZXhwb3J0IHR5cGUgVHlwZWRBcnJheSA9XHJcbiAgICB8IEludDhBcnJheVxyXG4gICAgfCBJbnQxNkFycmF5XHJcbiAgICB8IEludDMyQXJyYXlcclxuICAgIHwgVWludDhBcnJheVxyXG4gICAgfCBVaW50OENsYW1wZWRBcnJheVxyXG4gICAgfCBVaW50MTZBcnJheVxyXG4gICAgfCBVaW50MzJBcnJheVxyXG4gICAgfCBGbG9hdDMyQXJyYXlcclxuICAgIHwgRmxvYXQ2NEFycmF5O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzbUV4cG9ydHMge1xyXG4gICAgSEVBUDg6IEludDhBcnJheTtcclxuICAgIEhFQVAxNjogSW50MTZBcnJheSxcclxuICAgIEhFQVAzMjogSW50MzJBcnJheSxcclxuICAgIEhFQVBVODogVWludDhBcnJheTtcclxuICAgIEhFQVBVMTY6IFVpbnQxNkFycmF5LFxyXG4gICAgSEVBUFUzMjogVWludDMyQXJyYXksXHJcbiAgICBIRUFQRjMyOiBGbG9hdDMyQXJyYXksXHJcbiAgICBIRUFQRjY0OiBGbG9hdDY0QXJyYXksXHJcbiAgICBtZW1vcnk6IFdlYkFzc2VtYmx5Lk1lbW9yeTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FzaSB7XHJcbiAgICBpbnN0YW50aWF0ZShieXRlczogQXJyYXlCdWZmZXIpOiBQcm9taXNlPElXYXNtRXhwb3J0cz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhc20ge1xyXG4gICAgd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5OiBUeXBlZEFycmF5KTogUHJvbWlzZTxudW1iZXI+IHwgbnVtYmVyO1xyXG4gICAgcmVhZEFycmF5RnJvbU1lbW9yeTxUID0gVHlwZWRBcnJheT4ocG9pbnRlcjogbnVtYmVyLCBhcnJheTogVCk6IFByb21pc2U8VD4gfCBUO1xyXG4gICAgW2tleTogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhc21Bc3luYyB7XHJcbiAgICB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXk6IFR5cGVkQXJyYXkpOiBQcm9taXNlPG51bWJlcj47XHJcbiAgICByZWFkQXJyYXlGcm9tTWVtb3J5PFQgPSBUeXBlZEFycmF5Pihwb2ludGVyOiBudW1iZXIsIGFycmF5OiBUKTogVDtcclxuICAgIFtrZXk6IHN0cmluZ106ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgV0FTSV9JTVBMRU1FTlRBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUeXBlPElXYXNpPj4oXCJ3YXNpLWltcGxlbWVudGF0aW9uXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gT2JqZWN0VHlwZSh0eXBlOiBzdHJpbmcpOiBDbGFzc0RlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgUmVmbGVjdFV0aWxzLmRlZmluZU1ldGFkYXRhKFwib2JqZWN0VHlwZVwiLCB0eXBlLCB0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gLS0tIFRpbWVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lciB7XHJcbiAgICBpZD86IGFueTtcclxuICAgIGZ1bmM/OiBGdW5jdGlvbjtcclxuICAgIHRpbWU/OiBudW1iZXI7XHJcbiAgICBydW4/OiAoKSA9PiB2b2lkO1xyXG4gICAgc2V0PzogKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHZvaWQ7XHJcbiAgICBjbGVhcj86ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8vIC0tLSBFeHRyYUl0ZW1Qcm9wZXJ0aWVzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElFeHRyYVByb3BlcnRpZXMge1xyXG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIEdyb3VwIGJ5IC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE1hcCB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBUcmFuc2xhdGUgLS0tXHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uUXVlcnkgPSBzdHJpbmcgfCBJVHJhbnNsYXRpb25zIHwgSVRyYW5zbGF0aW9uW107XHJcblxyXG4vLyAtLS0gUGFnaW5hdGlvbiAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnZUluZm8ge1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgbnVtYmVyOiBudW1iZXI7XHJcbiAgICBhY3RpdmU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25EYXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBtZXRhPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1Db250ZXh0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogYW55LCBwdWJsaWMgcGFyYWxsZWxJdGVtOiBhbnksIHB1YmxpYyBjb3VudDogbnVtYmVyLCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGFJbmRleDogbnVtYmVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZpcnN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSB0aGlzLmNvdW50IC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXZlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9kZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXZlbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHJvdyBpcyBkZXByZWNhdGVkIHVzZSBpdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHBhcmFsbGVsUm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcGFyYWxsZWxSb3cgaXMgZGVwcmVjYXRlZCB1c2UgcGFyYWxsZWxJdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWxsZWxJdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihmaWx0ZXJSeDogUmVnRXhwKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IE9iamVjdFV0aWxzLmlzT2JqZWN0KHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZS5tYXRjaChmaWx0ZXJSeCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBIdHRwIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBIZWFkZXJzIHtcclxuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUGFyYW1zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgbWV0aG9kPzogc3RyaW5nO1xyXG4gICAgYm9keT86IGFueTtcclxuICAgIGhlYWRlcnM/OiBJSHR0cEhlYWRlcnMgfCBIdHRwSGVhZGVycztcclxuICAgIG9yaWdpbmFsSGVhZGVycz86IElIdHRwSGVhZGVycztcclxuICAgIHBhcmFtcz86IElIdHRwUGFyYW1zO1xyXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiIHwgXCJyZXNwb25zZVwiO1xyXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogXCJhcnJheWJ1ZmZlclwiIHwgXCJibG9iXCIgfCBcImpzb25cIiB8IFwidGV4dFwiO1xyXG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICAgIHRpbWVvdXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlzc3VlQ29udGV4dCB7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvZ3Jlc3Mge1xyXG4gICAgcGVyY2VudGFnZT86IG51bWJlcjtcclxuICAgIGxvYWRlZD86IG51bWJlcjtcclxuICAgIHRvdGFsPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9ncmVzc0xpc3RlbmVyID0gKHByb2dyZXNzOiBJUHJvZ3Jlc3MpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgdHlwZSBQcm9taXNlRXhlY3V0b3IgPSAocmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlamVjdEhhbmRsZXI6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgYXR0YWNoQ291bnQ6IG51bWJlcjtcclxuICAgIHByb3RlY3RlZCBydW5Db3VudDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCwgZXhlY3V0b3I6IFByb21pc2VFeGVjdXRvcikge1xyXG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcclxuICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIgPSByZWplY3RIYW5kbGVyO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMucnVuQ291bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoZW48VFJlc3VsdDEsIFRSZXN1bHQyPihvbkZ1bGZpbGxlZD86ICgodmFsdWU6IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IFRSZXN1bHQxKSkgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBUUmVzdWx0MikpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQrKztcclxuICAgICAgICByZXR1cm4gc3VwZXIudGhlbih2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgcmV0dXJuIG9uRnVsZmlsbGVkID8gb25GdWxmaWxsZWQodmFsdWUpIDogbnVsbDtcclxuICAgICAgICB9LCAocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9uUmVqZWN0ZWQgPyBvblJlamVjdGVkKHJlYXNvbikgOiBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1JlamVjdEhhbmRsZXIgPSB0aGlzLmhhc1JlamVjdEhhbmRsZXIgfHwgKG9uUmVqZWN0ZWQgJiYgcmVzdWx0ICE9PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyKHRoaXMucnVuQ291bnQgPT0gdGhpcy5hdHRhY2hDb3VudCAmJiAhdGhpcy5oYXNSZWplY3RIYW5kbGVyID8gcmVhc29uIDogbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnkgfCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFNlcnZpY2Uge1xyXG4gICAgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2U7XHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBtYWtlTGlzdFBhcmFtcyhwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5Pzogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc/OiBib29sZWFuLCBmaWx0ZXI/OiBzdHJpbmcpOiBJSHR0cFBhcmFtcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1NfUkVRVUVTVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXF1ZXN0PihcImV4cHJlc3MtcmVxdWVzdFwiKTtcclxuXHJcbi8vIC0tLSBBcGkgc2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwaVNlcnZpY2UgZXh0ZW5kcyBJSHR0cFNlcnZpY2Uge1xyXG4gICAgY2FjaGU6IGFueTtcclxuICAgIGNsaWVudDogSHR0cENsaWVudDtcclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBsaXN0KHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVBJX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4oXCJhcGktc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBPcGVuQXBpIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdHlwZT86IHN0cmluZztcclxuICAgIGZvcm1hdD86IHN0cmluZztcclxuICAgIGNvbHVtbj86IGJvb2xlYW47XHJcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueTtcclxuICAgICRyZWY/OiBzdHJpbmc7XHJcbiAgICBhbGxPZj86IFJlYWRvbmx5QXJyYXk8eyRyZWY/OiBzdHJpbmd9PlxyXG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xyXG4gICAgZW51bT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZDogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYTtcclxufVxyXG5cclxuLy8gLS0tIER5bmFtaWMgdGFibGUgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlT3JkZXJzIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2x1bW4ge1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBzb3J0Pzogc3RyaW5nO1xyXG4gICAgZmlsdGVyPzogYm9vbGVhbjtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2x1bW5zIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZUNvbHVtbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVUZW1wbGF0ZSB7XHJcbiAgICBjb2x1bW46IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgcHVyZTogYm9vbGVhbjtcclxuICAgIHJlZjogVGVtcGxhdGVSZWY8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVUZW1wbGF0ZXMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogSVRhYmxlVGVtcGxhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRhYmxlRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIHJvd3NQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IHN0cmluZywgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuLCBmaWx0ZXI6IHN0cmluZykgPT4gUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG5cclxuLy8gLS0tIFJlc291cmNlIGlmIC0tLVxyXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VJZkNvbnRleHQge1xyXG4gICAgcmVzb3VyY2U6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0gQ29uZmlnU2VydmljZSAtLS1cclxuZXhwb3J0IGNvbnN0IEFQUF9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFwiYXBwLWJhc2UtdXJsXCIpO1xyXG5cclxuZXhwb3J0IGNsYXNzIElDb25maWd1cmF0aW9uIHtcclxuICAgIGNkblVybD86IHN0cmluZztcclxuICAgIGJhc2VVcmw/OiBzdHJpbmc7XHJcbiAgICBiYXNlRG9tYWluPzogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRpb25Vcmw/OiBzdHJpbmc7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ1NlcnZpY2Uge1xyXG4gICAgcmVhZG9ubHkgY29uZmlnOiBJQ29uZmlndXJhdGlvbjtcclxuICAgIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcjtcclxuICAgIHJlYWRvbmx5IGxvYWQ6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xyXG4gICAgcmVhZG9ubHkgcm9vdEVsZW1lbnQ6IGFueTtcclxuICAgIGNsb25lUm9vdEVsZW0oKTogYW55O1xyXG4gICAgcHJlcGFyZVVybCh1cmw6IHN0cmluZywgZW5kaW5nOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRDb25maWdWYWx1ZShrZXk6IHN0cmluZyk6IGFueTtcclxuICAgIGdldFF1ZXJ5UGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ09ORklHX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNvbmZpZ1NlcnZpY2U+KFwiY29uZmlnLXNlcnZpY2VcIik7XHJcblxyXG5leHBvcnQgY29uc3QgQkFTRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNvbmZpZ3VyYXRpb24+KFwiYmFzZS1jb25maWdcIik7XHJcblxyXG5leHBvcnQgY29uc3QgU0NSSVBUX1BBUkFNUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KFwic2NyaXB0LXBhcmFtc1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBST09UX0VMRU1FTlQ6IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4oXCJhcHAtcm9vdC1lbGVtZW50XCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFU0laRV9ERUxBWTogSW5qZWN0aW9uVG9rZW48bnVtYmVyPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwicmVzaXplLWV2ZW50LWRlbGF5XCIpO1xyXG5cclxuLy8gLS0tIEVycm9yIGhhbmRsZXIgc2VydmljZSAtLS1cclxuZXhwb3J0IHR5cGUgRXJyb3JIYW5kbGVyQ2FsbGJhY2sgPSAoZXJyb3I6IHN0cmluZykgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNvbnN0IEVSUk9SX0hBTkRMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXJyb3JIYW5kbGVyQ2FsbGJhY2s+KFwiZXJyb3ItaGFuZGxlci1jYWxsYmFja1wiKTtcclxuXHJcbi8vIC0tLSBHbG9iYWwgdGVtcGxhdGVzIHNlcnZpY2VcclxuXHJcbmV4cG9ydCB0eXBlIEdsb2JhbENvbXBvbmVudE1vZGlmaWVyID0gKGNvbXBvbmVudDogYW55KSA9PiBhbnk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHbG9iYWxUZW1wbGF0ZXMge1xyXG4gICAgcmVhZG9ubHkgdGVtcGxhdGVzVXBkYXRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xyXG4gICAgZ2V0KGlkOiBzdHJpbmcsIGNvbXBvbmVudD86IGFueSk6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBhZGQoaWQ6IHN0cmluZywgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkO1xyXG4gICAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgYWRkQ29tcG9uZW50TW9kaWZpZXIoaWQ6IHN0cmluZywgbW9kaWZpZXI6IEdsb2JhbENvbXBvbmVudE1vZGlmaWVyKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEdMT0JBTF9URU1QTEFURVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXJyb3JIYW5kbGVyQ2FsbGJhY2s+KFwiZ2xvYmFsLXRlbXBsYXRlc1wiKTtcclxuXHJcbi8vIC0tLSBNb2R1bGUgLS0tXHJcbmV4cG9ydCB0eXBlIEFwcEluaXRpYWxpemVyRnVuYyA9ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTW9kdWxlQ29uZmlnIHtcclxuICAgIGFwaVNlcnZpY2U/OiBUeXBlPElBcGlTZXJ2aWNlPlxyXG4gICAgYXV0aFNlcnZpY2U/OiBUeXBlPElBdXRoU2VydmljZT47XHJcbiAgICBpY29uU2VydmljZT86IFR5cGU8SUljb25TZXJ2aWNlPjtcclxuICAgIGxhbmd1YWdlU2VydmljZT86IFR5cGU8SUxhbmd1YWdlU2VydmljZT47XHJcbiAgICB0b2FzdGVyU2VydmljZT86IFR5cGU8SVRvYXN0ZXJTZXJ2aWNlPjtcclxuICAgIHByb21pc2VTZXJ2aWNlPzogVHlwZTxJUHJvbWlzZVNlcnZpY2U+O1xyXG4gICAgY29uZmlnU2VydmljZT86IFR5cGU8SUNvbmZpZ1NlcnZpY2U+O1xyXG4gICAgZ2xvYmFsVGVtcGxhdGVzPzogVHlwZTxJR2xvYmFsVGVtcGxhdGVzPjtcclxuICAgIHdhc2lJbXBsZW1lbnRhdGlvbj86IFR5cGU8SVdhc2k+O1xyXG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcclxuICAgIGJhc2VVcmw/OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBzdHJpbmc7XHJcbiAgICByZXNpemVEZWxheT86IG51bWJlcjtcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
184
184
  type: ContentChildren,
185
185
  args: [DynamicTableTemplateDirective]
186
186
  }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBS0gscUJBQXFCLEVBRXhCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQU1yRCxNQUFNLE9BQU8scUJBQXFCO0lBNkQ5QjtRQW9FQSxhQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQUUsWUFBb0IsRUFBNEIsRUFBRTtZQUN4RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQztRQXRFRSxJQUFJLENBQUMsVUFBVSxHQUFH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LHFCQUFxQjtzQkFEcEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBSTFDLFVBQVU7c0JBRGpCLFNBQVM7dUJBQUMsWUFBWTtnQkFJZixrQkFBa0I7c0JBRHpCLGVBQWU7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkLFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSVBhZ2luYXRpb25EYXRhLFxyXG4gICAgSVRhYmxlQ29sdW1ucyxcclxuICAgIElUYWJsZU9yZGVycyxcclxuICAgIElUYWJsZVRlbXBsYXRlcyxcclxuICAgIFBhZ2luYXRpb25JdGVtQ29udGV4dCxcclxuICAgIFRhYmxlRGF0YUxvYWRlclxyXG59IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uLy4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge0R5bmFtaWNUYWJsZVRlbXBsYXRlRGlyZWN0aXZlfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLXRhYmxlLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25EaXJlY3RpdmV9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3BhZ2luYXRpb24uZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7VW5pcXVlVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy91bmlxdWUudXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZHluYW1pYy10YWJsZVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGF0YUxvYWRlcjogVGFibGVEYXRhTG9hZGVyO1xyXG4gICAgQElucHV0KCkgZGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBwYXJhbGxlbERhdGE6IGFueVtdO1xyXG4gICAgQElucHV0KCkgY29sdW1uczogSVRhYmxlT3JkZXJzIHwgSVRhYmxlQ29sdW1ucyB8IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgc2hvd0ZpbHRlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdXBkYXRlVGltZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbWF4UGFnZXM6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgYm91bmRhcnlMaW5rczogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG9yZGVyQnk6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHRlc3RJZDogc3RyaW5nO1xyXG5cclxuICAgIHRhYmxlSWQ6IHN0cmluZztcclxuICAgIHRlbXBsYXRlczogSVRhYmxlVGVtcGxhdGVzO1xyXG4gICAgZmlsdGVyOiBzdHJpbmc7XHJcbiAgICByZWFsQ29sdW1uczogSVRhYmxlQ29sdW1ucztcclxuICAgIGNvbHM6IHN0cmluZ1tdO1xyXG5cclxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnBhZ2luYXRpb24gPyBbXSA6IHRoaXMucGFnaW5hdGlvbi5pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBAQ29udGVudENoaWxkKFwicm93VGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICByb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAQ29udGVudENoaWxkKFwid3JhcHBlclRlbXBsYXRlXCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gICAgd3JhcHBlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoXCJmaWx0ZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJjb2x1bW5zVGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBjb2x1bW5zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImRlZmF1bHRSb3dUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGRlZmF1bHRSb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwiZGVmYXVsdFdyYXBwZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGRlZmF1bHRXcmFwcGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImRlZmF1bHRGaWx0ZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGRlZmF1bHRGaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwicGFnaW5hdGlvblwiKVxyXG4gICAgcHJpdmF0ZSBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uRGlyZWN0aXZlO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRHluYW1pY1RhYmxlVGVtcGxhdGVEaXJlY3RpdmUpXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlRGlyZWN0aXZlczogUXVlcnlMaXN0PER5bmFtaWNUYWJsZVRlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjb21wYXJlKG9yZGVyQnk6IHN0cmluZywgYTogUGFnaW5hdGlvbkl0ZW1Db250ZXh0LCBiOiBQYWdpbmF0aW9uSXRlbUNvbnRleHQpOiBudW1iZXIge1xyXG4gICAgICAgIGEgPSBhLml0ZW0gPyBhLml0ZW1bb3JkZXJCeV0gOiBudWxsO1xyXG4gICAgICAgIGIgPSBiLml0ZW0gPyBiLml0ZW1bb3JkZXJCeV0gOiBudWxsO1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5jb21wYXJlKGEsIGIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YUxvYWRlciA9IHRoaXMubG9hZExvY2FsRGF0YTtcclxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgICB0aGlzLnRhYmxlSWQgPSBVbmlxdWVVdGlscy51dWlkKCk7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmZpbHRlciA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy50ZXN0SWQgPSBcInRhYmxlXCI7XHJcbiAgICAgICAgdGhpcy5yZWFsQ29sdW1ucyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHRoaXMudGVtcGxhdGVEaXJlY3RpdmVzLnJlZHVjZSgocmVzdWx0LCBkaXJlY3RpdmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoZGlyZWN0aXZlLmNvbHVtbikpIHtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZS5jb2x1bW4uZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtjb2x1bW5dID0gZGlyZWN0aXZlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNTdHJpbmcoZGlyZWN0aXZlLmNvbHVtbikgfHwgZGlyZWN0aXZlLmNvbHVtbi5sZW5ndGggPT0gMCkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgcmVzdWx0W2RpcmVjdGl2ZS5jb2x1bW5dID0gZGlyZWN0aXZlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yb3dUZW1wbGF0ZSA9IHRoaXMucm93VGVtcGxhdGUgfHwgdGhpcy5kZWZhdWx0Um93VGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJUZW1wbGF0ZSA9IHRoaXMuZmlsdGVyVGVtcGxhdGUgfHwgdGhpcy5kZWZhdWx0RmlsdGVyVGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY29sdW1ucyA9IGNoYW5nZXMuY29sdW1ucy5jdXJyZW50VmFsdWUgfHwgW107XHJcbiAgICAgICAgICAgIHRoaXMucmVhbENvbHVtbnMgPSBPYmplY3RVdGlscy5pc0FycmF5KGNvbHVtbnMpID8gY29sdW1ucy5yZWR1Y2UoKHJlc3VsdCwgY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbY29sdW1uXSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0sIHt9KSA6IE9iamVjdC5rZXlzKGNvbHVtbnMpLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29sdW1uc1trZXldO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSAhdmFsdWUgfHwgT2JqZWN0VXRpbHMuaXNTdHJpbmcodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7dGl0bGU6IGB0aXRsZS4ke2tleX1gLCBzb3J0OiB2YWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICA6IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfSwge30gYXMgSVRhYmxlQ29sdW1ucyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29scyA9IE9iamVjdC5rZXlzKHRoaXMucmVhbENvbHVtbnMpO1xyXG4gICAgICAgICAgICB0aGlzLm9yZGVyQnkgPSB0aGlzLm9yZGVyQnkgaW4gdGhpcy5yZWFsQ29sdW1ucyA/IHRoaXMub3JkZXJCeSA6IHRoaXMuY29sc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXMub3JkZXJCeSAmJiB0aGlzLnJlYWxDb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJCeSA9IHRoaXMub3JkZXJCeSBpbiB0aGlzLnJlYWxDb2x1bW5zID8gdGhpcy5vcmRlckJ5IDogdGhpcy5jb2xzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNoYW5nZXMuZGF0YSAmJiAhY2hhbmdlcy5wYXJhbGxlbERhdGEgJiYgIWNoYW5nZXMuaXRlbXNQZXJQYWdlICYmICFjaGFuZ2VzLm9yZGVyQnkgJiYgIWNoYW5nZXMub3JkZXJEZXNjZW5kaW5nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMucGFnaW5hdGlvbikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RmlsdGVyKGZpbHRlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0T3JkZXIoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9yZGVyRGVzY2VuZGluZyA9IGNvbHVtbiA9PSB0aGlzLm9yZGVyQnkgJiYgIXRoaXMub3JkZXJEZXNjZW5kaW5nO1xyXG4gICAgICAgIHRoaXMub3JkZXJCeSA9IGNvbHVtbjtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkRGF0YSA9IChwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+ID0+IHtcclxuICAgICAgICBjb25zdCBvcmRlckJ5ID0gdGhpcy5yZWFsQ29sdW1uc1t0aGlzLm9yZGVyQnldPy5zb3J0O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFMb2FkZXIocGFnZSwgaXRlbXNQZXJQYWdlLCBvcmRlckJ5LCB0aGlzLm9yZGVyRGVzY2VuZGluZywgdGhpcy5maWx0ZXIpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGxvYWRMb2NhbERhdGEocGFnZTogbnVtYmVyLCByb3dzUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbiwgZmlsdGVyOiBzdHJpbmcpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogW11cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbXBhcmU6IChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyID0gb3JkZXJEZXNjZW5kaW5nXHJcbiAgICAgICAgICAgID8gKGEsIGIpID0+IER5bmFtaWNUYWJsZUNvbXBvbmVudC5jb21wYXJlKG9yZGVyQnksIGIsIGEpXHJcbiAgICAgICAgICAgIDogKGEsIGIpID0+IER5bmFtaWNUYWJsZUNvbXBvbmVudC5jb21wYXJlKG9yZGVyQnksIGEsIGIpO1xyXG4gICAgICAgIGNvbnN0IGZyb20gPSAocGFnZSAtIDEpICogcm93c1BlclBhZ2U7XHJcbiAgICAgICAgY29uc3QgZGF0YUxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocm93c1BlclBhZ2UsIGRhdGFMZW5ndGggLSBmcm9tKTtcclxuICAgICAgICBjb25zdCBwYXJhbGxlbERhdGEgPSB0aGlzLnBhcmFsbGVsRGF0YSB8fCBbXTtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZGF0YS5tYXAoKGl0ZW0sIGl4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGFnaW5hdGlvbkl0ZW1Db250ZXh0KGl0ZW0sIHBhcmFsbGVsRGF0YVtpeF0gfHwge30sIGRhdGFMZW5ndGgsIGl4LCBpeCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzU3RyaW5nKGZpbHRlcikgJiYgZmlsdGVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyUnggPSBuZXcgUmVnRXhwKGZpbHRlciwgXCJnaVwiKTtcclxuICAgICAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGMgPT4gYy5maWx0ZXIoZmlsdGVyUngpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBvcmRlckJ5ID8gZGF0YS5zb3J0KGNvbXBhcmUpLnNwbGljZShmcm9tLCBsZW5ndGgpIDogZGF0YS5zcGxpY2UoZnJvbSwgbGVuZ3RoKTtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChjb250ZXh0LCBpeCkgPT4ge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluZGV4ID0gZnJvbSArIGl4O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICAgICAgICB0b3RhbDogZGF0YUxlbmd0aCxcclxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImR5bmFtaWMtdGFibGVcIiAjcGFnaW5hdGlvbj1cInBhZ2luYXRpb25cIiBbcGFnaW5hdGlvbl09XCJsb2FkRGF0YVwiIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCIgW3VwZGF0ZVRpbWVdPVwidXBkYXRlVGltZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RmlsdGVyVGVtcGxhdGUgbGV0LXRhYmxlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1zZWFyY2hcIiAqbmdJZj1cInRhYmxlLnNob3dGaWx0ZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbYXR0ci5mb3JdPVwidGFibGVJZFwiPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cInRhYmxlSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkICsgJy1maWx0ZXItaW5wdXQnXCJcclxuICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ0YWJsZS5maWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGFibGUuc2V0RmlsdGVyKCRldmVudClcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmd4VGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGUgfHwgZGVmYXVsdEZpbHRlclRlbXBsYXRlXCIgW2NvbnRleHRdPVwidGhpc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHBhZ2luYXRpb24tbWVudSBbbWF4U2l6ZV09XCJtYXhQYWdlc1wiIFtkaXJlY3Rpb25MaW5rc109XCJkaXJlY3Rpb25MaW5rc1wiIFtib3VuZGFyeUxpbmtzXT1cImJvdW5kYXJ5TGlua3NcIj48L3BhZ2luYXRpb24tbWVudT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNjb2x1bW5UZW1wbGF0ZSBsZXQtY29udGV4dCBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LXRlbXBsYXRlPVwidGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGUgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtjb2x1bW5dID09IHVuZGVmaW5lZCB8fCBpdGVtW2NvbHVtbl0gPT0gbnVsbCA/ICctJyA6IGl0ZW1bY29sdW1uXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwdXJlVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ3hUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZS5yZWZcIiBbY29udGV4dF09XCJjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCInY29sdW1uLScgKyBjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkICsgJy0nICsgY29sdW1uICsgJy0nICsgY29udGV4dC5yb3dJbmRleFwiICpuZ0lmPVwiIXRlbXBsYXRlIHx8ICF0ZW1wbGF0ZS5wdXJlOyBlbHNlIHB1cmVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmd4VGVtcGxhdGVPdXRsZXRdPVwiIXRlbXBsYXRlID8gZGVmYXVsdFRlbXBsYXRlIDogdGVtcGxhdGUucmVmXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uc1RlbXBsYXRlIGxldC1jb250ZXh0PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25neFRlbXBsYXRlT3V0bGV0XT1cImNvbHVtblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkaXRpb25hbENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlc1tjb2x1bW5dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Um93VGVtcGxhdGUgbGV0LWNvbnRleHQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25neFRlbXBsYXRlT3V0bGV0XT1cImNvbHVtbnNUZW1wbGF0ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRXcmFwcGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHNcIiBbbmdDbGFzc109XCInY29sdW1uLScgKyBjb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyByZWFsQ29sdW1uc1tjb2x1bW5dLnRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwicmVhbENvbHVtbnNbY29sdW1uXS5zb3J0OyBlbHNlIGRlZmF1bHRDb2xcIiAoY2xpY2spPVwic2V0T3JkZXIoY29sdW1uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJlYWxDb2x1bW5zW2NvbHVtbl0udGl0bGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJvcmRlckJ5ID09IGNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwib3JkZXJEZXNjZW5kaW5nID8gJ3NvcnQtZGVzYycgOiAnc29ydC1hc2MnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJvcmRlckJ5ID09IGNvbHVtbiA/IChvcmRlckRlc2NlbmRpbmcgPyAnc29ydC1kZXNjJzogJ3NvcnQtYXNjJykgOiAnJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpwYWdpbmF0aW9uSXRlbT1cImxldCBjb250ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ3hUZW1wbGF0ZU91dGxldF09XCJyb3dUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRpdGlvbmFsQ29udGV4dF09XCJ0aGlzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25neFRlbXBsYXRlT3V0bGV0XT1cIndyYXBwZXJUZW1wbGF0ZSB8fCBkZWZhdWx0V3JhcHBlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInRoaXNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHBhZ2luYXRpb24tbWVudSBbbWF4U2l6ZV09XCJtYXhQYWdlc1wiIFtkaXJlY3Rpb25MaW5rc109XCJkaXJlY3Rpb25MaW5rc1wiIFtib3VuZGFyeUxpbmtzXT1cImJvdW5kYXJ5TGlua3NcIj48L3BhZ2luYXRpb24tbWVudT5cclxuPC9kaXY+XHJcbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLEtBQUssRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBS0gscUJBQXFCLEVBRXhCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQU1yRCxNQUFNLE9BQU8scUJBQXFCO0lBNkQ5QjtRQW9FQSxhQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQUUsWUFBb0IsRUFBNEIsRUFBRTtZQUN4RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQztRQXRFRSxJQUFJLENBQUMsVUFBVSxHQUFH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LHFCQUFxQjtzQkFEcEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBSXhDLFVBQVU7c0JBRG5CLFNBQVM7dUJBQUMsWUFBWTtnQkFJYixrQkFBa0I7c0JBRDNCLGVBQWU7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkLFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSVBhZ2luYXRpb25EYXRhLFxyXG4gICAgSVRhYmxlQ29sdW1ucyxcclxuICAgIElUYWJsZU9yZGVycyxcclxuICAgIElUYWJsZVRlbXBsYXRlcyxcclxuICAgIFBhZ2luYXRpb25JdGVtQ29udGV4dCxcclxuICAgIFRhYmxlRGF0YUxvYWRlclxyXG59IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uLy4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge0R5bmFtaWNUYWJsZVRlbXBsYXRlRGlyZWN0aXZlfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLXRhYmxlLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25EaXJlY3RpdmV9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3BhZ2luYXRpb24uZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7VW5pcXVlVXRpbHN9IGZyb20gXCIuLi8uLi91dGlscy91bmlxdWUudXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZHluYW1pYy10YWJsZVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGF0YUxvYWRlcjogVGFibGVEYXRhTG9hZGVyO1xyXG4gICAgQElucHV0KCkgZGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBwYXJhbGxlbERhdGE6IGFueVtdO1xyXG4gICAgQElucHV0KCkgY29sdW1uczogSVRhYmxlT3JkZXJzIHwgSVRhYmxlQ29sdW1ucyB8IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgc2hvd0ZpbHRlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdXBkYXRlVGltZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbWF4UGFnZXM6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgYm91bmRhcnlMaW5rczogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG9yZGVyQnk6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHRlc3RJZDogc3RyaW5nO1xyXG5cclxuICAgIHRhYmxlSWQ6IHN0cmluZztcclxuICAgIHRlbXBsYXRlczogSVRhYmxlVGVtcGxhdGVzO1xyXG4gICAgZmlsdGVyOiBzdHJpbmc7XHJcbiAgICByZWFsQ29sdW1uczogSVRhYmxlQ29sdW1ucztcclxuICAgIGNvbHM6IHN0cmluZ1tdO1xyXG5cclxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnBhZ2luYXRpb24gPyBbXSA6IHRoaXMucGFnaW5hdGlvbi5pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBAQ29udGVudENoaWxkKFwicm93VGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICByb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAQ29udGVudENoaWxkKFwid3JhcHBlclRlbXBsYXRlXCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gICAgd3JhcHBlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoXCJmaWx0ZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJjb2x1bW5zVGVtcGxhdGVcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgICBjb2x1bW5zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImRlZmF1bHRSb3dUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGRlZmF1bHRSb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwiZGVmYXVsdFdyYXBwZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGRlZmF1bHRXcmFwcGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQFZpZXdDaGlsZChcImRlZmF1bHRGaWx0ZXJUZW1wbGF0ZVwiLCB7c3RhdGljOiB0cnVlfSlcclxuICAgIGRlZmF1bHRGaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwicGFnaW5hdGlvblwiKVxyXG4gICAgcHJvdGVjdGVkIHBhZ2luYXRpb246IFBhZ2luYXRpb25EaXJlY3RpdmU7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihEeW5hbWljVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSlcclxuICAgIHByb3RlY3RlZCB0ZW1wbGF0ZURpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxEeW5hbWljVGFibGVUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29tcGFyZShvcmRlckJ5OiBzdHJpbmcsIGE6IFBhZ2luYXRpb25JdGVtQ29udGV4dCwgYjogUGFnaW5hdGlvbkl0ZW1Db250ZXh0KTogbnVtYmVyIHtcclxuICAgICAgICBhID0gYS5pdGVtID8gYS5pdGVtW29yZGVyQnldIDogbnVsbDtcclxuICAgICAgICBiID0gYi5pdGVtID8gYi5pdGVtW29yZGVyQnldIDogbnVsbDtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29tcGFyZShhLCBiKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmRhdGFMb2FkZXIgPSB0aGlzLmxvYWRMb2NhbERhdGE7XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy50YWJsZUlkID0gVW5pcXVlVXRpbHMudXVpZCgpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0ge307XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMudGVzdElkID0gXCJ0YWJsZVwiO1xyXG4gICAgICAgIHRoaXMucmVhbENvbHVtbnMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSB0aGlzLnRlbXBsYXRlRGlyZWN0aXZlcy5yZWR1Y2UoKHJlc3VsdCwgZGlyZWN0aXZlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KGRpcmVjdGl2ZS5jb2x1bW4pKSB7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmUuY29sdW1uLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRbY29sdW1uXSA9IGRpcmVjdGl2ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzU3RyaW5nKGRpcmVjdGl2ZS5jb2x1bW4pIHx8IGRpcmVjdGl2ZS5jb2x1bW4ubGVuZ3RoID09IDApIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIHJlc3VsdFtkaXJlY3RpdmUuY29sdW1uXSA9IGRpcmVjdGl2ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucm93VGVtcGxhdGUgPSB0aGlzLnJvd1RlbXBsYXRlIHx8IHRoaXMuZGVmYXVsdFJvd1RlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyVGVtcGxhdGUgPSB0aGlzLmZpbHRlclRlbXBsYXRlIHx8IHRoaXMuZGVmYXVsdEZpbHRlclRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSBjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlIHx8IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWxDb2x1bW5zID0gT2JqZWN0VXRpbHMuaXNBcnJheShjb2x1bW5zKSA/IGNvbHVtbnMucmVkdWNlKChyZXN1bHQsIGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2NvbHVtbl0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9LCB7fSkgOiBPYmplY3Qua2V5cyhjb2x1bW5zKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbHVtbnNba2V5XTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gIXZhbHVlIHx8IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgID8ge3RpdGxlOiBgdGl0bGUuJHtrZXl9YCwgc29ydDogdmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0sIHt9IGFzIElUYWJsZUNvbHVtbnMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHMgPSBPYmplY3Qua2V5cyh0aGlzLnJlYWxDb2x1bW5zKTtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckJ5ID0gdGhpcy5vcmRlckJ5IGluIHRoaXMucmVhbENvbHVtbnMgPyB0aGlzLm9yZGVyQnkgOiB0aGlzLmNvbHNbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGFuZ2VzLm9yZGVyQnkgJiYgdGhpcy5yZWFsQ29sdW1ucykge1xyXG4gICAgICAgICAgICB0aGlzLm9yZGVyQnkgPSB0aGlzLm9yZGVyQnkgaW4gdGhpcy5yZWFsQ29sdW1ucyA/IHRoaXMub3JkZXJCeSA6IHRoaXMuY29sc1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmRhdGEgJiYgIWNoYW5nZXMucGFyYWxsZWxEYXRhICYmICFjaGFuZ2VzLml0ZW1zUGVyUGFnZSAmJiAhY2hhbmdlcy5vcmRlckJ5ICYmICFjaGFuZ2VzLm9yZGVyRGVzY2VuZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2goKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBhZ2luYXRpb24pIHJldHVybjtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24ucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEZpbHRlcihmaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE9yZGVyKGNvbHVtbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcmRlckRlc2NlbmRpbmcgPSBjb2x1bW4gPT0gdGhpcy5vcmRlckJ5ICYmICF0aGlzLm9yZGVyRGVzY2VuZGluZztcclxuICAgICAgICB0aGlzLm9yZGVyQnkgPSBjb2x1bW47XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZERhdGEgPSAocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcik6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXJCeSA9IHRoaXMucmVhbENvbHVtbnNbdGhpcy5vcmRlckJ5XT8uc29ydDtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhTG9hZGVyKHBhZ2UsIGl0ZW1zUGVyUGFnZSwgb3JkZXJCeSwgdGhpcy5vcmRlckRlc2NlbmRpbmcsIHRoaXMuZmlsdGVyKTtcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSBsb2FkTG9jYWxEYXRhKHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sIGZpbHRlcjogc3RyaW5nKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IFtdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb21wYXJlOiAoYTogYW55LCBiOiBhbnkpID0+IG51bWJlciA9IG9yZGVyRGVzY2VuZGluZ1xyXG4gICAgICAgICAgICA/IChhLCBiKSA9PiBEeW5hbWljVGFibGVDb21wb25lbnQuY29tcGFyZShvcmRlckJ5LCBiLCBhKVxyXG4gICAgICAgICAgICA6IChhLCBiKSA9PiBEeW5hbWljVGFibGVDb21wb25lbnQuY29tcGFyZShvcmRlckJ5LCBhLCBiKTtcclxuICAgICAgICBjb25zdCBmcm9tID0gKHBhZ2UgLSAxKSAqIHJvd3NQZXJQYWdlO1xyXG4gICAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKHJvd3NQZXJQYWdlLCBkYXRhTGVuZ3RoIC0gZnJvbSk7XHJcbiAgICAgICAgY29uc3QgcGFyYWxsZWxEYXRhID0gdGhpcy5wYXJhbGxlbERhdGEgfHwgW107XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmRhdGEubWFwKChpdGVtLCBpeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFBhZ2luYXRpb25JdGVtQ29udGV4dChpdGVtLCBwYXJhbGxlbERhdGFbaXhdIHx8IHt9LCBkYXRhTGVuZ3RoLCBpeCwgaXgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc1N0cmluZyhmaWx0ZXIpICYmIGZpbHRlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclJ4ID0gbmV3IFJlZ0V4cChmaWx0ZXIsIFwiZ2lcIik7XHJcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihjID0+IGMuZmlsdGVyKGZpbHRlclJ4KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gb3JkZXJCeSA/IGRhdGEuc29ydChjb21wYXJlKS5zcGxpY2UoZnJvbSwgbGVuZ3RoKSA6IGRhdGEuc3BsaWNlKGZyb20sIGxlbmd0aCk7XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoY29udGV4dCwgaXgpID0+IHtcclxuICAgICAgICAgICAgY29udGV4dC5pbmRleCA9IGZyb20gKyBpeDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcclxuICAgICAgICAgICAgdG90YWw6IGRhdGFMZW5ndGgsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkeW5hbWljLXRhYmxlXCIgI3BhZ2luYXRpb249XCJwYWdpbmF0aW9uXCIgW3BhZ2luYXRpb25dPVwibG9hZERhdGFcIiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFt1cGRhdGVUaW1lXT1cInVwZGF0ZVRpbWVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbHRlclRlbXBsYXRlIGxldC10YWJsZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtc2VhcmNoXCIgKm5nSWY9XCJ0YWJsZS5zaG93RmlsdGVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2F0dHIuZm9yXT1cInRhYmxlSWRcIj57eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJ0YWJsZUlkXCJcclxuICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCArICctZmlsdGVyLWlucHV0J1wiXHJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidGFibGUuZmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRhYmxlLnNldEZpbHRlcigkZXZlbnQpXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy1jb250YWluZXIgW25neFRlbXBsYXRlT3V0bGV0XT1cImZpbHRlclRlbXBsYXRlIHx8IGRlZmF1bHRGaWx0ZXJUZW1wbGF0ZVwiIFtjb250ZXh0XT1cInRoaXNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxwYWdpbmF0aW9uLW1lbnUgW21heFNpemVdPVwibWF4UGFnZXNcIiBbZGlyZWN0aW9uTGlua3NdPVwiZGlyZWN0aW9uTGlua3NcIiBbYm91bmRhcnlMaW5rc109XCJib3VuZGFyeUxpbmtzXCI+PC9wYWdpbmF0aW9uLW1lbnU+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uVGVtcGxhdGUgbGV0LWNvbnRleHQgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW1bY29sdW1uXSA9PSB1bmRlZmluZWQgfHwgaXRlbVtjb2x1bW5dID09IG51bGwgPyAnLScgOiBpdGVtW2NvbHVtbl0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcHVyZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmd4VGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGUucmVmXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwiJ2NvbHVtbi0nICsgY29sdW1uXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCArICctJyArIGNvbHVtbiArICctJyArIGNvbnRleHQucm93SW5kZXhcIiAqbmdJZj1cIiF0ZW1wbGF0ZSB8fCAhdGVtcGxhdGUucHVyZTsgZWxzZSBwdXJlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25neFRlbXBsYXRlT3V0bGV0XT1cIiF0ZW1wbGF0ZSA/IGRlZmF1bHRUZW1wbGF0ZSA6IHRlbXBsYXRlLnJlZlwiIFtjb250ZXh0XT1cImNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvbHVtbnNUZW1wbGF0ZSBsZXQtY29udGV4dD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ3hUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZGl0aW9uYWxDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZXNbY29sdW1uXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJvd1RlbXBsYXRlIGxldC1jb250ZXh0PlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ3hUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5zVGVtcGxhdGVcIiBbY29udGV4dF09XCJjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0V3JhcHBlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2xzXCIgW25nQ2xhc3NdPVwiJ2NvbHVtbi0nICsgY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcmVhbENvbHVtbnNbY29sdW1uXS50aXRsZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cInJlYWxDb2x1bW5zW2NvbHVtbl0uc29ydDsgZWxzZSBkZWZhdWx0Q29sXCIgKGNsaWNrKT1cInNldE9yZGVyKGNvbHVtbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyByZWFsQ29sdW1uc1tjb2x1bW5dLnRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwib3JkZXJCeSA9PSBjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIm9yZGVyRGVzY2VuZGluZyA/ICdzb3J0LWRlc2MnIDogJ3NvcnQtYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwib3JkZXJCeSA9PSBjb2x1bW4gPyAob3JkZXJEZXNjZW5kaW5nID8gJ3NvcnQtZGVzYyc6ICdzb3J0LWFzYycpIDogJydcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcGFnaW5hdGlvbkl0ZW09XCJsZXQgY29udGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmd4VGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkaXRpb25hbENvbnRleHRdPVwidGhpc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ3hUZW1wbGF0ZU91dGxldF09XCJ3cmFwcGVyVGVtcGxhdGUgfHwgZGVmYXVsdFdyYXBwZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ0aGlzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxwYWdpbmF0aW9uLW1lbnUgW21heFNpemVdPVwibWF4UGFnZXNcIiBbZGlyZWN0aW9uTGlua3NdPVwiZGlyZWN0aW9uTGlua3NcIiBbYm91bmRhcnlMaW5rc109XCJib3VuZGFyeUxpbmtzXCI+PC9wYWdpbmF0aW9uLW1lbnU+XHJcbjwvZGl2PlxyXG4iXX0=