@frontegg/angular 6.5.0 → 6.5.1-alpha.6576075296

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.
@@ -39,11 +39,11 @@ export class FronteggAuthService {
39
39
  this.setLoginState = (state) => this.dispatchAction('setLoginState', state);
40
40
  this.resetLoginState = () => this.dispatchAction('resetLoginState');
41
41
  this.requestAuthorize = (firstTime) => this.dispatchAction('requestAuthorize', firstTime);
42
- this.loginWithRedirect = () => {
42
+ this.loginWithRedirect = (params) => {
43
43
  if (this.isHostedLoginCallbackRoute()) {
44
44
  return;
45
45
  }
46
- this.dispatchAction('requestHostedLoginAuthorize');
46
+ this.dispatchAction('requestHostedLoginAuthorize', params);
47
47
  this.setState({ isLoading: true });
48
48
  };
49
49
  this.preLogin = (payload) => this.dispatchAction('preLogin', payload);
@@ -310,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
310
310
  providedIn: 'root',
311
311
  }]
312
312
  }], ctorParameters: function () { return [{ type: i1.FronteggAppService }, { type: i2.Router }]; } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnJvbnRlZ2ctYXBwL3NyYy9saWIvZnJvbnRlZ2ctYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBdUNMLGFBQWEsR0FHZCxNQUFNLHVCQUF1QixDQUFDOzs7O0FBMkQvQixNQUFNLE9BQU8sbUJBQW1CO0lBMEg5QixZQUFvQixrQkFBc0MsRUFBVSxNQUFjO1FBQTlELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBekgxRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBWSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBZSxDQUFDLENBQUM7UUFDNUcsaUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBQXFDLEVBQXdDLENBQUMsQ0FBQztRQUNqSSxnQ0FBMkIsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBdUMsQ0FBQyxDQUFDO1FBQzlILHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUE2QixFQUFnQyxDQUFDLENBQUM7UUFDekcsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQThCLEVBQWlDLENBQUMsQ0FBQztRQUM1RywrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBbUMsRUFBc0MsQ0FBQyxDQUFDO1FBQzNILHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUEwQixFQUE2QixDQUFDLENBQUM7UUFDaEcsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBMkIsQ0FBQyxDQUFDO1FBQzFGLHdCQUFtQixHQUFHLElB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QkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBYTtRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUN4RCxhQUFhO1FBQ2IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLGFBQWEsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFHTSwwQkFBMEI7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDaEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsYUFBdEIsc0JBQXNCLGNBQXRCLHNCQUFzQixHQUFJLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsQ0FBQzs7aUhBdkxVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBTZXJ2aWNlIH0gZnJvbSAnLi9mcm9udGVnZy1hcHAuc2VydmljZSc7XG5pbXBvcnQgRmFzdERlZXBFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHtcbiAgUm9sZXNTdGF0ZSxcbiAgVGVuYW50c1N0YXRlLFxuICBBY2NvdW50U2V0dGluZ3NTdGF0ZSxcbiAgU2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5UGF5bG9hZCxcbiAgU2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dFBheWxvYWQsXG4gIFNhdmVTZWN1cml0eVBvbGljeU1mYVBheWxvYWQsXG4gIFBhc3N3b3JkUG9saWN5U3RhdGUsXG4gIFBhc3N3b3JkSGlzdG9yeVBvbGljeVN0YXRlLFxuICBNZmFQb2xpY3lTdGF0ZSxcbiAgQ2FwdGNoYVBvbGljeVN0YXRlLFxuICBMb2Nrb3V0UG9saWN5U3RhdGUsXG4gIFB1YmxpY1BvbGljeVN0YXRlLFxuICBHbG9iYWxQb2xpY3lTdGF0ZSxcbiAgU2VjdXJpdHlQb2xpY3lTdGF0ZSxcbiAgQWRkVXNlckFwaVRva2VuUGF5bG9hZCxcbiAgQWRkVGVuYW50QXBpVG9rZW5QYXlsb2FkLFxuICBBcGlUb2tlblR5cGUsXG4gIEFwaVRva2Vuc1N0YXRlLFxuICBBcGlTdGF0ZUluZGljYXRvcixcbiAgSVNldERlbGV0ZVVzZXJEaWFsb2csXG4gIElTZXRBZGRVc2VyRGlhbG9nLFxuICBMb2FkUm9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQsXG4gIFRlYW1TdGF0ZSxcbiAgVGVhbVN0YXRlSW5kaWNhdG9yLFxuICBNRkFTdGF0ZSxcbiAgU2F2ZVNTT0NvbmZpZ3VyYXRpb25QYXlsb2FkLFxuICBTU09TdGF0ZSxcbiAgUHJvZmlsZVN0YXRlLFxuICBTYXZlU1NPQ29uZmlndXJhdGlvbkZpbGVQYXlsb2FkLFxuICBVcGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXNQYXlsb2FkLFxuICBEZWxldGVTYW1sR3JvdXBQYXlsb2FkLFxuICBDcmVhdGVTYW1sR3JvdXBQYXlsb2FkLFxuICBTYXZlUHJvZmlsZVBheWxvYWQsXG4gIFNpZ25VcFN0YXRlLFxuICBGb3Jnb3RQYXNzd29yZFN0YXRlLFxuICBBY2NlcHRJbnZpdGF0aW9uU3RhdGUsXG4gIEF1dGhTdGF0ZSxcbiAgVXNlcixcbiAgYXV0aFN0b3JlTmFtZSxcbiAgTG9naW5TdGF0ZSxcbiAgQWN0aXZhdGVBY2NvdW50U3RyYXRlZ3lTdGF0ZSxcbn0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7XG4gIElMb2dpbixcbiAgSUxvZ2luV2l0aE1mYSxcbiAgSVBvc3RMb2dpbixcbiAgSVByZUxvZ2luLFxuICBJUmVjb3Zlck1GQVRva2VuLFxuICBJQWN0aXZhdGVBY2NvdW50LFxuICBJTG9naW5WaWFTb2NpYWxMb2dpbixcbiAgSVNldFNvY2lhbExvZ2luRXJyb3IsXG4gIElSZXNlbmRBY3RpdmF0aW9uRW1haWwsXG4gIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneSxcbiAgSUdldEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5UmVzcG9uc2UsXG4gIElBY2NlcHRJbnZpdGF0aW9uLFxuICBJRm9yZ290UGFzc3dvcmQsXG4gIElSZXNldFBhc3N3b3JkLFxuICBJR2V0VXNlclBhc3N3b3JkQ29uZmlnLFxuICBJU2lnblVwVXNlcixcbiAgSUNoYW5nZVBhc3N3b3JkLFxuICBJT2lkY1Bvc3RMb2dpbixcbiAgSVZlcmlmeU1mYSxcbiAgSURpc2FibGVNZmEsXG4gIElMb2FkVXNlcnMsXG4gIElUZWFtVXNlcixcbiAgSUFkZFVzZXIsXG4gIElVcGRhdGVVc2VyLFxuICBJRGVsZXRlVXNlcixcbiAgSVJlc2VuZEFjdGl2YXRpb25MaW5rLFxuICBJU2V0dGluZ3NSZXNwb25zZSxcbiAgSVN3aXRjaFRlbmFudCxcbiAgSVRlbmFudHNSZXNwb25zZSxcbiAgSUFkZFJvbGUsXG4gIElSb2xlLFxuICBJVXBkYXRlUm9sZSxcbiAgSURlbGV0ZVJvbGUsXG4gIElBdHRhY2hQZXJtaXNzaW9uc1RvUm9sZSxcbiAgSVJlc2VuZEludml0YXRpb25MaW5rLFxuICBJUm9sZVBlcm1pc3Npb24sXG59IGZyb20gJ0Bmcm9udGVnZy9yZXN0LWFwaSc7XG5pbXBvcnQgdHlwZSB7IEZyb250ZWdnU3RhdGUsIEFjdGl2YXRlQWNjb3VudFN0YXRlLCBTb2NpYWxMb2dpblN0YXRlIH0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmludGVyZmFjZSBBdXRoU3ViU3RhdGVzIHtcbiAgZmllbGQ6IFBhcnRpYWw8a2V5b2YgQXV0aFN0YXRlPjtcbiAgc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG59XG5cbmV4cG9ydCB0eXBlIFdpdGhDYWxsYmFjazxUID0ge30sIFIgPSBib29sZWFuPiA9IFQgJiB7XG4gIGNhbGxiYWNrPzogKGRhdGE6IFIgfCBudWxsLCBlcnJvcj86IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdpdGhTaWxlbnRMb2FkPFQ+ID0gVCAmIHtcbiAgc2lsZW50TG9hZGluZz86IGJvb2xlYW47XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgYXV0aFN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlPih7IGlzQXV0aGVudGljYXRlZDogZmFsc2UsIGlzTG9hZGluZzogdHJ1ZSB9IGFzIEF1dGhTdGF0ZSk7XG4gIHByaXZhdGUgYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydhY2NlcHRJbnZpdGF0aW9uU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWydhY2NlcHRJbnZpdGF0aW9uU3RhdGUnXSk7XG4gIHByaXZhdGUgYWNjb3VudFNldHRpbmdzU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2FjY291bnRTZXR0aW5nc1N0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnYWNjb3VudFNldHRpbmdzU3RhdGUnXSk7XG4gIHByaXZhdGUgYWN0aXZhdGVTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnYWN0aXZhdGVTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ2FjdGl2YXRlU3RhdGUnXSk7XG4gIHByaXZhdGUgYXBpVG9rZW5zU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2FwaVRva2Vuc1N0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnYXBpVG9rZW5zU3RhdGUnXSk7XG4gIHByaXZhdGUgZm9yZ290UGFzc3dvcmRTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnZm9yZ290UGFzc3dvcmRTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ2ZvcmdvdFBhc3N3b3JkU3RhdGUnXSk7XG4gIHByaXZhdGUgbG9naW5TdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnbG9naW5TdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ2xvZ2luU3RhdGUnXSk7XG4gIHByaXZhdGUgbWZhU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ21mYVN0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnbWZhU3RhdGUnXSk7XG4gIHByaXZhdGUgcHJvZmlsZVN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydwcm9maWxlU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWydwcm9maWxlU3RhdGUnXSk7XG4gIHByaXZhdGUgcm9sZXNTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsncm9sZXNTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ3JvbGVzU3RhdGUnXSk7XG4gIHByaXZhdGUgcm91dGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydyb3V0ZXMnXT4oe30gYXMgQXV0aFN0YXRlWydyb3V0ZXMnXSk7XG4gIHByaXZhdGUgc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnc2VjdXJpdHlQb2xpY3lTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ3NlY3VyaXR5UG9saWN5U3RhdGUnXSk7XG4gIHByaXZhdGUgc2lnblVwU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3NpZ25VcFN0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnc2lnblVwU3RhdGUnXSk7XG4gIHByaXZhdGUgc29jaWFsTG9naW5TdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnc29jaWFsTG9naW5TdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ3NvY2lhbExvZ2luU3RhdGUnXSk7XG4gIHByaXZhdGUgc3NvU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3Nzb1N0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnc3NvU3RhdGUnXSk7XG4gIHByaXZhdGUgdGVhbVN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd0ZWFtU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWyd0ZWFtU3RhdGUnXSk7XG4gIHByaXZhdGUgdGVuYW50c1N0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXSk7XG4gIHByaXZhdGUgdXNlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsndXNlciddPih7fSBhcyBBdXRoU3RhdGVbJ3VzZXInXSk7XG4gIHByaXZhdGUgaXNBdXRoZW50aWNhdGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydpc0F1dGhlbnRpY2F0ZWQnXT4oZmFsc2UpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnaXNMb2FkaW5nJ10+KHRydWUpO1xuICBwcml2YXRlIGlzU1NPQXV0aFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnaXNTU09BdXRoJ10+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzc29BQ1NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3Nzb0FDUyddPignJyk7XG5cblxuICBnZXQgYXV0aFN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYWNjZXB0SW52aXRhdGlvblN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnYWNjZXB0SW52aXRhdGlvblN0YXRlJ10+IHtcbiAgICByZXR1cm4gdGhpcy5hY2NlcHRJbnZpdGF0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGFjY291bnRTZXR0aW5nc1N0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnYWNjb3VudFNldHRpbmdzU3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRTZXR0aW5nc1N0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBhY3RpdmF0ZVN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnYWN0aXZhdGVTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYXBpVG9rZW5zU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydhcGlUb2tlbnNTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpVG9rZW5zU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGZvcmdvdFBhc3N3b3JkU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydmb3Jnb3RQYXNzd29yZFN0YXRlJ10+IHtcbiAgICByZXR1cm4gdGhpcy5mb3Jnb3RQYXNzd29yZFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBsb2dpblN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnbG9naW5TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMubG9naW5TdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgbWZhU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydtZmFTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMubWZhU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHByb2ZpbGVTdGF0ZSQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3Byb2ZpbGVTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCByb2xlc1N0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsncm9sZXNTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMucm9sZXNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgcm91dGVzU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydyb3V0ZXMnXT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc2VjdXJpdHlQb2xpY3lTdGF0ZSQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3NlY3VyaXR5UG9saWN5U3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLnNlY3VyaXR5UG9saWN5U3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHNpZ25VcFN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnc2lnblVwU3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLnNpZ25VcFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzb2NpYWxMb2dpblN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnc29jaWFsTG9naW5TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuc29jaWFsTG9naW5TdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3NvU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydzc29TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuc3NvU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHRlYW1TdGF0ZSQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3RlYW1TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMudGVhbVN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0ZW5hbnRzU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLnRlbmFudHNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdXNlciQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3VzZXInXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHVzZXIoKTogQXV0aFN0YXRlWyd1c2VyJ10ge1xuICAgIHJldHVybiB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpLmF1dGgudXNlcjtcbiAgfVxuXG5cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ2lzQXV0aGVudGljYXRlZCddPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogQXV0aFN0YXRlWydpc0F1dGhlbnRpY2F0ZWQnXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkuYXV0aC5pc0F1dGhlbnRpY2F0ZWQ7XG4gIH1cblxuICBnZXQgaXNMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnaXNMb2FkaW5nJ10+IHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzU1NPQXV0aCQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ2lzU1NPQXV0aCddPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNTU09BdXRoU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzc29BQ1MkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydzc29BQ1MnXT4ge1xuICAgIHJldHVybiB0aGlzLnNzb0FDU1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZyb250ZWdnQXBwU2VydmljZTogRnJvbnRlZ2dBcHBTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgY29uc3QgYXV0aFN1YlN0YXRlczogQXV0aFN1YlN0YXRlc1tdID0gW1xuICAgICAgeyBmaWVsZDogJ2FjY2VwdEludml0YXRpb25TdGF0ZScsIHN1YmplY3Q6IHRoaXMuYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ2FjY291bnRTZXR0aW5nc1N0YXRlJywgc3ViamVjdDogdGhpcy5hY2NvdW50U2V0dGluZ3NTdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdhY3RpdmF0ZVN0YXRlJywgc3ViamVjdDogdGhpcy5hY3RpdmF0ZVN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ2FwaVRva2Vuc1N0YXRlJywgc3ViamVjdDogdGhpcy5hcGlUb2tlbnNTdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdmb3Jnb3RQYXNzd29yZFN0YXRlJywgc3ViamVjdDogdGhpcy5mb3Jnb3RQYXNzd29yZFN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ3RlbmFudHNTdGF0ZScsIHN1YmplY3Q6IHRoaXMudGVuYW50c1N0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ2xvZ2luU3RhdGUnLCBzdWJqZWN0OiB0aGlzLmxvZ2luU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAnbWZhU3RhdGUnLCBzdWJqZWN0OiB0aGlzLm1mYVN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ3Byb2ZpbGVTdGF0ZScsIHN1YmplY3Q6IHRoaXMucHJvZmlsZVN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ3JvbGVzU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnJvbGVzU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAncm91dGVzJywgc3ViamVjdDogdGhpcy5yb3V0ZXNTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAnc2VjdXJpdHlQb2xpY3lTdGF0ZScsIHN1YmplY3Q6IHRoaXMuc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdzaWduVXBTdGF0ZScsIHN1YmplY3Q6IHRoaXMuc2lnblVwU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAnc29jaWFsTG9naW5TdGF0ZScsIHN1YmplY3Q6IHRoaXMuc29jaWFsTG9naW5TdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdzc29TdGF0ZScsIHN1YmplY3Q6IHRoaXMuc3NvU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAndGVhbVN0YXRlJywgc3ViamVjdDogdGhpcy50ZWFtU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAndXNlcicsIHN1YmplY3Q6IHRoaXMudXNlclN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdpc1NTT0F1dGgnLCBzdWJqZWN0OiB0aGlzLmlzU1NPQXV0aFN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdzc29BQ1MnLCBzdWJqZWN0OiB0aGlzLnNzb0FDU1N1YmplY3QgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGU7XG4gICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZS5hdXRoLCBhdXRoU3ViU3RhdGVzKTtcbiAgICAvLyBNZW1vaXplZCBBdXRoIFN0YXRlXG4gICAgdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuc3RvcmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuc3RvcmUuZ2V0U3RhdGUoKSBhcyBGcm9udGVnZ1N0YXRlO1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShuZXdTdGF0ZS5hdXRoLCBhdXRoU3ViU3RhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGUoYXV0aFN0YXRlOiBBdXRoU3RhdGUsIGF1dGhTdWJTdGF0ZXM6IEF1dGhTdWJTdGF0ZXNbXSk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMuYXV0aFN0YXRlU3ViamVjdC52YWx1ZSAhPT0gYXV0aFN0YXRlKSB7XG4gICAgICB0aGlzLmF1dGhTdGF0ZVN1YmplY3QubmV4dChhdXRoU3RhdGUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGF1dGhTdWJTdGF0ZSBvZiBhdXRoU3ViU3RhdGVzKSB7XG4gICAgICBpZiAoIUZhc3REZWVwRXF1YWwoYXV0aFN1YlN0YXRlLnN1YmplY3QudmFsdWUsIGF1dGhTdGF0ZVthdXRoU3ViU3RhdGUuZmllbGRdKSkge1xuICAgICAgICBhdXRoU3ViU3RhdGUuc3ViamVjdC5uZXh0KGF1dGhTdGF0ZVthdXRoU3ViU3RhdGUuZmllbGRdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC52YWx1ZSAhPT0gYXV0aFN0YXRlLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWRTdWJqZWN0Lm5leHQoYXV0aFN0YXRlLmlzQXV0aGVudGljYXRlZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzTG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGF1dGhTdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nU3ViamVjdC5uZXh0KGF1dGhTdGF0ZS5pc0xvYWRpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hBY3Rpb24odHlwZTogc3RyaW5nLCBwYXlsb2FkPzogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBgJHthdXRoU3RvcmVOYW1lfS8ke3R5cGV9YCwgcGF5bG9hZCB9KTtcbiAgfVxuXG5cbiAgcHVibGljIGlzSG9zdGVkTG9naW5DYWxsYmFja1JvdXRlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5yb3V0ZXIudXJsO1xuICAgIGNvbnN0IGhvc3RlZExvZ2luUmVkaXJlY3RVcmwgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5hdXRoUm91dGVzLmhvc3RlZExvZ2luUmVkaXJlY3RVcmw7XG4gICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChob3N0ZWRMb2dpblJlZGlyZWN0VXJsID8/ICcvb2F1dGgvY2FsbGJhY2snKTtcbiAgfVxuXG5cbiAgLy8gUm9vdCBBY3Rpb25zXG4gIHNldFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEF1dGhTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFN0YXRlJywgc3RhdGUpO1xuICByZXNldFN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRTdGF0ZScpO1xuICBzZXRVc2VyID0gKHVzZXI6IFVzZXIpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFVzZXInLCB1c2VyKTtcblxuICAvLyBMb2dpbiBBY3Rpb25zXG4gIHNldExvZ2luU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TG9naW5TdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldExvZ2luU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0TG9naW5TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0TG9naW5TdGF0ZScpO1xuICByZXF1ZXN0QXV0aG9yaXplID0gKGZpcnN0VGltZT86IGJvb2xlYW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlcXVlc3RBdXRob3JpemUnLCBmaXJzdFRpbWUpO1xuICBsb2dpbldpdGhSZWRpcmVjdCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5pc0hvc3RlZExvZ2luQ2FsbGJhY2tSb3V0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlcXVlc3RIb3N0ZWRMb2dpbkF1dGhvcml6ZScpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBpc0xvYWRpbmc6IHRydWUgfSk7XG4gIH07XG4gIHByZUxvZ2luID0gKHBheWxvYWQ6IElQcmVMb2dpbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncHJlTG9naW4nLCBwYXlsb2FkKTtcbiAgcG9zdExvZ2luID0gKHBheWxvYWQ6IElQb3N0TG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Bvc3RMb2dpbicsIHBheWxvYWQpO1xuICBsb2dpbiA9IChwYXlsb2FkOiBJTG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luJywgcGF5bG9hZCk7XG4gIGxvZ2luV2l0aE1mYSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUxvZ2luV2l0aE1mYT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luV2l0aE1mYScsIHBheWxvYWQpO1xuICByZWNvdmVyTWZhID0gKHBheWxvYWQ6IElSZWNvdmVyTUZBVG9rZW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlY292ZXJNZmEnLCBwYXlsb2FkKTtcbiAgbG9nb3V0ID0gKGNhbGxiYWNrPzogKCkgPT4gdm9pZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9nb3V0JywgY2FsbGJhY2spO1xuICBzaWxlbnRMb2dvdXQgPSAoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzaWxlbnRMb2dvdXQnLCBjYWxsYmFjayk7XG4gIGNoZWNrSWZBbGxvd1RvUmVtZW1iZXJNZmFEZXZpY2UgPSAocGF5bG9hZDogeyBtZmFUb2tlbjogc3RyaW5nIH0pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignY2hlY2tJZkFsbG93VG9SZW1lbWJlck1mYURldmljZScsIHBheWxvYWQpO1xuXG4gIC8vIFNvY2lhbCBMb2dpbnMgQWN0aW9uc1xuICBzZXRTb2NpYWxMb2dpbnNTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxTb2NpYWxMb2dpblN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U29jaWFsTG9naW5zU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U29jaWFsTG9naW5zU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNvY2lhbExvZ2luc1N0YXRlJyk7XG4gIGxvYWRTb2NpYWxMb2dpbnNDb25maWd1cmF0aW9uID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNvY2lhbExvZ2luc0NvbmZpZ3VyYXRpb24nKTtcbiAgbG9naW5WaWFTb2NpYWxMb2dpbiA9IChwYXlsb2FkOiBJTG9naW5WaWFTb2NpYWxMb2dpbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9naW5WaWFTb2NpYWxMb2dpbicsIHBheWxvYWQpO1xuICBzZXRTb2NpYWxMb2dpbkVycm9yID0gKHBheWxvYWQ6IElTZXRTb2NpYWxMb2dpbkVycm9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTb2NpYWxMb2dpbkVycm9yJywgcGF5bG9hZCk7XG5cbiAgLy8gQWN0aXZhdGUgQWNjb3VudCBBY3Rpb25zXG4gIHNldEFjdGl2YXRlU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8QWN0aXZhdGVBY2NvdW50U3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY3RpdmF0ZVN0YXRlJywgc3RhdGUpO1xuICByZXNldEFjdGl2YXRlU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFjdGl2YXRlU3RhdGUnKTtcbiAgc2V0QWN0aXZhdGVTdHJhdGVneVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFjdGl2YXRlU3RyYXRlZ3lTdGF0ZScsIHN0YXRlKTtcbiAgYWN0aXZhdGVBY2NvdW50ID0gKHBheWxvYWQ6IElBY3RpdmF0ZUFjY291bnQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FjdGl2YXRlQWNjb3VudCcsIHBheWxvYWQpO1xuICByZXNlbmRBY3RpdmF0aW9uRW1haWwgPSAocGF5bG9hZDogSVJlc2VuZEFjdGl2YXRpb25FbWFpbCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZW5kQWN0aXZhdGlvbkVtYWlsJywgcGF5bG9hZCk7XG4gIGdldEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5ID0gKFxuICAgIHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJR2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3ksIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneVJlc3BvbnNlPixcbiAgKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdnZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneScsIHBheWxvYWQpO1xuXG4gIC8vIEFjY2VwdCBJbnZpdGF0aW9uIEFjdGlvbnNcbiAgc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjY2VwdEludml0YXRpb25TdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlJywgc3RhdGUpO1xuICByZXNldEFjY2VwdEludml0YXRpb25TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlJyk7XG4gIGFjY2VwdEludml0YXRpb24gPSAocGF5bG9hZDogSUFjY2VwdEludml0YXRpb24pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FjY2VwdEludml0YXRpb24nLCBwYXlsb2FkKTtcblxuICAvLyBGb3Jnb3QgUGFzc3dvcmQgQWN0aW9uc1xuICBzZXRGb3Jnb3RQYXNzd29yZFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEZvcmdvdFBhc3N3b3JkU3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEZvcmdvdFBhc3N3b3JkU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZScpO1xuICBmb3Jnb3RQYXNzd29yZCA9IChwYXlsb2FkOiBJRm9yZ290UGFzc3dvcmQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2ZvcmdvdFBhc3N3b3JkJywgcGF5bG9hZCk7XG4gIHJlc2V0UGFzc3dvcmQgPSAocGF5bG9hZDogSVJlc2V0UGFzc3dvcmQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0UGFzc3dvcmQnLCBwYXlsb2FkKTtcbiAgbG9hZFBhc3N3b3JkQ29uZmlnID0gKHBheWxvYWQ/OiBJR2V0VXNlclBhc3N3b3JkQ29uZmlnKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUGFzc3dvcmRDb25maWcnLCBwYXlsb2FkKTtcblxuICAvLyBTaWduIFVwIEFjdGlvbnNcbiAgc2V0U2lnblVwU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8U2lnblVwU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTaWduVXBTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRTaWduVXBTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2lnblVwU3RhdGUnKTtcbiAgc2lnblVwVXNlciA9IChwYXlsb2FkOiBJU2lnblVwVXNlcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2lnblVwVXNlcicsIHBheWxvYWQpO1xuICByZXNldFNpZ25VcFN0YXRlU29mdCA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2lnblVwU3RhdGVTb2Z0Jyk7XG5cbiAgLy8gUHJvZmlsZSBBY3Rpb25zXG4gIHNldFByb2ZpbGVTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxQcm9maWxlU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRQcm9maWxlU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0UHJvZmlsZVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRQcm9maWxlU3RhdGUnKTtcbiAgbG9hZFByb2ZpbGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUHJvZmlsZScpO1xuICBzYXZlUHJvZmlsZSA9IChwYXlsb2FkOiBTYXZlUHJvZmlsZVBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVQcm9maWxlJywgcGF5bG9hZCk7XG4gIGNoYW5nZVBhc3N3b3JkID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQ2hhbmdlUGFzc3dvcmQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjaGFuZ2VQYXNzd29yZCcsIHBheWxvYWQpO1xuXG4gIC8vIFNTTyBhY3Rpb25zXG4gIHNldFNTT1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNTT1N0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U1NPU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U1NPU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNTT1N0YXRlJyk7XG4gIGxvYWRTU09Db25maWd1cmF0aW9ucyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRTU09Db25maWd1cmF0aW9ucycpO1xuICBsb2FkU1NPQXV0aG9yaXphdGlvblJvbGVzID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNTT0F1dGhvcml6YXRpb25Sb2xlcycpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnMgPSAocGF5bG9hZDogU2F2ZVNTT0NvbmZpZ3VyYXRpb25QYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTU09Db25maWd1cmF0aW9ucycsIHBheWxvYWQpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnNGaWxlID0gKHBheWxvYWQ6IEZpbGVbXSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZScsIHBheWxvYWQpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnNGaWxlV2l0aENhbGxiYWNrID0gKHBheWxvYWQ6IFNhdmVTU09Db25maWd1cmF0aW9uRmlsZVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZVdpdGhDYWxsYmFjaycsIHBheWxvYWQpO1xuICB2YWxpZGF0ZVNTT0RvbWFpbiA9IChwYXlsb2FkPzogV2l0aENhbGxiYWNrKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2YWxpZGF0ZVNTT0RvbWFpbicsIHBheWxvYWQpO1xuICB1cGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXMgPSAocGF5bG9hZDogVXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzUGF5bG9hZCkgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXMnLCBwYXlsb2FkKTtcbiAgZGVsZXRlU2FtbEdyb3VwID0gKHBheWxvYWQ6IERlbGV0ZVNhbWxHcm91cFBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RlbGV0ZVNhbWxHcm91cCcsIHBheWxvYWQpO1xuICBjcmVhdGVTYW1sR3JvdXAgPSAocGF5bG9hZDogQ3JlYXRlU2FtbEdyb3VwUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY3JlYXRlU2FtbEdyb3VwJywgcGF5bG9hZCk7XG4gIG9pZGNQb3N0bG9naW4gPSAocGF5bG9hZDogSU9pZGNQb3N0TG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ29pZGNQb3N0bG9naW4nLCBwYXlsb2FkKTtcblxuICAvLyBNZmEgYWN0aW9uc1xuICBzZXRNZmFTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxNRkFTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldE1mYVN0YXRlJywgc3RhdGUpO1xuICByZXNldE1mYVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRNZmFTdGF0ZScpO1xuICBlbnJvbGxNZmEgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdlbnJvbGxNZmEnKTtcbiAgdmVyaWZ5TWZhID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJVmVyaWZ5TWZhLCBzdHJpbmcgfCB1bmRlZmluZWQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2ZXJpZnlNZmEnLCBwYXlsb2FkKTtcbiAgdmVyaWZ5TWZhQWZ0ZXJGb3JjZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUxvZ2luV2l0aE1mYSwgc3RyaW5nIHwgdW5kZWZpbmVkPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2ZXJpZnlNZmFBZnRlckZvcmNlJywgcGF5bG9hZCk7XG4gIGRpc2FibGVNZmEgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEaXNhYmxlTWZhPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGlzYWJsZU1mYScsIHBheWxvYWQpO1xuXG4gIC8vIFRlYW0gYWN0aW9uc1xuICBzZXRUZWFtTG9hZGVyID0gKHBheWxvYWQ6IFRlYW1TdGF0ZUluZGljYXRvcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbUxvYWRlcicsIHBheWxvYWQpO1xuICBzZXRUZWFtRXJyb3IgPSAocGF5bG9hZDogVGVhbVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRUZWFtRXJyb3InLCBwYXlsb2FkKTtcbiAgc2V0VGVhbVN0YXRlID0gKHBheWxvYWQ6IFBhcnRpYWw8VGVhbVN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbVN0YXRlJywgcGF5bG9hZCk7XG4gIHJlc2V0VGVhbVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRUZWFtU3RhdGUnKTtcbiAgbG9hZFVzZXJzID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxXaXRoU2lsZW50TG9hZDxJTG9hZFVzZXJzPiwgSVRlYW1Vc2VyW10+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRVc2VycycsIHBheWxvYWQpO1xuICBsb2FkUm9sZXMgPSAocGF5bG9hZD86IExvYWRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFJvbGVzJywgcGF5bG9hZCk7XG4gIGFkZFVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElBZGRVc2VyLCBJVGVhbVVzZXI+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRVc2VyJywgcGF5bG9hZCk7XG4gIHVwZGF0ZVVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElVcGRhdGVVc2VyLCBJVGVhbVVzZXI+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVVc2VyJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEZWxldGVVc2VyPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVXNlcicsIHBheWxvYWQpO1xuICByZXNlbmRBY3RpdmF0aW9uTGluayA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVJlc2VuZEFjdGl2YXRpb25MaW5rPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNlbmRBY3RpdmF0aW9uTGluaycsIHBheWxvYWQpO1xuICByZXNlbmRJbnZpdGF0aW9uTGluayA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVJlc2VuZEludml0YXRpb25MaW5rPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNlbmRJbnZpdGF0aW9uTGluaycsIHBheWxvYWQpO1xuICBvcGVuQWRkVXNlckRpYWxvZyA9IChwYXlsb2FkPzogSVNldEFkZFVzZXJEaWFsb2cpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ29wZW5BZGRVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG4gIGNsb3NlQWRkVXNlckRpYWxvZyA9IChwYXlsb2FkPzogYW55KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjbG9zZUFkZFVzZXJEaWFsb2cnLCBwYXlsb2FkKTtcbiAgb3BlbkRlbGV0ZVVzZXJEaWFsb2cgPSAocGF5bG9hZD86IElTZXREZWxldGVVc2VyRGlhbG9nKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdvcGVuRGVsZXRlVXNlckRpYWxvZycsIHBheWxvYWQpO1xuICBjbG9zZURlbGV0ZVVzZXJEaWFsb2cgPSAocGF5bG9hZD86IGFueSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xvc2VEZWxldGVVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG5cbiAgLy8gQVBJIFRva2VuIEFjdGlvbnNcbiAgc2V0QXBpVG9rZW5zTG9hZGVyID0gKHBheWxvYWQ6IEFwaVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBcGlUb2tlbnNMb2FkZXInLCBwYXlsb2FkKTtcbiAgc2V0QXBpVG9rZW5zRXJyb3IgPSAocGF5bG9hZDogQXBpU3RhdGVJbmRpY2F0b3IpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFwaVRva2Vuc0Vycm9yJywgcGF5bG9hZCk7XG4gIHNldEFwaVRva2Vuc1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFwaVRva2Vuc1N0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QXBpVG9rZW5zU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0QXBpVG9rZW5zU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFwaVRva2Vuc1N0YXRlJyk7XG4gIGxvYWRBcGlUb2tlbnMgPSAocGF5bG9hZD86IFdpdGhTaWxlbnRMb2FkPFdpdGhDYWxsYmFjaz4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRBcGlUb2tlbnMnLCBwYXlsb2FkKTtcbiAgaW5pdEFwaVRva2Vuc0RhdGEgPSAocGF5bG9hZDogQXBpVG9rZW5UeXBlKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdpbml0QXBpVG9rZW5zRGF0YScsIHBheWxvYWQpO1xuICBhZGRUZW5hbnRBcGlUb2tlbiA9IChwYXlsb2FkOiBBZGRUZW5hbnRBcGlUb2tlblBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FkZFRlbmFudEFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGFkZFVzZXJBcGlUb2tlbiA9IChwYXlsb2FkOiBBZGRVc2VyQXBpVG9rZW5QYXlsb2FkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRVc2VyQXBpVG9rZW4nLCBwYXlsb2FkKTtcbiAgZGVsZXRlVXNlckFwaVRva2VuID0gKHBheWxvYWQ6IHN0cmluZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVXNlckFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVRlbmFudEFwaVRva2VuID0gKHBheWxvYWQ6IHN0cmluZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVGVuYW50QXBpVG9rZW4nLCBwYXlsb2FkKTtcblxuICAvLyBTZWN1cml0eSBQb2xpY3kgQWN0aW9uc1xuICBzZXRTZWN1cml0eVBvbGljeVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNlY3VyaXR5UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5U3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5R2xvYmFsU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8R2xvYmFsUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5R2xvYmFsU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5UHVibGljU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UHVibGljUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UHVibGljU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5TWZhU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TWZhUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5TWZhU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5TG9ja291dFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPExvY2tvdXRQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lMb2Nrb3V0U3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5Q2FwdGNoYVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPENhcHRjaGFQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lDYXB0Y2hhU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5U3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UGFzc3dvcmRIaXN0b3J5UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5U3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZScpO1xuICBzZXRTZWN1cml0eVBvbGljeVBhc3N3b3JkU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UGFzc3dvcmRQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lQYXNzd29yZFN0YXRlJywgc3RhdGUpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3kgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3knKTtcbiAgbG9hZFB1YmxpY1NlY3VyaXR5UG9saWN5ID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFB1YmxpY1NlY3VyaXR5UG9saWN5Jyk7XG4gIGxvYWRWZW5kb3JQYXNzd29yZENvbmZpZyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRWZW5kb3JQYXNzd29yZENvbmZpZycpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lNZmEgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lNZmEnKTtcbiAgc2F2ZVNlY3VyaXR5UG9saWN5TWZhID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeU1mYVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5TWZhJywgcGF5bG9hZCk7XG4gIGxvYWRTZWN1cml0eVBvbGljeUxvY2tvdXQgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lMb2Nrb3V0Jyk7XG4gIHNhdmVTZWN1cml0eVBvbGljeUxvY2tvdXQgPSAocGF5bG9hZDogU2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dFBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dCcsIHBheWxvYWQpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lDYXB0Y2hhID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5Q2FwdGNoYScpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnkgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnknKTtcbiAgc2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5ID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5JywgcGF5bG9hZCk7XG5cbiAgLy8gQWNjb3VudCBTZXR0aW5ncyBBY3Rpb25zXG4gIHNldEFjY291bnRTZXR0aW5nc1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjY291bnRTZXR0aW5nc1N0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0QWNjb3VudFNldHRpbmdzU3RhdGUnKTtcbiAgbG9hZEFjY291bnRTZXR0aW5ncyA9IChwYXlsb2FkPzogV2l0aENhbGxiYWNrPFdpdGhTaWxlbnRMb2FkPHt9Pj4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZEFjY291bnRTZXR0aW5ncycsIHBheWxvYWQpO1xuICBzYXZlQWNjb3VudFNldHRpbmdzID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJU2V0dGluZ3NSZXNwb25zZSwgSVNldHRpbmdzUmVzcG9uc2U+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVBY2NvdW50U2V0dGluZ3MnLCBwYXlsb2FkKTtcblxuICAvLyBUZW5hbnRzIEFjdGlvbnNcbiAgc2V0VGVuYW50c1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFRlbmFudHNTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFRlbmFudHNTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRUZW5hbnRzU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFRlbmFudHNTdGF0ZScpO1xuICBzd2l0Y2hUZW5hbnQgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElTd2l0Y2hUZW5hbnQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzd2l0Y2hUZW5hbnQnLCBwYXlsb2FkKTtcbiAgbG9hZFRlbmFudHMgPSAocGF5bG9hZD86IFdpdGhDYWxsYmFjazx7fSwgSVRlbmFudHNSZXNwb25zZVtdPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFRlbmFudHMnLCBwYXlsb2FkKTtcblxuICAvLyBSb2xlcyBBY3Rpb25zXG4gIHNldFJvbGVzU3RhdGUgPSAoc3RhdGU6IFJvbGVzU3RhdGUpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFJvbGVzU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0Um9sZXNTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0Um9sZXNTdGF0ZScpO1xuICBsb2FkUm9sZXNBbmRQZXJtaXNzaW9ucyA9IChwYXlsb2FkPzogV2l0aFNpbGVudExvYWQ8e30+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUm9sZXNBbmRQZXJtaXNzaW9ucycsIHBheWxvYWQpO1xuICBhZGRSb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQWRkUm9sZSwgSVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRSb2xlJywgcGF5bG9hZCk7XG4gIHVwZGF0ZVJvbGUgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElVcGRhdGVSb2xlLCBJUm9sZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3VwZGF0ZVJvbGUnLCBwYXlsb2FkKTtcbiAgZGVsZXRlUm9sZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SURlbGV0ZVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdkZWxldGVSb2xlJywgcGF5bG9hZCk7XG4gIGF0dGFjaFBlcm1pc3Npb25zVG9Sb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQXR0YWNoUGVybWlzc2lvbnNUb1JvbGUsIElSb2xlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhdHRhY2hQZXJtaXNzaW9uc1RvUm9sZScsIHBheWxvYWQpO1xuXG4gIGF0dGFjaFBlcm1pc3Npb25Ub1JvbGVzID0gKFxuICAgIHBheWxvYWQ6IFdpdGhDYWxsYmFjazx7XG4gICAgICBwZXJtaXNzaW9uSWQ6IHN0cmluZztcbiAgICAgIHJvbGVJZHM6IHN0cmluZ1tdO1xuICAgIH0sXG4gICAgICBJUm9sZVBlcm1pc3Npb24+LFxuICApID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2F0dGFjaFBlcm1pc3Npb25Ub1JvbGVzJywgcGF5bG9hZCk7XG59XG4iXX0=
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnJvbnRlZ2ctYXBwL3NyYy9saWIvZnJvbnRlZ2ctYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBdUNMLGFBQWEsR0FHZCxNQUFNLHVCQUF1QixDQUFDOzs7O0FBMkQvQixNQUFNLE9BQU8sbUJBQW1CO0lBMEg5QixZQUFvQixrQkFBc0MsRUFBVSxNQUFjO1FBQTlELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBekgxRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBWSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBZSxDQUFDLENBQUM7UUFDNUcsaUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBQXFDLEVBQXdDLENBQUMsQ0FBQztRQUNqSSxnQ0FBMkIsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBdUMsQ0FBQyxDQUFDO1FBQzlILHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUE2QixFQUFnQyxDQUFDLENBQUM7UUFDekcsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQThCLEVBQWlDLENBQUMsQ0FBQztRQUM1RywrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBbUMsRUFBc0MsQ0FBQyxDQUFDO1FBQzNILHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUEwQixFQUE2QixDQUFDLENBQUM7UUFDaEcsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBMkIsQ0FBQyxDQUFDO1FBQzFGLHdCQUFtQixHQUFHLElB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QUFFO1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBYTtRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUN4RCxhQUFhO1FBQ2IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLGFBQWEsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFHTSwwQkFBMEI7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDaEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsYUFBdEIsc0JBQXNCLGNBQXRCLHNCQUFzQixHQUFJLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsQ0FBQzs7aUhBdkxVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBTZXJ2aWNlIH0gZnJvbSAnLi9mcm9udGVnZy1hcHAuc2VydmljZSc7XG5pbXBvcnQgRmFzdERlZXBFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHtcbiAgUm9sZXNTdGF0ZSxcbiAgVGVuYW50c1N0YXRlLFxuICBBY2NvdW50U2V0dGluZ3NTdGF0ZSxcbiAgU2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5UGF5bG9hZCxcbiAgU2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dFBheWxvYWQsXG4gIFNhdmVTZWN1cml0eVBvbGljeU1mYVBheWxvYWQsXG4gIFBhc3N3b3JkUG9saWN5U3RhdGUsXG4gIFBhc3N3b3JkSGlzdG9yeVBvbGljeVN0YXRlLFxuICBNZmFQb2xpY3lTdGF0ZSxcbiAgQ2FwdGNoYVBvbGljeVN0YXRlLFxuICBMb2Nrb3V0UG9saWN5U3RhdGUsXG4gIFB1YmxpY1BvbGljeVN0YXRlLFxuICBHbG9iYWxQb2xpY3lTdGF0ZSxcbiAgU2VjdXJpdHlQb2xpY3lTdGF0ZSxcbiAgQWRkVXNlckFwaVRva2VuUGF5bG9hZCxcbiAgQWRkVGVuYW50QXBpVG9rZW5QYXlsb2FkLFxuICBBcGlUb2tlblR5cGUsXG4gIEFwaVRva2Vuc1N0YXRlLFxuICBBcGlTdGF0ZUluZGljYXRvcixcbiAgSVNldERlbGV0ZVVzZXJEaWFsb2csXG4gIElTZXRBZGRVc2VyRGlhbG9nLFxuICBMb2FkUm9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQsXG4gIFRlYW1TdGF0ZSxcbiAgVGVhbVN0YXRlSW5kaWNhdG9yLFxuICBNRkFTdGF0ZSxcbiAgU2F2ZVNTT0NvbmZpZ3VyYXRpb25QYXlsb2FkLFxuICBTU09TdGF0ZSxcbiAgUHJvZmlsZVN0YXRlLFxuICBTYXZlU1NPQ29uZmlndXJhdGlvbkZpbGVQYXlsb2FkLFxuICBVcGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXNQYXlsb2FkLFxuICBEZWxldGVTYW1sR3JvdXBQYXlsb2FkLFxuICBDcmVhdGVTYW1sR3JvdXBQYXlsb2FkLFxuICBTYXZlUHJvZmlsZVBheWxvYWQsXG4gIFNpZ25VcFN0YXRlLFxuICBGb3Jnb3RQYXNzd29yZFN0YXRlLFxuICBBY2NlcHRJbnZpdGF0aW9uU3RhdGUsXG4gIEF1dGhTdGF0ZSxcbiAgVXNlcixcbiAgYXV0aFN0b3JlTmFtZSxcbiAgTG9naW5TdGF0ZSxcbiAgQWN0aXZhdGVBY2NvdW50U3RyYXRlZ3lTdGF0ZSxcbn0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7XG4gIElMb2dpbixcbiAgSUxvZ2luV2l0aE1mYSxcbiAgSVBvc3RMb2dpbixcbiAgSVByZUxvZ2luLFxuICBJUmVjb3Zlck1GQVRva2VuLFxuICBJQWN0aXZhdGVBY2NvdW50LFxuICBJTG9naW5WaWFTb2NpYWxMb2dpbixcbiAgSVNldFNvY2lhbExvZ2luRXJyb3IsXG4gIElSZXNlbmRBY3RpdmF0aW9uRW1haWwsXG4gIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneSxcbiAgSUdldEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5UmVzcG9uc2UsXG4gIElBY2NlcHRJbnZpdGF0aW9uLFxuICBJRm9yZ290UGFzc3dvcmQsXG4gIElSZXNldFBhc3N3b3JkLFxuICBJR2V0VXNlclBhc3N3b3JkQ29uZmlnLFxuICBJU2lnblVwVXNlcixcbiAgSUNoYW5nZVBhc3N3b3JkLFxuICBJT2lkY1Bvc3RMb2dpbixcbiAgSVZlcmlmeU1mYSxcbiAgSURpc2FibGVNZmEsXG4gIElMb2FkVXNlcnMsXG4gIElUZWFtVXNlcixcbiAgSUFkZFVzZXIsXG4gIElVcGRhdGVVc2VyLFxuICBJRGVsZXRlVXNlcixcbiAgSVJlc2VuZEFjdGl2YXRpb25MaW5rLFxuICBJU2V0dGluZ3NSZXNwb25zZSxcbiAgSVN3aXRjaFRlbmFudCxcbiAgSVRlbmFudHNSZXNwb25zZSxcbiAgSUFkZFJvbGUsXG4gIElSb2xlLFxuICBJVXBkYXRlUm9sZSxcbiAgSURlbGV0ZVJvbGUsXG4gIElBdHRhY2hQZXJtaXNzaW9uc1RvUm9sZSxcbiAgSVJlc2VuZEludml0YXRpb25MaW5rLFxuICBJUm9sZVBlcm1pc3Npb24sXG59IGZyb20gJ0Bmcm9udGVnZy9yZXN0LWFwaSc7XG5pbXBvcnQgdHlwZSB7IEZyb250ZWdnU3RhdGUsIEFjdGl2YXRlQWNjb3VudFN0YXRlLCBTb2NpYWxMb2dpblN0YXRlIH0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmludGVyZmFjZSBBdXRoU3ViU3RhdGVzIHtcbiAgZmllbGQ6IFBhcnRpYWw8a2V5b2YgQXV0aFN0YXRlPjtcbiAgc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG59XG5cbmV4cG9ydCB0eXBlIFdpdGhDYWxsYmFjazxUID0ge30sIFIgPSBib29sZWFuPiA9IFQgJiB7XG4gIGNhbGxiYWNrPzogKGRhdGE6IFIgfCBudWxsLCBlcnJvcj86IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdpdGhTaWxlbnRMb2FkPFQ+ID0gVCAmIHtcbiAgc2lsZW50TG9hZGluZz86IGJvb2xlYW47XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgYXV0aFN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlPih7IGlzQXV0aGVudGljYXRlZDogZmFsc2UsIGlzTG9hZGluZzogdHJ1ZSB9IGFzIEF1dGhTdGF0ZSk7XG4gIHByaXZhdGUgYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydhY2NlcHRJbnZpdGF0aW9uU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWydhY2NlcHRJbnZpdGF0aW9uU3RhdGUnXSk7XG4gIHByaXZhdGUgYWNjb3VudFNldHRpbmdzU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2FjY291bnRTZXR0aW5nc1N0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnYWNjb3VudFNldHRpbmdzU3RhdGUnXSk7XG4gIHByaXZhdGUgYWN0aXZhdGVTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnYWN0aXZhdGVTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ2FjdGl2YXRlU3RhdGUnXSk7XG4gIHByaXZhdGUgYXBpVG9rZW5zU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ2FwaVRva2Vuc1N0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnYXBpVG9rZW5zU3RhdGUnXSk7XG4gIHByaXZhdGUgZm9yZ290UGFzc3dvcmRTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnZm9yZ290UGFzc3dvcmRTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ2ZvcmdvdFBhc3N3b3JkU3RhdGUnXSk7XG4gIHByaXZhdGUgbG9naW5TdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnbG9naW5TdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ2xvZ2luU3RhdGUnXSk7XG4gIHByaXZhdGUgbWZhU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ21mYVN0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnbWZhU3RhdGUnXSk7XG4gIHByaXZhdGUgcHJvZmlsZVN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydwcm9maWxlU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWydwcm9maWxlU3RhdGUnXSk7XG4gIHByaXZhdGUgcm9sZXNTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsncm9sZXNTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ3JvbGVzU3RhdGUnXSk7XG4gIHByaXZhdGUgcm91dGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydyb3V0ZXMnXT4oe30gYXMgQXV0aFN0YXRlWydyb3V0ZXMnXSk7XG4gIHByaXZhdGUgc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnc2VjdXJpdHlQb2xpY3lTdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ3NlY3VyaXR5UG9saWN5U3RhdGUnXSk7XG4gIHByaXZhdGUgc2lnblVwU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3NpZ25VcFN0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnc2lnblVwU3RhdGUnXSk7XG4gIHByaXZhdGUgc29jaWFsTG9naW5TdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnc29jaWFsTG9naW5TdGF0ZSddPih7fSBhcyBBdXRoU3RhdGVbJ3NvY2lhbExvZ2luU3RhdGUnXSk7XG4gIHByaXZhdGUgc3NvU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3Nzb1N0YXRlJ10+KHt9IGFzIEF1dGhTdGF0ZVsnc3NvU3RhdGUnXSk7XG4gIHByaXZhdGUgdGVhbVN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd0ZWFtU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWyd0ZWFtU3RhdGUnXSk7XG4gIHByaXZhdGUgdGVuYW50c1N0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXT4oe30gYXMgQXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXSk7XG4gIHByaXZhdGUgdXNlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsndXNlciddPih7fSBhcyBBdXRoU3RhdGVbJ3VzZXInXSk7XG4gIHByaXZhdGUgaXNBdXRoZW50aWNhdGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXRlWydpc0F1dGhlbnRpY2F0ZWQnXT4oZmFsc2UpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnaXNMb2FkaW5nJ10+KHRydWUpO1xuICBwcml2YXRlIGlzU1NPQXV0aFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0ZVsnaXNTU09BdXRoJ10+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzc29BQ1NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoU3RhdGVbJ3Nzb0FDUyddPignJyk7XG5cblxuICBnZXQgYXV0aFN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYWNjZXB0SW52aXRhdGlvblN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnYWNjZXB0SW52aXRhdGlvblN0YXRlJ10+IHtcbiAgICByZXR1cm4gdGhpcy5hY2NlcHRJbnZpdGF0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGFjY291bnRTZXR0aW5nc1N0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnYWNjb3VudFNldHRpbmdzU3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRTZXR0aW5nc1N0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBhY3RpdmF0ZVN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnYWN0aXZhdGVTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYXBpVG9rZW5zU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydhcGlUb2tlbnNTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpVG9rZW5zU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGZvcmdvdFBhc3N3b3JkU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydmb3Jnb3RQYXNzd29yZFN0YXRlJ10+IHtcbiAgICByZXR1cm4gdGhpcy5mb3Jnb3RQYXNzd29yZFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBsb2dpblN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnbG9naW5TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMubG9naW5TdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgbWZhU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydtZmFTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMubWZhU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHByb2ZpbGVTdGF0ZSQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3Byb2ZpbGVTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCByb2xlc1N0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsncm9sZXNTdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMucm9sZXNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgcm91dGVzU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydyb3V0ZXMnXT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc2VjdXJpdHlQb2xpY3lTdGF0ZSQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3NlY3VyaXR5UG9saWN5U3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLnNlY3VyaXR5UG9saWN5U3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHNpZ25VcFN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnc2lnblVwU3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLnNpZ25VcFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzb2NpYWxMb2dpblN0YXRlJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnc29jaWFsTG9naW5TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuc29jaWFsTG9naW5TdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3NvU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydzc29TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMuc3NvU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHRlYW1TdGF0ZSQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3RlYW1TdGF0ZSddPiB7XG4gICAgcmV0dXJuIHRoaXMudGVhbVN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB0ZW5hbnRzU3RhdGUkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWyd0ZW5hbnRzU3RhdGUnXT4ge1xuICAgIHJldHVybiB0aGlzLnRlbmFudHNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdXNlciQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ3VzZXInXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHVzZXIoKTogQXV0aFN0YXRlWyd1c2VyJ10ge1xuICAgIHJldHVybiB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpLmF1dGgudXNlcjtcbiAgfVxuXG5cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ2lzQXV0aGVudGljYXRlZCddPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKTogQXV0aFN0YXRlWydpc0F1dGhlbnRpY2F0ZWQnXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkuYXV0aC5pc0F1dGhlbnRpY2F0ZWQ7XG4gIH1cblxuICBnZXQgaXNMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPEF1dGhTdGF0ZVsnaXNMb2FkaW5nJ10+IHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzU1NPQXV0aCQoKTogT2JzZXJ2YWJsZTxBdXRoU3RhdGVbJ2lzU1NPQXV0aCddPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNTU09BdXRoU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzc29BQ1MkKCk6IE9ic2VydmFibGU8QXV0aFN0YXRlWydzc29BQ1MnXT4ge1xuICAgIHJldHVybiB0aGlzLnNzb0FDU1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZyb250ZWdnQXBwU2VydmljZTogRnJvbnRlZ2dBcHBTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgY29uc3QgYXV0aFN1YlN0YXRlczogQXV0aFN1YlN0YXRlc1tdID0gW1xuICAgICAgeyBmaWVsZDogJ2FjY2VwdEludml0YXRpb25TdGF0ZScsIHN1YmplY3Q6IHRoaXMuYWNjZXB0SW52aXRhdGlvblN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ2FjY291bnRTZXR0aW5nc1N0YXRlJywgc3ViamVjdDogdGhpcy5hY2NvdW50U2V0dGluZ3NTdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdhY3RpdmF0ZVN0YXRlJywgc3ViamVjdDogdGhpcy5hY3RpdmF0ZVN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ2FwaVRva2Vuc1N0YXRlJywgc3ViamVjdDogdGhpcy5hcGlUb2tlbnNTdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdmb3Jnb3RQYXNzd29yZFN0YXRlJywgc3ViamVjdDogdGhpcy5mb3Jnb3RQYXNzd29yZFN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ3RlbmFudHNTdGF0ZScsIHN1YmplY3Q6IHRoaXMudGVuYW50c1N0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ2xvZ2luU3RhdGUnLCBzdWJqZWN0OiB0aGlzLmxvZ2luU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAnbWZhU3RhdGUnLCBzdWJqZWN0OiB0aGlzLm1mYVN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ3Byb2ZpbGVTdGF0ZScsIHN1YmplY3Q6IHRoaXMucHJvZmlsZVN0YXRlU3ViamVjdCB9LFxuICAgICAgeyBmaWVsZDogJ3JvbGVzU3RhdGUnLCBzdWJqZWN0OiB0aGlzLnJvbGVzU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAncm91dGVzJywgc3ViamVjdDogdGhpcy5yb3V0ZXNTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAnc2VjdXJpdHlQb2xpY3lTdGF0ZScsIHN1YmplY3Q6IHRoaXMuc2VjdXJpdHlQb2xpY3lTdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdzaWduVXBTdGF0ZScsIHN1YmplY3Q6IHRoaXMuc2lnblVwU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAnc29jaWFsTG9naW5TdGF0ZScsIHN1YmplY3Q6IHRoaXMuc29jaWFsTG9naW5TdGF0ZVN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdzc29TdGF0ZScsIHN1YmplY3Q6IHRoaXMuc3NvU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAndGVhbVN0YXRlJywgc3ViamVjdDogdGhpcy50ZWFtU3RhdGVTdWJqZWN0IH0sXG4gICAgICB7IGZpZWxkOiAndXNlcicsIHN1YmplY3Q6IHRoaXMudXNlclN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdpc1NTT0F1dGgnLCBzdWJqZWN0OiB0aGlzLmlzU1NPQXV0aFN1YmplY3QgfSxcbiAgICAgIHsgZmllbGQ6ICdzc29BQ1MnLCBzdWJqZWN0OiB0aGlzLnNzb0FDU1N1YmplY3QgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGU7XG4gICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZS5hdXRoLCBhdXRoU3ViU3RhdGVzKTtcbiAgICAvLyBNZW1vaXplZCBBdXRoIFN0YXRlXG4gICAgdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuc3RvcmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuc3RvcmUuZ2V0U3RhdGUoKSBhcyBGcm9udGVnZ1N0YXRlO1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShuZXdTdGF0ZS5hdXRoLCBhdXRoU3ViU3RhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGUoYXV0aFN0YXRlOiBBdXRoU3RhdGUsIGF1dGhTdWJTdGF0ZXM6IEF1dGhTdWJTdGF0ZXNbXSk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMuYXV0aFN0YXRlU3ViamVjdC52YWx1ZSAhPT0gYXV0aFN0YXRlKSB7XG4gICAgICB0aGlzLmF1dGhTdGF0ZVN1YmplY3QubmV4dChhdXRoU3RhdGUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGF1dGhTdWJTdGF0ZSBvZiBhdXRoU3ViU3RhdGVzKSB7XG4gICAgICBpZiAoIUZhc3REZWVwRXF1YWwoYXV0aFN1YlN0YXRlLnN1YmplY3QudmFsdWUsIGF1dGhTdGF0ZVthdXRoU3ViU3RhdGUuZmllbGRdKSkge1xuICAgICAgICBhdXRoU3ViU3RhdGUuc3ViamVjdC5uZXh0KGF1dGhTdGF0ZVthdXRoU3ViU3RhdGUuZmllbGRdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC52YWx1ZSAhPT0gYXV0aFN0YXRlLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWRTdWJqZWN0Lm5leHQoYXV0aFN0YXRlLmlzQXV0aGVudGljYXRlZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzTG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGF1dGhTdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nU3ViamVjdC5uZXh0KGF1dGhTdGF0ZS5pc0xvYWRpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hBY3Rpb24odHlwZTogc3RyaW5nLCBwYXlsb2FkPzogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBgJHthdXRoU3RvcmVOYW1lfS8ke3R5cGV9YCwgcGF5bG9hZCB9KTtcbiAgfVxuXG5cbiAgcHVibGljIGlzSG9zdGVkTG9naW5DYWxsYmFja1JvdXRlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5yb3V0ZXIudXJsO1xuICAgIGNvbnN0IGhvc3RlZExvZ2luUmVkaXJlY3RVcmwgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5hdXRoUm91dGVzLmhvc3RlZExvZ2luUmVkaXJlY3RVcmw7XG4gICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChob3N0ZWRMb2dpblJlZGlyZWN0VXJsID8/ICcvb2F1dGgvY2FsbGJhY2snKTtcbiAgfVxuXG5cbiAgLy8gUm9vdCBBY3Rpb25zXG4gIHNldFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEF1dGhTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFN0YXRlJywgc3RhdGUpO1xuICByZXNldFN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRTdGF0ZScpO1xuICBzZXRVc2VyID0gKHVzZXI6IFVzZXIpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFVzZXInLCB1c2VyKTtcblxuICAvLyBMb2dpbiBBY3Rpb25zXG4gIHNldExvZ2luU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TG9naW5TdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldExvZ2luU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0TG9naW5TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0TG9naW5TdGF0ZScpO1xuICByZXF1ZXN0QXV0aG9yaXplID0gKGZpcnN0VGltZT86IGJvb2xlYW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlcXVlc3RBdXRob3JpemUnLCBmaXJzdFRpbWUpO1xuICBsb2dpbldpdGhSZWRpcmVjdCA9IChwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3N0ZWRMb2dpbkNhbGxiYWNrUm91dGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXF1ZXN0SG9zdGVkTG9naW5BdXRob3JpemUnLCBwYXJhbXMpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBpc0xvYWRpbmc6IHRydWUgfSk7XG4gIH07XG4gIHByZUxvZ2luID0gKHBheWxvYWQ6IElQcmVMb2dpbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncHJlTG9naW4nLCBwYXlsb2FkKTtcbiAgcG9zdExvZ2luID0gKHBheWxvYWQ6IElQb3N0TG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Bvc3RMb2dpbicsIHBheWxvYWQpO1xuICBsb2dpbiA9IChwYXlsb2FkOiBJTG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luJywgcGF5bG9hZCk7XG4gIGxvZ2luV2l0aE1mYSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUxvZ2luV2l0aE1mYT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvZ2luV2l0aE1mYScsIHBheWxvYWQpO1xuICByZWNvdmVyTWZhID0gKHBheWxvYWQ6IElSZWNvdmVyTUZBVG9rZW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3JlY292ZXJNZmEnLCBwYXlsb2FkKTtcbiAgbG9nb3V0ID0gKGNhbGxiYWNrPzogKCkgPT4gdm9pZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9nb3V0JywgY2FsbGJhY2spO1xuICBzaWxlbnRMb2dvdXQgPSAoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzaWxlbnRMb2dvdXQnLCBjYWxsYmFjayk7XG4gIGNoZWNrSWZBbGxvd1RvUmVtZW1iZXJNZmFEZXZpY2UgPSAocGF5bG9hZDogeyBtZmFUb2tlbjogc3RyaW5nIH0pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignY2hlY2tJZkFsbG93VG9SZW1lbWJlck1mYURldmljZScsIHBheWxvYWQpO1xuXG4gIC8vIFNvY2lhbCBMb2dpbnMgQWN0aW9uc1xuICBzZXRTb2NpYWxMb2dpbnNTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxTb2NpYWxMb2dpblN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U29jaWFsTG9naW5zU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U29jaWFsTG9naW5zU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNvY2lhbExvZ2luc1N0YXRlJyk7XG4gIGxvYWRTb2NpYWxMb2dpbnNDb25maWd1cmF0aW9uID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNvY2lhbExvZ2luc0NvbmZpZ3VyYXRpb24nKTtcbiAgbG9naW5WaWFTb2NpYWxMb2dpbiA9IChwYXlsb2FkOiBJTG9naW5WaWFTb2NpYWxMb2dpbikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9naW5WaWFTb2NpYWxMb2dpbicsIHBheWxvYWQpO1xuICBzZXRTb2NpYWxMb2dpbkVycm9yID0gKHBheWxvYWQ6IElTZXRTb2NpYWxMb2dpbkVycm9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTb2NpYWxMb2dpbkVycm9yJywgcGF5bG9hZCk7XG5cbiAgLy8gQWN0aXZhdGUgQWNjb3VudCBBY3Rpb25zXG4gIHNldEFjdGl2YXRlU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8QWN0aXZhdGVBY2NvdW50U3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY3RpdmF0ZVN0YXRlJywgc3RhdGUpO1xuICByZXNldEFjdGl2YXRlU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFjdGl2YXRlU3RhdGUnKTtcbiAgc2V0QWN0aXZhdGVTdHJhdGVneVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFjdGl2YXRlU3RyYXRlZ3lTdGF0ZScsIHN0YXRlKTtcbiAgYWN0aXZhdGVBY2NvdW50ID0gKHBheWxvYWQ6IElBY3RpdmF0ZUFjY291bnQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FjdGl2YXRlQWNjb3VudCcsIHBheWxvYWQpO1xuICByZXNlbmRBY3RpdmF0aW9uRW1haWwgPSAocGF5bG9hZDogSVJlc2VuZEFjdGl2YXRpb25FbWFpbCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZW5kQWN0aXZhdGlvbkVtYWlsJywgcGF5bG9hZCk7XG4gIGdldEFjdGl2YXRlQWNjb3VudFN0cmF0ZWd5ID0gKFxuICAgIHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJR2V0QWN0aXZhdGVBY2NvdW50U3RyYXRlZ3ksIElHZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneVJlc3BvbnNlPixcbiAgKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdnZXRBY3RpdmF0ZUFjY291bnRTdHJhdGVneScsIHBheWxvYWQpO1xuXG4gIC8vIEFjY2VwdCBJbnZpdGF0aW9uIEFjdGlvbnNcbiAgc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjY2VwdEludml0YXRpb25TdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlJywgc3RhdGUpO1xuICByZXNldEFjY2VwdEludml0YXRpb25TdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0QWNjZXB0SW52aXRhdGlvblN0YXRlJyk7XG4gIGFjY2VwdEludml0YXRpb24gPSAocGF5bG9hZDogSUFjY2VwdEludml0YXRpb24pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FjY2VwdEludml0YXRpb24nLCBwYXlsb2FkKTtcblxuICAvLyBGb3Jnb3QgUGFzc3dvcmQgQWN0aW9uc1xuICBzZXRGb3Jnb3RQYXNzd29yZFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEZvcmdvdFBhc3N3b3JkU3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEZvcmdvdFBhc3N3b3JkU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0Rm9yZ290UGFzc3dvcmRTdGF0ZScpO1xuICBmb3Jnb3RQYXNzd29yZCA9IChwYXlsb2FkOiBJRm9yZ290UGFzc3dvcmQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2ZvcmdvdFBhc3N3b3JkJywgcGF5bG9hZCk7XG4gIHJlc2V0UGFzc3dvcmQgPSAocGF5bG9hZDogSVJlc2V0UGFzc3dvcmQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0UGFzc3dvcmQnLCBwYXlsb2FkKTtcbiAgbG9hZFBhc3N3b3JkQ29uZmlnID0gKHBheWxvYWQ/OiBJR2V0VXNlclBhc3N3b3JkQ29uZmlnKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUGFzc3dvcmRDb25maWcnLCBwYXlsb2FkKTtcblxuICAvLyBTaWduIFVwIEFjdGlvbnNcbiAgc2V0U2lnblVwU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8U2lnblVwU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRTaWduVXBTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRTaWduVXBTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2lnblVwU3RhdGUnKTtcbiAgc2lnblVwVXNlciA9IChwYXlsb2FkOiBJU2lnblVwVXNlcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2lnblVwVXNlcicsIHBheWxvYWQpO1xuICByZXNldFNpZ25VcFN0YXRlU29mdCA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2lnblVwU3RhdGVTb2Z0Jyk7XG5cbiAgLy8gUHJvZmlsZSBBY3Rpb25zXG4gIHNldFByb2ZpbGVTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxQcm9maWxlU3RhdGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRQcm9maWxlU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0UHJvZmlsZVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRQcm9maWxlU3RhdGUnKTtcbiAgbG9hZFByb2ZpbGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUHJvZmlsZScpO1xuICBzYXZlUHJvZmlsZSA9IChwYXlsb2FkOiBTYXZlUHJvZmlsZVBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVQcm9maWxlJywgcGF5bG9hZCk7XG4gIGNoYW5nZVBhc3N3b3JkID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQ2hhbmdlUGFzc3dvcmQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjaGFuZ2VQYXNzd29yZCcsIHBheWxvYWQpO1xuXG4gIC8vIFNTTyBhY3Rpb25zXG4gIHNldFNTT1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNTT1N0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U1NPU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U1NPU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFNTT1N0YXRlJyk7XG4gIGxvYWRTU09Db25maWd1cmF0aW9ucyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRTU09Db25maWd1cmF0aW9ucycpO1xuICBsb2FkU1NPQXV0aG9yaXphdGlvblJvbGVzID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNTT0F1dGhvcml6YXRpb25Sb2xlcycpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnMgPSAocGF5bG9hZDogU2F2ZVNTT0NvbmZpZ3VyYXRpb25QYXlsb2FkKSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVTU09Db25maWd1cmF0aW9ucycsIHBheWxvYWQpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnNGaWxlID0gKHBheWxvYWQ6IEZpbGVbXSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZScsIHBheWxvYWQpO1xuICBzYXZlU1NPQ29uZmlndXJhdGlvbnNGaWxlV2l0aENhbGxiYWNrID0gKHBheWxvYWQ6IFNhdmVTU09Db25maWd1cmF0aW9uRmlsZVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNTT0NvbmZpZ3VyYXRpb25zRmlsZVdpdGhDYWxsYmFjaycsIHBheWxvYWQpO1xuICB2YWxpZGF0ZVNTT0RvbWFpbiA9IChwYXlsb2FkPzogV2l0aENhbGxiYWNrKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2YWxpZGF0ZVNTT0RvbWFpbicsIHBheWxvYWQpO1xuICB1cGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXMgPSAocGF5bG9hZDogVXBkYXRlU1NPQXV0aG9yaXphdGlvblJvbGVzUGF5bG9hZCkgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVTU09BdXRob3JpemF0aW9uUm9sZXMnLCBwYXlsb2FkKTtcbiAgZGVsZXRlU2FtbEdyb3VwID0gKHBheWxvYWQ6IERlbGV0ZVNhbWxHcm91cFBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2RlbGV0ZVNhbWxHcm91cCcsIHBheWxvYWQpO1xuICBjcmVhdGVTYW1sR3JvdXAgPSAocGF5bG9hZDogQ3JlYXRlU2FtbEdyb3VwUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY3JlYXRlU2FtbEdyb3VwJywgcGF5bG9hZCk7XG4gIG9pZGNQb3N0bG9naW4gPSAocGF5bG9hZDogSU9pZGNQb3N0TG9naW4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ29pZGNQb3N0bG9naW4nLCBwYXlsb2FkKTtcblxuICAvLyBNZmEgYWN0aW9uc1xuICBzZXRNZmFTdGF0ZSA9IChzdGF0ZTogUGFydGlhbDxNRkFTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldE1mYVN0YXRlJywgc3RhdGUpO1xuICByZXNldE1mYVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRNZmFTdGF0ZScpO1xuICBlbnJvbGxNZmEgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdlbnJvbGxNZmEnKTtcbiAgdmVyaWZ5TWZhID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJVmVyaWZ5TWZhLCBzdHJpbmcgfCB1bmRlZmluZWQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2ZXJpZnlNZmEnLCBwYXlsb2FkKTtcbiAgdmVyaWZ5TWZhQWZ0ZXJGb3JjZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SUxvZ2luV2l0aE1mYSwgc3RyaW5nIHwgdW5kZWZpbmVkPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCd2ZXJpZnlNZmFBZnRlckZvcmNlJywgcGF5bG9hZCk7XG4gIGRpc2FibGVNZmEgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEaXNhYmxlTWZhPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGlzYWJsZU1mYScsIHBheWxvYWQpO1xuXG4gIC8vIFRlYW0gYWN0aW9uc1xuICBzZXRUZWFtTG9hZGVyID0gKHBheWxvYWQ6IFRlYW1TdGF0ZUluZGljYXRvcikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbUxvYWRlcicsIHBheWxvYWQpO1xuICBzZXRUZWFtRXJyb3IgPSAocGF5bG9hZDogVGVhbVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRUZWFtRXJyb3InLCBwYXlsb2FkKTtcbiAgc2V0VGVhbVN0YXRlID0gKHBheWxvYWQ6IFBhcnRpYWw8VGVhbVN0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0VGVhbVN0YXRlJywgcGF5bG9hZCk7XG4gIHJlc2V0VGVhbVN0YXRlID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbigncmVzZXRUZWFtU3RhdGUnKTtcbiAgbG9hZFVzZXJzID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxXaXRoU2lsZW50TG9hZDxJTG9hZFVzZXJzPiwgSVRlYW1Vc2VyW10+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRVc2VycycsIHBheWxvYWQpO1xuICBsb2FkUm9sZXMgPSAocGF5bG9hZD86IExvYWRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFJvbGVzJywgcGF5bG9hZCk7XG4gIGFkZFVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElBZGRVc2VyLCBJVGVhbVVzZXI+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRVc2VyJywgcGF5bG9hZCk7XG4gIHVwZGF0ZVVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElVcGRhdGVVc2VyLCBJVGVhbVVzZXI+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCd1cGRhdGVVc2VyJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVVzZXIgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElEZWxldGVVc2VyPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVXNlcicsIHBheWxvYWQpO1xuICByZXNlbmRBY3RpdmF0aW9uTGluayA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVJlc2VuZEFjdGl2YXRpb25MaW5rPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNlbmRBY3RpdmF0aW9uTGluaycsIHBheWxvYWQpO1xuICByZXNlbmRJbnZpdGF0aW9uTGluayA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SVJlc2VuZEludml0YXRpb25MaW5rPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNlbmRJbnZpdGF0aW9uTGluaycsIHBheWxvYWQpO1xuICBvcGVuQWRkVXNlckRpYWxvZyA9IChwYXlsb2FkPzogSVNldEFkZFVzZXJEaWFsb2cpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ29wZW5BZGRVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG4gIGNsb3NlQWRkVXNlckRpYWxvZyA9IChwYXlsb2FkPzogYW55KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdjbG9zZUFkZFVzZXJEaWFsb2cnLCBwYXlsb2FkKTtcbiAgb3BlbkRlbGV0ZVVzZXJEaWFsb2cgPSAocGF5bG9hZD86IElTZXREZWxldGVVc2VyRGlhbG9nKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdvcGVuRGVsZXRlVXNlckRpYWxvZycsIHBheWxvYWQpO1xuICBjbG9zZURlbGV0ZVVzZXJEaWFsb2cgPSAocGF5bG9hZD86IGFueSkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignY2xvc2VEZWxldGVVc2VyRGlhbG9nJywgcGF5bG9hZCk7XG5cbiAgLy8gQVBJIFRva2VuIEFjdGlvbnNcbiAgc2V0QXBpVG9rZW5zTG9hZGVyID0gKHBheWxvYWQ6IEFwaVN0YXRlSW5kaWNhdG9yKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBcGlUb2tlbnNMb2FkZXInLCBwYXlsb2FkKTtcbiAgc2V0QXBpVG9rZW5zRXJyb3IgPSAocGF5bG9hZDogQXBpU3RhdGVJbmRpY2F0b3IpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldEFwaVRva2Vuc0Vycm9yJywgcGF5bG9hZCk7XG4gIHNldEFwaVRva2Vuc1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFwaVRva2Vuc1N0YXRlPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0QXBpVG9rZW5zU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0QXBpVG9rZW5zU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldEFwaVRva2Vuc1N0YXRlJyk7XG4gIGxvYWRBcGlUb2tlbnMgPSAocGF5bG9hZD86IFdpdGhTaWxlbnRMb2FkPFdpdGhDYWxsYmFjaz4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRBcGlUb2tlbnMnLCBwYXlsb2FkKTtcbiAgaW5pdEFwaVRva2Vuc0RhdGEgPSAocGF5bG9hZDogQXBpVG9rZW5UeXBlKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdpbml0QXBpVG9rZW5zRGF0YScsIHBheWxvYWQpO1xuICBhZGRUZW5hbnRBcGlUb2tlbiA9IChwYXlsb2FkOiBBZGRUZW5hbnRBcGlUb2tlblBheWxvYWQpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2FkZFRlbmFudEFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGFkZFVzZXJBcGlUb2tlbiA9IChwYXlsb2FkOiBBZGRVc2VyQXBpVG9rZW5QYXlsb2FkKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRVc2VyQXBpVG9rZW4nLCBwYXlsb2FkKTtcbiAgZGVsZXRlVXNlckFwaVRva2VuID0gKHBheWxvYWQ6IHN0cmluZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVXNlckFwaVRva2VuJywgcGF5bG9hZCk7XG4gIGRlbGV0ZVRlbmFudEFwaVRva2VuID0gKHBheWxvYWQ6IHN0cmluZykgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignZGVsZXRlVGVuYW50QXBpVG9rZW4nLCBwYXlsb2FkKTtcblxuICAvLyBTZWN1cml0eSBQb2xpY3kgQWN0aW9uc1xuICBzZXRTZWN1cml0eVBvbGljeVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFNlY3VyaXR5UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5U3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5R2xvYmFsU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8R2xvYmFsUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5R2xvYmFsU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5UHVibGljU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UHVibGljUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UHVibGljU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5TWZhU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8TWZhUG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5TWZhU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5TG9ja291dFN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPExvY2tvdXRQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lMb2Nrb3V0U3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5Q2FwdGNoYVN0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPENhcHRjaGFQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lDYXB0Y2hhU3RhdGUnLCBzdGF0ZSk7XG4gIHNldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5U3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UGFzc3dvcmRIaXN0b3J5UG9saWN5U3RhdGU+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5U3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0U2VjdXJpdHlQb2xpY3lTdGF0ZScpO1xuICBzZXRTZWN1cml0eVBvbGljeVBhc3N3b3JkU3RhdGUgPSAoc3RhdGU6IFBhcnRpYWw8UGFzc3dvcmRQb2xpY3lTdGF0ZT4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2V0U2VjdXJpdHlQb2xpY3lQYXNzd29yZFN0YXRlJywgc3RhdGUpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3kgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3knKTtcbiAgbG9hZFB1YmxpY1NlY3VyaXR5UG9saWN5ID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFB1YmxpY1NlY3VyaXR5UG9saWN5Jyk7XG4gIGxvYWRWZW5kb3JQYXNzd29yZENvbmZpZyA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2xvYWRWZW5kb3JQYXNzd29yZENvbmZpZycpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lNZmEgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lNZmEnKTtcbiAgc2F2ZVNlY3VyaXR5UG9saWN5TWZhID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeU1mYVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5TWZhJywgcGF5bG9hZCk7XG4gIGxvYWRTZWN1cml0eVBvbGljeUxvY2tvdXQgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lMb2Nrb3V0Jyk7XG4gIHNhdmVTZWN1cml0eVBvbGljeUxvY2tvdXQgPSAocGF5bG9hZDogU2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dFBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5TG9ja291dCcsIHBheWxvYWQpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lDYXB0Y2hhID0gKCkgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFNlY3VyaXR5UG9saWN5Q2FwdGNoYScpO1xuICBsb2FkU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnkgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkU2VjdXJpdHlQb2xpY3lQYXNzd29yZEhpc3RvcnknKTtcbiAgc2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5ID0gKHBheWxvYWQ6IFNhdmVTZWN1cml0eVBvbGljeVBhc3N3b3JkSGlzdG9yeVBheWxvYWQpID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignc2F2ZVNlY3VyaXR5UG9saWN5UGFzc3dvcmRIaXN0b3J5JywgcGF5bG9hZCk7XG5cbiAgLy8gQWNjb3VudCBTZXR0aW5ncyBBY3Rpb25zXG4gIHNldEFjY291bnRTZXR0aW5nc1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPEFjY291bnRTZXR0aW5nc1N0YXRlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRBY2NvdW50U2V0dGluZ3NTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0QWNjb3VudFNldHRpbmdzU3RhdGUnKTtcbiAgbG9hZEFjY291bnRTZXR0aW5ncyA9IChwYXlsb2FkPzogV2l0aENhbGxiYWNrPFdpdGhTaWxlbnRMb2FkPHt9Pj4pID0+XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZEFjY291bnRTZXR0aW5ncycsIHBheWxvYWQpO1xuICBzYXZlQWNjb3VudFNldHRpbmdzID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJU2V0dGluZ3NSZXNwb25zZSwgSVNldHRpbmdzUmVzcG9uc2U+KSA9PlxuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NhdmVBY2NvdW50U2V0dGluZ3MnLCBwYXlsb2FkKTtcblxuICAvLyBUZW5hbnRzIEFjdGlvbnNcbiAgc2V0VGVuYW50c1N0YXRlID0gKHN0YXRlOiBQYXJ0aWFsPFRlbmFudHNTdGF0ZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFRlbmFudHNTdGF0ZScsIHN0YXRlKTtcbiAgcmVzZXRUZW5hbnRzU3RhdGUgPSAoKSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdyZXNldFRlbmFudHNTdGF0ZScpO1xuICBzd2l0Y2hUZW5hbnQgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElTd2l0Y2hUZW5hbnQ+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdzd2l0Y2hUZW5hbnQnLCBwYXlsb2FkKTtcbiAgbG9hZFRlbmFudHMgPSAocGF5bG9hZD86IFdpdGhDYWxsYmFjazx7fSwgSVRlbmFudHNSZXNwb25zZVtdPikgPT4gdGhpcy5kaXNwYXRjaEFjdGlvbignbG9hZFRlbmFudHMnLCBwYXlsb2FkKTtcblxuICAvLyBSb2xlcyBBY3Rpb25zXG4gIHNldFJvbGVzU3RhdGUgPSAoc3RhdGU6IFJvbGVzU3RhdGUpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3NldFJvbGVzU3RhdGUnLCBzdGF0ZSk7XG4gIHJlc2V0Um9sZXNTdGF0ZSA9ICgpID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3Jlc2V0Um9sZXNTdGF0ZScpO1xuICBsb2FkUm9sZXNBbmRQZXJtaXNzaW9ucyA9IChwYXlsb2FkPzogV2l0aFNpbGVudExvYWQ8e30+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdsb2FkUm9sZXNBbmRQZXJtaXNzaW9ucycsIHBheWxvYWQpO1xuICBhZGRSb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQWRkUm9sZSwgSVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhZGRSb2xlJywgcGF5bG9hZCk7XG4gIHVwZGF0ZVJvbGUgPSAocGF5bG9hZDogV2l0aENhbGxiYWNrPElVcGRhdGVSb2xlLCBJUm9sZT4pID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ3VwZGF0ZVJvbGUnLCBwYXlsb2FkKTtcbiAgZGVsZXRlUm9sZSA9IChwYXlsb2FkOiBXaXRoQ2FsbGJhY2s8SURlbGV0ZVJvbGU+KSA9PiB0aGlzLmRpc3BhdGNoQWN0aW9uKCdkZWxldGVSb2xlJywgcGF5bG9hZCk7XG4gIGF0dGFjaFBlcm1pc3Npb25zVG9Sb2xlID0gKHBheWxvYWQ6IFdpdGhDYWxsYmFjazxJQXR0YWNoUGVybWlzc2lvbnNUb1JvbGUsIElSb2xlPikgPT5cbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKCdhdHRhY2hQZXJtaXNzaW9uc1RvUm9sZScsIHBheWxvYWQpO1xuXG4gIGF0dGFjaFBlcm1pc3Npb25Ub1JvbGVzID0gKFxuICAgIHBheWxvYWQ6IFdpdGhDYWxsYmFjazx7XG4gICAgICBwZXJtaXNzaW9uSWQ6IHN0cmluZztcbiAgICAgIHJvbGVJZHM6IHN0cmluZ1tdO1xuICAgIH0sXG4gICAgICBJUm9sZVBlcm1pc3Npb24+LFxuICApID0+IHRoaXMuZGlzcGF0Y2hBY3Rpb24oJ2F0dGFjaFBlcm1pc3Npb25Ub1JvbGVzJywgcGF5bG9hZCk7XG59XG4iXX0=
@@ -101,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
101
101
  providedIn: 'root',
102
102
  }]
103
103
  }], ctorParameters: function () { return [{ type: i1.FronteggAppService }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctZW50aXRsZW1lbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVnZy1hcHAvc3JjL2xpYi9mcm9udGVnZy1lbnRpdGxlbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRy9COzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUZsRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsU0FBUyxDQUFDLENBQUM7UUFHdEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFtQixDQUFDO1FBQ3BGLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakQsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFtQixDQUFDO1lBQ3ZGLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLCtCQUErQixDQUFDLFNBQW9COztRQUMxRCxNQUFNLGlCQUFpQixHQUFHLE1BQUEsU0FBUyxDQUFDLElBQUksMENBQUUsWUFBWSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssS0FBSyxpQkFBaUIsRUFBRTtZQUM3RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHNDQUFzQyxDQUM1QyxlQUErRCxFQUMvRCxRQUFpQztRQUVqQyw0R0FBNEc7UUFDNUcsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUE4QixDQUFDLENBQUM7UUFFeEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9FLG1CQUFtQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxNQUFNLDhCQUE4QixHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUU3Riw0RkFBNEY7UUFDNUYsTUFBTSxtQkFBbUIsR0FBRyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFNUcsOEJBQThCLENBQUMsV0FBVyxHQUFHLEdBQUUsRUFBRTtZQUMvQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUVGLE9BQU8sOEJBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxRQUFzQztRQUNqRixPQUFPLElBQUksQ0FBQyxzQ0FBc0MsQ0FDaEQsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDL0QsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx1QkFBdUIsQ0FBQyxVQUFrQixFQUFFLFFBQXNDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUNyRSxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxPQUEwQixFQUFFLFFBQXNDO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDeEQsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCLENBQUMsUUFBbUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDOzt5SEExR1UsMkJBQTJCOzZIQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs0RkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBQYXJ0aWFsT2JzZXJ2ZXIsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlciwgQXV0aFN0YXRlIH0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudGl0bGVtZW50LCBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2ssIEVudGl0bGVkVG9PcHRpb25zIH0gZnJvbSAnQGZyb250ZWdnL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgRnJvbnRlZ2dTdGF0ZSxcbiAgZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyxcbiAgZ2V0RmVhdHVyZUVudGl0bGVtZW50cyxcbiAgZ2V0RW50aXRsZW1lbnRzLFxufSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBTZXJ2aWNlIH0gZnJvbSAnLi9mcm9udGVnZy1hcHAuc2VydmljZSc7XG5cbi8qKlxuICogQW4gZW50aXRsZW1lbnRzIHNlcnZpY2UgZm9yOiBcbiAqICAgMS4gTWFuYWdpbmcgc3RhdGUgc3Vic2NyaXB0aW9uLlxuICogICAyLiBRdWVyeWluZyBhYm91dCBmZWF0dXJlIGFuZCBwZXJtaXNzaW9uIGVudGl0bGVtZW50cyBzdGF0ZS5cbiAqICAgMy4gTG9hZCBlbnRpdGxlbWVudHMgb24gZGVtYW5kLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dFbnRpdGxlbWVudHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnRpdGxlbWVudHNTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJbJ2VudGl0bGVtZW50cyddPih1bmRlZmluZWQpO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcm9udGVnZ0FwcFNlcnZpY2U6IEZyb250ZWdnQXBwU2VydmljZSkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuc3RvcmUuZ2V0U3RhdGUoKSBhcyBGcm9udGVnZ1N0YXRlO1xuICAgIHRoaXMudXBkYXRlRW50aXRsZW1lbnRzU3RhdGVJZk5lZWRlZChzdGF0ZS5hdXRoKTtcblxuICAgIC8vIE1lbW9pemVkIGVudGl0bGVtZW50cyBTdGF0ZVxuICAgIHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkgYXMgRnJvbnRlZ2dTdGF0ZTtcbiAgICAgIHRoaXMudXBkYXRlRW50aXRsZW1lbnRzU3RhdGVJZk5lZWRlZChuZXdTdGF0ZS5hdXRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGVudGl0bGVtZW50cyBzdWJqZWN0IGNoYW5nZSBldmVudCBpZiB0aGUgZW50aXRsZW1lbnRzIHJlZmVyZW5jZSBjaGFuZ2VzXG4gICAqIE5vIG5lZWQgZm9yIGRlZXAgZXF1YWwgYmVjYXVzZSB3ZSBhbHJlYWR5IGNoZWNrIGl0IGludGVybmFsbHlcbiAgICogQHBhcmFtIGF1dGhTdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVFbnRpdGxlbWVudHNTdGF0ZUlmTmVlZGVkKGF1dGhTdGF0ZTogQXV0aFN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgZW50aXRsZW1lbnRzU3RhdGUgPSBhdXRoU3RhdGUudXNlcj8uZW50aXRsZW1lbnRzO1xuICAgIGlmICh0aGlzLmVudGl0bGVtZW50c1N0YXRlU3ViamVjdC52YWx1ZSA9PT0gZW50aXRsZW1lbnRzU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVudGl0bGVtZW50c1N0YXRlU3ViamVjdC5uZXh0KGVudGl0bGVtZW50c1N0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gZ2l2ZXMgdGhlIGFiaWxpdHkgdG8gcmV0dXJuIGEgbWFuaXB1bGF0ZWQgZGF0YSBvZiB0aGUgZW50aXRsZW1lbnRzIHN0YXRlIGFzIGEgc3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YU1hbmlwdWxhdG9yIE1hbmlwdWxhdG9yIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgZW50aXRsZW1lbnRzIHN0YXRlIGFuZCByZXR1cm5zIGEgbWFuaXB1bGF0ZWQgZGF0YVxuICAgKiBAcGFyYW0gb2JzZXJ2ZXIgRm9yIHJlY2VpdmluZyBtYW5pcHVsYXRlZCBkYXRhIHJlc3VsdFxuICAgKiBAcmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBiZSBhYmxlIHRvIHVuc3Vic2NyaWJlXG4gICAqL1xuICBwcml2YXRlIGdldEVudGl0bGVtZW50c01hbmlwdWxhdG9yU3Vic2NyaXB0aW9uPFJlc3VsdD4oXG4gICAgZGF0YU1hbmlwdWxhdG9yOiAoZW50aXRsZW1lbnRzOiBVc2VyWydlbnRpdGxlbWVudHMnXSkgPT4gUmVzdWx0LCBcbiAgICBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPFJlc3VsdD5cbiAgKTogU3Vic2NyaXB0aW9uIHtcbiAgICAvLyB1c2VkIGZvciBjb21wdXRpbmcgdGhlIGVudGl0bGVtZW50cyByZXN1bHQgYmVjYXVzZSB3ZSBkb24ndCByZXR1cm4gdGhlIHN0YXRlIGl0c2VsZiwgYnV0IGEgY2FsY3VsYXRlZCBvbmVcbiAgICBjb25zdCBlbnRpdGxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZXN1bHQ+KHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIFJlc3VsdCk7XG4gICAgXG4gICAgY29uc3Qgc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLmVudGl0bGVtZW50c1N0YXRlU3ViamVjdC5zdWJzY3JpYmUoZW50aXRsZW1lbnRzID0+IHtcbiAgICAgIGVudGl0bGVtZW50c1N1YmplY3QubmV4dChkYXRhTWFuaXB1bGF0b3IoZW50aXRsZW1lbnRzKSk7XG4gICAgfSk7XG4gICAgXG4gICAgLy8gc3Vic2NyaWJpbmcgdGhlIGNvbnN1bWVyIG9ic2VydmVyXG4gICAgY29uc3QgZW50aXRsZW1lbnRzUmVzdWx0U3Vic2NyaXB0aW9uID0gZW50aXRsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUob2JzZXJ2ZXIpXG5cbiAgICAvLyBtb25rZXkgcGF0Y2hlZCB0byBtYW5hZ2UgYm90aCB1bi1zdWJzY3JpcHRpb25zOiBzdGF0ZSBhbmQgZW50aXRsZW1lbnRzIG1hbmlwdWxhdGVkIHJlc3VsdFxuICAgIGNvbnN0IG9yaWdpbmFsVW5zdWJzY3JpYmUgPSBlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUuYmluZChlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb24pO1xuXG4gICAgZW50aXRsZW1lbnRzUmVzdWx0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlID0gKCk9PntcbiAgICAgIG9yaWdpbmFsVW5zdWJzY3JpYmUoKTtcbiAgICAgIHN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGZlYXR1cmVcbiAgICogQHBhcmFtIG9ic2VydmVyIEZvciByZWNlaXZpbmcgdGhlIGZlYXR1cmUgZW50aXRsZW1lbnRzIHJlc3VsdCBpbmNsdWRpbmcgaWYgdGhlIHVzZXIgaXMgZW50aXRsZWQgdG8gdGhlIGdpdmVuIGZlYXR1cmUuXG4gICAqICAgICAgICAgICAgICAgICBBdHRhY2hpbmcgdGhlIGp1c3RpZmljYXRpb24gaWYgbm90IGVudGl0bGVkXG4gICAqIEByZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmVcbiAgICogQHRocm93cyB3aGVuIGVudGl0bGVtZW50IGlzIG5vdCBlbmFibGVkIHZpYSBmcm9udGVnZyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgZmVhdHVyZUVudGl0bGVtZW50cyQoZmVhdHVyZTogc3RyaW5nLCBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPEVudGl0bGVtZW50Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKGVudGl0bGVtZW50cykgPT4gZ2V0RmVhdHVyZUVudGl0bGVtZW50cyhlbnRpdGxlbWVudHMsIGZlYXR1cmUpLFxuICAgICAgb2JzZXJ2ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uXG4gICAqIEBwYXJhbSBvYnNlcnZlciBGb3IgcmVjZWl2aW5nIHRoZSBwZXJtaXNzaW9uIGVudGl0bGVtZW50cyByZXN1bHQgaW5jbHVkaW5nIGlmIHRoZSB1c2VyIGlzIGVudGl0bGVkIHRvIHRoZSBnaXZlbiBwZXJtaXNzaW9uLlxuICAgKiAgICAgICAgICAgICAgICAgQXR0YWNoaW5nIHRoZSBqdXN0aWZpY2F0aW9uIGlmIG5vdCBlbnRpdGxlZFxuICAgKiBAcmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBiZSBhYmxlIHRvIHVuc3Vic2NyaWJlXG4gICAqL1xuICBwdWJsaWMgcGVybWlzc2lvbkVudGl0bGVtZW50cyQocGVybWlzc2lvbjogc3RyaW5nLCBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPEVudGl0bGVtZW50Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKGVudGl0bGVtZW50cykgPT4gZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyhlbnRpdGxlbWVudHMsIHBlcm1pc3Npb24pLFxuICAgICAgb2JzZXJ2ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvcHRpb25zIHBlcm1pc3Npb25LZXkgb3IgZmVhdHVyZUtleSBpbiBhbiBvcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0gb2JzZXJ2ZXIgRm9yIHJlY2VpdmluZyB0aGUgcGVybWlzc2lvbiBlbnRpdGxlbWVudHMgcmVzdWx0IGluY2x1ZGluZyBpZiB0aGUgdXNlciBpcyBlbnRpdGxlZCB0byB0aGUgZ2l2ZW4gcGVybWlzc2lvbi5cbiAgICogICAgICAgICAgICAgICAgIEF0dGFjaGluZyB0aGUganVzdGlmaWNhdGlvbiBpZiBub3QgZW50aXRsZWRcbiAgICogQHJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYmUgYWJsZSB0byB1bnN1YnNjcmliZVxuICAgKi9cbiAgcHVibGljIGVudGl0bGVtZW50cyQob3B0aW9uczogRW50aXRsZWRUb09wdGlvbnMsIG9ic2VydmVyOiBQYXJ0aWFsT2JzZXJ2ZXI8RW50aXRsZW1lbnQ+KTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdGxlbWVudHNNYW5pcHVsYXRvclN1YnNjcmlwdGlvbjxFbnRpdGxlbWVudD4oXG4gICAgICAoZW50aXRsZW1lbnRzKSA9PiBnZXRFbnRpdGxlbWVudHMoZW50aXRsZW1lbnRzLCBvcHRpb25zKSxcbiAgICAgIG9ic2VydmVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGVudGl0bGVtZW50cyBkYXRhIG9uIGRlbWFuZFxuICAgKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGVkIG9uIHJlcXVlc3QgY29tcGxldGVkIHdpdGggdHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIGZhaWxlZFxuICAgKi9cbiAgcHVibGljIGxvYWRFbnRpdGxlbWVudHMoY2FsbGJhY2s/OiBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5sb2FkRW50aXRsZW1lbnRzKGNhbGxiYWNrKTtcbiAgfVxufVxuIl19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctZW50aXRsZW1lbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVnZy1hcHAvc3JjL2xpYi9mcm9udGVnZy1lbnRpdGxlbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRy9COzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUZsRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxTQUFTLENBQUMsQ0FBQztRQUdyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7UUFDcEYsSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7WUFDdkYsSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssK0JBQStCLENBQUMsU0FBb0I7O1FBQzFELE1BQU0saUJBQWlCLEdBQUcsTUFBQSxTQUFTLENBQUMsSUFBSSwwQ0FBRSxZQUFtQixDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssS0FBSyxpQkFBaUIsRUFBRTtZQUM3RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHNDQUFzQyxDQUM1QyxlQUE4QyxFQUM5QyxRQUFpQztRQUVqQyw0R0FBNEc7UUFDNUcsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUE4QixDQUFDLENBQUM7UUFFeEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9FLG1CQUFtQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxNQUFNLDhCQUE4QixHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUU3Riw0RkFBNEY7UUFDNUYsTUFBTSxtQkFBbUIsR0FBRyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFNUcsOEJBQThCLENBQUMsV0FBVyxHQUFHLEdBQUUsRUFBRTtZQUMvQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUVGLE9BQU8sOEJBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxRQUFzQztRQUNqRixPQUFPLElBQUksQ0FBQyxzQ0FBc0MsQ0FDaEQsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDL0QsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx1QkFBdUIsQ0FBQyxVQUFrQixFQUFFLFFBQXNDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUNyRSxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxPQUEwQixFQUFFLFFBQXNDO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDeEQsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCLENBQUMsUUFBbUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDOzt5SEExR1UsMkJBQTJCOzZIQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs0RkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBQYXJ0aWFsT2JzZXJ2ZXIsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudGl0bGVtZW50LCBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2ssIEVudGl0bGVkVG9PcHRpb25zIH0gZnJvbSAnQGZyb250ZWdnL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgRnJvbnRlZ2dTdGF0ZSxcbiAgZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyxcbiAgZ2V0RmVhdHVyZUVudGl0bGVtZW50cyxcbiAgZ2V0RW50aXRsZW1lbnRzLFxufSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBTZXJ2aWNlIH0gZnJvbSAnLi9mcm9udGVnZy1hcHAuc2VydmljZSc7XG5cbi8qKlxuICogQW4gZW50aXRsZW1lbnRzIHNlcnZpY2UgZm9yOiBcbiAqICAgMS4gTWFuYWdpbmcgc3RhdGUgc3Vic2NyaXB0aW9uLlxuICogICAyLiBRdWVyeWluZyBhYm91dCBmZWF0dXJlIGFuZCBwZXJtaXNzaW9uIGVudGl0bGVtZW50cyBzdGF0ZS5cbiAqICAgMy4gTG9hZCBlbnRpdGxlbWVudHMgb24gZGVtYW5kLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dFbnRpdGxlbWVudHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnRpdGxlbWVudHNTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odW5kZWZpbmVkKTtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJvbnRlZ2dBcHBTZXJ2aWNlOiBGcm9udGVnZ0FwcFNlcnZpY2UpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkgYXMgRnJvbnRlZ2dTdGF0ZTtcbiAgICB0aGlzLnVwZGF0ZUVudGl0bGVtZW50c1N0YXRlSWZOZWVkZWQoc3RhdGUuYXV0aCk7XG5cbiAgICAvLyBNZW1vaXplZCBlbnRpdGxlbWVudHMgU3RhdGVcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGU7XG4gICAgICB0aGlzLnVwZGF0ZUVudGl0bGVtZW50c1N0YXRlSWZOZWVkZWQobmV3U3RhdGUuYXV0aCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBlbnRpdGxlbWVudHMgc3ViamVjdCBjaGFuZ2UgZXZlbnQgaWYgdGhlIGVudGl0bGVtZW50cyByZWZlcmVuY2UgY2hhbmdlc1xuICAgKiBObyBuZWVkIGZvciBkZWVwIGVxdWFsIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVjayBpdCBpbnRlcm5hbGx5XG4gICAqIEBwYXJhbSBhdXRoU3RhdGVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRW50aXRsZW1lbnRzU3RhdGVJZk5lZWRlZChhdXRoU3RhdGU6IEF1dGhTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVudGl0bGVtZW50c1N0YXRlID0gYXV0aFN0YXRlLnVzZXI/LmVudGl0bGVtZW50cyBhcyBhbnk7XG4gICAgaWYgKHRoaXMuZW50aXRsZW1lbnRzU3RhdGVTdWJqZWN0LnZhbHVlID09PSBlbnRpdGxlbWVudHNTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZW50aXRsZW1lbnRzU3RhdGVTdWJqZWN0Lm5leHQoZW50aXRsZW1lbnRzU3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBnaXZlcyB0aGUgYWJpbGl0eSB0byByZXR1cm4gYSBtYW5pcHVsYXRlZCBkYXRhIG9mIHRoZSBlbnRpdGxlbWVudHMgc3RhdGUgYXMgYSBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhTWFuaXB1bGF0b3IgTWFuaXB1bGF0b3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBlbnRpdGxlbWVudHMgc3RhdGUgYW5kIHJldHVybnMgYSBtYW5pcHVsYXRlZCBkYXRhXG4gICAqIEBwYXJhbSBvYnNlcnZlciBGb3IgcmVjZWl2aW5nIG1hbmlwdWxhdGVkIGRhdGEgcmVzdWx0XG4gICAqIEByZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmVcbiAgICovXG4gIHByaXZhdGUgZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248UmVzdWx0PihcbiAgICBkYXRhTWFuaXB1bGF0b3I6IChlbnRpdGxlbWVudHM6IGFueSkgPT4gUmVzdWx0LCBcbiAgICBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPFJlc3VsdD5cbiAgKTogU3Vic2NyaXB0aW9uIHtcbiAgICAvLyB1c2VkIGZvciBjb21wdXRpbmcgdGhlIGVudGl0bGVtZW50cyByZXN1bHQgYmVjYXVzZSB3ZSBkb24ndCByZXR1cm4gdGhlIHN0YXRlIGl0c2VsZiwgYnV0IGEgY2FsY3VsYXRlZCBvbmVcbiAgICBjb25zdCBlbnRpdGxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZXN1bHQ+KHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIFJlc3VsdCk7XG4gICAgXG4gICAgY29uc3Qgc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLmVudGl0bGVtZW50c1N0YXRlU3ViamVjdC5zdWJzY3JpYmUoZW50aXRsZW1lbnRzID0+IHtcbiAgICAgIGVudGl0bGVtZW50c1N1YmplY3QubmV4dChkYXRhTWFuaXB1bGF0b3IoZW50aXRsZW1lbnRzKSk7XG4gICAgfSk7XG4gICAgXG4gICAgLy8gc3Vic2NyaWJpbmcgdGhlIGNvbnN1bWVyIG9ic2VydmVyXG4gICAgY29uc3QgZW50aXRsZW1lbnRzUmVzdWx0U3Vic2NyaXB0aW9uID0gZW50aXRsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUob2JzZXJ2ZXIpXG5cbiAgICAvLyBtb25rZXkgcGF0Y2hlZCB0byBtYW5hZ2UgYm90aCB1bi1zdWJzY3JpcHRpb25zOiBzdGF0ZSBhbmQgZW50aXRsZW1lbnRzIG1hbmlwdWxhdGVkIHJlc3VsdFxuICAgIGNvbnN0IG9yaWdpbmFsVW5zdWJzY3JpYmUgPSBlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUuYmluZChlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb24pO1xuXG4gICAgZW50aXRsZW1lbnRzUmVzdWx0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlID0gKCk9PntcbiAgICAgIG9yaWdpbmFsVW5zdWJzY3JpYmUoKTtcbiAgICAgIHN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGZlYXR1cmVcbiAgICogQHBhcmFtIG9ic2VydmVyIEZvciByZWNlaXZpbmcgdGhlIGZlYXR1cmUgZW50aXRsZW1lbnRzIHJlc3VsdCBpbmNsdWRpbmcgaWYgdGhlIHVzZXIgaXMgZW50aXRsZWQgdG8gdGhlIGdpdmVuIGZlYXR1cmUuXG4gICAqICAgICAgICAgICAgICAgICBBdHRhY2hpbmcgdGhlIGp1c3RpZmljYXRpb24gaWYgbm90IGVudGl0bGVkXG4gICAqIEByZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmVcbiAgICogQHRocm93cyB3aGVuIGVudGl0bGVtZW50IGlzIG5vdCBlbmFibGVkIHZpYSBmcm9udGVnZyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgZmVhdHVyZUVudGl0bGVtZW50cyQoZmVhdHVyZTogc3RyaW5nLCBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPEVudGl0bGVtZW50Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKGVudGl0bGVtZW50cykgPT4gZ2V0RmVhdHVyZUVudGl0bGVtZW50cyhlbnRpdGxlbWVudHMsIGZlYXR1cmUpLFxuICAgICAgb2JzZXJ2ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uXG4gICAqIEBwYXJhbSBvYnNlcnZlciBGb3IgcmVjZWl2aW5nIHRoZSBwZXJtaXNzaW9uIGVudGl0bGVtZW50cyByZXN1bHQgaW5jbHVkaW5nIGlmIHRoZSB1c2VyIGlzIGVudGl0bGVkIHRvIHRoZSBnaXZlbiBwZXJtaXNzaW9uLlxuICAgKiAgICAgICAgICAgICAgICAgQXR0YWNoaW5nIHRoZSBqdXN0aWZpY2F0aW9uIGlmIG5vdCBlbnRpdGxlZFxuICAgKiBAcmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBiZSBhYmxlIHRvIHVuc3Vic2NyaWJlXG4gICAqL1xuICBwdWJsaWMgcGVybWlzc2lvbkVudGl0bGVtZW50cyQocGVybWlzc2lvbjogc3RyaW5nLCBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPEVudGl0bGVtZW50Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKGVudGl0bGVtZW50cykgPT4gZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyhlbnRpdGxlbWVudHMsIHBlcm1pc3Npb24pLFxuICAgICAgb2JzZXJ2ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvcHRpb25zIHBlcm1pc3Npb25LZXkgb3IgZmVhdHVyZUtleSBpbiBhbiBvcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0gb2JzZXJ2ZXIgRm9yIHJlY2VpdmluZyB0aGUgcGVybWlzc2lvbiBlbnRpdGxlbWVudHMgcmVzdWx0IGluY2x1ZGluZyBpZiB0aGUgdXNlciBpcyBlbnRpdGxlZCB0byB0aGUgZ2l2ZW4gcGVybWlzc2lvbi5cbiAgICogICAgICAgICAgICAgICAgIEF0dGFjaGluZyB0aGUganVzdGlmaWNhdGlvbiBpZiBub3QgZW50aXRsZWRcbiAgICogQHJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYmUgYWJsZSB0byB1bnN1YnNjcmliZVxuICAgKi9cbiAgcHVibGljIGVudGl0bGVtZW50cyQob3B0aW9uczogRW50aXRsZWRUb09wdGlvbnMsIG9ic2VydmVyOiBQYXJ0aWFsT2JzZXJ2ZXI8RW50aXRsZW1lbnQ+KTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdGxlbWVudHNNYW5pcHVsYXRvclN1YnNjcmlwdGlvbjxFbnRpdGxlbWVudD4oXG4gICAgICAoZW50aXRsZW1lbnRzKSA9PiBnZXRFbnRpdGxlbWVudHMoZW50aXRsZW1lbnRzLCBvcHRpb25zKSxcbiAgICAgIG9ic2VydmVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGVudGl0bGVtZW50cyBkYXRhIG9uIGRlbWFuZFxuICAgKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGVkIG9uIHJlcXVlc3QgY29tcGxldGVkIHdpdGggdHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIGZhaWxlZFxuICAgKi9cbiAgcHVibGljIGxvYWRFbnRpdGxlbWVudHMoY2FsbGJhY2s/OiBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5sb2FkRW50aXRsZW1lbnRzKGNhbGxiYWNrKTtcbiAgfVxufVxuIl19
@@ -268,11 +268,11 @@ class FronteggAuthService {
268
268
  this.setLoginState = (state) => this.dispatchAction('setLoginState', state);
269
269
  this.resetLoginState = () => this.dispatchAction('resetLoginState');
270
270
  this.requestAuthorize = (firstTime) => this.dispatchAction('requestAuthorize', firstTime);
271
- this.loginWithRedirect = () => {
271
+ this.loginWithRedirect = (params) => {
272
272
  if (this.isHostedLoginCallbackRoute()) {
273
273
  return;
274
274
  }
275
- this.dispatchAction('requestHostedLoginAuthorize');
275
+ this.dispatchAction('requestHostedLoginAuthorize', params);
276
276
  this.setState({ isLoading: true });
277
277
  };
278
278
  this.preLogin = (payload) => this.dispatchAction('preLogin', payload);