@stemy/ngx-utils 12.1.0 → 12.1.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.
@@ -113,4 +113,4 @@ export const GLOBAL_TEMPLATES = new InjectionToken("global-templates");
113
113
  // --- Valued promise ---
114
114
  export class ValuedPromise extends Promise {
115
115
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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QUFXLEdBQUcsSUFBSSxjQUFjLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWdDLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFLN0csTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUF1Qix3QkFBd0IsQ0FBQyxDQUFDO0FBY2hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUF1QixrQkFBa0IsQ0FBQyxDQUFDO0FBaUI3Rix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGFBQWlCLFNBQVEsT0FBVTtDQUUvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE5nWm9uZSwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtSZXF1ZXN0fSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvcmVmbGVjdC51dGlsc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbi8vIC0tLSBVdGlsc1xyXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlRmFjdG9yeSB7XHJcbiAgICBmdW5jOiBGdW5jdGlvbjtcclxuICAgIHR5cGU/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBhbnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbnZhc0NvbG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBJY29uIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcclxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBpY29uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBMYW5ndWFnZSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XHJcbiAgICBsYW5nOiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmdzIHtcclxuICAgIGxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZXZMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBzZXR0aW5ncz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyAtLS0gVGltZXIgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcclxuICAgIGlkPzogYW55O1xyXG4gICAgZnVuYz86IEZ1bmN0aW9uO1xyXG4gICAgdGltZT86IG51bWJlcjtcclxuICAgIHJ1bj86ICgpID0+IHZvaWQ7XHJcbiAgICBzZXQ/OiAoZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcikgPT4gdm9pZDtcclxuICAgIGNsZWFyPzogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuLy8gLS0tIEV4dHJhSXRlbVByb3BlcnRpZXMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4dHJhUHJvcGVydGllcyB7XHJcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gR3JvdXAgYnkgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwTWFwIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFRyYW5zbGF0ZSAtLS1cclxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25RdWVyeSA9IHN0cmluZyB8IElUcmFuc2xhdGlvbnMgfCBJVHJhbnNsYXRpb25bXTtcclxuXHJcbi8vIC0tLSBQYWdpbmF0aW9uIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdlSW5mbyB7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBudW1iZXI6IG51bWJlcjtcclxuICAgIGFjdGl2ZTogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkRhdGEge1xyXG4gICAgdG90YWw6IG51bWJlcjtcclxuICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgIG1ldGE/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25EYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uSXRlbUNvbnRleHQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtOiBhbnksIHB1YmxpYyBwYXJhbGxlbEl0ZW06IGFueSwgcHVibGljIGNvdW50OiBudW1iZXIsIHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgZGF0YUluZGV4OiBudW1iZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmlyc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBldmVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICUgMiA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgb2RkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ldmVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcm93IGlzIGRlcHJlY2F0ZWQgdXNlIGl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcGFyYWxsZWxSb3coKTogYW55IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSBwYXJhbGxlbFJvdyBpcyBkZXByZWNhdGVkIHVzZSBwYXJhbGxlbEl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbGxlbEl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKGZpbHRlclJ4OiBSZWdFeHApOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5pdGVtKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pdGVtW2tleV07XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBpZiAodGVzdFZhbHVlLm1hdGNoKGZpbHRlclJ4KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEh0dHAgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cEhlYWRlcnMge1xyXG4gICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBQYXJhbXMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBib2R5PzogYW55O1xyXG4gICAgaGVhZGVycz86IElIdHRwSGVhZGVycyB8IEh0dHBIZWFkZXJzO1xyXG4gICAgb3JpZ2luYWxIZWFkZXJzPzogSUh0dHBIZWFkZXJzO1xyXG4gICAgcGFyYW1zPzogSUh0dHBQYXJhbXM7XHJcbiAgICBvYnNlcnZlPzogXCJib2R5XCI7XHJcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgICByZXNwb25zZVR5cGU/OiBcImFycmF5YnVmZmVyXCIgfCBcImJsb2JcIiB8IFwianNvblwiIHwgXCJ0ZXh0XCI7XHJcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gICAgdGltZW91dD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSXNzdWVDb250ZXh0IHtcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBwZXJjZW50YWdlPzogbnVtYmVyO1xyXG4gICAgbG9hZGVkPzogbnVtYmVyO1xyXG4gICAgdG90YWw/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2dyZXNzTGlzdGVuZXIgPSAocHJvZ3Jlc3M6IElQcm9ncmVzcykgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCB0eXBlIFByb21pc2VFeGVjdXRvciA9IChyZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cFByb21pc2UgZXh0ZW5kcyBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIHByb3RlY3RlZCByZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgaGFzUmVqZWN0SGFuZGxlcjogYm9vbGVhbjtcclxuICAgIHByb3RlY3RlZCBhdHRhY2hDb3VudDogbnVtYmVyO1xyXG4gICAgcHJvdGVjdGVkIHJ1bkNvdW50OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkLCBleGVjdXRvcjogUHJvbWlzZUV4ZWN1dG9yKSB7XHJcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xyXG4gICAgICAgIHRoaXMucmVqZWN0SGFuZGxlciA9IHJlamVjdEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhlbjxUUmVzdWx0MSwgVFJlc3VsdDI+KG9uRnVsZmlsbGVkPzogKCh2YWx1ZTogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgVFJlc3VsdDEpKSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZD86ICgocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IFRSZXN1bHQyKSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCsrO1xyXG4gICAgICAgIHJldHVybiBzdXBlci50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gb25GdWxmaWxsZWQgPyBvbkZ1bGZpbGxlZCh2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIH0sIChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gb25SZWplY3RlZCA/IG9uUmVqZWN0ZWQocmVhc29uKSA6IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUmVqZWN0SGFuZGxlciA9IHRoaXMuaGFzUmVqZWN0SGFuZGxlciB8fCAob25SZWplY3RlZCAmJiByZXN1bHQgIT09IGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIodGhpcy5ydW5Db3VudCA9PSB0aGlzLmF0dGFjaENvdW50ICYmICF0aGlzLmhhc1JlamVjdEhhbmRsZXIgPyByZWFzb24gOiBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueSB8IFRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwU2VydmljZSB7XHJcbiAgICBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZTtcclxuICAgIHVybCh1cmw6IHN0cmluZyk6IHN0cmluZztcclxuICAgIG1ha2VMaXN0UGFyYW1zKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk/OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZz86IGJvb2xlYW4sIGZpbHRlcj86IHN0cmluZyk6IElIdHRwUGFyYW1zO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRVhQUkVTU19SRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KFwiZXhwcmVzcy1yZXF1ZXN0XCIpO1xyXG5cclxuLy8gLS0tIEFwaSBzZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXBpU2VydmljZSBleHRlbmRzIElIdHRwU2VydmljZSB7XHJcbiAgICBjYWNoZTogYW55O1xyXG4gICAgY2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcG9zdCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHB1dCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBhdGNoKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgdXBsb2FkKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGxpc3QodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBUElfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPihcImFwaS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIE9wZW5BcGkgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYVByb3BlcnR5IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gICAgY29sdW1uPzogYm9vbGVhbjtcclxuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzPzogYW55O1xyXG4gICAgJHJlZj86IHN0cmluZztcclxuICAgIGl0ZW1zPzogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIGVudW0/OiBzdHJpbmdbXTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYSB7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hUHJvcGVydHk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWQ6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hcyB7XHJcbiAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWE7XHJcbn1cclxuXHJcbi8vIC0tLSBEeW5hbWljIHRhYmxlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbHVtbnMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlIHtcclxuICAgIGNvbHVtbjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICBwdXJlOiBib29sZWFuO1xyXG4gICAgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlcyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBJVGFibGVUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVEYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sIGZpbHRlcjogc3RyaW5nKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG4vLyAtLS0gUmVzb3VyY2UgaWYgLS0tXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUlmQ29udGV4dCB7XHJcbiAgICByZXNvdXJjZTogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIC0tLSBDb25maWdTZXJ2aWNlIC0tLVxyXG5leHBvcnQgY2xhc3MgSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgYmFzZVVybD86IHN0cmluZztcclxuICAgIGJhc2VEb21haW4/OiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvblVybD86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnU2VydmljZSB7XHJcbiAgICBjb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcmVhZG9ubHkgbG9hZDogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZztcclxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55O1xyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDT05GSUdfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnU2VydmljZT4oXCJjb25maWctc2VydmljZVwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQVNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlndXJhdGlvbj4oXCJiYXNlLWNvbmZpZ1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JJUFRfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oXCJzY3JpcHQtcGFyYW1zXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJPT1RfRUxFTUVOVDogSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+ID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PihcImFwcC1yb290LWVsZW1lbnRcIik7XHJcblxyXG4vLyAtLS0gRXJyb3IgaGFuZGxlciBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBFcnJvckhhbmRsZXJDYWxsYmFjayA9IChlcnJvcjogc3RyaW5nKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgY29uc3QgRVJST1JfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJlcnJvci1oYW5kbGVyLWNhbGxiYWNrXCIpO1xyXG5cclxuLy8gLS0tIEdsb2JhbCB0ZW1wbGF0ZXMgc2VydmljZVxyXG5cclxuZXhwb3J0IHR5cGUgR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIgPSAoY29tcG9uZW50OiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdsb2JhbFRlbXBsYXRlcyB7XHJcbiAgICByZWFkb25seSB0ZW1wbGF0ZXNVcGRhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbiAgICBnZXQoaWQ6IHN0cmluZywgY29tcG9uZW50PzogYW55KTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGFkZChpZDogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQ7XHJcbiAgICByZW1vdmUoaWQ6IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBhZGRDb21wb25lbnRNb2RpZmllcihpZDogc3RyaW5nLCBtb2RpZmllcjogR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgR0xPQkFMX1RFTVBMQVRFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJnbG9iYWwtdGVtcGxhdGVzXCIpO1xyXG5cclxuLy8gLS0tIE1vZHVsZSAtLS1cclxuZXhwb3J0IHR5cGUgQXBwSW5pdGlhbGl6ZXJGdW5jID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNb2R1bGVDb25maWcge1xyXG4gICAgYXBpU2VydmljZT86IFR5cGU8SUFwaVNlcnZpY2U+XHJcbiAgICBhdXRoU2VydmljZT86IFR5cGU8SUF1dGhTZXJ2aWNlPjtcclxuICAgIGljb25TZXJ2aWNlPzogVHlwZTxJSWNvblNlcnZpY2U+O1xyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlPzogVHlwZTxJTGFuZ3VhZ2VTZXJ2aWNlPjtcclxuICAgIHRvYXN0ZXJTZXJ2aWNlPzogVHlwZTxJVG9hc3RlclNlcnZpY2U+O1xyXG4gICAgcHJvbWlzZVNlcnZpY2U/OiBUeXBlPElQcm9taXNlU2VydmljZT47XHJcbiAgICBjb25maWdTZXJ2aWNlPzogVHlwZTxJQ29uZmlnU2VydmljZT47XHJcbiAgICBnbG9iYWxUZW1wbGF0ZXM/OiBUeXBlPElHbG9iYWxUZW1wbGF0ZXM+O1xyXG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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QUFXLEdBQUcsSUFBSSxjQUFjLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWdDLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFLN0csTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUF1Qix3QkFBd0IsQ0FBQyxDQUFDO0FBY2hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUF1QixrQkFBa0IsQ0FBQyxDQUFDO0FBaUI3Rix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGFBQWlCLFNBQVEsT0FBVTtDQUUvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE5nWm9uZSwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtSZXF1ZXN0fSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvcmVmbGVjdC51dGlsc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbi8vIC0tLSBVdGlsc1xyXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlRmFjdG9yeSB7XHJcbiAgICBmdW5jOiBGdW5jdGlvbjtcclxuICAgIHR5cGU/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBhbnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbnZhc0NvbG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBJY29uIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcclxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBpY29uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBMYW5ndWFnZSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XHJcbiAgICBsYW5nOiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmdzIHtcclxuICAgIGxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZXZMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBzZXR0aW5ncz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyAtLS0gVGltZXIgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcclxuICAgIGlkPzogYW55O1xyXG4gICAgZnVuYz86IEZ1bmN0aW9uO1xyXG4gICAgdGltZT86IG51bWJlcjtcclxuICAgIHJ1bj86ICgpID0+IHZvaWQ7XHJcbiAgICBzZXQ/OiAoZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcikgPT4gdm9pZDtcclxuICAgIGNsZWFyPzogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuLy8gLS0tIEV4dHJhSXRlbVByb3BlcnRpZXMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4dHJhUHJvcGVydGllcyB7XHJcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gR3JvdXAgYnkgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwTWFwIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFRyYW5zbGF0ZSAtLS1cclxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25RdWVyeSA9IHN0cmluZyB8IElUcmFuc2xhdGlvbnMgfCBJVHJhbnNsYXRpb25bXTtcclxuXHJcbi8vIC0tLSBQYWdpbmF0aW9uIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdlSW5mbyB7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBudW1iZXI6IG51bWJlcjtcclxuICAgIGFjdGl2ZTogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkRhdGEge1xyXG4gICAgdG90YWw6IG51bWJlcjtcclxuICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgIG1ldGE/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25EYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uSXRlbUNvbnRleHQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtOiBhbnksIHB1YmxpYyBwYXJhbGxlbEl0ZW06IGFueSwgcHVibGljIGNvdW50OiBudW1iZXIsIHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgZGF0YUluZGV4OiBudW1iZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmlyc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBldmVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICUgMiA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgb2RkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ldmVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcm93IGlzIGRlcHJlY2F0ZWQgdXNlIGl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcGFyYWxsZWxSb3coKTogYW55IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSBwYXJhbGxlbFJvdyBpcyBkZXByZWNhdGVkIHVzZSBwYXJhbGxlbEl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbGxlbEl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKGZpbHRlclJ4OiBSZWdFeHApOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5pdGVtKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pdGVtW2tleV07XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBpZiAodGVzdFZhbHVlLm1hdGNoKGZpbHRlclJ4KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEh0dHAgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cEhlYWRlcnMge1xyXG4gICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBQYXJhbXMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBib2R5PzogYW55O1xyXG4gICAgaGVhZGVycz86IElIdHRwSGVhZGVycyB8IEh0dHBIZWFkZXJzO1xyXG4gICAgb3JpZ2luYWxIZWFkZXJzPzogSUh0dHBIZWFkZXJzO1xyXG4gICAgcGFyYW1zPzogSUh0dHBQYXJhbXM7XHJcbiAgICBvYnNlcnZlPzogXCJib2R5XCIgfCBcInJlc3BvbnNlXCI7XHJcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgICByZXNwb25zZVR5cGU/OiBcImFycmF5YnVmZmVyXCIgfCBcImJsb2JcIiB8IFwianNvblwiIHwgXCJ0ZXh0XCI7XHJcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gICAgdGltZW91dD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSXNzdWVDb250ZXh0IHtcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBwZXJjZW50YWdlPzogbnVtYmVyO1xyXG4gICAgbG9hZGVkPzogbnVtYmVyO1xyXG4gICAgdG90YWw/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2dyZXNzTGlzdGVuZXIgPSAocHJvZ3Jlc3M6IElQcm9ncmVzcykgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCB0eXBlIFByb21pc2VFeGVjdXRvciA9IChyZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cFByb21pc2UgZXh0ZW5kcyBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIHByb3RlY3RlZCByZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgaGFzUmVqZWN0SGFuZGxlcjogYm9vbGVhbjtcclxuICAgIHByb3RlY3RlZCBhdHRhY2hDb3VudDogbnVtYmVyO1xyXG4gICAgcHJvdGVjdGVkIHJ1bkNvdW50OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkLCBleGVjdXRvcjogUHJvbWlzZUV4ZWN1dG9yKSB7XHJcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xyXG4gICAgICAgIHRoaXMucmVqZWN0SGFuZGxlciA9IHJlamVjdEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhlbjxUUmVzdWx0MSwgVFJlc3VsdDI+KG9uRnVsZmlsbGVkPzogKCh2YWx1ZTogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgVFJlc3VsdDEpKSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZD86ICgocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IFRSZXN1bHQyKSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCsrO1xyXG4gICAgICAgIHJldHVybiBzdXBlci50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gb25GdWxmaWxsZWQgPyBvbkZ1bGZpbGxlZCh2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIH0sIChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gb25SZWplY3RlZCA/IG9uUmVqZWN0ZWQocmVhc29uKSA6IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUmVqZWN0SGFuZGxlciA9IHRoaXMuaGFzUmVqZWN0SGFuZGxlciB8fCAob25SZWplY3RlZCAmJiByZXN1bHQgIT09IGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIodGhpcy5ydW5Db3VudCA9PSB0aGlzLmF0dGFjaENvdW50ICYmICF0aGlzLmhhc1JlamVjdEhhbmRsZXIgPyByZWFzb24gOiBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueSB8IFRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwU2VydmljZSB7XHJcbiAgICBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZTtcclxuICAgIHVybCh1cmw6IHN0cmluZyk6IHN0cmluZztcclxuICAgIG1ha2VMaXN0UGFyYW1zKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk/OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZz86IGJvb2xlYW4sIGZpbHRlcj86IHN0cmluZyk6IElIdHRwUGFyYW1zO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRVhQUkVTU19SRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KFwiZXhwcmVzcy1yZXF1ZXN0XCIpO1xyXG5cclxuLy8gLS0tIEFwaSBzZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXBpU2VydmljZSBleHRlbmRzIElIdHRwU2VydmljZSB7XHJcbiAgICBjYWNoZTogYW55O1xyXG4gICAgY2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcG9zdCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHB1dCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBhdGNoKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgdXBsb2FkKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGxpc3QodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBUElfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPihcImFwaS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIE9wZW5BcGkgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYVByb3BlcnR5IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gICAgY29sdW1uPzogYm9vbGVhbjtcclxuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzPzogYW55O1xyXG4gICAgJHJlZj86IHN0cmluZztcclxuICAgIGl0ZW1zPzogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIGVudW0/OiBzdHJpbmdbXTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYSB7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hUHJvcGVydHk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWQ6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hcyB7XHJcbiAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWE7XHJcbn1cclxuXHJcbi8vIC0tLSBEeW5hbWljIHRhYmxlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbHVtbnMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlIHtcclxuICAgIGNvbHVtbjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICBwdXJlOiBib29sZWFuO1xyXG4gICAgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlcyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBJVGFibGVUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVEYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sIGZpbHRlcjogc3RyaW5nKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG4vLyAtLS0gUmVzb3VyY2UgaWYgLS0tXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUlmQ29udGV4dCB7XHJcbiAgICByZXNvdXJjZTogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIC0tLSBDb25maWdTZXJ2aWNlIC0tLVxyXG5leHBvcnQgY2xhc3MgSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgYmFzZVVybD86IHN0cmluZztcclxuICAgIGJhc2VEb21haW4/OiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvblVybD86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnU2VydmljZSB7XHJcbiAgICBjb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcmVhZG9ubHkgbG9hZDogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZztcclxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55O1xyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDT05GSUdfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnU2VydmljZT4oXCJjb25maWctc2VydmljZVwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQVNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlndXJhdGlvbj4oXCJiYXNlLWNvbmZpZ1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JJUFRfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oXCJzY3JpcHQtcGFyYW1zXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJPT1RfRUxFTUVOVDogSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+ID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PihcImFwcC1yb290LWVsZW1lbnRcIik7XHJcblxyXG4vLyAtLS0gRXJyb3IgaGFuZGxlciBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBFcnJvckhhbmRsZXJDYWxsYmFjayA9IChlcnJvcjogc3RyaW5nKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgY29uc3QgRVJST1JfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJlcnJvci1oYW5kbGVyLWNhbGxiYWNrXCIpO1xyXG5cclxuLy8gLS0tIEdsb2JhbCB0ZW1wbGF0ZXMgc2VydmljZVxyXG5cclxuZXhwb3J0IHR5cGUgR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIgPSAoY29tcG9uZW50OiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdsb2JhbFRlbXBsYXRlcyB7XHJcbiAgICByZWFkb25seSB0ZW1wbGF0ZXNVcGRhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbiAgICBnZXQoaWQ6IHN0cmluZywgY29tcG9uZW50PzogYW55KTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGFkZChpZDogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQ7XHJcbiAgICByZW1vdmUoaWQ6IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBhZGRDb21wb25lbnRNb2RpZmllcihpZDogc3RyaW5nLCBtb2RpZmllcjogR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgR0xPQkFMX1RFTVBMQVRFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJnbG9iYWwtdGVtcGxhdGVzXCIpO1xyXG5cclxuLy8gLS0tIE1vZHVsZSAtLS1cclxuZXhwb3J0IHR5cGUgQXBwSW5pdGlhbGl6ZXJGdW5jID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNb2R1bGVDb25maWcge1xyXG4gICAgYXBpU2VydmljZT86IFR5cGU8SUFwaVNlcnZpY2U+XHJcbiAgICBhdXRoU2VydmljZT86IFR5cGU8SUF1dGhTZXJ2aWNlPjtcclxuICAgIGljb25TZXJ2aWNlPzogVHlwZTxJSWNvblNlcnZpY2U+O1xyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlPzogVHlwZTxJTGFuZ3VhZ2VTZXJ2aWNlPjtcclxuICAgIHRvYXN0ZXJTZXJ2aWNlPzogVHlwZTxJVG9hc3RlclNlcnZpY2U+O1xyXG4gICAgcHJvbWlzZVNlcnZpY2U/OiBUeXBlPElQcm9taXNlU2VydmljZT47XHJcbiAgICBjb25maWdTZXJ2aWNlPzogVHlwZTxJQ29uZmlnU2VydmljZT47XHJcbiAgICBnbG9iYWxUZW1wbGF0ZXM/OiBUeXBlPElHbG9iYWxUZW1wbGF0ZXM+O1xyXG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Inject, Injectable, Optional } from "@angular/core";
3
- import { HttpEventType, HttpResponse } from "@angular/common/http";
3
+ import { HttpEventType } from "@angular/common/http";
4
4
  import { CONFIG_SERVICE, EXPRESS_REQUEST, HttpPromise, LANGUAGE_SERVICE, TOASTER_SERVICE } from "../common-types";
5
5
  import { ObjectUtils } from "../utils/object.utils";
6
6
  import { MathUtils } from "../utils/math.utils";
@@ -178,8 +178,7 @@ export class BaseHttpService {
178
178
  }
179
179
  return;
180
180
  }
181
- const response = event instanceof HttpResponse ? event.body : event;
182
- resolve(this.parseResponse(response, url, options));
181
+ resolve(this.parseResponse(event, url, options));
183
182
  const headers = options.headers;
184
183
  const authKey = "Authorization";
185
184
  // If we use token auth
@@ -229,7 +228,7 @@ export class BaseHttpService {
229
228
  // Set base options
230
229
  options = options ? Object.assign({}, options) : {};
231
230
  options.method = method;
232
- options.observe = "body";
231
+ options.observe = options.observe || "body";
233
232
  options.originalHeaders = options.originalHeaders || options.headers || {};
234
233
  options.withCredentials = ObjectUtils.isBoolean(options.withCredentials) ? options.withCredentials : this.withCredentials;
235
234
  options.body = body || {};
@@ -283,4 +282,4 @@ BaseHttpService.ctorParameters = () => [
283
282
  { type: undefined, decorators: [{ type: Inject, args: [CONFIG_SERVICE,] }] },
284
283
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [EXPRESS_REQUEST,] }] }
285
284
  ];
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFvQixhQUFhLEVBQTJCLFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzdHLE9BQU8sRUFDSCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFVWCxnQkFBZ0IsRUFFaEIsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUdsQyxNQUFNLE9BQU8sZUFBZTtJQXlCeEIsWUFBNkMsTUFBc0IsRUFDdEIsT0FBdUIsRUFDckIsUUFBMEIsRUFDM0IsT0FBd0IsRUFDekIsT0FBdUIsRUFDVixVQUFtQixJQUFJO1FBTHBDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFFN0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQS9CRCxJQUFJLElBQUk7UUFDSixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFNUyxNQUFNLENBQUMsbUJBQW1CO1FBQ2hDLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRCxlQUFlLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBY0QsR0FBRyxDQUFDLEdBQVc7UUFDWCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVyxFQUFFLE1BQW1CO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsWUFBb0IsRUFBRSxVQUFrQixJQUFJLEVBQUUsa0JBQTJCLElBQUksRUFBRSxTQUFpQixJQUFJO1FBQzdILE1BQU0sTUFBTSxHQUFnQjtZQUN4QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssRUFBRSxZQUFZO1NBQ3RCLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQzVGLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUMxQjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxVQUFVLENBQUMsR0FBVyxFQUFFLE9BQXlCLEVBQUUsSUFBVTtRQUNuRSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLGFBQWEsQ0FBQyxHQUFXLEVBQUUsT0FBeUIsRUFBRSxJQUFVO1FBQ3RFLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsV0FBVyxDQUFDLEdBQVcsRUFBRSxJQUFVLEVBQUUsT0FBeUI7UUFDcEUsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFUyxVQUFVLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxPQUF5QjtRQUNuRSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLFlBQVksQ0FBQyxHQUFXLEVBQUUsSUFBVSxFQUFFLE9BQXlCO1FBQ3JFLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsUUFBMkIsRUFBRSxPQUF5QjtRQUNsRyxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLFlBQVksSUFBSSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRywwQkFBMEIsQ0FBQztTQUN4RDtRQUNELE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDckMsT0FBTyxFQUFFLE9BQU87WUFDaEIsY0FBYyxFQUFFLElBQUk7U0FDdkIsRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVTLFdBQVcsQ0FBQyxHQUFXLEVBQUUsTUFBbUI7UUFDbEQsT0FBTyxJQUFJLE9BQU8sQ0FBa0IsT0FBTyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUMvQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzNCLE9BQU8sQ0FBQzt3QkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ2xCLEtBQUssRUFBRSxJQUFJO3dCQUNYLElBQUksRUFBRSxFQUFFO3FCQUNYLENBQUMsQ0FBQztvQkFDSCxPQUFPO2lCQUNWO2dCQUNELE9BQU8sQ0FBQztvQkFDSixLQUFLLEVBQUUsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLEtBQUssTUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsS0FBSyxDQUFBLEtBQUksTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxNQUFNLENBQUEsSUFBSSxDQUFDO29CQUNqRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO2lCQUN4QixDQUFDLENBQUM7WUFDUCxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ1YsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtvQkFDaEQsT0FBTyxDQUFDO3dCQUNKLEtBQUssRUFBRSxDQUFDO3dCQUNSLEtBQUssRUFBRSxDQUFDO2dDQUNKLEVBQUUsRUFBRSxJQUFJO2dDQUNSLEtBQUssRUFBRSxrQkFBa0I7NkJBQzVCLENBQUM7d0JBQ0YsSUFBSSxFQUFFLEVBQUU7cUJBQ1gsQ0FBQyxDQUFDO29CQUNILE9BQU8sSUFBSSxDQUFDO2lCQUNmO2dCQUNELE9BQU8sQ0FBQztvQkFDSixLQUFLLEVBQUUsQ0FBQztvQkFDUixLQUFLLEVBQUUsRUFBRTtvQkFDVCxJQUFJLEVBQUUsRUFBRTtpQkFDWCxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxXQUFtQixFQUFFLE9BQXdCLEVBQUUsTUFBa0I7UUFDL0YsTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVTLFlBQVksQ0FBQyxPQUFlLEVBQUUsWUFBMkIsRUFBRSxNQUFXLEVBQUUsT0FBd0I7UUFDdEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFUyxVQUFVLENBQUMsT0FBZSxFQUFFLFlBQTJCLEVBQUUsTUFBVyxFQUFFLE9BQXdCO1FBQ3BHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRVMsU0FBUyxDQUFDLEdBQVcsRUFBRSxPQUF3QixFQUFFLFFBQTJCO1FBQ2xGLE1BQU0sWUFBWSxHQUFrQixFQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUU5QyxPQUFPLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7b0JBQUUsT0FBTztnQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxREFBcUQsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUYsT0FBTzthQUNWO1lBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsdUVBQXVFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEksT0FBTzthQUNWO1lBQ0QsTUFBTSxLQUFLLEdBQUcsc0VBQXNFLENBQUM7WUFDckYsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzVJLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLGtGQUFrRixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0ksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDOUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7Z0JBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxHQUFHLENBQUM7b0JBQzdFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUN2RCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7b0JBQ2xDLElBQUksT0FBTyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxjQUFjLEVBQUU7d0JBQ3ZFLE1BQU0sUUFBUSxHQUFHOzRCQUNiLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDOzRCQUNoRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07NEJBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSzt5QkFDckIsQ0FBQzt3QkFDRixJQUFJLFFBQVEsRUFBRTs0QkFDVixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7eUJBQ3RCO3dCQUNELE9BQU87cUJBQ1Y7b0JBQ0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxZQUFZLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNwRSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ3BELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFzQixDQUFDO29CQUMvQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUM7b0JBQ2hDLHVCQUF1QjtvQkFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNwRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxXQUFXLENBQUM7d0JBQ3ZFLGdEQUFnRDt3QkFDaEQsSUFBSSxXQUFXLEdBQUcsTUFBTSxHQUFHLGFBQWEsRUFBRTs0QkFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQzt5QkFDaEM7cUJBQ0o7Z0JBQ0wsQ0FBQyxFQUFFLENBQUMsUUFBMEMsRUFBRSxFQUFFO29CQUM5QyxJQUFJLFFBQVEsWUFBWSxZQUFZLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7d0JBQ3BGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDakIsT0FBTztxQkFDVjtvQkFDRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBc0IsQ0FBQztvQkFDL0MsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDO29CQUNoQywrR0FBK0c7b0JBQy9HLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTt3QkFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFOzRCQUNyRCxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDOzRCQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDakUsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsSUFBSSxNQUFNOzRCQUNOLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUMvRSxPQUFPO3FCQUNWO29CQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxPQUF3QixFQUFFLEdBQWU7UUFDOUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM3QyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVMsWUFBWSxDQUFDLE9BQVk7UUFDL0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNsRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsV0FBVyxDQUFDLE9BQXlCLEVBQUUsU0FBaUIsS0FBSyxFQUFFLElBQVU7UUFDL0UsbUJBQW1CO1FBQ25CLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxtQkFBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN4QixPQUFPLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN6QixPQUFPLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUssT0FBTyxDQUFDLE9BQXdCLElBQUksRUFBRSxDQUFDO1FBQzdGLE9BQU8sQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDMUgsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLHVDQUF1QztRQUN2QyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUM5QztRQUNELE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVTLFdBQVcsQ0FBQyxPQUF3QjtRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTyxLQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVTLFVBQVUsQ0FBQyxPQUF3QjtRQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxLQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVTLGFBQWEsQ0FBQyxRQUFhLEVBQUUsR0FBVyxFQUFFLE9BQXdCO1FBQ3hFLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFUyxRQUFRLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFZSxXQUFXLENBQUMsR0FBVyxFQUFFLE9BQXdCOztZQUM3RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRTtnQkFDbkIsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMxQztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7S0FBQTtJQUVTLGlCQUFpQixDQUFDLEdBQVc7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUMvRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNqRCxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNwRSxDQUFDOztBQS9SZ0IsOEJBQWMsR0FBc0IsRUFBRSxDQUFDOztZQUgzRCxVQUFVOzs7WUFOSCxjQUFjLHVCQWdDTCxNQUFNLFNBQUMsY0FBYztZQTlCOUIsY0FBYyx1QkErQkwsTUFBTSxTQUFDLGNBQWM7NENBQ3JCLE1BQU0sU0FBQyxnQkFBZ0I7NENBQ3ZCLE1BQU0sU0FBQyxlQUFlOzRDQUN0QixNQUFNLFNBQUMsY0FBYzs0Q0FDckIsUUFBUSxZQUFJLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnRUeXBlLCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtSZXF1ZXN0fSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIENPTkZJR19TRVJWSUNFLFxyXG4gICAgRVhQUkVTU19SRVFVRVNULFxyXG4gICAgSHR0cFByb21pc2UsXHJcbiAgICBJQ29uZmlnU2VydmljZSxcclxuICAgIElIdHRwSGVhZGVycyxcclxuICAgIElIdHRwUGFyYW1zLFxyXG4gICAgSUh0dHBTZXJ2aWNlLFxyXG4gICAgSUlzc3VlQ29udGV4dCxcclxuICAgIElMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBJUGFnaW5hdGlvbkRhdGEsXHJcbiAgICBJUmVxdWVzdE9wdGlvbnMsXHJcbiAgICBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICBMQU5HVUFHRV9TRVJWSUNFLFxyXG4gICAgUHJvZ3Jlc3NMaXN0ZW5lcixcclxuICAgIFRPQVNURVJfU0VSVklDRVxyXG59IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtNYXRoVXRpbHN9IGZyb20gXCIuLi91dGlscy9tYXRoLnV0aWxzXCI7XHJcblxyXG5pbXBvcnQge0Jhc2VIdHRwQ2xpZW50fSBmcm9tIFwiLi9iYXNlLWh0dHAuY2xpZW50XCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdG9yYWdlU2VydmljZX0gZnJvbSBcIi4vc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7dGltZW91dH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7VGltZW91dEVycm9yfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmFzZUh0dHBTZXJ2aWNlIGltcGxlbWVudHMgSUh0dHBTZXJ2aWNlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIGZhaWxlZFJlcXVlc3RzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xyXG5cclxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFwiYmFzZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgd2l0aENyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3RIZWFkZXJzOiBJSHR0cEhlYWRlcnM7XHJcbiAgICByZXF1ZXN0UGFyYW1zOiBJSHR0cFBhcmFtcztcclxuICAgIGNhY2hlOiBhbnk7XHJcblxyXG4gICAgcHJvdGVjdGVkIHN0YXRpYyByZXRyeUZhaWxlZFJlcXVlc3RzKCk6IHZvaWQge1xyXG4gICAgICAgIEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cy5mb3JFYWNoKHIgPT4gcigpKTtcclxuICAgICAgICBCYXNlSHR0cFNlcnZpY2UuZmFpbGVkUmVxdWVzdHMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdW5pdmVyc2FsKCk6IFVuaXZlcnNhbFNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UudW5pdmVyc2FsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoQmFzZUh0dHBDbGllbnQpIHJlYWRvbmx5IGNsaWVudDogQmFzZUh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKSByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoTEFOR1VBR0VfU0VSVklDRSkgcmVhZG9ubHkgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KFRPQVNURVJfU0VSVklDRSkgcmVhZG9ubHkgdG9hc3RlcjogSVRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChDT05GSUdfU0VSVklDRSkgcmVhZG9ubHkgY29uZmlnczogSUNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVYUFJFU1NfUkVRVUVTVCkgcmVhZG9ubHkgcmVxdWVzdDogUmVxdWVzdCA9IG51bGxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdEhlYWRlcnMgPSB7fTtcclxuICAgICAgICB0aGlzLnJlcXVlc3RQYXJhbXMgPSB7fTtcclxuICAgICAgICB0aGlzLmNhY2hlID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgdXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVVybCh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuY2xpZW50Lm1ha2VQYXJhbXMocGFyYW1zKTtcclxuICAgICAgICBjb25zdCBxdWVyeSA9IGh0dHBQYXJhbXMua2V5cygpLm1hcChrZXkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7a2V5fT0ke2h0dHBQYXJhbXMuZ2V0KGtleSl9YDtcclxuICAgICAgICB9KS5qb2luKFwiJlwiKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy51cmwodXJsKX0/JHtxdWVyeX1gO1xyXG4gICAgfVxyXG5cclxuICAgIG1ha2VMaXN0UGFyYW1zKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk6IHN0cmluZyA9IG51bGwsIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbiA9IG51bGwsIGZpbHRlcjogc3RyaW5nID0gbnVsbCk6IElIdHRwUGFyYW1zIHtcclxuICAgICAgICBjb25zdCBwYXJhbXM6IElIdHRwUGFyYW1zID0ge1xyXG4gICAgICAgICAgICBwYWdlOiAocGFnZSAtIDEpLFxyXG4gICAgICAgICAgICBsaW1pdDogaXRlbXNQZXJQYWdlXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9yZGVyQnkpICYmICFPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZChvcmRlckRlc2NlbmRpbmcpKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gYCR7b3JkZXJEZXNjZW5kaW5nID8gXCItXCIgOiBcIlwifSR7b3JkZXJCeX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKGZpbHRlcikpIHtcclxuICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9IGZpbHRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0UHJvbWlzZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgYm9keT86IGFueSk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIkdFVFwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZGVsZXRlUHJvbWlzZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgYm9keT86IGFueSk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIkRFTEVURVwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcG9zdFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJQT1NUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwdXRQcm9taXNlKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiUFVUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXRjaFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJQQVRDSFwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdXBsb2FkUHJvbWlzZSh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyczogYW55ID0ge307XHJcbiAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gPSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgICAgICB9LCBvcHRpb25zKSwgXCJQT1NUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMsIGxpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbGlzdFByb21pc2UodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+KHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldFByb21pc2UodXJsLCB7cGFyYW1zOiBwYXJhbXN9KS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGRhdGEubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge31cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogZGF0YS5tZXRhPy50b3RhbCB8fCBkYXRhPy50b3RhbCB8fCBkYXRhLml0ZW1zPy5sZW5ndGggfHwgMCxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcyB8fCBbXSxcclxuICAgICAgICAgICAgICAgICAgICBtZXRhOiBkYXRhLm1ldGEgfHwge31cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09IDMwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk5vdCBpbXBsZW1lbnRlZC5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge31cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBoYW5kbGVVbmF1dGhvcml6ZWRFcnJvcihhYnNvbHV0ZVVybDogc3RyaW5nLCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIHJlamVjdDogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgIGlmIChCYXNlSHR0cFNlcnZpY2UuZmFpbGVkUmVxdWVzdHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVXNlciBhdXRoIGVycm9yXCIsIGFic29sdXRlVXJsLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9hc3RXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgaXNzdWVDb250ZXh0OiBJSXNzdWVDb250ZXh0LCByZWFzb246IGFueSwgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLndhcm5pbmcobWVzc2FnZSwge2lzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRvYXN0RXJyb3IobWVzc2FnZTogc3RyaW5nLCBpc3N1ZUNvbnRleHQ6IElJc3N1ZUNvbnRleHQsIHJlYXNvbjogYW55LCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybmluZyhtZXNzYWdlLCB7aXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnN9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9Qcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lcik6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBjb25zdCBpc3N1ZUNvbnRleHQ6IElJc3N1ZUNvbnRleHQgPSB7dXJsOiBcIlwifTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwUHJvbWlzZShyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJZb3UgbWF5IG5vdCBuZWVkIGEgcmVqZWN0IEhhbmRsZXIgZm9yIHRoaXMgcmVxdWVzdCFcIiwgdGhpcy5uYW1lLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYXNvbiA9IHJlc3BvbnNlLmVycm9yIHx8IHt9O1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09IDMwMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdFdhcm5pbmcoYCR7dXJsfSBlbmRwb2ludCBpcyBub3QgaW1wbGVtZW50ZWQhIENsaWNrIGhlcmUsIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGlzc3VlLmAsIGlzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCByZWdleCA9IC8oKEUxMTAwMCBkdXBsaWNhdGUga2V5IGVycm9yIGNvbGxlY3Rpb246ICguKStcXC4pfChfMSBkdXAga2V5OiguKSspKS9nO1xyXG4gICAgICAgICAgICBpZiAocmVhc29uLm1lc3NhZ2UgJiYgcmVnZXgudGVzdChyZWFzb24ubWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RFcnJvcihcIm1lc3NhZ2UuZHVwbGljYXRlLWtleS5lcnJvci5cIiArIHJlYXNvbi5tZXNzYWdlLnJlcGxhY2UocmVnZXgsIFwiXCIpLnJlcGxhY2UoXCIgaW5kZXg6IFwiLCBcIi1cIiksIGlzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRvYXN0V2FybmluZyhgJHt1cmx9IGVuZHBvaW50IGVycm9yIGlzIG5vdCBoYW5kbGVkIHByb3Blcmx5ISBDbGljayBoZXJlLCB0byBxdWlja2x5IGNyZWF0ZSBhbiBpc3N1ZS5gLCBpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9ucyk7XHJcbiAgICAgICAgfSwgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFic29sdXRlVXJsKHVybCwgb3B0aW9ucykudGhlbihhYnNvbHV0ZVVybCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZUNvbnRleHQudXJsID0gYWJzb2x1dGVVcmw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5jbGllbnQucmVxdWVzdChvcHRpb25zLm1ldGhvZCwgYWJzb2x1dGVVcmwsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxSZXF1ZXN0ID0gT2JqZWN0VXRpbHMuaXNOdW1iZXIob3B0aW9ucy50aW1lb3V0KSAmJiBvcHRpb25zLnRpbWVvdXQgPiAwXHJcbiAgICAgICAgICAgICAgICAgICAgPyByZXF1ZXN0LnBpcGUodGltZW91dChvcHRpb25zLnRpbWVvdXQpKSA6IHJlcXVlc3Q7XHJcbiAgICAgICAgICAgICAgICBmaW5hbFJlcXVlc3Quc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MgJiYgZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IE1hdGhVdGlscy5yb3VuZChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCwgMiwgMC4wMSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IGV2ZW50LmxvYWRlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBldmVudC50b3RhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKHByb2dyZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UgPyBldmVudC5ib2R5IDogZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnBhcnNlUmVzcG9uc2UocmVzcG9uc2UsIHVybCwgb3B0aW9ucykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgYXMgSHR0cEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aEtleSA9IFwiQXV0aG9yaXphdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHVzZSB0b2tlbiBhdXRoXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jICYmIGhlYWRlcnMuaGFzKGF1dGhLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJUb2tlblRpbWUgPSB0aGlzLnN0b3JhZ2UuZ2V0KFwidXNlclRva2VuVGltZVwiKSB8fCBjdXJyZW50VGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIHRoZSBsYXN0IHJlcXVlc3Qgd2FzIGEgbG9uZyBsb25nIHRpbWUgYWdvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSAtIDYwMDAwMCA+IHVzZXJUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgVGltZW91dEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgVGltZW91dEVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGFzIEh0dHBIZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhLZXkgPSBcIkF1dGhvcml6YXRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhdXRob3JpemF0aW9uIGhlYWRlciBleGlzdHMgYW5kIHdlIHN0aWxsIGhhdmUgYW4gVW5hdXRob3JpemVkIHJlc3BvbnNlIHByb21wdCB0aGUgdXNlciB0byBsb2cgaW4gYWdhaW5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVycy5oYXMoYXV0aEtleSkgJiYgcmVzcG9uc2Uuc3RhdHVzID09IDQwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdXNoZWQgPSB0aGlzLnB1c2hGYWlsZWRSZXF1ZXN0KHVybCwgb3B0aW9ucywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5tYWtlSGVhZGVycyhvcHRpb25zLm9yaWdpbmFsSGVhZGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMsIGxpc3RlbmVyKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHVzaGVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVbmF1dGhvcml6ZWRFcnJvcihhYnNvbHV0ZVVybCwgb3B0aW9ucywgKCkgPT4gcmVqZWN0KHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHVzaEZhaWxlZFJlcXVlc3QodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVxOiAoKSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFwidG9rZW5zXCIpID49IDApIHJldHVybiBmYWxzZTtcclxuICAgICAgICBCYXNlSHR0cFNlcnZpY2UuZmFpbGVkUmVxdWVzdHMucHVzaChyZXEpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjaGVja0hlYWRlcnMoaGVhZGVyczogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJzIHx8ICFoZWFkZXJzLmNvb2tpZSB8fCAhaGVhZGVycy5yZWZlcmVyIHx8ICFoZWFkZXJzLmhvc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGVhZGVycy5yZWZlcmVyLmluZGV4T2YoaGVhZGVycy5ob3N0KSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYWtlT3B0aW9ucyhvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBtZXRob2Q6IHN0cmluZyA9IFwiR0VUXCIsIGJvZHk/OiBhbnkpOiBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgICAgIC8vIFNldCBiYXNlIG9wdGlvbnNcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyA/IHsuLi5vcHRpb25zfSA6IHt9O1xyXG4gICAgICAgIG9wdGlvbnMubWV0aG9kID0gbWV0aG9kO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9IFwiYm9keVwiO1xyXG4gICAgICAgIG9wdGlvbnMub3JpZ2luYWxIZWFkZXJzID0gb3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMgfHwgKG9wdGlvbnMuaGVhZGVycyBhcyBJSHR0cEhlYWRlcnMpIHx8IHt9O1xyXG4gICAgICAgIG9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gT2JqZWN0VXRpbHMuaXNCb29sZWFuKG9wdGlvbnMud2l0aENyZWRlbnRpYWxzKSA/IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzIDogdGhpcy53aXRoQ3JlZGVudGlhbHM7XHJcbiAgICAgICAgb3B0aW9ucy5ib2R5ID0gYm9keSB8fCB7fTtcclxuICAgICAgICAvLyBTZXQgY29va2llcyBmcm9tIHNlcnZlciBzaWRlIHJlcXVlc3RcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gIXRoaXMucmVxdWVzdCA/IG51bGwgOiB0aGlzLnJlcXVlc3QuaGVhZGVycztcclxuICAgICAgICBpZiAodGhpcy5jaGVja0hlYWRlcnMoaGVhZGVycykpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiQ29va2llXCJdID0gaGVhZGVycy5jb29raWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHRoaXMubWFrZUhlYWRlcnMob3B0aW9ucyk7XHJcbiAgICAgICAgb3B0aW9ucy5wYXJhbXMgPSB0aGlzLm1ha2VQYXJhbXMob3B0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG1ha2VIZWFkZXJzKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBIZWFkZXJzIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jbGllbnQubWFrZUhlYWRlcnMoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXF1ZXN0SGVhZGVycywgb3B0aW9ucz8uaGVhZGVycyB8fCB7fSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYWtlUGFyYW1zKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudC5tYWtlUGFyYW1zKE9iamVjdC5hc3NpZ24oe30sIHRoaXMucmVxdWVzdFBhcmFtcywgb3B0aW9ucz8ucGFyYW1zIHx8IHt9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhcnNlUmVzcG9uc2UocmVzcG9uc2U6IGFueSwgdXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXJzZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXJsKHVybCkucmVwbGFjZSgvKD86KCg/ITopLlxcLylcXC8pL2csIFwiJDFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGFic29sdXRlVXJsKHVybDogc3RyaW5nLCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IGFic29sdXRlVXJsID0gdGhpcy5wYXJzZVVybCh1cmwpO1xyXG4gICAgICAgIGlmICh1cmwgPT0gXCJhcGktZG9jc1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhYnNvbHV0ZVVybC5yZXBsYWNlKFwiL2FwaVwiLCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFic29sdXRlVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBleHByZXNzUmVxdWVzdFVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5yZXF1ZXN0O1xyXG4gICAgICAgIGlmICghcmVxIHx8ICF1cmwgfHwgdXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpIHx8IHVybC5zdGFydHNXaXRoKFwiLy9cIikpIHJldHVybiB1cmw7XHJcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gdXJsLnN0YXJ0c1dpdGgoXCIvXCIpID8gXCJcIiA6IFwiL1wiO1xyXG4gICAgICAgIHJldHVybiBgJHtyZXEucHJvdG9jb2x9Oi8vJHtyZXEuZ2V0KFwiaG9zdFwiKX0ke3NlcGFyYXRvcn0ke3VybH1gO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFvQixhQUFhLEVBQXdDLE1BQU0sc0JBQXNCLENBQUM7QUFHN0csT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQVVYLGdCQUFnQixFQUVoQixlQUFlLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE1BQU0sT0FBTyxlQUFlO0lBeUJ4QixZQUE2QyxNQUFzQixFQUN0QixPQUF1QixFQUNyQixRQUEwQixFQUMzQixPQUF3QixFQUN6QixPQUF1QixFQUNWLFVBQW1CLElBQUk7UUFMcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDVixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUU3RSxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FB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QUFRLFlBQUksTUFBTSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ09ORklHX1NFUlZJQ0UsXHJcbiAgICBFWFBSRVNTX1JFUVVFU1QsXHJcbiAgICBIdHRwUHJvbWlzZSxcclxuICAgIElDb25maWdTZXJ2aWNlLFxyXG4gICAgSUh0dHBIZWFkZXJzLFxyXG4gICAgSUh0dHBQYXJhbXMsXHJcbiAgICBJSHR0cFNlcnZpY2UsXHJcbiAgICBJSXNzdWVDb250ZXh0LFxyXG4gICAgSUxhbmd1YWdlU2VydmljZSxcclxuICAgIElQYWdpbmF0aW9uRGF0YSxcclxuICAgIElSZXF1ZXN0T3B0aW9ucyxcclxuICAgIElUb2FzdGVyU2VydmljZSxcclxuICAgIExBTkdVQUdFX1NFUlZJQ0UsXHJcbiAgICBQcm9ncmVzc0xpc3RlbmVyLFxyXG4gICAgVE9BU1RFUl9TRVJWSUNFXHJcbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge01hdGhVdGlsc30gZnJvbSBcIi4uL3V0aWxzL21hdGgudXRpbHNcIjtcclxuXHJcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL2Jhc2UtaHR0cC5jbGllbnRcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHt0aW1lb3V0fSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtUaW1lb3V0RXJyb3J9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSHR0cFNlcnZpY2UgaW1wbGVtZW50cyBJSHR0cFNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBzdGF0aWMgZmFpbGVkUmVxdWVzdHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XHJcblxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJiYXNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCB3aXRoQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdEhlYWRlcnM6IElIdHRwSGVhZGVycztcclxuICAgIHJlcXVlc3RQYXJhbXM6IElIdHRwUGFyYW1zO1xyXG4gICAgY2FjaGU6IGFueTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJldHJ5RmFpbGVkUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLmZvckVhY2gociA9PiByKCkpO1xyXG4gICAgICAgIEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB1bml2ZXJzYWwoKTogVW5pdmVyc2FsU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS51bml2ZXJzYWw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChCYXNlSHR0cENsaWVudCkgcmVhZG9ubHkgY2xpZW50OiBCYXNlSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoU3RvcmFnZVNlcnZpY2UpIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChMQU5HVUFHRV9TRVJWSUNFKSByZWFkb25seSBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoVE9BU1RFUl9TRVJWSUNFKSByZWFkb25seSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRVhQUkVTU19SRVFVRVNUKSByZWFkb25seSByZXF1ZXN0OiBSZXF1ZXN0ID0gbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVxdWVzdFBhcmFtcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5jbGllbnQubWFrZVBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gaHR0cFBhcmFtcy5rZXlzKCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtrZXl9PSR7aHR0cFBhcmFtcy5nZXQoa2V5KX1gO1xyXG4gICAgICAgIH0pLmpvaW4oXCImXCIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVybCh1cmwpfT8ke3F1ZXJ5fWA7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nID0gbnVsbCwgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuID0gbnVsbCwgZmlsdGVyOiBzdHJpbmcgPSBudWxsKTogSUh0dHBQYXJhbXMge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogSUh0dHBQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IChwYWdlIC0gMSksXHJcbiAgICAgICAgICAgIGxpbWl0OiBpdGVtc1BlclBhZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob3JkZXJCeSkgJiYgIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9yZGVyRGVzY2VuZGluZykpIHtcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnQgPSBgJHtvcmRlckRlc2NlbmRpbmcgPyBcIi1cIiA6IFwiXCJ9JHtvcmRlckJ5fWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyKSkge1xyXG4gICAgICAgICAgICBwYXJhbXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiR0VUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBkZWxldGVQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiREVMRVRFXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwb3N0UHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHB1dFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJQVVRcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhdGNoUHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBBVENIXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGxvYWRQcm9taXNlKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSB7fTtcclxuICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcclxuICAgICAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgICAgIH0sIG9wdGlvbnMpLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucywgbGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsaXN0UHJvbWlzZSh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJvbWlzZSh1cmwsIHtwYXJhbXM6IHBhcmFtc30pLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogZGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLm1ldGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsIHx8IGRhdGEuaXRlbXM/Lmxlbmd0aCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zIHx8IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IGRhdGEubWV0YSB8fCB7fVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiTm90IGltcGxlbWVudGVkLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhbmRsZVVuYXV0aG9yaXplZEVycm9yKGFic29sdXRlVXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVqZWN0OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgaWYgKEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIGF1dGggZXJyb3JcIiwgYWJzb2x1dGVVcmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b2FzdFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBpc3N1ZUNvbnRleHQ6IElJc3N1ZUNvbnRleHQsIHJlYXNvbjogYW55LCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybmluZyhtZXNzYWdlLCB7aXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnN9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9hc3RFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCwgcmVhc29uOiBhbnksIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuaW5nKG1lc3NhZ2UsIHtpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9uc30pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b1Byb21pc2UodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIGNvbnN0IGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCA9IHt1cmw6IFwiXCJ9O1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBQcm9taXNlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIllvdSBtYXkgbm90IG5lZWQgYSByZWplY3QgSGFuZGxlciBmb3IgdGhpcyByZXF1ZXN0IVwiLCB0aGlzLm5hbWUsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVhc29uID0gcmVzcG9uc2UuZXJyb3IgfHwge307XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0V2FybmluZyhgJHt1cmx9IGVuZHBvaW50IGlzIG5vdCBpbXBsZW1lbnRlZCEgQ2xpY2sgaGVyZSwgdG8gcXVpY2tseSBjcmVhdGUgYW4gaXNzdWUuYCwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLygoRTExMDAwIGR1cGxpY2F0ZSBrZXkgZXJyb3IgY29sbGVjdGlvbjogKC4pK1xcLil8KF8xIGR1cCBrZXk6KC4pKykpL2c7XHJcbiAgICAgICAgICAgIGlmIChyZWFzb24ubWVzc2FnZSAmJiByZWdleC50ZXN0KHJlYXNvbi5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdEVycm9yKFwibWVzc2FnZS5kdXBsaWNhdGUta2V5LmVycm9yLlwiICsgcmVhc29uLm1lc3NhZ2UucmVwbGFjZShyZWdleCwgXCJcIikucmVwbGFjZShcIiBpbmRleDogXCIsIFwiLVwiKSwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RXYXJuaW5nKGAke3VybH0gZW5kcG9pbnQgZXJyb3IgaXMgbm90IGhhbmRsZWQgcHJvcGVybHkhIENsaWNrIGhlcmUsIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGlzc3VlLmAsIGlzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zKTtcclxuICAgICAgICB9LCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWJzb2x1dGVVcmwodXJsLCBvcHRpb25zKS50aGVuKGFic29sdXRlVXJsID0+IHtcclxuICAgICAgICAgICAgICAgIGlzc3VlQ29udGV4dC51cmwgPSBhYnNvbHV0ZVVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmNsaWVudC5yZXF1ZXN0KG9wdGlvbnMubWV0aG9kLCBhYnNvbHV0ZVVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFJlcXVlc3QgPSBPYmplY3RVdGlscy5pc051bWJlcihvcHRpb25zLnRpbWVvdXQpICYmIG9wdGlvbnMudGltZW91dCA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IHJlcXVlc3QucGlwZSh0aW1lb3V0KG9wdGlvbnMudGltZW91dCkpIDogcmVxdWVzdDtcclxuICAgICAgICAgICAgICAgIGZpbmFsUmVxdWVzdC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZXBvcnRQcm9ncmVzcyAmJiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZTogTWF0aFV0aWxzLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsLCAyLCAwLjAxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIocHJvZ3Jlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnBhcnNlUmVzcG9uc2UoZXZlbnQsIHVybCwgb3B0aW9ucykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgYXMgSHR0cEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aEtleSA9IFwiQXV0aG9yaXphdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHVzZSB0b2tlbiBhdXRoXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jICYmIGhlYWRlcnMuaGFzKGF1dGhLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJUb2tlblRpbWUgPSB0aGlzLnN0b3JhZ2UuZ2V0KFwidXNlclRva2VuVGltZVwiKSB8fCBjdXJyZW50VGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIHRoZSBsYXN0IHJlcXVlc3Qgd2FzIGEgbG9uZyBsb25nIHRpbWUgYWdvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSAtIDYwMDAwMCA+IHVzZXJUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgVGltZW91dEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgVGltZW91dEVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGFzIEh0dHBIZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhLZXkgPSBcIkF1dGhvcml6YXRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhdXRob3JpemF0aW9uIGhlYWRlciBleGlzdHMgYW5kIHdlIHN0aWxsIGhhdmUgYW4gVW5hdXRob3JpemVkIHJlc3BvbnNlIHByb21wdCB0aGUgdXNlciB0byBsb2cgaW4gYWdhaW5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVycy5oYXMoYXV0aEtleSkgJiYgcmVzcG9uc2Uuc3RhdHVzID09IDQwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdXNoZWQgPSB0aGlzLnB1c2hGYWlsZWRSZXF1ZXN0KHVybCwgb3B0aW9ucywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5tYWtlSGVhZGVycyhvcHRpb25zLm9yaWdpbmFsSGVhZGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMsIGxpc3RlbmVyKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHVzaGVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVbmF1dGhvcml6ZWRFcnJvcihhYnNvbHV0ZVVybCwgb3B0aW9ucywgKCkgPT4gcmVqZWN0KHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHVzaEZhaWxlZFJlcXVlc3QodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVxOiAoKSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFwidG9rZW5zXCIpID49IDApIHJldHVybiBmYWxzZTtcclxuICAgICAgICBCYXNlSHR0cFNlcnZpY2UuZmFpbGVkUmVxdWVzdHMucHVzaChyZXEpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjaGVja0hlYWRlcnMoaGVhZGVyczogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJzIHx8ICFoZWFkZXJzLmNvb2tpZSB8fCAhaGVhZGVycy5yZWZlcmVyIHx8ICFoZWFkZXJzLmhvc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGVhZGVycy5yZWZlcmVyLmluZGV4T2YoaGVhZGVycy5ob3N0KSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYWtlT3B0aW9ucyhvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBtZXRob2Q6IHN0cmluZyA9IFwiR0VUXCIsIGJvZHk/OiBhbnkpOiBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgICAgIC8vIFNldCBiYXNlIG9wdGlvbnNcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyA/IHsuLi5vcHRpb25zfSA6IHt9O1xyXG4gICAgICAgIG9wdGlvbnMubWV0aG9kID0gbWV0aG9kO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9IG9wdGlvbnMub2JzZXJ2ZSB8fCBcImJvZHlcIjtcclxuICAgICAgICBvcHRpb25zLm9yaWdpbmFsSGVhZGVycyA9IG9wdGlvbnMub3JpZ2luYWxIZWFkZXJzIHx8IChvcHRpb25zLmhlYWRlcnMgYXMgSUh0dHBIZWFkZXJzKSB8fCB7fTtcclxuICAgICAgICBvcHRpb25zLndpdGhDcmVkZW50aWFscyA9IE9iamVjdFV0aWxzLmlzQm9vbGVhbihvcHRpb25zLndpdGhDcmVkZW50aWFscykgPyBvcHRpb25zLndpdGhDcmVkZW50aWFscyA6IHRoaXMud2l0aENyZWRlbnRpYWxzO1xyXG4gICAgICAgIG9wdGlvbnMuYm9keSA9IGJvZHkgfHwge307XHJcbiAgICAgICAgLy8gU2V0IGNvb2tpZXMgZnJvbSBzZXJ2ZXIgc2lkZSByZXF1ZXN0XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9ICF0aGlzLnJlcXVlc3QgPyBudWxsIDogdGhpcy5yZXF1ZXN0LmhlYWRlcnM7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tIZWFkZXJzKGhlYWRlcnMpKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvb2tpZVwiXSA9IGhlYWRlcnMuY29va2llO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSB0aGlzLm1ha2VIZWFkZXJzKG9wdGlvbnMpO1xyXG4gICAgICAgIG9wdGlvbnMucGFyYW1zID0gdGhpcy5tYWtlUGFyYW1zKG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYWtlSGVhZGVycyhvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm1ha2VIZWFkZXJzKE9iamVjdC5hc3NpZ24oe30sIHRoaXMucmVxdWVzdEhlYWRlcnMsIG9wdGlvbnM/LmhlYWRlcnMgfHwge30pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZVBhcmFtcyhvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jbGllbnQubWFrZVBhcmFtcyhPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlcXVlc3RQYXJhbXMsIG9wdGlvbnM/LnBhcmFtcyB8fCB7fSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXJzZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnksIHVybDogc3RyaW5nLCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyc2VVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVybCh1cmwpLnJlcGxhY2UoLyg/OigoPyE6KS5cXC8pXFwvKS9nLCBcIiQxXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBhYnNvbHV0ZVVybCh1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBhYnNvbHV0ZVVybCA9IHRoaXMucGFyc2VVcmwodXJsKTtcclxuICAgICAgICBpZiAodXJsID09IFwiYXBpLWRvY3NcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gYWJzb2x1dGVVcmwucmVwbGFjZShcIi9hcGlcIiwgXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhYnNvbHV0ZVVybDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZXhwcmVzc1JlcXVlc3RVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcSB8fCAhdXJsIHx8IHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSB8fCB1cmwuc3RhcnRzV2l0aChcIi8vXCIpKSByZXR1cm4gdXJsO1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIjtcclxuICAgICAgICByZXR1cm4gYCR7cmVxLnByb3RvY29sfTovLyR7cmVxLmdldChcImhvc3RcIil9JHtzZXBhcmF0b3J9JHt1cmx9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Inject, Injectable, Optional, isDevMode } from "@angular/core";
3
3
  import { HttpClient } from "@angular/common/http";
4
- import { parse } from "json5";
5
4
  import { UniversalService } from "./universal.service";
6
5
  import { BASE_CONFIG, IConfiguration, ROOT_ELEMENT, SCRIPT_PARAMS } from "../common-types";
6
+ const JSON5 = require("json5");
7
7
  export class ConfigService {
8
8
  constructor(http, universal, rootElement, baseConfig = null, scriptParams = null) {
9
9
  this.http = http;
@@ -70,7 +70,7 @@ export class ConfigService {
70
70
  const configUrl = this.configUrl;
71
71
  try {
72
72
  const config5 = yield this.http.get(isDevMode() ? `${configUrl}5` : configUrl, { responseType: "text" }).toPromise();
73
- return parse(config5);
73
+ return JSON5.parse(config5);
74
74
  }
75
75
  catch (e) {
76
76
  try {
@@ -99,7 +99,7 @@ export class ConfigService {
99
99
  return this.loadedConfig[key];
100
100
  }
101
101
  getQueryParameter(name, url) {
102
- url = url || (this.universal.isServer ? "" : window.location.href);
102
+ url = url || (this.universal.isBrowser ? window.location.href : "");
103
103
  name = name.replace(/[\[\]]/g, "\\$&");
104
104
  const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url);
105
105
  if (!results)
@@ -119,4 +119,4 @@ ConfigService.ctorParameters = () => [
119
119
  { type: IConfiguration, decorators: [{ type: Optional }, { type: Inject, args: [BASE_CONFIG,] }] },
120
120
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SCRIPT_PARAMS,] }] }
121
121
  ];
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzVCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxXQUFXLEVBQWtCLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHekcsTUFBTSxPQUFPLGFBQWE7SUFvQnRCLFlBQXFCLElBQWdCLEVBQ2hCLFNBQTJCLEVBQ0wsV0FBZ0IsRUFDZCxhQUE2QixJQUFJLEVBQy9CLGVBQW9CLElBQUk7UUFKbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNMLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBR3ZELEtBQUssTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLFVBQVUsRUFBRSxLQUFLO2FBQ3BCLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDMUIsTUFBTSxhQUFhLEdBQUksUUFBUSxDQUFDLGFBQW1DLENBQUM7WUFDcEUsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO2dCQUNqQixNQUFNLFNBQVMsR0FBRyxhQUFh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QUM7UUFDM0IsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OztZQXZISixVQUFVOzs7WUFMSCxVQUFVO1lBRVYsZ0JBQWdCOzRDQTBCUCxNQUFNLFNBQUMsWUFBWTtZQXpCQyxjQUFjLHVCQTBCbEMsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXOzRDQUM5QixRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGlzRGV2TW9kZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtwYXJzZX0gZnJvbSBcImpzb241XCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCQVNFX0NPTkZJRywgSUNvbmZpZ1NlcnZpY2UsIElDb25maWd1cmF0aW9uLCBST09UX0VMRU1FTlQsIFNDUklQVF9QQVJBTVN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJQ29uZmlnU2VydmljZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGJhc2VDb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcHJvdGVjdGVkIGxvYWRlZENvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICBwcm90ZWN0ZWQgc2NyaXB0UGFyYW1ldGVyczogYW55O1xyXG4gICAgcHJvdGVjdGVkIGxvYWRlcjogUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGVyRnVuYzogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcblxyXG4gICAgZ2V0IGxvYWQoKTogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlckZ1bmM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbmZpZygpOiBJQ29uZmlndXJhdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkQ29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25maWdVcmwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5sb2FkZWRDb25maWcuYmFzZVVybH1jb25maWcvY29uZmlnLmpzb25gO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KFJPT1RfRUxFTUVOVCkgcmVhZG9ubHkgcm9vdEVsZW1lbnQ6IGFueSxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQkFTRV9DT05GSUcpIGJhc2VDb25maWc6IElDb25maWd1cmF0aW9uID0gbnVsbCxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU0NSSVBUX1BBUkFNUykgc2NyaXB0UGFyYW1zOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gW10pIHtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGJhc2VVcmwgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNjcmlwdCA9IChkb2N1bWVudC5jdXJyZW50U2NyaXB0IGFzIEhUTUxTY3JpcHRFbGVtZW50KTtcclxuICAgICAgICAgICAgaWYgKCEhY3VycmVudFNjcmlwdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0U3JjID0gY3VycmVudFNjcmlwdC5zcmM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzcmNQYXJ0cyA9IHNjcmlwdFNyYy5zcGxpdChcIi5qc1wiKTtcclxuICAgICAgICAgICAgICAgIGJhc2VVcmwgPSBzY3JpcHRTcmMuc3Vic3RyKDAsIHNyY1BhcnRzWzBdLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmFzZUNvbmZpZyA9IGJhc2VDb25maWcgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2FkZWRDb25maWcgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAhYmFzZVVybCA/IHt9IDoge2Jhc2VVcmwsIGJhc2VEb21haW46IHRoaXMucGFyc2VEb21haW4oYmFzZVVybCl9LFxyXG4gICAgICAgICAgICB0aGlzLmJhc2VDb25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2NyaXB0UGFyYW1ldGVycyA9IHNjcmlwdFBhcmFtcyB8fCB7fTtcclxuICAgICAgICB0aGlzLmxvYWRlckZ1bmMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gdGhpcy5sb2FkZXIgfHwgbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRKc29uKCkudGhlbihjb25maWcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkQ29uZmlnID0gY29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmxvYWRlZENvbmZpZywgY29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVDb25maWcoY29uZmlnKS50aGVuKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuYmFzZVVybCA9IGMuYmFzZVVybCB8fCBcIi9cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXI7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhcnNlRG9tYWluKGJhc2VVcmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChiYXNlVXJsKTtcclxuICAgICAgICAgICAgY29uc3QgcG9ydCA9IHVybC5wb3J0ICYmIHVybC5wb3J0ICE9PSBcIjQ0M1wiICYmIHVybC5wb3J0ICE9PSBcIjgwXCIgPyBgOiR7dXJsLnBvcnR9YCA6IGBgO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dXJsLnByb3RvY29sfS8vJHt1cmwuaG9zdG5hbWV9JHtwb3J0fS9gO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICByZXR1cm4gXCIvXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBpbml0U2VydmljZSgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGxvYWRKc29uKCk6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmxvYWRlZENvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbmZpZ1VybCA9IHRoaXMuY29uZmlnVXJsO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZzUgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KGlzRGV2TW9kZSgpID8gYCR7Y29uZmlnVXJsfTVgIDogY29uZmlnVXJsLCB7cmVzcG9uc2VUeXBlOiBcInRleHRcIn0pLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2UoY29uZmlnNSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5odHRwLmdldChjb25maWdVcmwpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENhbid0IHBhcnNlIGpzb241IGNvbmZpZzogJHtlfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25maWcgZmlsZSBub3QgZm91bmQgYXQ6ICR7Y29uZmlnVXJsfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwcmVwYXJlQ29uZmlnKGNvbmZpZzogSUNvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gIXRoaXMubG9hZGVkQ29uZmlnID8gXCJcIiA6IHRoaXMubG9hZGVkQ29uZmlnLnByb2plY3Q7XHJcbiAgICAgICAgY29uc3QgbmVlZHNQcm90b2NvbCA9IHVybD8uc3RhcnRzV2l0aChcIi8vXCIpID8/IGZhbHNlO1xyXG4gICAgICAgIHVybCA9ICFuZWVkc1Byb3RvY29sICYmIHVybD8uc3RhcnRzV2l0aChcIi9cIikgPyB0aGlzLmxvYWRlZENvbmZpZy5iYXNlRG9tYWluICsgdXJsLnN1YnN0cigxKSA6IHVybCB8fCBcIlwiO1xyXG4gICAgICAgIHVybCA9IGAke3VybC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfSR7ZW5kaW5nfWAucmVwbGFjZShcIltwcm9qZWN0XVwiLCBwcm9qZWN0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIgJiYgbmVlZHNQcm90b2NvbCA/IGBodHRwOiR7dXJsfWAgOiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbmZpZ1trZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFF1ZXJ5UGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICB1cmwgPSB1cmwgfHwgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyID8gXCJcIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCBcIlxcXFwkJlwiKTtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJbPyZdXCIgKyBuYW1lICsgXCIoPShbXiYjXSopfCZ8I3wkKVwiKSxcclxuICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWModXJsKTtcclxuICAgICAgICBpZiAoIXJlc3VsdHMpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGlmICghcmVzdWx0c1syXSkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsV0FBVyxFQUFrQixjQUFjLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpHLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUcvQixNQUFNLE9BQU8sYUFBYTtJQW9CdEIsWUFBcUIsSUFBZ0IsRUFDaEIsU0FBMkIsRUFDTCxXQUFnQixFQUNkLGFBQTZCLElBQUksRUFDL0IsZUFBb0IsSUFBSTtRQUpsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ0wsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFHdkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDeEMsVUFBVSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUMxQixNQUFNLGFBQWEsR0FBSSxRQUFRLENBQUMsYUFBbUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2pCLE1BQU0sU0FBUyxHQUFH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QUUsT0FBTyxFQUFFLENBQUM7UUFDM0IsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OztZQXZISixVQUFVOzs7WUFOSCxVQUFVO1lBQ1YsZ0JBQWdCOzRDQTRCUCxNQUFNLFNBQUMsWUFBWTtZQTNCQyxjQUFjLHVCQTRCbEMsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXOzRDQUM5QixRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGlzRGV2TW9kZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge0JBU0VfQ09ORklHLCBJQ29uZmlnU2VydmljZSwgSUNvbmZpZ3VyYXRpb24sIFJPT1RfRUxFTUVOVCwgU0NSSVBUX1BBUkFNU30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuY29uc3QgSlNPTjUgPSByZXF1aXJlKFwianNvbjVcIik7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUNvbmZpZ1NlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBiYXNlQ29uZmlnOiBJQ29uZmlndXJhdGlvbjtcclxuICAgIHByb3RlY3RlZCBsb2FkZWRDb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcHJvdGVjdGVkIHNjcmlwdFBhcmFtZXRlcnM6IGFueTtcclxuICAgIHByb3RlY3RlZCBsb2FkZXI6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRlckZ1bmM6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xyXG5cclxuICAgIGdldCBsb2FkKCk6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXJGdW5jO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25maWcoKTogSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbmZpZztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29uZmlnVXJsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubG9hZGVkQ29uZmlnLmJhc2VVcmx9Y29uZmlnL2NvbmZpZy5qc29uYDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChST09UX0VMRU1FTlQpIHJlYWRvbmx5IHJvb3RFbGVtZW50OiBhbnksXHJcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEJBU0VfQ09ORklHKSBiYXNlQ29uZmlnOiBJQ29uZmlndXJhdGlvbiA9IG51bGwsXHJcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNDUklQVF9QQVJBTVMpIHNjcmlwdFBhcmFtczogYW55ID0gbnVsbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIFtdKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBiYXNlVXJsID0gXCJcIjtcclxuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNCcm93c2VyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY3JpcHQgPSAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCBhcyBIVE1MU2NyaXB0RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGlmICghIWN1cnJlbnRTY3JpcHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdFNyYyA9IGN1cnJlbnRTY3JpcHQuc3JjO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3JjUGFydHMgPSBzY3JpcHRTcmMuc3BsaXQoXCIuanNcIik7XHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsID0gc2NyaXB0U3JjLnN1YnN0cigwLCBzcmNQYXJ0c1swXS5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmJhc2VDb25maWcgPSBiYXNlQ29uZmlnIHx8IHt9O1xyXG4gICAgICAgIHRoaXMubG9hZGVkQ29uZmlnID0gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgIWJhc2VVcmwgPyB7fSA6IHtiYXNlVXJsLCBiYXNlRG9tYWluOiB0aGlzLnBhcnNlRG9tYWluKGJhc2VVcmwpfSxcclxuICAgICAgICAgICAgdGhpcy5iYXNlQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNjcmlwdFBhcmFtZXRlcnMgPSBzY3JpcHRQYXJhbXMgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2FkZXJGdW5jID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRoaXMubG9hZGVyIHx8IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkSnNvbigpLnRoZW4oY29uZmlnID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5sb2FkZWRDb25maWcsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQ29uZmlnKGNvbmZpZykudGhlbihjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRDb25maWcgPSBjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJhc2VVcmwgPSBjLmJhc2VVcmwgfHwgXCIvXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LCByZWplY3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5pbml0U2VydmljZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXJzZURvbWFpbihiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB1cmwucG9ydCAmJiB1cmwucG9ydCAhPT0gXCI0NDNcIiAmJiB1cmwucG9ydCAhPT0gXCI4MFwiID8gYDoke3VybC5wb3J0fWAgOiBgYDtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3RuYW1lfSR7cG9ydH0vYDtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiL1wiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBsb2FkSnNvbigpOiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5sb2FkZWRDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb25maWdVcmwgPSB0aGlzLmNvbmZpZ1VybDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBjb25maWc1ID0gYXdhaXQgdGhpcy5odHRwLmdldChpc0Rldk1vZGUoKSA/IGAke2NvbmZpZ1VybH01YCA6IGNvbmZpZ1VybCwge3Jlc3BvbnNlVHlwZTogXCJ0ZXh0XCJ9KS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT041LnBhcnNlKGNvbmZpZzUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoY29uZmlnVXJsKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBwYXJzZSBqc29uNSBjb25maWc6ICR7ZX1gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uZmlnIGZpbGUgbm90IGZvdW5kIGF0OiAke2NvbmZpZ1VybH1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHJlcGFyZUNvbmZpZyhjb25maWc6IElDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJQ29uZmlndXJhdGlvbj4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcHJvamVjdCA9ICF0aGlzLmxvYWRlZENvbmZpZyA/IFwiXCIgOiB0aGlzLmxvYWRlZENvbmZpZy5wcm9qZWN0O1xyXG4gICAgICAgIGNvbnN0IG5lZWRzUHJvdG9jb2wgPSB1cmw/LnN0YXJ0c1dpdGgoXCIvL1wiKSA/PyBmYWxzZTtcclxuICAgICAgICB1cmwgPSAhbmVlZHNQcm90b2NvbCAmJiB1cmw/LnN0YXJ0c1dpdGgoXCIvXCIpID8gdGhpcy5sb2FkZWRDb25maWcuYmFzZURvbWFpbiArIHVybC5zdWJzdHIoMSkgOiB1cmwgfHwgXCJcIjtcclxuICAgICAgICB1cmwgPSBgJHt1cmwucmVwbGFjZSgvXFwvKyQvLCBcIlwiKX0ke2VuZGluZ31gLnJlcGxhY2UoXCJbcHJvamVjdF1cIiwgcHJvamVjdCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pdmVyc2FsLmlzU2VydmVyICYmIG5lZWRzUHJvdG9jb2wgPyBgaHR0cDoke3VybH1gIDogdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZWRDb25maWdba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRRdWVyeVBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgdXJsID0gdXJsIHx8ICh0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIgPyB3aW5kb3cubG9jYXRpb24uaHJlZiA6IFwiXCIpO1xyXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL1tcXFtcXF1dL2csIFwiXFxcXCQmXCIpO1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcIls/Jl1cIiArIG5hbWUgKyBcIig9KFteJiNdKil8JnwjfCQpXCIpLFxyXG4gICAgICAgICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgaWYgKCFyZXN1bHRzWzJdKSByZXR1cm4gXCJcIjtcclxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -27,7 +27,7 @@ export class ErrorHandlerService extends ErrorHandler {
27
27
  }
28
28
  if (this.universal.isServer)
29
29
  return;
30
- const key = btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`)));
30
+ const key = typeof btoa !== "undefined" ? btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`))) : error.message;
31
31
  if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000)
32
32
  return;
33
33
  this.errorMap[key] = date;
@@ -46,4 +46,4 @@ ErrorHandlerService.decorators = [
46
46
  ErrorHandlerService.ctorParameters = () => [
47
47
  { type: Injector }
48
48
  ];
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQXlDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3RHLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBT2pELFlBQXFCLFFBQWtCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBRFMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDcEIsSUFBSTtZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPO1NBQ1Y7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUk7WUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzdELE9BQU87YUFDVjtTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtZQUFFLE9BQU87UUFDdkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSTtZQUNBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO1FBQUMsT0FBTyxDQUFDLEVBQUU7U0FDWDtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE1BQU0sS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7WUF2Q0osVUFBVTs7O1lBSnVCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Vycm9ySGFuZGxlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtFUlJPUl9IQU5ETEVSLCBFcnJvckhhbmRsZXJDYWxsYmFjaywgSVRvYXN0ZXJTZXJ2aWNlLCBUT0FTVEVSX1NFUlZJQ0V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlclNlcnZpY2UgZXh0ZW5kcyBFcnJvckhhbmRsZXIge1xyXG5cclxuICAgIHByaXZhdGUgdG9hc3RlcjogSVRvYXN0ZXJTZXJ2aWNlO1xyXG4gICAgcHJpdmF0ZSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2U7XHJcbiAgICBwcml2YXRlIGVycm9yQ2I6IEVycm9ySGFuZGxlckNhbGxiYWNrO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck1hcDogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5lcnJvck1hcCA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvcik6IHZvaWQge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5pdmVyc2FsID0gdGhpcy51bml2ZXJzYWwgfHwgdGhpcy5pbmplY3Rvci5nZXQoVW5pdmVyc2FsU2VydmljZSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JDYiA9IHRoaXMuZXJyb3JDYiB8fCB0aGlzLmluamVjdG9yLmdldChFUlJPUl9IQU5ETEVSKTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckNiKGBbJHtkYXRlfV06ICR7ZXJyb3IubWVzc2FnZX1cXG4ke2Vycm9yLnN0YWNrfWApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbJHtkYXRlfV06ICR7ZXJyb3IubWVzc2FnZX1cXG4ke2Vycm9yLnN0YWNrfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGAke2Vycm9yLm1lc3NhZ2V9ICR7ZXJyb3Iuc3RhY2t9YCkpKTtcclxuICAgICAgICBpZiAodGhpcy5lcnJvck1hcFtrZXldICYmIHRoaXMuZXJyb3JNYXBba2V5XS5nZXRUaW1lKCkgPiBkYXRlLmdldFRpbWUoKSAtIDUwMDApIHJldHVybjtcclxuICAgICAgICB0aGlzLmVycm9yTWFwW2tleV0gPSBkYXRlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlciA9IHRoaXMudG9hc3RlciB8fCB0aGlzLmluamVjdG9yLmdldChUT0FTVEVSX1NFUlZJQ0UpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmVycm9yKGBbJHtkYXRlfV06ICR7ZXJyb3IubWVzc2FnZX1cXG4ke2Vycm9yLnN0YWNrfWApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQXlDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3RHLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBT2pELFlBQXFCLFFBQWtCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBRFMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDcEIsSUFBSTtZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPO1NBQ1Y7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUk7WUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzdELE9BQU87YUFDVjtTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2hJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJO1lBQUUsT0FBTztRQUN2RixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJO1lBQ0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDckU7UUFBQyxPQUFPLENBQUMsRUFBRTtTQUNYO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OztZQXZDSixVQUFVOzs7WUFKdUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge0VSUk9SX0hBTkRMRVIsIEVycm9ySGFuZGxlckNhbGxiYWNrLCBJVG9hc3RlclNlcnZpY2UsIFRPQVNURVJfU0VSVklDRX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyU2VydmljZSBleHRlbmRzIEVycm9ySGFuZGxlciB7XHJcblxyXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2U7XHJcbiAgICBwcml2YXRlIHVuaXZlcnNhbDogVW5pdmVyc2FsU2VydmljZTtcclxuICAgIHByaXZhdGUgZXJyb3JDYjogRXJyb3JIYW5kbGVyQ2FsbGJhY2s7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTWFwOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVycm9yTWFwID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IEVycm9yKTogdm9pZCB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy51bml2ZXJzYWwgPSB0aGlzLnVuaXZlcnNhbCB8fCB0aGlzLmluamVjdG9yLmdldChVbml2ZXJzYWxTZXJ2aWNlKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckNiID0gdGhpcy5lcnJvckNiIHx8IHRoaXMuaW5qZWN0b3IuZ2V0KEVSUk9SX0hBTkRMRVIpO1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yQ2IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qga2V5ID0gdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIgPyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChgJHtlcnJvci5tZXNzYWdlfSAke2Vycm9yLnN0YWNrfWApKSkgOiBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgIGlmICh0aGlzLmVycm9yTWFwW2tleV0gJiYgdGhpcy5lcnJvck1hcFtrZXldLmdldFRpbWUoKSA+IGRhdGUuZ2V0VGltZSgpIC0gNTAwMCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZXJyb3JNYXBba2V5XSA9IGRhdGU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyID0gdGhpcy50b2FzdGVyIHx8IHRoaXMuaW5qZWN0b3IuZ2V0KFRPQVNURVJfU0VSVklDRSk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcihgWyR7ZGF0ZX1dOiAke2Vycm9yLm1lc3NhZ2V9XFxuJHtlcnJvci5zdGFja31gKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -21,7 +21,7 @@ export class StaticLanguageService {
21
21
  this.initService();
22
22
  }
23
23
  get defaultLanguage() {
24
- return this.configs.getQueryParameter("lang") || this.storage.get("language", this.browserLang);
24
+ return this.configs.getQueryParameter("lang") || this.storage.get("language", this.getDefaultLanguage());
25
25
  }
26
26
  get dictionary() {
27
27
  return this.translations[this.currentLanguage] || {};
@@ -58,21 +58,6 @@ export class StaticLanguageService {
58
58
  get config() {
59
59
  return this.configs.config;
60
60
  }
61
- get browserLang() {
62
- if (this.universal.isServer || typeof window.navigator === "undefined") {
63
- return "de";
64
- }
65
- let browserLang = (window.navigator.languages ? window.navigator.languages[0] : null)
66
- || window.navigator.language || window.navigator["browserLanguage"] || window.navigator["userLanguage"] || null;
67
- if (!browserLang)
68
- return browserLang;
69
- ["-", "_"].forEach(splitter => {
70
- if (browserLang.indexOf(splitter) >= 0) {
71
- browserLang = browserLang.split(splitter)[0];
72
- }
73
- });
74
- return browserLang;
75
- }
76
61
  get universal() {
77
62
  return this.storage.universal;
78
63
  }
@@ -138,6 +123,21 @@ export class StaticLanguageService {
138
123
  return ObjectUtils.isDefined(r) ? r : substring;
139
124
  });
140
125
  }
126
+ getDefaultLanguage() {
127
+ if (!this.universal.isBrowser || typeof window.navigator === "undefined") {
128
+ return "de";
129
+ }
130
+ let browserLang = (window.navigator.languages ? window.navigator.languages[0] : null)
131
+ || window.navigator.language || window.navigator["browserLanguage"] || window.navigator["userLanguage"] || null;
132
+ if (!browserLang)
133
+ return browserLang;
134
+ ["-", "_"].forEach(splitter => {
135
+ if (browserLang.indexOf(splitter) >= 0) {
136
+ browserLang = browserLang.split(splitter)[0];
137
+ }
138
+ });
139
+ return browserLang;
140
+ }
141
141
  }
142
142
  StaticLanguageService.decorators = [
143
143
  { type: Injectable }
@@ -149,4 +149,4 @@ StaticLanguageService.ctorParameters = () => [
149
149
  { type: undefined, decorators: [{ type: Inject, args: [PROMISE_SERVICE,] }] },
150
150
  { type: BaseHttpClient, decorators: [{ type: Inject, args: [BaseHttpClient,] }] }
151
151
  ];
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWxhbmd1YWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFDSCxjQUFjLEVBT2QsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUlsRCxNQUFNLE9BQU8scUJBQXFCO0lBOEU5QixZQUE0QyxNQUFxQixFQUNwQixPQUF1QixFQUN2QixPQUF1QixFQUNyQixRQUF5QixFQUMxQixNQUFzQjtRQUp4QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDaEIsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZC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LEVBQUUsRUFBRTtZQUMxRSxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBbktKLFVBQVU7OztZQU5ILGFBQWEsdUJBcUZKLE1BQU0sU0FBQyxhQUFhO1lBcEY3QixjQUFjLHVCQXFGTCxNQUFNLFNBQUMsY0FBYzs0Q0FDckIsTUFBTSxTQUFDLGNBQWM7NENBQ3JCLE1BQU0sU0FBQyxlQUFlO1lBckYvQixjQUFjLHVCQXNGTCxNQUFNLFNBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgQ09ORklHX1NFUlZJQ0UsXHJcbiAgICBJQ29uZmlnU2VydmljZSxcclxuICAgIElDb25maWd1cmF0aW9uLFxyXG4gICAgSUxhbmd1YWdlU2VydmljZSxcclxuICAgIElQcm9taXNlU2VydmljZSxcclxuICAgIElUcmFuc2xhdGlvbixcclxuICAgIElUcmFuc2xhdGlvbnMsXHJcbiAgICBQUk9NSVNFX1NFUlZJQ0VcclxufSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtFdmVudHNTZXJ2aWNlfSBmcm9tIFwiLi9ldmVudHMuc2VydmljZVwiO1xyXG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge0Jhc2VIdHRwQ2xpZW50fSBmcm9tIFwiLi9iYXNlLWh0dHAuY2xpZW50XCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTdGF0aWNMYW5ndWFnZVNlcnZpY2UgaW1wbGVtZW50cyBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgICBnZXQgZGVmYXVsdExhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlncy5nZXRRdWVyeVBhcmFtZXRlcihcImxhbmdcIikgfHwgdGhpcy5zdG9yYWdlLmdldChcImxhbmd1YWdlXCIsIHRoaXMuYnJvd3NlckxhbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkaWN0aW9uYXJ5KCk6IElUcmFuc2xhdGlvbnMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uc1t0aGlzLmN1cnJlbnRMYW5ndWFnZV0gfHwge307XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRpY3Rpb25hcnkodmFsdWU6IElUcmFuc2xhdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uc1t0aGlzLmN1cnJlbnRMYW5ndWFnZV0gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGFuZ3VhZ2VzKCk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjdXJyZW50TGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGFuZyB8fCB0aGlzLmRlZmF1bHRMYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY3VycmVudExhbmd1YWdlKGxhbmc6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZC5lbWl0KGxhbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlZGl0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lZGl0TGFuZyB8fCB0aGlzLmN1cnJlbnRMYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgZWRpdExhbmd1YWdlKGxhbmc6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZWRpdExhbmcgPSBsYW5nIHx8IHRoaXMuY3VycmVudExhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkaXNhYmxlVHJhbnNsYXRpb25zKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVUcmFucztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgZGlzYWJsZVRyYW5zbGF0aW9ucyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRyYW5zID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5ldmVudHMubGFuZ3VhZ2VDaGFuZ2VkLmVtaXQodGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGh0dHBDbGllbnQoKTogSHR0cENsaWVudCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25maWcoKTogSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3MuY29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBicm93c2VyTGFuZygpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlciB8fCB0eXBlb2Ygd2luZG93Lm5hdmlnYXRvciA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJkZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYnJvd3Nlckxhbmc6IHN0cmluZyA9ICh3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlcyA/IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdIDogbnVsbClcclxuICAgICAgICAgICAgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSB8fCB3aW5kb3cubmF2aWdhdG9yW1wiYnJvd3Nlckxhbmd1YWdlXCJdIHx8IHdpbmRvdy5uYXZpZ2F0b3JbXCJ1c2VyTGFuZ3VhZ2VcIl0gfHwgbnVsbDtcclxuICAgICAgICBpZiAoIWJyb3dzZXJMYW5nKSByZXR1cm4gYnJvd3Nlckxhbmc7XHJcblxyXG4gICAgICAgIFtcIi1cIiwgXCJfXCJdLmZvckVhY2goc3BsaXR0ZXIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYnJvd3NlckxhbmcuaW5kZXhPZihzcGxpdHRlcikgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgYnJvd3NlckxhbmcgPSBicm93c2VyTGFuZy5zcGxpdChzcGxpdHRlcilbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBicm93c2VyTGFuZztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdW5pdmVyc2FsKCk6IFVuaXZlcnNhbFNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UudW5pdmVyc2FsO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBlZGl0TGFuZzogc3RyaW5nO1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRMYW5nOiBzdHJpbmc7XHJcbiAgICBwcm90ZWN0ZWQgZGlzYWJsZVRyYW5zOiBib29sZWFuO1xyXG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlTGlzdDogc3RyaW5nW107XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRXZlbnRzU2VydmljZSkgcmVhZG9ubHkgZXZlbnRzOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChTdG9yYWdlU2VydmljZSkgcmVhZG9ubHkgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoUFJPTUlTRV9TRVJWSUNFKSBwcm90ZWN0ZWQgcHJvbWlzZXM6IElQcm9taXNlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoQmFzZUh0dHBDbGllbnQpIHByb3RlY3RlZCBjbGllbnQ6IEJhc2VIdHRwQ2xpZW50KSB7XHJcbiAgICAgICAgdGhpcy5lZGl0TGFuZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVHJhbnMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICBub25lOiB7fVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5pbml0U2VydmljZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBpbml0U2VydmljZSgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICAgICAgbGFuZ3VhZ2VzID0gQXJyYXkuaXNBcnJheShsYW5ndWFnZXMpICYmIGxhbmd1YWdlcy5sZW5ndGggPiAwID8gbGFuZ3VhZ2VzIDogdGhpcy5sYW5ndWFnZUxpc3Q7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBBcnJheS5mcm9tKG5ldyBTZXQ8c3RyaW5nPihsYW5ndWFnZXMpKTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdC5mb3JFYWNoKGxhbmcgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSA9IHRoaXMudHJhbnNsYXRpb25zW2xhbmddIHx8IHt9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxhbmd1YWdlcykgfHwgbGFuZ3VhZ2VzLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXBsYWNlTGFuZ3VhZ2VzKHRoaXMubGFuZ3VhZ2VMaXN0LmNvbmNhdChsYW5ndWFnZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbG93ZXJLZXkgPSAoa2V5IHx8IFwiXCIpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0aGlzLmRpY3Rpb25hcnlbbG93ZXJLZXldIHx8IGxvd2VyS2V5O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9uID09IGxvd2VyS2V5ID8ga2V5IDogdHJhbnNsYXRpb24sIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc1N0cmluZyhrZXkpIHx8ICFrZXkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGFyYW1ldGVyIFwia2V5XCIgcmVxdWlyZWRgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSBPYmplY3RVdGlscy5nZXRWYWx1ZSh0aGlzLmRpY3Rpb25hcnksIGtleSwga2V5KSB8fCBrZXk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZXMucmVzb2x2ZSh0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9uLCBwYXJhbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvbnMoLi4ua2V5czogc3RyaW5nW10pOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlcy5jcmVhdGU8SVRyYW5zbGF0aW9ucz4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvbWlzZXMuYWxsKGtleXMubWFwKGtleSA9PiB0aGlzLmdldFRyYW5zbGF0aW9uKGtleSkpKS50aGVuKHRyYW5zbGF0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGtleXMucmVkdWNlKChyZXN1bHQsIGtleSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNsYXRpb25zW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9LCB7fSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxhbmcgPSBsYW5nIHx8IHRoaXMuY3VycmVudExhbmd1YWdlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9ucyA/ICh0cmFuc2xhdGlvbnNbbGFuZ10gfHwgXCJcIikgOiBcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIGdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9uW10sIHBhcmFtcz86IGFueSwgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnMgPyB0cmFuc2xhdGlvbnMuZmluZCh0ID0+IHQubGFuZyA9PSBsYW5nKSA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUodHJhbnNsYXRpb24gPyB0cmFuc2xhdGlvbi50cmFuc2xhdGlvbiA6IFwiXCIsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGludGVycG9sYXRlKGV4cHI6IHN0cmluZyB8IEZ1bmN0aW9uLCBwYXJhbXM/OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXhwciA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVN0cmluZyhleHByLCBwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGV4cHIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwcihwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXhwciBhcyBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGludGVycG9sYXRlU3RyaW5nKGV4cHI6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICAgICAgaWYgKCFleHByIHx8ICFwYXJhbXMpIHJldHVybiBleHByO1xyXG4gICAgICAgIHJldHVybiBleHByLnJlcGxhY2UoL3t7XFxzPyhbXnt9XFxzXSopXFxzP319L2csIChzdWJzdHJpbmc6IHN0cmluZywgYjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSBPYmplY3RVdGlscy5nZXRWYWx1ZShwYXJhbXMsIGIpO1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKHIpID8gciA6IHN1YnN0cmluZztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWxhbmd1YWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFDSCxjQUFjLEVBT2QsZUFBZSxFQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUlsRCxNQUFNLE9BQU8scUJBQXFCO0lBOEQ5QixZQUE0QyxNQUFxQixFQUNwQixPQUF1QixFQUN2QixPQUF1QixFQUNyQixRQUF5QixFQUMxQixNQUFzQjtRQUp4QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDaEIsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZC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QUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEQ7UUFDTCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7OztZQW5LSixVQUFVOzs7WUFOSCxhQUFhLHVCQXFFSixNQUFNLFNBQUMsYUFBYTtZQXBFN0IsY0FBYyx1QkFxRUwsTUFBTSxTQUFDLGNBQWM7NENBQ3JCLE1BQU0sU0FBQyxjQUFjOzRDQUNyQixNQUFNLFNBQUMsZUFBZTtZQXJFL0IsY0FBYyx1QkFzRUwsTUFBTSxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICAgIENPTkZJR19TRVJWSUNFLFxyXG4gICAgSUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBJQ29uZmlndXJhdGlvbixcclxuICAgIElMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBJUHJvbWlzZVNlcnZpY2UsXHJcbiAgICBJVHJhbnNsYXRpb24sXHJcbiAgICBJVHJhbnNsYXRpb25zLFxyXG4gICAgUFJPTUlTRV9TRVJWSUNFXHJcbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7RXZlbnRzU2VydmljZX0gZnJvbSBcIi4vZXZlbnRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdG9yYWdlU2VydmljZX0gZnJvbSBcIi4vc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCYXNlSHR0cENsaWVudH0gZnJvbSBcIi4vYmFzZS1odHRwLmNsaWVudFwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3RhdGljTGFuZ3VhZ2VTZXJ2aWNlIGltcGxlbWVudHMgSUxhbmd1YWdlU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGRlZmF1bHRMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3MuZ2V0UXVlcnlQYXJhbWV0ZXIoXCJsYW5nXCIpIHx8IHRoaXMuc3RvcmFnZS5nZXQoXCJsYW5ndWFnZVwiLCB0aGlzLmdldERlZmF1bHRMYW5ndWFnZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGljdGlvbmFyeSgpOiBJVHJhbnNsYXRpb25zIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5jdXJyZW50TGFuZ3VhZ2VdIHx8IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBkaWN0aW9uYXJ5KHZhbHVlOiBJVHJhbnNsYXRpb25zKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5jdXJyZW50TGFuZ3VhZ2VdID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhbmd1YWdlcygpOiBSZWFkb25seUFycmF5PHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlTGlzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY3VycmVudExhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmcgfHwgdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGN1cnJlbnRMYW5ndWFnZShsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMYW5nID0gbGFuZztcclxuICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdChsYW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZWRpdExhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdExhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGVkaXRMYW5ndWFnZShsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVkaXRMYW5nID0gbGFuZyB8fCB0aGlzLmN1cnJlbnRMYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlzYWJsZVRyYW5zbGF0aW9ucygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlVHJhbnM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRpc2FibGVUcmFuc2xhdGlvbnModmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVUcmFucyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZC5lbWl0KHRoaXMuY3VycmVudExhbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBodHRwQ2xpZW50KCk6IEh0dHBDbGllbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29uZmlnKCk6IElDb25maWd1cmF0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdzLmNvbmZpZztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdW5pdmVyc2FsKCk6IFVuaXZlcnNhbFNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UudW5pdmVyc2FsO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBlZGl0TGFuZzogc3RyaW5nO1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRMYW5nOiBzdHJpbmc7XHJcbiAgICBwcm90ZWN0ZWQgZGlzYWJsZVRyYW5zOiBib29sZWFuO1xyXG4gICAgcHJvdGVjdGVkIGxhbmd1YWdlTGlzdDogc3RyaW5nW107XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRXZlbnRzU2VydmljZSkgcmVhZG9ubHkgZXZlbnRzOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChTdG9yYWdlU2VydmljZSkgcmVhZG9ubHkgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoUFJPTUlTRV9TRVJWSUNFKSBwcm90ZWN0ZWQgcHJvbWlzZXM6IElQcm9taXNlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoQmFzZUh0dHBDbGllbnQpIHByb3RlY3RlZCBjbGllbnQ6IEJhc2VIdHRwQ2xpZW50KSB7XHJcbiAgICAgICAgdGhpcy5lZGl0TGFuZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVHJhbnMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICBub25lOiB7fVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5pbml0U2VydmljZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBpbml0U2VydmljZSgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICAgICAgbGFuZ3VhZ2VzID0gQXJyYXkuaXNBcnJheShsYW5ndWFnZXMpICYmIGxhbmd1YWdlcy5sZW5ndGggPiAwID8gbGFuZ3VhZ2VzIDogdGhpcy5sYW5ndWFnZUxpc3Q7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBBcnJheS5mcm9tKG5ldyBTZXQ8c3RyaW5nPihsYW5ndWFnZXMpKTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlTGlzdC5mb3JFYWNoKGxhbmcgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSA9IHRoaXMudHJhbnNsYXRpb25zW2xhbmddIHx8IHt9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxhbmd1YWdlcykgfHwgbGFuZ3VhZ2VzLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5yZXBsYWNlTGFuZ3VhZ2VzKHRoaXMubGFuZ3VhZ2VMaXN0LmNvbmNhdChsYW5ndWFnZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgbG93ZXJLZXkgPSAoa2V5IHx8IFwiXCIpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0aGlzLmRpY3Rpb25hcnlbbG93ZXJLZXldIHx8IGxvd2VyS2V5O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9uID09IGxvd2VyS2V5ID8ga2V5IDogdHJhbnNsYXRpb24sIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc1N0cmluZyhrZXkpIHx8ICFrZXkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGFyYW1ldGVyIFwia2V5XCIgcmVxdWlyZWRgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSBPYmplY3RVdGlscy5nZXRWYWx1ZSh0aGlzLmRpY3Rpb25hcnksIGtleSwga2V5KSB8fCBrZXk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZXMucmVzb2x2ZSh0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9uLCBwYXJhbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvbnMoLi4ua2V5czogc3RyaW5nW10pOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlcy5jcmVhdGU8SVRyYW5zbGF0aW9ucz4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvbWlzZXMuYWxsKGtleXMubWFwKGtleSA9PiB0aGlzLmdldFRyYW5zbGF0aW9uKGtleSkpKS50aGVuKHRyYW5zbGF0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGtleXMucmVkdWNlKChyZXN1bHQsIGtleSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNsYXRpb25zW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9LCB7fSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxhbmcgPSBsYW5nIHx8IHRoaXMuY3VycmVudExhbmd1YWdlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9ucyA/ICh0cmFuc2xhdGlvbnNbbGFuZ10gfHwgXCJcIikgOiBcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIGdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9uW10sIHBhcmFtcz86IGFueSwgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnMgPyB0cmFuc2xhdGlvbnMuZmluZCh0ID0+IHQubGFuZyA9PSBsYW5nKSA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUodHJhbnNsYXRpb24gPyB0cmFuc2xhdGlvbi50cmFuc2xhdGlvbiA6IFwiXCIsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGludGVycG9sYXRlKGV4cHI6IHN0cmluZyB8IEZ1bmN0aW9uLCBwYXJhbXM/OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXhwciA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVN0cmluZyhleHByLCBwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGV4cHIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICByZXR1cm4gZXhwcihwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXhwciBhcyBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGludGVycG9sYXRlU3RyaW5nKGV4cHI6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICAgICAgaWYgKCFleHByIHx8ICFwYXJhbXMpIHJldHVybiBleHByO1xyXG4gICAgICAgIHJldHVybiBleHByLnJlcGxhY2UoL3t7XFxzPyhbXnt9XFxzXSopXFxzP319L2csIChzdWJzdHJpbmc6IHN0cmluZywgYjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSBPYmplY3RVdGlscy5nZXRWYWx1ZShwYXJhbXMsIGIpO1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKHIpID8gciA6IHN1YnN0cmluZztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdExhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVuaXZlcnNhbC5pc0Jyb3dzZXIgfHwgdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiZGVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGJyb3dzZXJMYW5nOiBzdHJpbmcgPSAod2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZXMgPyB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6IG51bGwpXHJcbiAgICAgICAgICAgIHx8IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvcltcImJyb3dzZXJMYW5ndWFnZVwiXSB8fCB3aW5kb3cubmF2aWdhdG9yW1widXNlckxhbmd1YWdlXCJdIHx8IG51bGw7XHJcbiAgICAgICAgaWYgKCFicm93c2VyTGFuZykgcmV0dXJuIGJyb3dzZXJMYW5nO1xyXG5cclxuICAgICAgICBbXCItXCIsIFwiX1wiXS5mb3JFYWNoKHNwbGl0dGVyID0+IHtcclxuICAgICAgICAgICAgaWYgKGJyb3dzZXJMYW5nLmluZGV4T2Yoc3BsaXR0ZXIpID49IDApIHtcclxuICAgICAgICAgICAgICAgIGJyb3dzZXJMYW5nID0gYnJvd3Nlckxhbmcuc3BsaXQoc3BsaXR0ZXIpWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XHJcbiAgICB9XHJcbn1cclxuIl19