@lifeready/core 5.0.1 → 5.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/bundles/lifeready-core.umd.js +329 -307
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +1 -1
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/ast.js +4 -4
  6. package/esm2015/lib/_common/exceptions.js +129 -103
  7. package/esm2015/lib/_common/run-outside-angular.js +3 -3
  8. package/esm2015/lib/_common/storage.js +3 -3
  9. package/esm2015/lib/_common/types.js +1 -1
  10. package/esm2015/lib/_common/utils.js +1 -12
  11. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +4 -4
  12. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +4 -4
  13. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +3 -3
  14. package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
  15. package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
  16. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +3 -3
  17. package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
  18. package/esm2015/lib/auth/auth.types.js +1 -8
  19. package/esm2015/lib/auth/life-ready-auth.service.js +7 -9
  20. package/esm2015/lib/category/category.gql.js +2 -2
  21. package/esm2015/lib/category/category.service.js +5 -5
  22. package/esm2015/lib/encryption/encryption.service.js +4 -7
  23. package/esm2015/lib/file-upload/file-upload.service.js +2 -3
  24. package/esm2015/lib/idle/idle.service.js +6 -7
  25. package/esm2015/lib/item2/item2.service.js +3 -3
  26. package/esm2015/lib/key/key-factory.service.js +8 -8
  27. package/esm2015/lib/key/key-graph.service.js +7 -9
  28. package/esm2015/lib/key/key.service.js +5 -5
  29. package/esm2015/lib/key/key.types.js +1 -1
  30. package/esm2015/lib/key-exchange/key-exchange.service.js +3 -3
  31. package/esm2015/lib/key-exchange/key-exchange2.service.js +3 -3
  32. package/esm2015/lib/lbop/lbop.service.js +13 -10
  33. package/esm2015/lib/life-ready.config.js +15 -4
  34. package/esm2015/lib/password/password.service.js +4 -5
  35. package/esm2015/lib/persist/persist.service.js +3 -3
  36. package/esm2015/lib/plan/plan.service.js +3 -3
  37. package/esm2015/lib/profile/profile.types.js +8 -1
  38. package/esm2015/lib/scenario/scenario.service.js +4 -4
  39. package/esm2015/lib/time/time.service.js +3 -6
  40. package/esm2015/lib/tp-assembly/tp-assembly.js +7 -7
  41. package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +3 -3
  42. package/esm2015/lib/trusted-party/trusted-party.gql.js +3 -3
  43. package/esm2015/lib/trusted-party/trusted-party.service.js +2 -2
  44. package/esm2015/lib/trusted-party/trusted-party2.service.js +4 -4
  45. package/esm2015/lib/two-factor/two-factor.service.js +3 -3
  46. package/fesm2015/lifeready-core.js +219 -200
  47. package/fesm2015/lifeready-core.js.map +1 -1
  48. package/lib/_common/exceptions.d.ts +54 -38
  49. package/lib/_common/types.d.ts +0 -4
  50. package/lib/_common/utils.d.ts +0 -8
  51. package/lib/api/types/lr-graphql.types.d.ts +1 -1
  52. package/lib/auth/auth.types.d.ts +1 -9
  53. package/lib/category/category.gql.d.ts +1 -1
  54. package/lib/key/key.types.d.ts +4 -1
  55. package/lib/lbop/lbop.service.d.ts +4 -0
  56. package/lib/life-ready.config.d.ts +7 -0
  57. package/lib/profile/profile.types.d.ts +8 -1
  58. package/lifeready-core.metadata.json +1 -1
  59. package/package.json +1 -1
@@ -6,7 +6,7 @@ import { KeyFactoryService } from '../key/key-factory.service';
6
6
  import { KeyGraphService } from '../key/key-graph.service';
7
7
  import { KeyService } from '../key/key.service';
8
8
  import * as slip from '../slip39/slip39.service';
9
- import { LrBadArgumentException, LrBadStateException, } from '../_common/exceptions';
9
+ import { KcBadArgumentException, KcBadStateException, } from '../_common/exceptions';
10
10
  import { TpsKeysQuery } from './tp-assembly.private.gql';
11
11
  export class TpAssemblyController {
12
12
  constructor(injector) {
@@ -25,7 +25,7 @@ export class TpAssemblyController {
25
25
  if (assemblyKeyParams) {
26
26
  if (JSON.stringify(assemblyKeyParams) !==
27
27
  JSON.stringify(partial.assemblyKeyParams)) {
28
- throw new LrBadStateException('The assembly key parameters are different between the approvals.');
28
+ throw new KcBadStateException('The assembly key parameters are different between the approvals.');
29
29
  }
30
30
  }
31
31
  else {
@@ -90,7 +90,7 @@ export class TpAssemblyController {
90
90
  prepareUpdateSubAssemblies({ input, subjectKey, slipSubAssemblies, assemblyKeyParams, subAssemblies, }) {
91
91
  return __awaiter(this, void 0, void 0, function* () {
92
92
  if (slipSubAssemblies.length !== input.length) {
93
- throw new LrBadArgumentException('The slipSubAssemblies must be the same length as the input');
93
+ throw new KcBadArgumentException('The slipSubAssemblies must be the same length as the input');
94
94
  }
95
95
  return Promise.all(input.map((sa, saIndex) => __awaiter(this, void 0, void 0, function* () {
96
96
  const subjectCipherData = yield this.encryptionService.encryptToString(subjectKey, sa.subjectCipherDataClearJson || '');
@@ -217,7 +217,7 @@ export class TpAssemblyController {
217
217
  if (createSubAssembliesInput.length === 0 &&
218
218
  updateSubAssembliesInput.length === 0 &&
219
219
  deleteSubAssembliesInput.length === 0) {
220
- throw new LrBadArgumentException('Must specify at least one of: [createSubAssemblies, updateSubAssemblies, deleteSubAssemblies]');
220
+ throw new KcBadArgumentException('Must specify at least one of: [createSubAssemblies, updateSubAssemblies, deleteSubAssemblies]');
221
221
  }
222
222
  const rootKey = yield this.keyService.getCurrentRootKey();
223
223
  const subjectKey = yield this.keyGraph.getKey(assembly.subjectKey.id);
@@ -334,7 +334,7 @@ export class TpAssemblyController {
334
334
  if (!tp.currentUserSharedKey.userSharedKey.mkSharedKey) {
335
335
  const msg = `tp ${tp.other.username} does not have mkSharedKey`;
336
336
  console.log(msg);
337
- throw new LrBadArgumentException(msg);
337
+ throw new KcBadArgumentException(msg);
338
338
  }
339
339
  }
340
340
  }
@@ -343,7 +343,7 @@ export class TpAssemblyController {
343
343
  return __awaiter(this, void 0, void 0, function* () {
344
344
  // Is there enough sub assemblies to meet quorum
345
345
  if (subAssemblies.length < assemblyQuorum) {
346
- throw new LrBadArgumentException('Not enough sub assemblies to meet quorum');
346
+ throw new KcBadArgumentException('Not enough sub assemblies to meet quorum');
347
347
  }
348
348
  const slipAssembly = new slip.Assembly(assemblyQuorum);
349
349
  subAssemblies.forEach((sa, index) => {
@@ -360,4 +360,4 @@ export class TpAssemblyController {
360
360
  });
361
361
  }
362
362
  }
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxRQUFRLEdBSVQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEtBQUssSUFBSSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVXpELE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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QUMsY0FBYyxDQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQ3JDLGNBQWMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwTm9kZSxcbiAgVHBTdWJBc3NlbWJseU5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL3NsaXAzOS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQge1xuICBMckJhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBMckJhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVUcEFzc2VtYmx5SW5wdXQsXG4gIENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dCxcbiAgUGFydGlhbEFzc2VtYmx5S2V5LFxuICBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4vdHAtYXNzZW1ibHkudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG4gIHByb3RlY3RlZCBsckdyYXBoUWw6IExyR3JhcGhRTFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICAgIHRoaXMubHJHcmFwaFFsID0gaW5qZWN0b3IuZ2V0KExyR3JhcGhRTFNlcnZpY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0VHBXcmFwcGluZ0tleUlkKHRwOiBUcE5vZGUpOiBzdHJpbmc7XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuXG4gICAgY29uc3Qgc2hhcmVzID0gcGFydGlhbHMubWFwKChwYXJ0aWFsKSA9PiB7XG4gICAgICBpZiAoYXNzZW1ibHlLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5S2V5UGFyYW1zKSAhPT1cbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShwYXJ0aWFsLmFzc2VtYmx5S2V5UGFyYW1zKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgICAgICdUaGUgYXNzZW1ibHkga2V5IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBhcHByb3ZhbHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zID0gcGFydGlhbC5hc3NlbWJseUtleVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0aWFsLnNsaXAzOS5zaGFyZS5tbmVtb25pY3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCByYXdBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5yZWNvdmVyU2VjcmV0KFxuICAgICAgc2hhcmVzLFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBLZXlGYWN0b3J5U2VydmljZS5hc0tleSh7XG4gICAgICAuLi5hc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIGs6IHJhd0Fzc2VtYmx5S2V5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVUcFdyYXBwaW5nS2V5KFxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFxuICApOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleSh0cC53cmFwcGluZ0tleUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQXNzZW1ibHkoe1xuICAgIHN1YmplY3RLZXksXG4gICAgcm9vdEtleSxcbiAgfToge1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgcm9vdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgeyBrOiByYXdBc3NlbWJseUtleSwgLi4uYXNzZW1ibHlLZXlQYXJhbXMgfSA9IGFzc2VtYmx5S2V5LnRvSlNPTihcbiAgICAgIHRydWVcbiAgICApIGFzIEpTT05PYmplY3Q7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NTaWduS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUGJrID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTigpXG4gICAgKTtcblxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIEVuY3J5cHQgdGhlIHJvb3RLZXkgd2l0aCB0aGUgYXNzZW1ibHlLZXlcbiAgICBjb25zdCBhc3NlbWJseUNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAge1xuICAgICAgICByb290S2V5OiByb290S2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGEsXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUGJrLFxuICAgICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgfToge1xuICAgIGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gIH0pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHNhLmFwcHJvdmVyVHBzLm1hcChhc3luYyAoYXBwcm92ZXJUcCwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseTogc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF0sXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnMsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgIGlucHV0LFxuICAgIHN1YmplY3RLZXksXG4gICAgc2xpcFN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgfToge1xuICAgIGlucHV0OiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gICAgc3ViQXNzZW1ibGllczogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG4gIH0pIHtcbiAgICBpZiAoc2xpcFN1YkFzc2VtYmxpZXMubGVuZ3RoICE9PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHNsaXBTdWJBc3NlbWJsaWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBpbnB1dCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaW5wdXQubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4aXN0aW5nIHN1Yi1hc3NlbWJseVxuICAgICAgICBjb25zdCBleGlzdGluZ1NhID0gc3ViQXNzZW1ibGllcy5lZGdlcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuaWQgPT09IHNhLmlkXG4gICAgICAgICkubm9kZTtcblxuICAgICAgICAvLyBHZXQgYXBwcm92ZXJzIHRoYXQgZG8gbm90IGV4aXN0IHlldFxuICAgICAgICBjb25zdCBjcmVhdGVBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlQXBwcm92ZXJzID0gW107XG5cbiAgICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgodHApID0+IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlciA9IGV4aXN0aW5nU2EuYXBwcm92ZXJzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLnRwLmlkID09PSB0cC50cElkXG4gICAgICAgICAgKT8ubm9kZTtcbiAgICAgICAgICBpZiAoYXBwcm92ZXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNsaXBTdWJBc3NlbWJseSA9IHNsaXBTdWJBc3NlbWJsaWVzW3NhSW5kZXhdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3ViQXNzZW1ibHlJZDogc2EuaWQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgICAgY3JlYXRlQXBwcm92ZXJzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5tYXAoYXN5bmMgKHsgdHAgfSwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGRhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCwgYXBwcm92ZXJJZCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJZCxcbiAgICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlckluZGV4OiBhcHByb3ZlckluZGV4ICsgY3JlYXRlQXBwcm92ZXJzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsV3JhcHBpbmdLZXlJZChpbnB1dDogQ3JlYXRlVHBTdWJBc3NlbWJseUlucHV0W10sIHRwczogVHBOb2RlW10pIHtcbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICBpbnB1dC5mb3JFYWNoKChzYSkgPT4ge1xuICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgaWYgKCFhcHByb3Zlci53cmFwcGluZ0tleUlkKSB7XG4gICAgICAgICAgY29uc3QgdHAgPSB0cHMuZmluZCgoeCkgPT4geC5pZCA9PT0gYXBwcm92ZXIudHBJZCk7XG4gICAgICAgICAgYXBwcm92ZXIud3JhcHBpbmdLZXlJZCA9IHRoaXMuZ2V0VHBXcmFwcGluZ0tleUlkKHRwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0QXBwcm92ZXJzKGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXSkge1xuICAgIGNvbnN0IHRwSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlucHV0LmZvckVhY2goKHNhKSA9PiB7XG4gICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKChhcHByb3ZlcikgPT4ge1xuICAgICAgICB0cElkcy5wdXNoKGFwcHJvdmVyLnRwSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRwSWRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVDcmVhdGUoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICBjb25zdCBzdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHJvb3RLZXlXcmFwcGVkU3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShcbiAgICAgIHJvb3RLZXksXG4gICAgICBzdWJqZWN0S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgIGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICByYXdBc3NlbWJseUtleVxuICAgICk7XG5cbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEZpbGwgaW4gd3JhcHBpbmdLZXlJZCBpZiBub3QgcHJlc2VudFxuICAgIHRoaXMuZmlsbFdyYXBwaW5nS2V5SWQoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcywgdHBzKTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIGlucHV0OiBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBzbGlwU3ViQXNzZW1ibGllczogc2xpcEFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgICBzdWJqZWN0S2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViamVjdENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHN1YmplY3RLZXksXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgIHJvb3RLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgcm9vdEtleVdyYXBwZWRTdWJqZWN0S2V5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBc3NlbWJseUFwcHJvdmVycyhhc3NlbWJseTogVHBBc3NlbWJseU5vZGUpIHtcbiAgICBjb25zdCB0cElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIEZpbmQgYWxsIFRQcyB0aGF0IGJlbG9uZyB0byBzdWItYXNzZW1ibGllc1xuICAgIG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLm1hcCgoc2EpID0+IHtcbiAgICAgIG1hcEVkZ2VzKHNhLmFwcHJvdmVycykuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHRwSWRzLnB1c2goYXBwcm92ZXIudHAuaWQpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cElkcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVwYXJlVXBkYXRlKFxuICAgIGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQsXG4gICAgYXNzZW1ibHk6IFRwQXNzZW1ibHlOb2RlIC8vIFRPRE8gdHlwZSB0aGlzIHRvIG9ubHkgd2hhdCB3ZSBuZWVkLlxuICApIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXM6IFtdLFxuICAgICAgLi4uaW5wdXQsXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCA9IGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0ID0gaW5wdXQudXBkYXRlU3ViQXNzZW1ibGllcyB8fCBbXTtcbiAgICBjb25zdCBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQgPSBpbnB1dC5kZWxldGVTdWJBc3NlbWJsaWVzIHx8IFtdO1xuXG4gICAgLy8gTXVzdCBoYXZlIGF0IGxlYXN0IG9uZS5cbiAgICBpZiAoXG4gICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ011c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2Y6IFtjcmVhdGVTdWJBc3NlbWJsaWVzLCB1cGRhdGVTdWJBc3NlbWJsaWVzLCBkZWxldGVTdWJBc3NlbWJsaWVzXSdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IHN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShhc3NlbWJseS5zdWJqZWN0S2V5LmlkKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgICAgfSk7XG5cbiAgICAvLyBGaW5kIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCwgZHVwbGljYXRlcyBhcmUgbm8gcHJvYmxlbS5cbiAgICAvLyBFeGlzdGluZyBhcHByb3ZlcnNcbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0QXNzZW1ibHlBcHByb3ZlcnMoYXNzZW1ibHkpLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0KSxcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnModXBkYXRlU3ViQXNzZW1ibGllc0lucHV0KVxuICAgICk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEF1dG8gZmlsbCB0aGUgdXBkYXRlU3ViQXNzZW1ibGllcyB3aXRoIGV4aXN0aW5nIHN1YiBhc3NlbWJsaWVzIGlmIHRoZXkgYXJlIG5vdFxuICAgIC8vIGV4cGxpY2l0bHkgZGVsZXRlZC5cbiAgICBtYXBFZGdlcyhhc3NlbWJseS5zdWJBc3NlbWJsaWVzKS5mb3JFYWNoKChleGlzdGluZykgPT4ge1xuICAgICAgLy8gRGVsZXRpbmcgZXhpc3RpbmcsIGRvbid0IGluY2x1ZGUgaXRcbiAgICAgIGlmIChkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQuaW5jbHVkZXMoZXhpc3RpbmcuaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIGFscmVhZHkgc3BlY2lmaWVkIGluIHRoZSBpbnB1dFxuICAgICAgaWYgKHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dC5zb21lKChzYSkgPT4gc2EuaWQgPT09IGV4aXN0aW5nLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcHJvdmVyVHBzOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFtdID0gbWFwRWRnZXMoXG4gICAgICAgIGV4aXN0aW5nLmFwcHJvdmVyc1xuICAgICAgKS5tYXAoKGFwcHJvdmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHBJZDogYXBwcm92ZXIudHAuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogYXBwcm92ZXIuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb246XG4gICAgICAgICAgICBhcHByb3Zlci5zaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24sXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0LnB1c2goe1xuICAgICAgICBpZDogZXhpc3RpbmcuaWQsXG4gICAgICAgIHF1b3J1bTogZXhpc3RpbmcucXVvcnVtLFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGV4aXN0aW5nLnNpbmdsZVJlamVjdCxcbiAgICAgICAgYXBwcm92ZXJUcHMsXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZy5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gRmlsbCBpbiB3cmFwcGluZ0tleUlkIGlmIG5vdCBwcmVzZW50XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG5cbiAgICBsZXQgc2xpcEFzc2VtYmx5O1xuICAgIHRyeSB7XG4gICAgICBzbGlwQXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByZXBhcmVTbGlwMzkoXG4gICAgICAgIChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLmNvbmNhdCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLFxuICAgICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICAgIHJhd0Fzc2VtYmx5S2V5XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBUT0RPIHRoaXMgc29tZXRpbWVzIGhhcHBlbnMuIE1heWJlIG1pc3NpbmcgYXdhaXQuXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgY3JlYXRpbmcgc2xpcCBhc3NlbWJseScsIGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tb24gPSB7XG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVTdWJBc3NlbWJsaWVzID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgICAuLi5jb21tb24sXG4gICAgICBpbnB1dDogY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0LFxuICAgICAgLy8gTmVlZCB0byBtYXRjaCB0aGUgc2xpcCBzdWIgYXNzZW1ibGllcyB0byB0aGUgaW5wdXRcbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgMCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsXG4gICAgICAvLyBBZGQgYW4gb2Zmc2V0IHRvIHRoZSBzdWIgYXNzZW1ibGllcyB0byBza2lwIHRoZSBvbmUgdGhhdCBhcmUgY3JlYXRlZC5cbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICAgIHN1YkFzc2VtYmxpZXM6IGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleS5qd2ssXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiA/PyBhc3NlbWJseS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvblxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIHN1YmplY3RLZXlJZDogc3ViamVjdEtleS5pZCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgdXBkYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVyKHtcbiAgICBhcHByb3ZlcklkLFxuICAgIHRwLFxuICAgIGFwcHJvdmVySW5kZXgsXG4gICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgIHN1YmplY3RLZXksXG4gIH06IHtcbiAgICBhcHByb3ZlcklkPzogc3RyaW5nOyAvLyBHaXZlbiBpZiB1cGRhdGluZyBleGlzdGluZyBhcHByb3ZlclxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dDtcbiAgICBhcHByb3ZlckluZGV4OiBudW1iZXI7XG4gICAgc2xpcFN1YkFzc2VtYmx5OiBzbGlwLlN1YkFzc2VtYmx5O1xuICAgIGFzc2VtYmx5S2V5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBKU09OT2JqZWN0PjtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICB9KSB7XG4gICAgY29uc3QgdHBXcmFwcGluZ0tleSA9IGF3YWl0IHRoaXMucHJlcGFyZVRwV3JhcHBpbmdLZXkodHApO1xuICAgIC8vIHNoYXJlZCBrZXkgaXMgcm90YXRlZCBldmVyeSB0aW1lLlxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcblxuICAgIC8vIEZvciBUUCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHRwV3JhcHBlZFNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgdHBXcmFwcGluZ0tleS5qd2ssXG4gICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICAvLyBGb3Igc3ViamVjdCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkU2hhcmVkS2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgICApO1xuXG4gICAgLy8gSWYgcXVvcnVtIGlzIDEsIHRoZW4gdXNpbmcgdGhlIHNhbWUgc2hhcmUgZm9yIGV2ZXJ5IG1lbWJlci5cbiAgICBjb25zdCBzaGFyZSA9XG4gICAgICBzbGlwU3ViQXNzZW1ibHkudGhyZXNob2xkID09PSAxXG4gICAgICAgID8gc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1swXVxuICAgICAgICA6IHNsaXBTdWJBc3NlbWJseS5zaGFyZXNbYXBwcm92ZXJJbmRleF07XG5cbiAgICBjb25zdCBwYXJ0aWFsQXNzZW1ibHlLZXk6IFBhcnRpYWxBc3NlbWJseUtleSA9IHtcbiAgICAgIHNsaXAzOToge1xuICAgICAgICBzaGFyZSxcbiAgICAgICAgc3ViQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQsXG4gICAgICAgICAgc2l6ZTogc2xpcFN1YkFzc2VtYmx5LnNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgfTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHRwLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICApO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzaGFyZWRLZXksXG4gICAgICAgIHRwLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICBwYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHBXcmFwcGluZ0tleUlkOiB0cFdyYXBwaW5nS2V5LmlkLFxuICAgICAgdHBXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5LFxuICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXJJZCB8fCB2b2lkIDAsIC8vIElmIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgICB0cElkOiBhcHByb3ZlcklkID8gdm9pZCAwIDogdHAudHBJZCwgLy8gZWxzZSBhZGRpbmcgbmV3IFRQXG4gICAgfTtcbiAgfVxuXG4gIHZhbGlkYXRlQXBwcm92ZXJzKGFwcHJvdmVyczogVHBOb2RlW10pOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGFwcHJvdmVycyBoYXZlIG1rU2hhcmVkS2V5LlxuICAgIGZvciAoY29uc3QgdHAgb2YgYXBwcm92ZXJzKSB7XG4gICAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYHRwICR7dHAub3RoZXIudXNlcm5hbWV9IGRvZXMgbm90IGhhdmUgbWtTaGFyZWRLZXlgO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXBhcmUgc2xpcDM5XG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2xpcDM5KFxuICAgIHN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlRdW9ydW06IG51bWJlcixcbiAgICByYXdBc3NlbWJseUtleTogc3RyaW5nXG4gICk6IFByb21pc2U8c2xpcC5Bc3NlbWJseT4ge1xuICAgIC8vIElzIHRoZXJlIGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bVxuICAgIGlmIChzdWJBc3NlbWJsaWVzLmxlbmd0aCA8IGFzc2VtYmx5UXVvcnVtKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ05vdCBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW0nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IG5ldyBzbGlwLkFzc2VtYmx5KGFzc2VtYmx5UXVvcnVtKTtcblxuICAgIHN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgYXBwcm92ZXJDb3VudCA9IHNhLmFwcHJvdmVyVHBzLmxlbmd0aDtcblxuICAgICAgLy8gc2xpcDM5IHJlc3RyaWN0cyBxdW9ydW0gPT0gMSB0byBoYXZlIG9ubHkgMSBtZW1iZXIuIFNvIHdlIGp1c3Qgc2hhcmUgdGhlIHNhbWVcbiAgICAgIC8vIHBhcnRpYWwga2V5IGZvciBhbGwgc3ViIGFzc2VtYmx5IG1lbWJlcnMuXG4gICAgICBpZiAoc2EucXVvcnVtID09PSAxKSB7XG4gICAgICAgIGFwcHJvdmVyQ291bnQgPSAxO1xuICAgICAgfVxuICAgICAgc2xpcEFzc2VtYmx5LmFkZFN1YkFzc2VtYmx5KFxuICAgICAgICBuZXcgc2xpcC5TdWJBc3NlbWJseShpbmRleCwgc2EucXVvcnVtLCBhcHByb3ZlckNvdW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5nZW5lcmF0ZVNoYXJlcyhcbiAgICAgIHJhd0Fzc2VtYmx5S2V5LFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlLFxuICAgICAgc2xpcEFzc2VtYmx5XG4gICAgKTtcbiAgICByZXR1cm4gc2xpcEFzc2VtYmx5O1xuICB9XG59XG4iXX0=
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxRQUFRLEdBSVQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEtBQUssSUFBSSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVXpELE1BQU0sT0FBZ0Isb0JBQW9CO0lBVXhDLFlBQVksUUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJ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QUMsY0FBYyxDQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQ3JDLGNBQWMsRUFDZCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwTm9kZSxcbiAgVHBTdWJBc3NlbWJseU5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgKiBhcyBzbGlwIGZyb20gJy4uL3NsaXAzOS9zbGlwMzkuc2VydmljZSc7XG5pbXBvcnQge1xuICBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVUcEFzc2VtYmx5SW5wdXQsXG4gIENyZWF0ZVRwU3ViQXNzZW1ibHlJbnB1dCxcbiAgUGFydGlhbEFzc2VtYmx5S2V5LFxuICBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4vdHAtYXNzZW1ibHkudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHBBc3NlbWJseUNvbnRyb2xsZXIge1xuICBhYnN0cmFjdCBzbGlwMzlQYXNzcGhyYXNlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlO1xuICBwcm90ZWN0ZWQga2V5U2VydmljZTogS2V5U2VydmljZTtcbiAgcHJvdGVjdGVkIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzbGlwMzlTZXJ2aWNlOiBzbGlwLlNsaXAzOVNlcnZpY2U7XG4gIHByb3RlY3RlZCBsckdyYXBoUWw6IExyR3JhcGhRTFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5rZXlGYWN0b3J5ID0gaW5qZWN0b3IuZ2V0KEtleUZhY3RvcnlTZXJ2aWNlKTtcbiAgICB0aGlzLmtleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoS2V5U2VydmljZSk7XG4gICAgdGhpcy5lbmNyeXB0aW9uU2VydmljZSA9IGluamVjdG9yLmdldChFbmNyeXB0aW9uU2VydmljZSk7XG4gICAgdGhpcy5rZXlHcmFwaCA9IGluamVjdG9yLmdldChLZXlHcmFwaFNlcnZpY2UpO1xuICAgIHRoaXMuc2xpcDM5U2VydmljZSA9IGluamVjdG9yLmdldChzbGlwLlNsaXAzOVNlcnZpY2UpO1xuICAgIHRoaXMubHJHcmFwaFFsID0gaW5qZWN0b3IuZ2V0KExyR3JhcGhRTFNlcnZpY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0VHBXcmFwcGluZ0tleUlkKHRwOiBUcE5vZGUpOiBzdHJpbmc7XG5cbiAgYXN5bmMgcmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzOiBQYXJ0aWFsQXNzZW1ibHlLZXlbXSkge1xuICAgIC8vIEV2ZXJ5IHJlY2VpdmVyUGJrQ2lwaGVyIHNob3VsZCBjb250YWluIHRoaXMgYW5kIHRoZXkgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS5cbiAgICBsZXQgYXNzZW1ibHlLZXlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuXG4gICAgY29uc3Qgc2hhcmVzID0gcGFydGlhbHMubWFwKChwYXJ0aWFsKSA9PiB7XG4gICAgICBpZiAoYXNzZW1ibHlLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5S2V5UGFyYW1zKSAhPT1cbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShwYXJ0aWFsLmFzc2VtYmx5S2V5UGFyYW1zKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihcbiAgICAgICAgICAgICdUaGUgYXNzZW1ibHkga2V5IHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBhcHByb3ZhbHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zID0gcGFydGlhbC5hc3NlbWJseUtleVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJ0aWFsLnNsaXAzOS5zaGFyZS5tbmVtb25pY3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCByYXdBc3NlbWJseUtleSA9IGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5yZWNvdmVyU2VjcmV0KFxuICAgICAgc2hhcmVzLFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCBLZXlGYWN0b3J5U2VydmljZS5hc0tleSh7XG4gICAgICAuLi5hc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIGs6IHJhd0Fzc2VtYmx5S2V5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVUcFdyYXBwaW5nS2V5KFxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFxuICApOiBQcm9taXNlPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleSh0cC53cmFwcGluZ0tleUlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQXNzZW1ibHkoe1xuICAgIHN1YmplY3RLZXksXG4gICAgcm9vdEtleSxcbiAgfToge1xuICAgIHN1YmplY3RLZXk6IEpXSy5LZXk7XG4gICAgcm9vdEtleTogSldLLktleTtcbiAgfSkge1xuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgeyBrOiByYXdBc3NlbWJseUtleSwgLi4uYXNzZW1ibHlLZXlQYXJhbXMgfSA9IGFzc2VtYmx5S2V5LnRvSlNPTihcbiAgICAgIHRydWVcbiAgICApIGFzIEpTT05PYmplY3Q7XG4gICAgY29uc3QgYXNzZW1ibHlLZXlWZXJpZmllclByayA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVQa2NTaWduS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmsgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUGJrID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUHJrLnRvSlNPTigpXG4gICAgKTtcblxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPVxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIEVuY3J5cHQgdGhlIHJvb3RLZXkgd2l0aCB0aGUgYXNzZW1ibHlLZXlcbiAgICBjb25zdCBhc3NlbWJseUNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAge1xuICAgICAgICByb290S2V5OiByb290S2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgcmF3QXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXlXcmFwcGVkQXNzZW1ibHlLZXksXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGEsXG4gICAgICBhc3NlbWJseUtleVZlcmlmaWVyUGJrLFxuICAgICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgaW5wdXQsXG4gICAgc3ViamVjdEtleSxcbiAgICBzbGlwU3ViQXNzZW1ibGllcyxcbiAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgfToge1xuICAgIGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gIH0pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpbnB1dC5tYXAoYXN5bmMgKHNhLCBzYUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3RDaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZUFwcHJvdmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHNhLmFwcHJvdmVyVHBzLm1hcChhc3luYyAoYXBwcm92ZXJUcCwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZUFwcHJvdmVyKHtcbiAgICAgICAgICAgICAgdHA6IGFwcHJvdmVyVHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgIHNsaXBTdWJBc3NlbWJseTogc2xpcFN1YkFzc2VtYmxpZXNbc2FJbmRleF0sXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YSxcbiAgICAgICAgICBjcmVhdGVBcHByb3ZlcnMsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVVwZGF0ZVN1YkFzc2VtYmxpZXMoe1xuICAgIGlucHV0LFxuICAgIHN1YmplY3RLZXksXG4gICAgc2xpcFN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgc3ViQXNzZW1ibGllcyxcbiAgfToge1xuICAgIGlucHV0OiBVcGRhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXTtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwLlN1YkFzc2VtYmx5W107XG4gICAgYXNzZW1ibHlLZXlQYXJhbXM7IC8vIFRPRE8gdHlwZSB0aGlzXG4gICAgc3ViQXNzZW1ibGllczogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG4gIH0pIHtcbiAgICBpZiAoc2xpcFN1YkFzc2VtYmxpZXMubGVuZ3RoICE9PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHNsaXBTdWJBc3NlbWJsaWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBpbnB1dCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaW5wdXQubWFwKGFzeW5jIChzYSwgc2FJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgc2Euc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4aXN0aW5nIHN1Yi1hc3NlbWJseVxuICAgICAgICBjb25zdCBleGlzdGluZ1NhID0gc3ViQXNzZW1ibGllcy5lZGdlcy5maW5kKFxuICAgICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuaWQgPT09IHNhLmlkXG4gICAgICAgICkubm9kZTtcblxuICAgICAgICAvLyBHZXQgYXBwcm92ZXJzIHRoYXQgZG8gbm90IGV4aXN0IHlldFxuICAgICAgICBjb25zdCBjcmVhdGVBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdXBkYXRlQXBwcm92ZXJzID0gW107XG5cbiAgICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgodHApID0+IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlciA9IGV4aXN0aW5nU2EuYXBwcm92ZXJzLmVkZ2VzLmZpbmQoXG4gICAgICAgICAgICAoZWRnZSkgPT4gZWRnZS5ub2RlLnRwLmlkID09PSB0cC50cElkXG4gICAgICAgICAgKT8ubm9kZTtcbiAgICAgICAgICBpZiAoYXBwcm92ZXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICAgIGFwcHJvdmVySWQ6IGFwcHJvdmVyLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgdHAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNsaXBTdWJBc3NlbWJseSA9IHNsaXBTdWJBc3NlbWJsaWVzW3NhSW5kZXhdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3ViQXNzZW1ibHlJZDogc2EuaWQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgcXVvcnVtOiBzYS5xdW9ydW0sXG4gICAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgICAgY3JlYXRlQXBwcm92ZXJzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGNyZWF0ZUFwcHJvdmVycy5tYXAoYXN5bmMgKHsgdHAgfSwgYXBwcm92ZXJJbmRleCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQXBwcm92ZXIoe1xuICAgICAgICAgICAgICAgIHRwLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVySW5kZXgsXG4gICAgICAgICAgICAgICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgICAgICAgICAgICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgICAgICAgICAgICAgIHN1YmplY3RLZXksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGRhdGVBcHByb3ZlcnM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdXBkYXRlQXBwcm92ZXJzLm1hcChhc3luYyAoeyB0cCwgYXBwcm92ZXJJZCB9LCBhcHByb3ZlckluZGV4KSA9PlxuICAgICAgICAgICAgICB0aGlzLnByZXBhcmVBcHByb3Zlcih7XG4gICAgICAgICAgICAgICAgYXBwcm92ZXJJZCxcbiAgICAgICAgICAgICAgICB0cCxcbiAgICAgICAgICAgICAgICBhcHByb3ZlckluZGV4OiBhcHByb3ZlckluZGV4ICsgY3JlYXRlQXBwcm92ZXJzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzbGlwU3ViQXNzZW1ibHksXG4gICAgICAgICAgICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgc3ViamVjdEtleSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsV3JhcHBpbmdLZXlJZChpbnB1dDogQ3JlYXRlVHBTdWJBc3NlbWJseUlucHV0W10sIHRwczogVHBOb2RlW10pIHtcbiAgICAvLyBGaWxsIGluIHdyYXBwaW5nS2V5SWQgaWYgbm90IHByZXNlbnRcbiAgICBpbnB1dC5mb3JFYWNoKChzYSkgPT4ge1xuICAgICAgc2EuYXBwcm92ZXJUcHMuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHtcbiAgICAgICAgaWYgKCFhcHByb3Zlci53cmFwcGluZ0tleUlkKSB7XG4gICAgICAgICAgY29uc3QgdHAgPSB0cHMuZmluZCgoeCkgPT4geC5pZCA9PT0gYXBwcm92ZXIudHBJZCk7XG4gICAgICAgICAgYXBwcm92ZXIud3JhcHBpbmdLZXlJZCA9IHRoaXMuZ2V0VHBXcmFwcGluZ0tleUlkKHRwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0QXBwcm92ZXJzKGlucHV0OiBDcmVhdGVUcFN1YkFzc2VtYmx5SW5wdXRbXSkge1xuICAgIGNvbnN0IHRwSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlucHV0LmZvckVhY2goKHNhKSA9PiB7XG4gICAgICBzYS5hcHByb3ZlclRwcy5mb3JFYWNoKChhcHByb3ZlcikgPT4ge1xuICAgICAgICB0cElkcy5wdXNoKGFwcHJvdmVyLnRwSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRwSWRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByZXBhcmVDcmVhdGUoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICBjb25zdCBzdWJqZWN0S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHJvb3RLZXlXcmFwcGVkU3ViamVjdEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShcbiAgICAgIHJvb3RLZXksXG4gICAgICBzdWJqZWN0S2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXksXG4gICAgICB9KTtcblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IGF3YWl0IHRoaXMucHJlcGFyZVNsaXAzOShcbiAgICAgIGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICByYXdBc3NlbWJseUtleVxuICAgICk7XG5cbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcyk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEZpbGwgaW4gd3JhcHBpbmdLZXlJZCBpZiBub3QgcHJlc2VudFxuICAgIHRoaXMuZmlsbFdyYXBwaW5nS2V5SWQoaW5wdXQuY3JlYXRlU3ViQXNzZW1ibGllcywgdHBzKTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIGlucHV0OiBpbnB1dC5jcmVhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgICBzbGlwU3ViQXNzZW1ibGllczogc2xpcEFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgICBzdWJqZWN0S2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViamVjdENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHN1YmplY3RLZXksXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXMsXG4gICAgICAgIHJvb3RLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgcm9vdEtleVdyYXBwZWRTdWJqZWN0S2V5LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBc3NlbWJseUFwcHJvdmVycyhhc3NlbWJseTogVHBBc3NlbWJseU5vZGUpIHtcbiAgICBjb25zdCB0cElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIEZpbmQgYWxsIFRQcyB0aGF0IGJlbG9uZyB0byBzdWItYXNzZW1ibGllc1xuICAgIG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLm1hcCgoc2EpID0+IHtcbiAgICAgIG1hcEVkZ2VzKHNhLmFwcHJvdmVycykuZm9yRWFjaCgoYXBwcm92ZXIpID0+IHRwSWRzLnB1c2goYXBwcm92ZXIudHAuaWQpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cElkcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVwYXJlVXBkYXRlKFxuICAgIGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQsXG4gICAgYXNzZW1ibHk6IFRwQXNzZW1ibHlOb2RlIC8vIFRPRE8gdHlwZSB0aGlzIHRvIG9ubHkgd2hhdCB3ZSBuZWVkLlxuICApIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIGNyZWF0ZVN1YkFzc2VtYmxpZXM6IFtdLFxuICAgICAgLi4uaW5wdXQsXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVN1YkFzc2VtYmxpZXNJbnB1dCA9IGlucHV0LmNyZWF0ZVN1YkFzc2VtYmxpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0ID0gaW5wdXQudXBkYXRlU3ViQXNzZW1ibGllcyB8fCBbXTtcbiAgICBjb25zdCBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQgPSBpbnB1dC5kZWxldGVTdWJBc3NlbWJsaWVzIHx8IFtdO1xuXG4gICAgLy8gTXVzdCBoYXZlIGF0IGxlYXN0IG9uZS5cbiAgICBpZiAoXG4gICAgICBjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwICYmXG4gICAgICBkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ011c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2Y6IFtjcmVhdGVTdWJBc3NlbWJsaWVzLCB1cGRhdGVTdWJBc3NlbWJsaWVzLCBkZWxldGVTdWJBc3NlbWJsaWVzXSdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IHN1YmplY3RLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShhc3NlbWJseS5zdWJqZWN0S2V5LmlkKTtcblxuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIHJhd0Fzc2VtYmx5S2V5LCBhc3NlbWJseUtleVBhcmFtcywgLi4uYXNzZW1ibHlJbnB1dCB9ID1cbiAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUFzc2VtYmx5KHtcbiAgICAgICAgcm9vdEtleTogcm9vdEtleS5qd2ssXG4gICAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgICAgfSk7XG5cbiAgICAvLyBGaW5kIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCwgZHVwbGljYXRlcyBhcmUgbm8gcHJvYmxlbS5cbiAgICAvLyBFeGlzdGluZyBhcHByb3ZlcnNcbiAgICBjb25zdCB0cElkcyA9IHRoaXMuZ2V0QXNzZW1ibHlBcHByb3ZlcnMoYXNzZW1ibHkpLmNvbmNhdChcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnMoY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0KSxcbiAgICAgIHRoaXMuZ2V0SW5wdXRBcHByb3ZlcnModXBkYXRlU3ViQXNzZW1ibGllc0lucHV0KVxuICAgICk7XG5cbiAgICAvLyBUaGlzIHNob3VsZCBjb250YWluIGFsbCB0aGUgVFBzIHRoYXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFzc2VtYmx5LlxuICAgIGNvbnN0IHRwcyA9IG1hcEVkZ2VzKFxuICAgICAgKFxuICAgICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRbC5xdWVyeSh7XG4gICAgICAgICAgcXVlcnk6IFRwc0tleXNRdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlkczogdHBJZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICkudHBzXG4gICAgKTtcblxuICAgIC8vIEF1dG8gZmlsbCB0aGUgdXBkYXRlU3ViQXNzZW1ibGllcyB3aXRoIGV4aXN0aW5nIHN1YiBhc3NlbWJsaWVzIGlmIHRoZXkgYXJlIG5vdFxuICAgIC8vIGV4cGxpY2l0bHkgZGVsZXRlZC5cbiAgICBtYXBFZGdlcyhhc3NlbWJseS5zdWJBc3NlbWJsaWVzKS5mb3JFYWNoKChleGlzdGluZykgPT4ge1xuICAgICAgLy8gRGVsZXRpbmcgZXhpc3RpbmcsIGRvbid0IGluY2x1ZGUgaXRcbiAgICAgIGlmIChkZWxldGVTdWJBc3NlbWJsaWVzSW5wdXQuaW5jbHVkZXMoZXhpc3RpbmcuaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIGFscmVhZHkgc3BlY2lmaWVkIGluIHRoZSBpbnB1dFxuICAgICAgaWYgKHVwZGF0ZVN1YkFzc2VtYmxpZXNJbnB1dC5zb21lKChzYSkgPT4gc2EuaWQgPT09IGV4aXN0aW5nLmlkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcHJvdmVyVHBzOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dFtdID0gbWFwRWRnZXMoXG4gICAgICAgIGV4aXN0aW5nLmFwcHJvdmVyc1xuICAgICAgKS5tYXAoKGFwcHJvdmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHBJZDogYXBwcm92ZXIudHAuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjogYXBwcm92ZXIuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb246XG4gICAgICAgICAgICBhcHByb3Zlci5zaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24sXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlU3ViQXNzZW1ibGllc0lucHV0LnB1c2goe1xuICAgICAgICBpZDogZXhpc3RpbmcuaWQsXG4gICAgICAgIHF1b3J1bTogZXhpc3RpbmcucXVvcnVtLFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGV4aXN0aW5nLnNpbmdsZVJlamVjdCxcbiAgICAgICAgYXBwcm92ZXJUcHMsXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZy5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gRmlsbCBpbiB3cmFwcGluZ0tleUlkIGlmIG5vdCBwcmVzZW50XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG4gICAgdGhpcy5maWxsV3JhcHBpbmdLZXlJZCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsIHRwcyk7XG5cbiAgICBsZXQgc2xpcEFzc2VtYmx5O1xuICAgIHRyeSB7XG4gICAgICBzbGlwQXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByZXBhcmVTbGlwMzkoXG4gICAgICAgIChjcmVhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLmNvbmNhdCh1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQgfHwgW10pLFxuICAgICAgICBpbnB1dC5xdW9ydW0sXG4gICAgICAgIHJhd0Fzc2VtYmx5S2V5XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBUT0RPIHRoaXMgc29tZXRpbWVzIGhhcHBlbnMuIE1heWJlIG1pc3NpbmcgYXdhaXQuXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgY3JlYXRpbmcgc2xpcCBhc3NlbWJseScsIGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tb24gPSB7XG4gICAgICBhc3NlbWJseUtleVBhcmFtcyxcbiAgICAgIHN1YmplY3RLZXk6IHN1YmplY3RLZXkuandrLFxuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVTdWJBc3NlbWJsaWVzID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlU3ViQXNzZW1ibGllcyh7XG4gICAgICAuLi5jb21tb24sXG4gICAgICBpbnB1dDogY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0LFxuICAgICAgLy8gTmVlZCB0byBtYXRjaCB0aGUgc2xpcCBzdWIgYXNzZW1ibGllcyB0byB0aGUgaW5wdXRcbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgMCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHVwZGF0ZVN1YkFzc2VtYmxpZXMgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTdWJBc3NlbWJsaWVzKHtcbiAgICAgIC4uLmNvbW1vbixcbiAgICAgIGlucHV0OiB1cGRhdGVTdWJBc3NlbWJsaWVzSW5wdXQsXG4gICAgICAvLyBBZGQgYW4gb2Zmc2V0IHRvIHRoZSBzdWIgYXNzZW1ibGllcyB0byBza2lwIHRoZSBvbmUgdGhhdCBhcmUgY3JlYXRlZC5cbiAgICAgIHNsaXBTdWJBc3NlbWJsaWVzOiBzbGlwQXNzZW1ibHkuc3ViQXNzZW1ibGllcy5zbGljZShcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllc0lucHV0Lmxlbmd0aFxuICAgICAgKSxcbiAgICAgIHN1YkFzc2VtYmxpZXM6IGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJqZWN0Q2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgc3ViamVjdEtleS5qd2ssXG4gICAgICBpbnB1dC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiA/PyBhc3NlbWJseS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvblxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBtdXRhdGlvbklucHV0OiB7XG4gICAgICAgIC4uLmFzc2VtYmx5SW5wdXQsXG4gICAgICAgIHNpbmdsZVJlamVjdDogaW5wdXQuc2luZ2xlUmVqZWN0LFxuICAgICAgICBxdW9ydW06IGlucHV0LnF1b3J1bSxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGEsXG4gICAgICAgIHN1YmplY3RLZXlJZDogc3ViamVjdEtleS5pZCxcbiAgICAgICAgY3JlYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgdXBkYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUFwcHJvdmVyKHtcbiAgICBhcHByb3ZlcklkLFxuICAgIHRwLFxuICAgIGFwcHJvdmVySW5kZXgsXG4gICAgc2xpcFN1YkFzc2VtYmx5LFxuICAgIGFzc2VtYmx5S2V5UGFyYW1zLFxuICAgIHN1YmplY3RLZXksXG4gIH06IHtcbiAgICBhcHByb3ZlcklkPzogc3RyaW5nOyAvLyBHaXZlbiBpZiB1cGRhdGluZyBleGlzdGluZyBhcHByb3ZlclxuICAgIHRwOiBUcEFzc2VtYmx5QXBwcm92ZXJJbnB1dDtcbiAgICBhcHByb3ZlckluZGV4OiBudW1iZXI7XG4gICAgc2xpcFN1YkFzc2VtYmx5OiBzbGlwLlN1YkFzc2VtYmx5O1xuICAgIGFzc2VtYmx5S2V5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBKU09OT2JqZWN0PjtcbiAgICBzdWJqZWN0S2V5OiBKV0suS2V5O1xuICB9KSB7XG4gICAgY29uc3QgdHBXcmFwcGluZ0tleSA9IGF3YWl0IHRoaXMucHJlcGFyZVRwV3JhcHBpbmdLZXkodHApO1xuICAgIC8vIHNoYXJlZCBrZXkgaXMgcm90YXRlZCBldmVyeSB0aW1lLlxuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcblxuICAgIC8vIEZvciBUUCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHRwV3JhcHBlZFNoYXJlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgdHBXcmFwcGluZ0tleS5qd2ssXG4gICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICAvLyBGb3Igc3ViamVjdCB0byBhY2Nlc3Mgc2hhcmVkX2tleVxuICAgIGNvbnN0IHN1YmplY3RLZXlXcmFwcGVkU2hhcmVkS2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzdWJqZWN0S2V5LFxuICAgICAgICBzaGFyZWRLZXkudG9KU09OKHRydWUpXG4gICAgICApO1xuXG4gICAgLy8gSWYgcXVvcnVtIGlzIDEsIHRoZW4gdXNpbmcgdGhlIHNhbWUgc2hhcmUgZm9yIGV2ZXJ5IG1lbWJlci5cbiAgICBjb25zdCBzaGFyZSA9XG4gICAgICBzbGlwU3ViQXNzZW1ibHkudGhyZXNob2xkID09PSAxXG4gICAgICAgID8gc2xpcFN1YkFzc2VtYmx5LnNoYXJlc1swXVxuICAgICAgICA6IHNsaXBTdWJBc3NlbWJseS5zaGFyZXNbYXBwcm92ZXJJbmRleF07XG5cbiAgICBjb25zdCBwYXJ0aWFsQXNzZW1ibHlLZXk6IFBhcnRpYWxBc3NlbWJseUtleSA9IHtcbiAgICAgIHNsaXAzOToge1xuICAgICAgICBzaGFyZSxcbiAgICAgICAgc3ViQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IHNsaXBTdWJBc3NlbWJseS50aHJlc2hvbGQsXG4gICAgICAgICAgc2l6ZTogc2xpcFN1YkFzc2VtYmx5LnNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXNzZW1ibHlLZXlQYXJhbXMsXG4gICAgfTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIHRwLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24gfHwgJydcbiAgICApO1xuXG4gICAgY29uc3Qgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBzaGFyZWRLZXksXG4gICAgICAgIHRwLnNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICAgKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleSA9XG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgc2hhcmVkS2V5LFxuICAgICAgICBwYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHBXcmFwcGluZ0tleUlkOiB0cFdyYXBwaW5nS2V5LmlkLFxuICAgICAgdHBXcmFwcGVkU2hhcmVkS2V5LFxuICAgICAgc3ViamVjdEtleVdyYXBwZWRTaGFyZWRLZXksXG4gICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhLFxuICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5LFxuICAgICAgYXBwcm92ZXJJZDogYXBwcm92ZXJJZCB8fCB2b2lkIDAsIC8vIElmIGV4aXN0aW5nIGFwcHJvdmVyXG4gICAgICB0cElkOiBhcHByb3ZlcklkID8gdm9pZCAwIDogdHAudHBJZCwgLy8gZWxzZSBhZGRpbmcgbmV3IFRQXG4gICAgfTtcbiAgfVxuXG4gIHZhbGlkYXRlQXBwcm92ZXJzKGFwcHJvdmVyczogVHBOb2RlW10pOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgYWxsIGFwcHJvdmVycyBoYXZlIG1rU2hhcmVkS2V5LlxuICAgIGZvciAoY29uc3QgdHAgb2YgYXBwcm92ZXJzKSB7XG4gICAgICBpZiAoIXRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkubWtTaGFyZWRLZXkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYHRwICR7dHAub3RoZXIudXNlcm5hbWV9IGRvZXMgbm90IGhhdmUgbWtTaGFyZWRLZXlgO1xuICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihtc2cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXBhcmUgc2xpcDM5XG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2xpcDM5KFxuICAgIHN1YkFzc2VtYmxpZXMsXG4gICAgYXNzZW1ibHlRdW9ydW06IG51bWJlcixcbiAgICByYXdBc3NlbWJseUtleTogc3RyaW5nXG4gICk6IFByb21pc2U8c2xpcC5Bc3NlbWJseT4ge1xuICAgIC8vIElzIHRoZXJlIGVub3VnaCBzdWIgYXNzZW1ibGllcyB0byBtZWV0IHF1b3J1bVxuICAgIGlmIChzdWJBc3NlbWJsaWVzLmxlbmd0aCA8IGFzc2VtYmx5UXVvcnVtKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAgICAgJ05vdCBlbm91Z2ggc3ViIGFzc2VtYmxpZXMgdG8gbWVldCBxdW9ydW0nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaXBBc3NlbWJseSA9IG5ldyBzbGlwLkFzc2VtYmx5KGFzc2VtYmx5UXVvcnVtKTtcblxuICAgIHN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgYXBwcm92ZXJDb3VudCA9IHNhLmFwcHJvdmVyVHBzLmxlbmd0aDtcblxuICAgICAgLy8gc2xpcDM5IHJlc3RyaWN0cyBxdW9ydW0gPT0gMSB0byBoYXZlIG9ubHkgMSBtZW1iZXIuIFNvIHdlIGp1c3Qgc2hhcmUgdGhlIHNhbWVcbiAgICAgIC8vIHBhcnRpYWwga2V5IGZvciBhbGwgc3ViIGFzc2VtYmx5IG1lbWJlcnMuXG4gICAgICBpZiAoc2EucXVvcnVtID09PSAxKSB7XG4gICAgICAgIGFwcHJvdmVyQ291bnQgPSAxO1xuICAgICAgfVxuICAgICAgc2xpcEFzc2VtYmx5LmFkZFN1YkFzc2VtYmx5KFxuICAgICAgICBuZXcgc2xpcC5TdWJBc3NlbWJseShpbmRleCwgc2EucXVvcnVtLCBhcHByb3ZlckNvdW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuc2xpcDM5U2VydmljZS5nZW5lcmF0ZVNoYXJlcyhcbiAgICAgIHJhd0Fzc2VtYmx5S2V5LFxuICAgICAgdGhpcy5zbGlwMzlQYXNzcGhyYXNlLFxuICAgICAgc2xpcEFzc2VtYmx5XG4gICAgKTtcbiAgICByZXR1cm4gc2xpcEFzc2VtYmx5O1xuICB9XG59XG4iXX0=
@@ -4,7 +4,7 @@ import { JWK } from 'node-jose';
4
4
  import { LrMergedMutation, LrMutation, LrService } from '../api/lr-graphql';
5
5
  import { TpAssemblyState, TpClaimApproverState } from '../api/types';
6
6
  import { EncryptionService } from '../encryption/encryption.service';
7
- import { LrBadStateException } from '../_common/exceptions';
7
+ import { KcBadStateException } from '../_common/exceptions';
8
8
  import { RunOutsideAngular } from '../_common/run-outside-angular';
9
9
  import { ApproveTpPasswordResetRequestMutation, RejectTpPasswordResetRequestMutation, } from './tp-password-reset.gql';
10
10
  import { TpPasswordResetPrivateService } from './tp-password-reset.private.service';
@@ -22,7 +22,7 @@ let TpPasswordResetRequestService = class TpPasswordResetRequestService extends
22
22
  activeRequestOrRaise(sharedReset) {
23
23
  const state = sharedReset.sharedRequest.claim.state;
24
24
  if (state !== TpAssemblyState.CLAIMED) {
25
- throw new LrBadStateException(`Claim is already in ${state} state.`);
25
+ throw new KcBadStateException(`Claim is already in ${state} state.`);
26
26
  }
27
27
  }
28
28
  rejectRequest(sharedResetId) {
@@ -95,4 +95,4 @@ TpPasswordResetRequestService = __decorate([
95
95
  })
96
96
  ], TpPasswordResetRequestService);
97
97
  export { TpPasswordResetRequestService };
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LXJlcXVlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsb0NBQW9DLEdBQ3JDLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7SUFRdkUsNkJBQTZCLFNBQTdCLDZCQUE4QixTQUFRLFNBQVM7SUFDMUQsWUFDVSxNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsaUJBQW9DLEVBQ3BDLGNBQTZDO1FBRXJELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQStCO0lB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QUNMLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxFQUFFOzRCQUN6QixjQUFjLEVBQUUsRUFBRTs0QkFDbEIsZ0NBQWdDLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDMUMsR0FBRyxFQUNILEVBQUUsQ0FBQyx1Q0FBdUMsQ0FDM0M7eUJBQ0osQ0FBQztvQkFDSixDQUFDLENBQUEsQ0FBQyxDQUNIO2lCQUNGLENBQUM7Z0JBRUYsT0FBTyxJQUFJLFVBQVUsQ0FBQztvQkFDcEIsUUFBUSxFQUFFLHFDQUFxQztvQkFDL0MsU0FBUyxFQUFFO3dCQUNULEtBQUs7cUJBQ047aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFBLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFDSixDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUFuR0EsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFsQjhCLE1BQU07WUFBaEIsUUFBUTtZQUlwQixpQkFBaUI7WUFPakIsNkJBQTZCOztBQVF6Qiw2QkFBNkI7SUFOekMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLDZCQUE2QixDQWdHekM7U0FoR1ksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24sIExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IFRwQXNzZW1ibHlTdGF0ZSwgVHBDbGFpbUFwcHJvdmVyU3RhdGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBMckJhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5ncWwnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0UHJpdmF0ZVNlcnZpY2UgfSBmcm9tICcuL3RwLXBhc3N3b3JkLXJlc2V0LnByaXZhdGUuc2VydmljZSc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcml2YXRlU2VydmljZTogVHBQYXNzd29yZFJlc2V0UHJpdmF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gc2hhcmVkUmVzZXQuc2hhcmVkUmVxdWVzdC5jbGFpbS5zdGF0ZTtcbiAgICBpZiAoc3RhdGUgIT09IFRwQXNzZW1ibHlTdGF0ZS5DTEFJTUVEKSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihgQ2xhaW0gaXMgYWxyZWFkeSBpbiAke3N0YXRlfSBzdGF0ZS5gKTtcbiAgICB9XG4gIH1cblxuICByZWplY3RSZXF1ZXN0KHNoYXJlZFJlc2V0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlamVjdFJlcXVlc3RNdXRhdGlvbihzaGFyZWRSZXNldElkKSk7XG4gIH1cblxuICBhc3luYyByZWplY3RSZXF1ZXN0TXV0YXRpb24oc2hhcmVkUmVzZXRJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLnByaXZhdGVTZXJ2aWNlLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LmNsYWltLmFzQ2xhaW1BcHByb3ZlcnMuZWRnZXNcbiAgICAgICAgLmZpbHRlcigoZWRnZSkgPT4gZWRnZS5ub2RlLnN0YXRlID09PSBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEKVxuICAgICAgICAubWFwKFxuICAgICAgICAgIChlZGdlKSA9PlxuICAgICAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgICAgICBtdXRhdGlvbjogUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgY2xhaW1BcHByb3ZlcklkOiBlZGdlLm5vZGUuaWQgfSB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlUmVxdWVzdChzaGFyZWRSZXNldElkOiBzdHJpbmcsIHBia0ZpbmdlclByaW50Pzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKFxuICAgICAgYXdhaXQgdGhpcy5hcHByb3ZlUmVxdWVzdE11dGF0aW9uKHNoYXJlZFJlc2V0SWQsIHBia0ZpbmdlclByaW50KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlUmVxdWVzdE11dGF0aW9uKFxuICAgIHNoYXJlZFJlc2V0SWQ6IHN0cmluZyxcbiAgICBfcGJrRmluZ2VyUHJpbnQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLnByaXZhdGVTZXJ2aWNlLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICBjb25zdCBwYmsgPSBhd2FpdCBKV0suYXNLZXkoSlNPTi5wYXJzZShzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LnB4ay5wYmspKTtcblxuICAgIC8vIFRPRE8gPEFaPiBWZXJpZnkgcGJrIGFnYWluc3QgcGJrRmluZ2VyUHJpbnRcblxuICAgIGNvbnN0IGNsYWltQXBwcm92ZXJzID1cbiAgICAgIHNoYXJlZFJlc2V0LnNoYXJlZFJlcXVlc3QuY2xhaW0uYXNDbGFpbUFwcHJvdmVycy5lZGdlcy5maWx0ZXIoXG4gICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuc3RhdGUgPT09IFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRURcbiAgICAgICk7XG5cbiAgICAvLyBBIHNpbmdsZSBhcHByb3ZlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzLiBXZSBhcHByb3ZlIHRoZW0gYWxsIGhlcmUgaW4gYSBzaW5nbGVcbiAgICAvLyB0cmFuc2FjdGlvbi5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2xhaW1BcHByb3ZlcnMubWFwKGFzeW5jIChhcHByb3ZlckVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjYSA9IGFwcHJvdmVyRWRnZS5ub2RlO1xuICAgICAgICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICAgICAgY2xhaW1BcHByb3ZlcklkOiBjYS5pZCxcbiAgICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY2EucmVjZWl2ZXJBcHByb3ZhbHMuZWRnZXMubWFwKGFzeW5jIChyZWNlaXZlckVkZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYSA9IHJlY2VpdmVyRWRnZS5ub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IHJhLmlkLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgIHBiayxcbiAgICAgICAgICAgICAgICAgICAgICBjYS5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LXJlcXVlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsb0NBQW9DLEdBQ3JDLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7SUFRdkUsNkJBQTZCLFNBQTdCLDZCQUE4QixTQUFRLFNBQVM7SUFDMUQsWUFDVSxNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsaUJBQW9DLEVBQ3BDLGNBQTZDO1FBRXJELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQStCO0lB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QUNMLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxFQUFFOzRCQUN6QixjQUFjLEVBQUUsRUFBRTs0QkFDbEIsZ0NBQWdDLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDMUMsR0FBRyxFQUNILEVBQUUsQ0FBQyx1Q0FBdUMsQ0FDM0M7eUJBQ0osQ0FBQztvQkFDSixDQUFDLENBQUEsQ0FBQyxDQUNIO2lCQUNGLENBQUM7Z0JBRUYsT0FBTyxJQUFJLFVBQVUsQ0FBQztvQkFDcEIsUUFBUSxFQUFFLHFDQUFxQztvQkFDL0MsU0FBUyxFQUFFO3dCQUNULEtBQUs7cUJBQ047aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFBLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFDSixDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUFuR0EsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFsQjhCLE1BQU07WUFBaEIsUUFBUTtZQUlwQixpQkFBaUI7WUFPakIsNkJBQTZCOztBQVF6Qiw2QkFBNkI7SUFOekMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLDZCQUE2QixDQWdHekM7U0FoR1ksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24sIExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IFRwQXNzZW1ibHlTdGF0ZSwgVHBDbGFpbUFwcHJvdmVyU3RhdGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLY0JhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5ncWwnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0UHJpdmF0ZVNlcnZpY2UgfSBmcm9tICcuL3RwLXBhc3N3b3JkLXJlc2V0LnByaXZhdGUuc2VydmljZSc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcml2YXRlU2VydmljZTogVHBQYXNzd29yZFJlc2V0UHJpdmF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gc2hhcmVkUmVzZXQuc2hhcmVkUmVxdWVzdC5jbGFpbS5zdGF0ZTtcbiAgICBpZiAoc3RhdGUgIT09IFRwQXNzZW1ibHlTdGF0ZS5DTEFJTUVEKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbihgQ2xhaW0gaXMgYWxyZWFkeSBpbiAke3N0YXRlfSBzdGF0ZS5gKTtcbiAgICB9XG4gIH1cblxuICByZWplY3RSZXF1ZXN0KHNoYXJlZFJlc2V0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlamVjdFJlcXVlc3RNdXRhdGlvbihzaGFyZWRSZXNldElkKSk7XG4gIH1cblxuICBhc3luYyByZWplY3RSZXF1ZXN0TXV0YXRpb24oc2hhcmVkUmVzZXRJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLnByaXZhdGVTZXJ2aWNlLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LmNsYWltLmFzQ2xhaW1BcHByb3ZlcnMuZWRnZXNcbiAgICAgICAgLmZpbHRlcigoZWRnZSkgPT4gZWRnZS5ub2RlLnN0YXRlID09PSBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEKVxuICAgICAgICAubWFwKFxuICAgICAgICAgIChlZGdlKSA9PlxuICAgICAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgICAgICBtdXRhdGlvbjogUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgY2xhaW1BcHByb3ZlcklkOiBlZGdlLm5vZGUuaWQgfSB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlUmVxdWVzdChzaGFyZWRSZXNldElkOiBzdHJpbmcsIHBia0ZpbmdlclByaW50Pzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKFxuICAgICAgYXdhaXQgdGhpcy5hcHByb3ZlUmVxdWVzdE11dGF0aW9uKHNoYXJlZFJlc2V0SWQsIHBia0ZpbmdlclByaW50KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlUmVxdWVzdE11dGF0aW9uKFxuICAgIHNoYXJlZFJlc2V0SWQ6IHN0cmluZyxcbiAgICBfcGJrRmluZ2VyUHJpbnQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkUmVzZXQgPSBhd2FpdCB0aGlzLnByaXZhdGVTZXJ2aWNlLmdldFNoYXJlZFJlc2V0KHNoYXJlZFJlc2V0SWQpO1xuXG4gICAgdGhpcy5hY3RpdmVSZXF1ZXN0T3JSYWlzZShzaGFyZWRSZXNldCk7XG5cbiAgICBjb25zdCBwYmsgPSBhd2FpdCBKV0suYXNLZXkoSlNPTi5wYXJzZShzaGFyZWRSZXNldC5zaGFyZWRSZXF1ZXN0LnB4ay5wYmspKTtcblxuICAgIC8vIFRPRE8gPEFaPiBWZXJpZnkgcGJrIGFnYWluc3QgcGJrRmluZ2VyUHJpbnRcblxuICAgIGNvbnN0IGNsYWltQXBwcm92ZXJzID1cbiAgICAgIHNoYXJlZFJlc2V0LnNoYXJlZFJlcXVlc3QuY2xhaW0uYXNDbGFpbUFwcHJvdmVycy5lZGdlcy5maWx0ZXIoXG4gICAgICAgIChlZGdlKSA9PiBlZGdlLm5vZGUuc3RhdGUgPT09IFRwQ2xhaW1BcHByb3ZlclN0YXRlLkNMQUlNRURcbiAgICAgICk7XG5cbiAgICAvLyBBIHNpbmdsZSBhcHByb3ZlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzLiBXZSBhcHByb3ZlIHRoZW0gYWxsIGhlcmUgaW4gYSBzaW5nbGVcbiAgICAvLyB0cmFuc2FjdGlvbi5cbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2xhaW1BcHByb3ZlcnMubWFwKGFzeW5jIChhcHByb3ZlckVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjYSA9IGFwcHJvdmVyRWRnZS5ub2RlO1xuICAgICAgICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICAgICAgY2xhaW1BcHByb3ZlcklkOiBjYS5pZCxcbiAgICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY2EucmVjZWl2ZXJBcHByb3ZhbHMuZWRnZXMubWFwKGFzeW5jIChyZWNlaXZlckVkZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYSA9IHJlY2VpdmVyRWRnZS5ub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IHJhLmlkLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgIHBiayxcbiAgICAgICAgICAgICAgICAgICAgICBjYS5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import gql from 'graphql-tag';
2
- import { SharedContactCardFields } from '../shared-contact-card/shared-contact-card.service';
3
2
  import { KeyExchangeFields, UserSharedKeyFields, } from '../key-exchange/key-exchange.gql';
3
+ import { SharedContactCardFields } from '../shared-contact-card/shared-contact-card.service';
4
4
  import { KeyGraphField } from '../_common/queries.gql';
5
5
  export const TrustedPartyProperties = `
6
6
  id
@@ -28,7 +28,7 @@ export const TrustedPartyProperties = `
28
28
  }
29
29
  }
30
30
  }
31
- sharedItems {
31
+ theirItems {
32
32
  directories {
33
33
  edges {
34
34
  node {
@@ -145,4 +145,4 @@ export const UnshareCategoryMutation = gql `
145
145
  }
146
146
  }
147
147
  `;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHJ1c3RlZC1wYXJ0eS90cnVzdGVkLXBhcnR5LmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7O01BY2hDLHVCQUF1Qjs7O01BR3ZCLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBcUJuQixpQkFBaUI7O1FBRW5CLG1CQUFtQjs7SUFFdkIsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7VUFLL0Isc0JBQXNCOzs7O0lBSTVCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7OztVQUtsQyxzQkFBc0I7Ozs7Ozs7Ozs7OztVQVl0QixpQkFBaUI7Ozs7Ozs7Ozs7OztVQVlqQixpQkFBaUI7Ozs7SUFJdkIsYUFBYTtFQUNmLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUE7OztNQUdqQyxzQkFBc0I7O0lBRXhCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF2RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF0RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Q0FNNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztDQVV2QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7O0NBVXpDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IFNoYXJlZENvbnRhY3RDYXJkRmllbGRzIH0gZnJvbSAnLi4vc2hhcmVkLWNvbnRhY3QtY2FyZC9zaGFyZWQtY29udGFjdC1jYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgS2V5RXhjaGFuZ2VGaWVsZHMsXG4gIFVzZXJTaGFyZWRLZXlGaWVsZHMsXG59IGZyb20gJy4uL2tleS1leGNoYW5nZS9rZXktZXhjaGFuZ2UuZ3FsJztcbmltcG9ydCB7IEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcblxuZXhwb3J0IGNvbnN0IFRydXN0ZWRQYXJ0eVByb3BlcnRpZXMgPSBgXG4gIGlkXG4gIHVzZXIge1xuICAgIGlkXG4gICAgdXNlcm5hbWVcbiAgfVxuICBvdGhlcntcbiAgICBpZFxuICAgIHVzZXJuYW1lLFxuICAgIGZlYXR1cmVzIHtcbiAgICAgIHNoYXJlVmF1bHRcbiAgICB9XG4gIH1cbiAgc2hhcmVkQ29udGFjdENhcmQge1xuICAgICR7U2hhcmVkQ29udGFjdENhcmRGaWVsZHN9XG4gIH1cbiAgbXlDb250YWN0Q2FyZCB7XG4gICAgJHtTaGFyZWRDb250YWN0Q2FyZEZpZWxkc31cbiAgfVxuICBzaGFyZWRTY2VuYXJpb3Mge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaGFyZWRJdGVtcyB7XG4gICAgZGlyZWN0b3JpZXMge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGN1cnJlbnRVc2VyU2hhcmVkS2V5IHtcbiAgICB1c2VyU2hhcmVkS2V5IHtcbiAgICAgIGtleUV4Y2hhbmdlIHtcbiAgICAgICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgICAgIH1cbiAgICAgICR7VXNlclNoYXJlZEtleUZpZWxkc31cbiAgICB9XG4gIH1gO1xuXG5leHBvcnQgY29uc3QgR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSA9IGdxbGBcbnF1ZXJ5IEdldFRydXN0ZWRQYXJ0aWVzUXVlcnkge1xuICB0cHMge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke1RydXN0ZWRQYXJ0eVByb3BlcnRpZXN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gICR7S2V5R3JhcGhGaWVsZH1cbn1gO1xuXG5leHBvcnQgY29uc3QgR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSA9IGdxbGBcbnF1ZXJ5IEdldEFsbFRydXN0ZWRQYXJ0aWVzUXVlcnkoJHVzZXJJZDogSUQsICRpc0V4cGlyZWQ6IEJvb2xlYW4sICRpbnZpdGVTdGF0ZTogU3RyaW5nLCAkc2VudEludml0ZVN0YXRlOiBTdHJpbmcpIHtcbiAgdHBzIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtUcnVzdGVkUGFydHlQcm9wZXJ0aWVzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpbnZpdGVzOiBrZXlFeGNoYW5nZXMoXG4gICAgcmVzcG9uZGVyOiAkdXNlcklkXG4gICAgaXNFeHBpcmVkOiAkaXNFeHBpcmVkXG4gICAgc3RhdGU6ICRpbnZpdGVTdGF0ZVxuICAgIG9yZGVyQnk6IFwic3RhdGUsLWNyZWF0ZWRcIlxuICApIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2VudEludml0ZXM6IGtleUV4Y2hhbmdlcyhcbiAgICBpbml0aWF0b3I6ICR1c2VySWRcbiAgICBpc0V4cGlyZWQ6ICRpc0V4cGlyZWRcbiAgICBzdGF0ZTogJHNlbnRJbnZpdGVTdGF0ZVxuICAgIG9yZGVyQnk6IFwic3RhdGUsLWNyZWF0ZWRcIlxuICApIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBHZXRUcnVzdGVkUGFydHlRdWVyeSA9IGdxbGBcbnF1ZXJ5IEdldFRydXN0ZWRQYXJ0eVF1ZXJ5KCRwYXJ0eUlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgdHAoaWQ6ICRwYXJ0eUlkKSB7XG4gICAgJHtUcnVzdGVkUGFydHlQcm9wZXJ0aWVzfVxuICB9XG4gICR7S2V5R3JhcGhGaWVsZH1cbn1gO1xuXG5leHBvcnQgY29uc3QgRGVjbGluZVRydXN0ZWRQYXJ0eUludml0YXRpb25NdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gRGVjbGluZUtleUV4Y2hhbmdlKCRpbnB1dDogRGVjbGluZUtleUV4Y2hhbmdlSW5wdXQhKSB7XG4gICAgZGVjbGluZUtleUV4Y2hhbmdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGtleUV4Y2hhbmdlIHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDYW5jZWxUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIENhbmNlbEtleUV4Y2hhbmdlKCRpbnB1dDogQ2FuY2VsS2V5RXhjaGFuZ2VJbnB1dCEpIHtcbiAgICBjYW5jZWxLZXlFeGNoYW5nZShpbnB1dDogJGlucHV0KSB7XG4gICAgICBrZXlFeGNoYW5nZSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgRGVsZXRlVHJ1c3RlZFBhcnR5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIERlbGV0ZVRwTXV0YXRpb24oJGlucHV0OiBEZWxldGVUcElucHV0ISkge1xuICAgIGRlbGV0ZVRwKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU2hhcmVDYXRlZ29yeU11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBTaGFyZURpcmVjdG9yeSgkaW5wdXQ6IFNoYXJlRGlyZWN0b3J5SW5wdXQhKSB7XG4gICAgc2hhcmVEaXJlY3RvcnkoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgdHBEaXJlY3Rvcnkge1xuICAgICAgICBpdGVtIHtcbiAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFVuc2hhcmVDYXRlZ29yeU11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBVbnNoYXJlRGlyZWN0b3J5KCRpbnB1dDogVW5zaGFyZURpcmVjdG9yeUlucHV0ISkge1xuICAgIHVuc2hhcmVEaXJlY3RvcnkoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgdHBEaXJlY3Rvcnkge1xuICAgICAgICBpdGVtIHtcbiAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdHJ1c3RlZC1wYXJ0eS90cnVzdGVkLXBhcnR5LmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7O01BY2hDLHVCQUF1Qjs7O01BR3ZCLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBcUJuQixpQkFBaUI7O1FBRW5CLG1CQUFtQjs7SUFFdkIsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7VUFLL0Isc0JBQXNCOzs7O0lBSTVCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7OztVQUtsQyxzQkFBc0I7Ozs7Ozs7Ozs7OztVQVl0QixpQkFBaUI7Ozs7Ozs7Ozs7OztVQVlqQixpQkFBaUI7Ozs7SUFJdkIsYUFBYTtFQUNmLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUE7OztNQUdqQyxzQkFBc0I7O0lBRXhCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF2RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF0RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Q0FNNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztDQVV2QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7O0NBVXpDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7XG4gIEtleUV4Y2hhbmdlRmllbGRzLFxuICBVc2VyU2hhcmVkS2V5RmllbGRzLFxufSBmcm9tICcuLi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLmdxbCc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZEZpZWxkcyB9IGZyb20gJy4uL3NoYXJlZC1jb250YWN0LWNhcmQvc2hhcmVkLWNvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcblxuZXhwb3J0IGNvbnN0IFRydXN0ZWRQYXJ0eVByb3BlcnRpZXMgPSBgXG4gIGlkXG4gIHVzZXIge1xuICAgIGlkXG4gICAgdXNlcm5hbWVcbiAgfVxuICBvdGhlcntcbiAgICBpZFxuICAgIHVzZXJuYW1lLFxuICAgIGZlYXR1cmVzIHtcbiAgICAgIHNoYXJlVmF1bHRcbiAgICB9XG4gIH1cbiAgc2hhcmVkQ29udGFjdENhcmQge1xuICAgICR7U2hhcmVkQ29udGFjdENhcmRGaWVsZHN9XG4gIH1cbiAgbXlDb250YWN0Q2FyZCB7XG4gICAgJHtTaGFyZWRDb250YWN0Q2FyZEZpZWxkc31cbiAgfVxuICBzaGFyZWRTY2VuYXJpb3Mge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuICB0aGVpckl0ZW1zIHtcbiAgICBkaXJlY3RvcmllcyB7XG4gICAgICBlZGdlcyB7XG4gICAgICAgIG5vZGUge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY3VycmVudFVzZXJTaGFyZWRLZXkge1xuICAgIHVzZXJTaGFyZWRLZXkge1xuICAgICAga2V5RXhjaGFuZ2Uge1xuICAgICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgICAgfVxuICAgICAgJHtVc2VyU2hhcmVkS2V5RmllbGRzfVxuICAgIH1cbiAgfWA7XG5cbmV4cG9ydCBjb25zdCBHZXRUcnVzdGVkUGFydGllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSB7XG4gIHRwcyB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7VHJ1c3RlZFBhcnR5UHJvcGVydGllc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSgkdXNlcklkOiBJRCwgJGlzRXhwaXJlZDogQm9vbGVhbiwgJGludml0ZVN0YXRlOiBTdHJpbmcsICRzZW50SW52aXRlU3RhdGU6IFN0cmluZykge1xuICB0cHMge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke1RydXN0ZWRQYXJ0eVByb3BlcnRpZXN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGludml0ZXM6IGtleUV4Y2hhbmdlcyhcbiAgICByZXNwb25kZXI6ICR1c2VySWRcbiAgICBpc0V4cGlyZWQ6ICRpc0V4cGlyZWRcbiAgICBzdGF0ZTogJGludml0ZVN0YXRlXG4gICAgb3JkZXJCeTogXCJzdGF0ZSwtY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzZW50SW52aXRlczoga2V5RXhjaGFuZ2VzKFxuICAgIGluaXRpYXRvcjogJHVzZXJJZFxuICAgIGlzRXhwaXJlZDogJGlzRXhwaXJlZFxuICAgIHN0YXRlOiAkc2VudEludml0ZVN0YXRlXG4gICAgb3JkZXJCeTogXCJzdGF0ZSwtY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IEdldFRydXN0ZWRQYXJ0eVF1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0VHJ1c3RlZFBhcnR5UXVlcnkoJHBhcnR5SWQ6IExyUmVsYXlJZElucHV0ISkge1xuICB0cChpZDogJHBhcnR5SWQpIHtcbiAgICAke1RydXN0ZWRQYXJ0eVByb3BlcnRpZXN9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBEZWNsaW5lS2V5RXhjaGFuZ2UoJGlucHV0OiBEZWNsaW5lS2V5RXhjaGFuZ2VJbnB1dCEpIHtcbiAgICBkZWNsaW5lS2V5RXhjaGFuZ2UoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAga2V5RXhjaGFuZ2Uge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENhbmNlbFRydXN0ZWRQYXJ0eUludml0YXRpb25NdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gQ2FuY2VsS2V5RXhjaGFuZ2UoJGlucHV0OiBDYW5jZWxLZXlFeGNoYW5nZUlucHV0ISkge1xuICAgIGNhbmNlbEtleUV4Y2hhbmdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGtleUV4Y2hhbmdlIHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gRGVsZXRlVHBNdXRhdGlvbigkaW5wdXQ6IERlbGV0ZVRwSW5wdXQhKSB7XG4gICAgZGVsZXRlVHAoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTaGFyZUNhdGVnb3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIFNoYXJlRGlyZWN0b3J5KCRpbnB1dDogU2hhcmVEaXJlY3RvcnlJbnB1dCEpIHtcbiAgICBzaGFyZURpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XG4gICAgICB0cERpcmVjdG9yeSB7XG4gICAgICAgIGl0ZW0ge1xuICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVW5zaGFyZUNhdGVnb3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIFVuc2hhcmVEaXJlY3RvcnkoJGlucHV0OiBVbnNoYXJlRGlyZWN0b3J5SW5wdXQhKSB7XG4gICAgdW5zaGFyZURpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XG4gICAgICB0cERpcmVjdG9yeSB7XG4gICAgICAgIGl0ZW0ge1xuICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuIl19
@@ -236,7 +236,7 @@ export class TrustedPartyService {
236
236
  id: tp.id,
237
237
  type: TrustedPartyType.User,
238
238
  hasScenarios: !!tp.sharedScenarios.edges.length,
239
- hasSharedVault: !!tp.sharedItems.directories.edges.length,
239
+ hasSharedVault: !!tp.theirItems.directories.edges.length,
240
240
  name: contactCard && contactCard.name && contactCard.name.name,
241
241
  details: contactCard,
242
242
  mySharedDetails: myContactCard,
@@ -305,4 +305,4 @@ TrustedPartyService.ctorParameters = () => [
305
305
  { type: KeyFactoryService },
306
306
  { type: EncryptionService }
307
307
  ];
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RydXN0ZWQtcGFydHkvdHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQywwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFPTCx3QkFBd0IsRUFFeEIsb0JBQW9CLEVBQ3BCLGdCQUFn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WUFOakIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjZXNzTGV2ZWwgfSBmcm9tICcuLi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUV4Y2hhbmdlU2VydmljZSB9IGZyb20gJy4uL2tleS1leGNoYW5nZS9rZXktZXhjaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBEZWNyeXB0ZWRLZXlFeGNoYW5nZSxcbiAgUmVzcG9uZE90a0lucHV0LFxufSBmcm9tICcuLi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLnR5cGVzJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGFjdENhcmROYW1lIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IFNoYXJlZENvbnRhY3RDYXJkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC1jb250YWN0LWNhcmQvc2hhcmVkLWNvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2FuY2VsVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbixcbiAgR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgR2V0VHJ1c3RlZFBhcnR5UXVlcnksXG4gIFNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUNhdGVnb3J5TXV0YXRpb24sXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eS5ncWwnO1xuaW1wb3J0IHtcbiAgQWNjZXB0VHJ1c3RlZFBhcnR5SW52aXRlLFxuICBDb25maXJtVHJ1c3RlZFBhcnR5SW52aXRlLFxuICBJbnZpdGVUcnVzdGVkUGFydHksXG4gIFRydXN0ZWRQYXJ0aWVzLFxuICBUcnVzdGVkUGFydHksXG4gIFRydXN0ZWRQYXJ0eUludml0ZSxcbiAgVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLFxuICBUcnVzdGVkUGFydHlSb2xlLFxuICBUcnVzdGVkUGFydHlSb2xlVHlwZSxcbiAgVHJ1c3RlZFBhcnR5VHlwZSxcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eVNlcnZpY2Uge1xuICBwcml2YXRlIHRydXN0ZWRQYXJ0eVJvbGVzOiBUcnVzdGVkUGFydHlSb2xlW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcbiAgICBwcml2YXRlIHNoYXJlZENvbnRhY3RDYXJkU2VydmljZTogU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RXhjaGFuZ2VTZXJ2aWNlOiBLZXlFeGNoYW5nZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaFNlcnZpY2U6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0aWVzKCk6IFByb21pc2U8VHJ1c3RlZFBhcnR5W10+IHtcbiAgICBjb25zdCB7IHRwcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRwcy5lZGdlcy5tYXAoKHgpID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHgubm9kZSkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxUcnVzdGVkUGFydGllcygpOiBQcm9taXNlPFRydXN0ZWRQYXJ0aWVzPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpO1xuICAgIGNvbnN0IHsgdHBzLCBpbnZpdGVzLCBzZW50SW52aXRlcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHVzZXJJZDogdXNlci5pZCxcbiAgICAgICAgaXNFeHBpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGFydGllczogKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHk+KFxuICAgICAgICAgIHRwcy5lZGdlcy5tYXAoKHgpID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHgubm9kZSkpXG4gICAgICAgIClcbiAgICAgICkuZmlsdGVyKCh4KSA9PiB4KSxcbiAgICAgIGludml0ZXM6IChcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8VHJ1c3RlZFBhcnR5SW52aXRlPihcbiAgICAgICAgICBpbnZpdGVzLmVkZ2VzLm1hcChhc3luYyAoeCkgPT5cbiAgICAgICAgICAgIHRoaXMubWFwSW52aXRlKFxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5kZWNyeXB0S2V5RXhjaGFuZ2UoeC5ub2RlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnN0YXR1cyAhPT0gVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLkNvbXBsZXRlZClcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgIHguc3RhdHVzICE9PSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMuSW52aXRlZCB8fCB4LmFjdGlvblJlcXVpcmVkXG4gICAgICAgICksXG4gICAgICBzZW50SW52aXRlczogKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHlJbnZpdGU+KFxuICAgICAgICAgIHNlbnRJbnZpdGVzLmVkZ2VzLm1hcChhc3luYyAoeCkgPT5cbiAgICAgICAgICAgIHRoaXMubWFwSW52aXRlKFxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5kZWNyeXB0S2V5RXhjaGFuZ2UoeC5ub2RlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5maWx0ZXIoKHgpID0+IHguc3RhdHVzICE9PSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMuQ29tcGxldGVkKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0eShwYXJ0eUlkOiBzdHJpbmcpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eT4ge1xuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogR2V0VHJ1c3RlZFBhcnR5UXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHsgcGFydHlJZCB9LFxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm1hcFRydXN0ZWRQYXJ0eSh0cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJ1c3RlZFBhcnR5Um9sZXMoXG4gICAgcm9sZVR5cGU6IFRydXN0ZWRQYXJ0eVJvbGVUeXBlID0gVHJ1c3RlZFBhcnR5Um9sZVR5cGUuR2VuZXJhbFxuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVJvbGVbXT4ge1xuICAgIGlmICghdGhpcy50cnVzdGVkUGFydHlSb2xlcykge1xuICAgICAgdGhpcy50cnVzdGVkUGFydHlSb2xlcyA9IGF3YWl0IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PFRydXN0ZWRQYXJ0eVJvbGVbXT4oJy9hc3NldHMvbWV0YS90cnVzdGVkLXBhcnR5LXJvbGVzLmpzb24nKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICB0aGlzLnRydXN0ZWRQYXJ0eVJvbGVzLmZpbHRlcigoeCkgPT4geC5yb2xlVHlwZSA9PT0gcm9sZVR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbnZpdGVUcnVzdGVkUGFydHkoaW52aXRlOiBJbnZpdGVUcnVzdGVkUGFydHkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICByZXNwb25kZXJVc2VybmFtZTogaW52aXRlLnBhcnR5LnVzZXJuYW1lLFxuICAgICAgZW1haWw6IGludml0ZS5wYXJ0eS5lbWFpbCxcbiAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgbmFtZTogaW52aXRlLnBhcnR5Lm5hbWUsXG4gICAgICAgIGVtYWlsOiBpbnZpdGUucGFydHkuZW1haWwsXG4gICAgICAgIG1lc3NhZ2U6IGludml0ZS5wYXJ0eS5tZXNzYWdlLFxuICAgICAgICBwZXJtaXNzaW9uczogaW52aXRlLnBlcm1pc3Npb25zLFxuICAgICAgfSxcbiAgICAgIGNvbnRhY3RDYXJkOiB7XG4gICAgICAgIHBsYWluT3duZXJDaXBoZXJEYXRhSnNvbjogbnVsbCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhSnNvbjogaW52aXRlLm15U2hhcmVkRGV0YWlscyxcbiAgICAgICAgb3duZXJQbGFpbkRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGludml0ZS5teVNoYXJlZERldGFpbHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuaW5pdGlhdGVPdGsocGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxJbnZpdGF0aW9uKGludml0ZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogQ2FuY2VsVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGludml0ZUlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZpdGF0aW9uKFxuICAgIGludml0ZUlkOiBzdHJpbmcsXG4gICAgaW52aXRlVG9rZW46IHN0cmluZyxcbiAgICBrZXk6IHN0cmluZ1xuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eUludml0ZT4ge1xuICAgIGNvbnN0IGV4Y2hhbmdlID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuZ2V0S2V5RXhjaGFuZ2UoaW52aXRlSWQsIHtcbiAgICAgIHRva2VuOiBpbnZpdGVUb2tlbixcbiAgICAgIG90S2V5Szoga2V5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMubWFwSW52aXRlKGV4Y2hhbmdlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhY2NlcHRJbnZpdGF0aW9uKFxuICAgIGludml0ZTogQWNjZXB0VHJ1c3RlZFBhcnR5SW52aXRlXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcGFyYW1zOiBSZXNwb25kT3RrSW5wdXQgPSB7XG4gICAgICBpZDogaW52aXRlLmludml0ZUlkLFxuICAgICAgdG9rZW46IGludml0ZS5pbnZpdGVUb2tlbixcbiAgICAgIGRlY3J5cHRlZE90azogaW52aXRlLmRlY3J5cHRlZE90ayxcbiAgICAgIGluaXRpYXRvckNvbnRhY3RDYXJkOiBudWxsLFxuICAgICAgcmVzcG9uZGVyQ29udGFjdENhcmQ6IHtcbiAgICAgICAgcGxhaW5Pd25lckNpcGhlckRhdGFKc29uOiBudWxsLFxuICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGFKc29uOiBpbnZpdGUubXlTaGFyZWREZXRhaWxzLFxuICAgICAgICBvd25lclBsYWluRGF0YToge1xuICAgICAgICAgIG5hbWU6IG5ldyBDb250YWN0Q2FyZE5hbWUoaW52aXRlLm15U2hhcmVkRGV0YWlscy5uYW1lKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLnJlc3BvbmRPdGsocGFyYW1zKTtcblxuICAgIHJldHVybiB0cC5pZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWNsaW5lSW52aXRhdGlvbihcbiAgICBpbnZpdGVJZDogc3RyaW5nLFxuICAgIGludml0ZVRva2VuOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IERlY2xpbmVUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaW52aXRlSWQsXG4gICAgICAgICAgdG9rZW46IGludml0ZVRva2VuLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb25maXJtSW52aXRhdGlvbihcbiAgICBjb25maXJtOiBDb25maXJtVHJ1c3RlZFBhcnR5SW52aXRlXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyB0cCB9ID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuY29tcGxldGVPdGsoXG4gICAgICBjb25maXJtLmludml0ZUlkLFxuICAgICAgY29uZmlybS5pbml0aWF0b3JSb290S2V5Q2lwaGVyLFxuICAgICAgY29uZmlybS5pbml0aWF0b3JPbmVUaW1lUGJrQ2lwaGVyLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgcmV0dXJuIHRwLmlkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZVRydXN0ZWRQYXJ0eShwYXJ0eUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlVHJ1c3RlZFBhcnR5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogcGFydHlJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2F0ZWdvcnlBY2Nlc3NMZXZlbChcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICB0cnVzdGVkUGFydHk6IFRydXN0ZWRQYXJ0eSxcbiAgICBhY2Nlc3NMZXZlbD86IEFjY2Vzc0xldmVsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhY2Nlc3NMZXZlbFxuICAgICAgPyB0aGlzLnNoYXJlRGlyZWN0b3J5KGNhdGVnb3J5SWQsIGtleUlkLCB0cnVzdGVkUGFydHksIGFjY2Vzc0xldmVsKVxuICAgICAgOiB0aGlzLnVuc2hhcmVEaXJlY3RvcnkoY2F0ZWdvcnlJZCwgdHJ1c3RlZFBhcnR5LmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWNvcmRBY2Nlc3NMZXZlbChcbiAgICByZWNvcmRJZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXG4gICAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhY2Nlc3NMZXZlbFxuICAgICAgPyB0aGlzLnNoYXJlRGlyZWN0b3J5KHJlY29yZElkLCBrZXlJZCwgdHJ1c3RlZFBhcnR5LCBhY2Nlc3NMZXZlbClcbiAgICAgIDogdGhpcy51bnNoYXJlRGlyZWN0b3J5KHJlY29yZElkLCB0cnVzdGVkUGFydHkuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaGFyZURpcmVjdG9yeShcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXG4gICAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShrZXlJZCk7XG4gICAgY29uc3Qgd3JhcHBpbmdLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRLZXkoXG4gICAgICB0cnVzdGVkUGFydHkudXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWRcbiAgICApO1xuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICB3cmFwcGluZ0tleS5qd2ssXG4gICAgICBrZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogU2hhcmVDYXRlZ29yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHRwSWQ6IHRydXN0ZWRQYXJ0eS5pZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlOiBhY2Nlc3NMZXZlbCxcbiAgICAgICAgICBrZXlJZDoga2V5LmlkLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHdyYXBwaW5nS2V5LmlkLFxuICAgICAgICAgIHdyYXBwZWRLZXk6IEpTT04uc3RyaW5naWZ5KHdyYXBwZWRLZXkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdW5zaGFyZURpcmVjdG9yeShcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIHRydXN0ZWRQYXJ0eUlkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IFVuc2hhcmVDYXRlZ29yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHRwSWQ6IHRydXN0ZWRQYXJ0eUlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtYXBUcnVzdGVkUGFydHkodHA6IGFueSk6IFByb21pc2U8VHJ1c3RlZFBhcnR5PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRhY3RDYXJkID1cbiAgICAgICAgdHAuc2hhcmVkQ29udGFjdENhcmQgJiZcbiAgICAgICAgKGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLmRlY3J5cHRUcnVzdGVkUGFydHlEZXRhaWxzKFxuICAgICAgICAgIHRwLnNoYXJlZENvbnRhY3RDYXJkXG4gICAgICAgICkpO1xuICAgICAgY29uc3QgbXlDb250YWN0Q2FyZCA9XG4gICAgICAgIHRwLm15Q29udGFjdENhcmQgJiZcbiAgICAgICAgKGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLmRlY3J5cHRTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzKFxuICAgICAgICAgIHRwLm15Q29udGFjdENhcmRcbiAgICAgICAgKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB0cC5pZCxcbiAgICAgICAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZS5Vc2VyLCAvLyBUT0RPOiB3aGVuIHBhcnRuZXJzXG4gICAgICAgIGhhc1NjZW5hcmlvczogISF0cC5zaGFyZWRTY2VuYXJpb3MuZWRnZXMubGVuZ3RoLFxuICAgICAgICBoYXNTaGFyZWRWYXVsdDogISF0cC5zaGFyZWRJdGVtcy5kaXJlY3Rvcmllcy5lZGdlcy5sZW5ndGgsXG4gICAgICAgIG5hbWU6IGNvbnRhY3RDYXJkICYmIGNvbnRhY3RDYXJkLm5hbWUgJiYgY29udGFjdENhcmQubmFtZS5uYW1lLFxuICAgICAgICBkZXRhaWxzOiBjb250YWN0Q2FyZCxcbiAgICAgICAgbXlTaGFyZWREZXRhaWxzOiBteUNvbnRhY3RDYXJkLFxuICAgICAgICB1c2VyU2hhcmVkS2V5OiB0cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5LFxuICAgICAgICB1c2VybmFtZTogdHAub3RoZXIudXNlcm5hbWUsXG4gICAgICAgIGZlYXR1cmVzOiB7XG4gICAgICAgICAgc2hhcmVkVmF1bHQ6IHtcbiAgICAgICAgICAgIGhhc0FjY2VzczpcbiAgICAgICAgICAgICAgKHRwLm90aGVyLmZlYXR1cmVzPy5zaGFyZVZhdWx0IHx8IFsnbm9hY2Nlc3MnXSlbMF0gPT09ICdhY2Nlc3MnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkZWNyeXB0IFRydXN0ZWQgUGFydHkuJywgZSwgdHApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtYXBJbnZpdGUoXG4gICAgZXhjaGFuZ2U6IERlY3J5cHRlZEtleUV4Y2hhbmdlXG4gICk6IFByb21pc2U8VHJ1c3RlZFBhcnR5SW52aXRlPiB7XG4gICAgY29uc3QgY29udGFjdENhcmQgPSBleGNoYW5nZS5jb250YWN0Q2FyZDtcbiAgICBjb25zdCBuYW1lID0gZXhjaGFuZ2UuaXNJbml0aWF0b3JcbiAgICAgID8gZXhjaGFuZ2UubXlNZXNzYWdlPy5uYW1lXG4gICAgICA6IGNvbnRhY3RDYXJkICYmIGNvbnRhY3RDYXJkLm5hbWUgJiYgY29udGFjdENhcmQubmFtZS5uYW1lO1xuICAgIGNvbnN0IGVtYWlsID0gZXhjaGFuZ2UuaXNJbml0aWF0b3JcbiAgICAgID8gZXhjaGFuZ2UubXlNZXNzYWdlPy5lbWFpbFxuICAgICAgOiAoY29udGFjdENhcmQgJiYgY29udGFjdENhcmQuZW1haWwpIHx8IGV4Y2hhbmdlLnJlc3BvbmRlckVtYWlsQWRkcmVzcztcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogZXhjaGFuZ2UuaWQsXG4gICAgICB0eXBlOiBUcnVzdGVkUGFydHlUeXBlLlVzZXIsIC8vIHRvZG8gd2hlbiBwYXJ0bmVyc1xuICAgICAgc3RhdHVzOiBleGNoYW5nZS5zdGF0ZSBhcyB1bmtub3duIGFzIFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cyxcbiAgICAgIHRva2VuOiBleGNoYW5nZS50b2tlbixcbiAgICAgIHRva2VuRXhwaXJ5OiBleGNoYW5nZS50b2tlbkV4cGlyeVRpbWUsXG4gICAgICBkZWNyeXB0ZWRPdGs6IGV4Y2hhbmdlLmRlY3J5cHRlZE90ayxcbiAgICAgIG5hbWUsXG4gICAgICBlbWFpbCxcbiAgICAgIGlzU2VuZGVyOiBleGNoYW5nZS5pc0luaXRpYXRvcixcbiAgICAgIGFjdGlvblJlcXVpcmVkOiBleGNoYW5nZS5pc0luaXRpYXRvclxuICAgICAgICA/IGV4Y2hhbmdlLmluaXRpYXRvckFjdGlvblJlcXVpcmVkXG4gICAgICAgIDogZXhjaGFuZ2UucmVzcG9uZGVyQWN0aW9uUmVxdWlyZWQsXG4gICAgICByb290S2V5Q2lwaGVyOiBleGNoYW5nZS5pbml0aWF0b3JSb290S2V5Q2lwaGVyLFxuICAgICAgcGJrQ2lwaGVyOiBleGNoYW5nZS5vdGsuaW5pdGlhdG9yT25lVGltZVBia0NpcGhlcixcbiAgICAgIGlzRXhwaXJlZDogZXhjaGFuZ2UuaXNFeHBpcmVkLFxuICAgICAgZGV0YWlsczogY29udGFjdENhcmQsXG4gICAgICBtZXNzYWdlOiBleGNoYW5nZS5tZXNzYWdlLFxuICAgICAgbXlTaGFyZWREZXRhaWxzOiBleGNoYW5nZS5teUNvbnRhY3RDYXJkLFxuICAgICAgbXlTaGFyZWRNZXNzYWdlOiBleGNoYW5nZS5teU1lc3NhZ2UsXG4gICAgfTtcbiAgfVxufVxuIl19
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3RydXN0ZWQtcGFydHkvdHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQywwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFPTCx3QkFBd0IsRUFFeEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixHQUNqQixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7QUFLL0IsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUNVLElBQWdCLEVBQ2hCLFFBQXlCLEVBQ3pCLHdCQUFrRCxFQUNsRCxXQUF3QixFQUN4QixXQUFpQyxFQUNqQyxrQkFBc0MsRUFDdEMsZUFBZ0MsRUFDaEMsVUFBc0IsRUFDdEIsVUFBNkIsRUFDN0IsaUJBQW9DO1FBVHBDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDakMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQzNDLENBQUM7SUFFUyxpQkFBaUI7O1lBQzVCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFNO2dCQUM3QyxLQUFLLEVBQUUsc0JBQXNCO2FBQzlCLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN0QixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDbkQsQ0FBQztRQUNKLENBQUM7S0FBQTtJQUVZLG9CQUFvQjs7WUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQU07Z0JBQ25FLEtBQUssRUFBRSx5QkFBeUI7Z0JBQ2hDLFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2YsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxPQUFPLEVBQUUsQ0FDUCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ25ELENBQ0YsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxFQUFFLENBQ1AsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQU8sQ0FBQyxFQUFFLEVBQUU7b0JBQzVCLE9BQUEsSUFBSSxDQUFDLFNBQVMsQ0FDWixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3pELENBQUE7a0JBQUEsQ0FDRixDQUNGLENBQ0Y7cUJBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLHdCQUF3QixDQUFDLFNBQVMsQ0FBQztxQkFDOUQsTUFBTSxDQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsTUFBTSxLQUFLLHdCQUF3QixDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsY0FBYyxDQUNwRTtnQkFDSCxXQUFXLEVBQUUsQ0FDWCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBTyxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsT0FBQSxJQUFJLENBQUMsU0FBUyxDQUNaLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDekQsQ0FBQTtrQkFBQSxDQUNGLENBQ0YsQ0FDRixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyx3QkFBd0IsQ0FBQyxTQUFTLENBQUM7YUFDakUsQ0FBQztRQUNKLENBQUM7S0FBQTtJQUVZLGVBQWUsQ0FBQyxPQUFlOztZQUMxQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBTTtnQkFDNUMsS0FBSyxFQUFFLG9CQUFvQjtnQkFDM0IsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFO2FBQ3ZCLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7S0FBQTtJQUVZLG9CQUFvQixDQUMvQixXQUFpQyxvQkFBb0IsQ0FBQyxPQUFPOztZQUU3RCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSTtxQkFDckMsR0FBRyxDQUFxQix1Q0FBdUMsQ0FBQztxQkFDaEUsU0FBUyxFQUFFLENBQUM7YUFDaEI7WUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQzlELENBQUM7UUFDSixDQUFDO0tBQUE7SUFFWSxrQkFBa0IsQ0FBQyxNQUEwQjs7WUFDeEQsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUN4QyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUN6QixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtvQkFDdkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDekIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTztvQkFDN0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2lCQUNoQztnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsd0JBQXdCLEVBQUUsSUFBSTtvQkFDOUIseUJBQXlCLEVBQUUsTUFBTSxDQUFDLGVBQWU7b0JBQ2pELGNBQWMsRUFBRTt3QkFDZCxJQUFJLEVBQUUsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7cUJBQ3ZEO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDO0tBQUE7SUFFWSxnQkFBZ0IsQ0FBQyxRQUFnQjs7WUFDNUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDekIsUUFBUSxFQUFFLG9DQUFvQztnQkFDOUMsU0FBUyxFQUFFO29CQUNULEtBQUssRUFBRTt3QkFDTCxFQUFFLEVBQUUsUUFBUTtxQkFDYjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVZLGFBQWEsQ0FDeEIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsR0FBVzs7WUFFWCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFO2dCQUN0RSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsTUFBTSxFQUFFLEdBQUc7YUFDWixDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQztLQUFBO0lBRVksZ0JBQWdCLENBQzNCLE1BQWdDOztZQUVoQyxNQUFNLE1BQU0sR0FBb0I7Z0JBQzlCLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUTtnQkFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUN6QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7Z0JBQ2pDLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLG9CQUFvQixFQUFFO29CQUNwQix3QkFBd0IsRUFBRSxJQUFJO29CQUM5Qix5QkFBeUIsRUFBRSxNQUFNLENBQUMsZUFBZTtvQkFDakQsY0FBYyxFQUFFO3dCQUNkLElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztxQkFDdkQ7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVoRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDZixDQUFDO0tBQUE7SUFFWSxpQkFBaUIsQ0FDNUIsUUFBZ0IsRUFDaEIsV0FBbUI7O1lBRW5CLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsRUFBRSxFQUFFLFFBQVE7d0JBQ1osS0FBSyxFQUFFLFdBQVc7cUJBQ25CO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRVksaUJBQWlCLENBQzVCLE9BQWtDOztZQUVsQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUN0RCxPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsc0JBQXNCLEVBQzlCLE9BQU8sQ0FBQyx5QkFBeUIsRUFDakMsSUFBSSxDQUNMLENBQUM7WUFDRixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDZixDQUFDO0tBQUE7SUFFWSxrQkFBa0IsQ0FBQyxPQUFlOztZQUM3QyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN6QixRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLEVBQUUsRUFBRSxPQUFPO3FCQUNaO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRU0sc0JBQXNCLENBQzNCLFVBQWtCLEVBQ2xCLEtBQWEsRUFDYixZQUEwQixFQUMxQixXQUF5QjtRQUV6QixPQUFPLFdBQVc7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1lBQ25FLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sb0JBQW9CLENBQ3pCLFFBQWdCLEVBQ2hCLEtBQWEsRUFDYixZQUEwQixFQUMxQixXQUF3QjtRQUV4QixPQUFPLFdBQVc7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRWEsY0FBYyxDQUMxQixXQUFtQixFQUNuQixLQUFhLEVBQ2IsWUFBMEIsRUFDMUIsV0FBd0I7O1lBRXhCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDbkQsWUFBWSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUN4QyxDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUNyRCxXQUFXLENBQUMsR0FBRyxFQUNmLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUNyQixDQUFDO1lBRUYsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDekIsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsU0FBUyxFQUFFO29CQUNULEtBQUssRUFBRTt3QkFDTCxFQUFFLEVBQUUsV0FBVzt3QkFDZixJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUU7d0JBQ3JCLFVBQVUsRUFBRSxXQUFXO3dCQUN2QixLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7d0JBQ2IsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFO3dCQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7cUJBQ3ZDO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRWEsZ0JBQWdCLENBQzVCLFdBQW1CLEVBQ25CLGNBQXNCOztZQUV0QixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN6QixRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLEVBQUUsRUFBRSxXQUFXO3dCQUNmLElBQUksRUFBRSxjQUFjO3FCQUNyQjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVZLGVBQWUsQ0FBQyxFQUFPOzs7WUFDbEMsSUFBSTtnQkFDRixNQUFNLFdBQVcsR0FDZixFQUFFLENBQUMsaUJBQWlCO29CQUNwQixDQUFDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDBCQUEwQixDQUM3RCxFQUFFLENBQUMsaUJBQWlCLENBQ3JCLENBQUMsQ0FBQztnQkFDTCxNQUFNLGFBQWEsR0FDakIsRUFBRSxDQUFDLGFBQWE7b0JBQ2hCLENBQUMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0NBQWdDLENBQ25FLEVBQUUsQ0FBQyxhQUFhLENBQ2pCLENBQUMsQ0FBQztnQkFFTCxPQUFPO29CQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtvQkFDM0IsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNO29CQUMvQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO29CQUN4RCxJQUFJLEVBQUUsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJO29CQUM5RCxPQUFPLEVBQUUsV0FBVztvQkFDcEIsZUFBZSxFQUFFLGFBQWE7b0JBQzlCLGFBQWEsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsYUFBYTtvQkFDcEQsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDM0IsUUFBUSxFQUFFO3dCQUNSLFdBQVcsRUFBRTs0QkFDWCxTQUFTLEVBQ1AsQ0FBQyxPQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSwwQ0FBRSxVQUFVLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7eUJBQ2xFO3FCQUNGO2lCQUNGLENBQUM7YUFDSDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLElBQUksQ0FBQzthQUNiOztLQUNGO0lBRWEsU0FBUyxDQUNyQixRQUE4Qjs7O1lBRTlCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVc7Z0JBQy9CLENBQUMsT0FBQyxRQUFRLENBQUMsU0FBUywwQ0FBRSxJQUFJLENBQzFCLENBQUMsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVztnQkFDaEMsQ0FBQyxPQUFDLFFBQVEsQ0FBQyxTQUFTLDBDQUFFLEtBQUssQ0FDM0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMscUJBQXFCLENBQUM7WUFFekUsT0FBTztnQkFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUk7Z0JBQzNCLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBNEM7Z0JBQzdELEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxlQUFlO2dCQUNyQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7Z0JBQ25DLElBQUk7Z0JBQ0osS0FBSztnQkFDTCxRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVc7Z0JBQzlCLGNBQWMsRUFBRSxRQUFRLENBQUMsV0FBVztvQkFDbEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUI7b0JBQ2xDLENBQUMsQ0FBQyxRQUFRLENBQUMsdUJBQXVCO2dCQUNwQyxhQUFhLEVBQUUsUUFBUSxDQUFDLHNCQUFzQjtnQkFDOUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCO2dCQUNqRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYTtnQkFDdkMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxTQUFTO2FBQ3BDLENBQUM7O0tBQ0g7Ozs7WUEzVUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUExQ1EsVUFBVTtZQUVWLGVBQWU7WUFhZix3QkFBd0I7WUFDeEIsV0FBVztZQWJYLG9CQUFvQjtZQUdwQixrQkFBa0I7WUFNbEIsZUFBZTtZQUNmLFVBQVU7WUFGVixpQkFBaUI7WUFOakIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjZXNzTGV2ZWwgfSBmcm9tICcuLi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUV4Y2hhbmdlU2VydmljZSB9IGZyb20gJy4uL2tleS1leGNoYW5nZS9rZXktZXhjaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBEZWNyeXB0ZWRLZXlFeGNoYW5nZSxcbiAgUmVzcG9uZE90a0lucHV0LFxufSBmcm9tICcuLi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLnR5cGVzJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGFjdENhcmROYW1lIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IFNoYXJlZENvbnRhY3RDYXJkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC1jb250YWN0LWNhcmQvc2hhcmVkLWNvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2FuY2VsVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbixcbiAgR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgR2V0VHJ1c3RlZFBhcnR5UXVlcnksXG4gIFNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUNhdGVnb3J5TXV0YXRpb24sXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eS5ncWwnO1xuaW1wb3J0IHtcbiAgQWNjZXB0VHJ1c3RlZFBhcnR5SW52aXRlLFxuICBDb25maXJtVHJ1c3RlZFBhcnR5SW52aXRlLFxuICBJbnZpdGVUcnVzdGVkUGFydHksXG4gIFRydXN0ZWRQYXJ0aWVzLFxuICBUcnVzdGVkUGFydHksXG4gIFRydXN0ZWRQYXJ0eUludml0ZSxcbiAgVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLFxuICBUcnVzdGVkUGFydHlSb2xlLFxuICBUcnVzdGVkUGFydHlSb2xlVHlwZSxcbiAgVHJ1c3RlZFBhcnR5VHlwZSxcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eVNlcnZpY2Uge1xuICBwcml2YXRlIHRydXN0ZWRQYXJ0eVJvbGVzOiBUcnVzdGVkUGFydHlSb2xlW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcbiAgICBwcml2YXRlIHNoYXJlZENvbnRhY3RDYXJkU2VydmljZTogU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RXhjaGFuZ2VTZXJ2aWNlOiBLZXlFeGNoYW5nZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaFNlcnZpY2U6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0aWVzKCk6IFByb21pc2U8VHJ1c3RlZFBhcnR5W10+IHtcbiAgICBjb25zdCB7IHRwcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRwcy5lZGdlcy5tYXAoKHgpID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHgubm9kZSkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxUcnVzdGVkUGFydGllcygpOiBQcm9taXNlPFRydXN0ZWRQYXJ0aWVzPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpO1xuICAgIGNvbnN0IHsgdHBzLCBpbnZpdGVzLCBzZW50SW52aXRlcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHVzZXJJZDogdXNlci5pZCxcbiAgICAgICAgaXNFeHBpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGFydGllczogKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHk+KFxuICAgICAgICAgIHRwcy5lZGdlcy5tYXAoKHgpID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHgubm9kZSkpXG4gICAgICAgIClcbiAgICAgICkuZmlsdGVyKCh4KSA9PiB4KSxcbiAgICAgIGludml0ZXM6IChcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8VHJ1c3RlZFBhcnR5SW52aXRlPihcbiAgICAgICAgICBpbnZpdGVzLmVkZ2VzLm1hcChhc3luYyAoeCkgPT5cbiAgICAgICAgICAgIHRoaXMubWFwSW52aXRlKFxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5kZWNyeXB0S2V5RXhjaGFuZ2UoeC5ub2RlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnN0YXR1cyAhPT0gVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLkNvbXBsZXRlZClcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgIHguc3RhdHVzICE9PSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMuSW52aXRlZCB8fCB4LmFjdGlvblJlcXVpcmVkXG4gICAgICAgICksXG4gICAgICBzZW50SW52aXRlczogKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHlJbnZpdGU+KFxuICAgICAgICAgIHNlbnRJbnZpdGVzLmVkZ2VzLm1hcChhc3luYyAoeCkgPT5cbiAgICAgICAgICAgIHRoaXMubWFwSW52aXRlKFxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5kZWNyeXB0S2V5RXhjaGFuZ2UoeC5ub2RlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5maWx0ZXIoKHgpID0+IHguc3RhdHVzICE9PSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMuQ29tcGxldGVkKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0eShwYXJ0eUlkOiBzdHJpbmcpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eT4ge1xuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogR2V0VHJ1c3RlZFBhcnR5UXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHsgcGFydHlJZCB9LFxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm1hcFRydXN0ZWRQYXJ0eSh0cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJ1c3RlZFBhcnR5Um9sZXMoXG4gICAgcm9sZVR5cGU6IFRydXN0ZWRQYXJ0eVJvbGVUeXBlID0gVHJ1c3RlZFBhcnR5Um9sZVR5cGUuR2VuZXJhbFxuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVJvbGVbXT4ge1xuICAgIGlmICghdGhpcy50cnVzdGVkUGFydHlSb2xlcykge1xuICAgICAgdGhpcy50cnVzdGVkUGFydHlSb2xlcyA9IGF3YWl0IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PFRydXN0ZWRQYXJ0eVJvbGVbXT4oJy9hc3NldHMvbWV0YS90cnVzdGVkLXBhcnR5LXJvbGVzLmpzb24nKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICB0aGlzLnRydXN0ZWRQYXJ0eVJvbGVzLmZpbHRlcigoeCkgPT4geC5yb2xlVHlwZSA9PT0gcm9sZVR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbnZpdGVUcnVzdGVkUGFydHkoaW52aXRlOiBJbnZpdGVUcnVzdGVkUGFydHkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICByZXNwb25kZXJVc2VybmFtZTogaW52aXRlLnBhcnR5LnVzZXJuYW1lLFxuICAgICAgZW1haWw6IGludml0ZS5wYXJ0eS5lbWFpbCxcbiAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgbmFtZTogaW52aXRlLnBhcnR5Lm5hbWUsXG4gICAgICAgIGVtYWlsOiBpbnZpdGUucGFydHkuZW1haWwsXG4gICAgICAgIG1lc3NhZ2U6IGludml0ZS5wYXJ0eS5tZXNzYWdlLFxuICAgICAgICBwZXJtaXNzaW9uczogaW52aXRlLnBlcm1pc3Npb25zLFxuICAgICAgfSxcbiAgICAgIGNvbnRhY3RDYXJkOiB7XG4gICAgICAgIHBsYWluT3duZXJDaXBoZXJEYXRhSnNvbjogbnVsbCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhSnNvbjogaW52aXRlLm15U2hhcmVkRGV0YWlscyxcbiAgICAgICAgb3duZXJQbGFpbkRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGludml0ZS5teVNoYXJlZERldGFpbHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuaW5pdGlhdGVPdGsocGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxJbnZpdGF0aW9uKGludml0ZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogQ2FuY2VsVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGludml0ZUlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnZpdGF0aW9uKFxuICAgIGludml0ZUlkOiBzdHJpbmcsXG4gICAgaW52aXRlVG9rZW46IHN0cmluZyxcbiAgICBrZXk6IHN0cmluZ1xuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eUludml0ZT4ge1xuICAgIGNvbnN0IGV4Y2hhbmdlID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuZ2V0S2V5RXhjaGFuZ2UoaW52aXRlSWQsIHtcbiAgICAgIHRva2VuOiBpbnZpdGVUb2tlbixcbiAgICAgIG90S2V5Szoga2V5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMubWFwSW52aXRlKGV4Y2hhbmdlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhY2NlcHRJbnZpdGF0aW9uKFxuICAgIGludml0ZTogQWNjZXB0VHJ1c3RlZFBhcnR5SW52aXRlXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcGFyYW1zOiBSZXNwb25kT3RrSW5wdXQgPSB7XG4gICAgICBpZDogaW52aXRlLmludml0ZUlkLFxuICAgICAgdG9rZW46IGludml0ZS5pbnZpdGVUb2tlbixcbiAgICAgIGRlY3J5cHRlZE90azogaW52aXRlLmRlY3J5cHRlZE90ayxcbiAgICAgIGluaXRpYXRvckNvbnRhY3RDYXJkOiBudWxsLFxuICAgICAgcmVzcG9uZGVyQ29udGFjdENhcmQ6IHtcbiAgICAgICAgcGxhaW5Pd25lckNpcGhlckRhdGFKc29uOiBudWxsLFxuICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGFKc29uOiBpbnZpdGUubXlTaGFyZWREZXRhaWxzLFxuICAgICAgICBvd25lclBsYWluRGF0YToge1xuICAgICAgICAgIG5hbWU6IG5ldyBDb250YWN0Q2FyZE5hbWUoaW52aXRlLm15U2hhcmVkRGV0YWlscy5uYW1lKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLnJlc3BvbmRPdGsocGFyYW1zKTtcblxuICAgIHJldHVybiB0cC5pZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWNsaW5lSW52aXRhdGlvbihcbiAgICBpbnZpdGVJZDogc3RyaW5nLFxuICAgIGludml0ZVRva2VuOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IERlY2xpbmVUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogaW52aXRlSWQsXG4gICAgICAgICAgdG9rZW46IGludml0ZVRva2VuLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb25maXJtSW52aXRhdGlvbihcbiAgICBjb25maXJtOiBDb25maXJtVHJ1c3RlZFBhcnR5SW52aXRlXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyB0cCB9ID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuY29tcGxldGVPdGsoXG4gICAgICBjb25maXJtLmludml0ZUlkLFxuICAgICAgY29uZmlybS5pbml0aWF0b3JSb290S2V5Q2lwaGVyLFxuICAgICAgY29uZmlybS5pbml0aWF0b3JPbmVUaW1lUGJrQ2lwaGVyLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgcmV0dXJuIHRwLmlkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZVRydXN0ZWRQYXJ0eShwYXJ0eUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlVHJ1c3RlZFBhcnR5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZDogcGFydHlJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2F0ZWdvcnlBY2Nlc3NMZXZlbChcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICB0cnVzdGVkUGFydHk6IFRydXN0ZWRQYXJ0eSxcbiAgICBhY2Nlc3NMZXZlbD86IEFjY2Vzc0xldmVsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhY2Nlc3NMZXZlbFxuICAgICAgPyB0aGlzLnNoYXJlRGlyZWN0b3J5KGNhdGVnb3J5SWQsIGtleUlkLCB0cnVzdGVkUGFydHksIGFjY2Vzc0xldmVsKVxuICAgICAgOiB0aGlzLnVuc2hhcmVEaXJlY3RvcnkoY2F0ZWdvcnlJZCwgdHJ1c3RlZFBhcnR5LmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWNvcmRBY2Nlc3NMZXZlbChcbiAgICByZWNvcmRJZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXG4gICAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhY2Nlc3NMZXZlbFxuICAgICAgPyB0aGlzLnNoYXJlRGlyZWN0b3J5KHJlY29yZElkLCBrZXlJZCwgdHJ1c3RlZFBhcnR5LCBhY2Nlc3NMZXZlbClcbiAgICAgIDogdGhpcy51bnNoYXJlRGlyZWN0b3J5KHJlY29yZElkLCB0cnVzdGVkUGFydHkuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaGFyZURpcmVjdG9yeShcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXG4gICAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShrZXlJZCk7XG4gICAgY29uc3Qgd3JhcHBpbmdLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRLZXkoXG4gICAgICB0cnVzdGVkUGFydHkudXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWRcbiAgICApO1xuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICB3cmFwcGluZ0tleS5qd2ssXG4gICAgICBrZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogU2hhcmVDYXRlZ29yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHRwSWQ6IHRydXN0ZWRQYXJ0eS5pZCxcbiAgICAgICAgICBhY2Nlc3NSb2xlOiBhY2Nlc3NMZXZlbCxcbiAgICAgICAgICBrZXlJZDoga2V5LmlkLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHdyYXBwaW5nS2V5LmlkLFxuICAgICAgICAgIHdyYXBwZWRLZXk6IEpTT04uc3RyaW5naWZ5KHdyYXBwZWRLZXkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdW5zaGFyZURpcmVjdG9yeShcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIHRydXN0ZWRQYXJ0eUlkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IFVuc2hhcmVDYXRlZ29yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHRwSWQ6IHRydXN0ZWRQYXJ0eUlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtYXBUcnVzdGVkUGFydHkodHA6IGFueSk6IFByb21pc2U8VHJ1c3RlZFBhcnR5PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRhY3RDYXJkID1cbiAgICAgICAgdHAuc2hhcmVkQ29udGFjdENhcmQgJiZcbiAgICAgICAgKGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLmRlY3J5cHRUcnVzdGVkUGFydHlEZXRhaWxzKFxuICAgICAgICAgIHRwLnNoYXJlZENvbnRhY3RDYXJkXG4gICAgICAgICkpO1xuICAgICAgY29uc3QgbXlDb250YWN0Q2FyZCA9XG4gICAgICAgIHRwLm15Q29udGFjdENhcmQgJiZcbiAgICAgICAgKGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLmRlY3J5cHRTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzKFxuICAgICAgICAgIHRwLm15Q29udGFjdENhcmRcbiAgICAgICAgKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB0cC5pZCxcbiAgICAgICAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZS5Vc2VyLCAvLyBUT0RPOiB3aGVuIHBhcnRuZXJzXG4gICAgICAgIGhhc1NjZW5hcmlvczogISF0cC5zaGFyZWRTY2VuYXJpb3MuZWRnZXMubGVuZ3RoLFxuICAgICAgICBoYXNTaGFyZWRWYXVsdDogISF0cC50aGVpckl0ZW1zLmRpcmVjdG9yaWVzLmVkZ2VzLmxlbmd0aCxcbiAgICAgICAgbmFtZTogY29udGFjdENhcmQgJiYgY29udGFjdENhcmQubmFtZSAmJiBjb250YWN0Q2FyZC5uYW1lLm5hbWUsXG4gICAgICAgIGRldGFpbHM6IGNvbnRhY3RDYXJkLFxuICAgICAgICBteVNoYXJlZERldGFpbHM6IG15Q29udGFjdENhcmQsXG4gICAgICAgIHVzZXJTaGFyZWRLZXk6IHRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXksXG4gICAgICAgIHVzZXJuYW1lOiB0cC5vdGhlci51c2VybmFtZSxcbiAgICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgICBzaGFyZWRWYXVsdDoge1xuICAgICAgICAgICAgaGFzQWNjZXNzOlxuICAgICAgICAgICAgICAodHAub3RoZXIuZmVhdHVyZXM/LnNoYXJlVmF1bHQgfHwgWydub2FjY2VzcyddKVswXSA9PT0gJ2FjY2VzcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgVHJ1c3RlZCBQYXJ0eS4nLCBlLCB0cCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcEludml0ZShcbiAgICBleGNoYW5nZTogRGVjcnlwdGVkS2V5RXhjaGFuZ2VcbiAgKTogUHJvbWlzZTxUcnVzdGVkUGFydHlJbnZpdGU+IHtcbiAgICBjb25zdCBjb250YWN0Q2FyZCA9IGV4Y2hhbmdlLmNvbnRhY3RDYXJkO1xuICAgIGNvbnN0IG5hbWUgPSBleGNoYW5nZS5pc0luaXRpYXRvclxuICAgICAgPyBleGNoYW5nZS5teU1lc3NhZ2U/Lm5hbWVcbiAgICAgIDogY29udGFjdENhcmQgJiYgY29udGFjdENhcmQubmFtZSAmJiBjb250YWN0Q2FyZC5uYW1lLm5hbWU7XG4gICAgY29uc3QgZW1haWwgPSBleGNoYW5nZS5pc0luaXRpYXRvclxuICAgICAgPyBleGNoYW5nZS5teU1lc3NhZ2U/LmVtYWlsXG4gICAgICA6IChjb250YWN0Q2FyZCAmJiBjb250YWN0Q2FyZC5lbWFpbCkgfHwgZXhjaGFuZ2UucmVzcG9uZGVyRW1haWxBZGRyZXNzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBleGNoYW5nZS5pZCxcbiAgICAgIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGUuVXNlciwgLy8gdG9kbyB3aGVuIHBhcnRuZXJzXG4gICAgICBzdGF0dXM6IGV4Y2hhbmdlLnN0YXRlIGFzIHVua25vd24gYXMgVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLFxuICAgICAgdG9rZW46IGV4Y2hhbmdlLnRva2VuLFxuICAgICAgdG9rZW5FeHBpcnk6IGV4Y2hhbmdlLnRva2VuRXhwaXJ5VGltZSxcbiAgICAgIGRlY3J5cHRlZE90azogZXhjaGFuZ2UuZGVjcnlwdGVkT3RrLFxuICAgICAgbmFtZSxcbiAgICAgIGVtYWlsLFxuICAgICAgaXNTZW5kZXI6IGV4Y2hhbmdlLmlzSW5pdGlhdG9yLFxuICAgICAgYWN0aW9uUmVxdWlyZWQ6IGV4Y2hhbmdlLmlzSW5pdGlhdG9yXG4gICAgICAgID8gZXhjaGFuZ2UuaW5pdGlhdG9yQWN0aW9uUmVxdWlyZWRcbiAgICAgICAgOiBleGNoYW5nZS5yZXNwb25kZXJBY3Rpb25SZXF1aXJlZCxcbiAgICAgIHJvb3RLZXlDaXBoZXI6IGV4Y2hhbmdlLmluaXRpYXRvclJvb3RLZXlDaXBoZXIsXG4gICAgICBwYmtDaXBoZXI6IGV4Y2hhbmdlLm90ay5pbml0aWF0b3JPbmVUaW1lUGJrQ2lwaGVyLFxuICAgICAgaXNFeHBpcmVkOiBleGNoYW5nZS5pc0V4cGlyZWQsXG4gICAgICBkZXRhaWxzOiBjb250YWN0Q2FyZCxcbiAgICAgIG1lc3NhZ2U6IGV4Y2hhbmdlLm1lc3NhZ2UsXG4gICAgICBteVNoYXJlZERldGFpbHM6IGV4Y2hhbmdlLm15Q29udGFjdENhcmQsXG4gICAgICBteVNoYXJlZE1lc3NhZ2U6IGV4Y2hhbmdlLm15TWVzc2FnZSxcbiAgICB9O1xuICB9XG59XG4iXX0=