@lifeready/core 1.0.4 → 1.0.6

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 (226) hide show
  1. package/README.md +62 -62
  2. package/bundles/lifeready-core.umd.js +15445 -15445
  3. package/bundles/lifeready-core.umd.js.map +1 -1
  4. package/bundles/lifeready-core.umd.min.js +1 -1
  5. package/bundles/lifeready-core.umd.min.js.map +1 -1
  6. package/esm2015/lib/_common/ast.js +40 -40
  7. package/esm2015/lib/_common/deferred-promise.js +24 -24
  8. package/esm2015/lib/_common/exceptions.js +157 -157
  9. package/esm2015/lib/_common/queries.gql.js +190 -190
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -79
  11. package/esm2015/lib/_common/types.js +1 -1
  12. package/esm2015/lib/_common/utils.js +44 -44
  13. package/esm2015/lib/api/contact-card.gql.js +79 -79
  14. package/esm2015/lib/api/contact-card.service.js +154 -154
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -60
  16. package/esm2015/lib/api/contact-card2.service.js +103 -103
  17. package/esm2015/lib/api/file.service.js +74 -74
  18. package/esm2015/lib/api/item2.gql.js +110 -110
  19. package/esm2015/lib/api/item2.service.js +311 -311
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -188
  21. package/esm2015/lib/api/key-exchange.service.js +442 -442
  22. package/esm2015/lib/api/key-exchange.types.js +18 -18
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -171
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -479
  25. package/esm2015/lib/api/lock.gql.js +40 -40
  26. package/esm2015/lib/api/lock.service.js +64 -64
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -46
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -6
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -155
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -213
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -51
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -48
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -18
  34. package/esm2015/lib/api/message.service.js +138 -138
  35. package/esm2015/lib/api/persist.service.js +181 -181
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -93
  37. package/esm2015/lib/api/query-processor/index.js +3 -3
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -192
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -109
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -119
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -41
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -117
  43. package/esm2015/lib/api/time.service.js +146 -146
  44. package/esm2015/lib/api/types/graphql.types.js +7 -7
  45. package/esm2015/lib/api/types/index.js +3 -3
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -71
  47. package/esm2015/lib/auth/auth.config.js +57 -57
  48. package/esm2015/lib/auth/auth.gql.js +48 -48
  49. package/esm2015/lib/auth/auth.types.js +27 -27
  50. package/esm2015/lib/auth/idle.service.js +168 -168
  51. package/esm2015/lib/auth/idle.types.js +7 -7
  52. package/esm2015/lib/auth/lbop.service.js +355 -355
  53. package/esm2015/lib/auth/life-ready-auth.service.js +500 -500
  54. package/esm2015/lib/auth/password.service.js +320 -320
  55. package/esm2015/lib/auth/register.service.js +172 -172
  56. package/esm2015/lib/auth/two-factor.service.js +74 -74
  57. package/esm2015/lib/category/category-meta.service.js +99 -99
  58. package/esm2015/lib/category/category.gql.js +406 -406
  59. package/esm2015/lib/category/category.service.js +390 -390
  60. package/esm2015/lib/category/category.types.js +29 -29
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -11
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -189
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -237
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -280
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -200
  66. package/esm2015/lib/cryptography/key.service.js +124 -124
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -169
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -29
  69. package/esm2015/lib/life-ready.config.js +84 -84
  70. package/esm2015/lib/life-ready.module.js +74 -74
  71. package/esm2015/lib/plan/plan.gql.js +123 -123
  72. package/esm2015/lib/plan/plan.service.js +149 -149
  73. package/esm2015/lib/plan/plan.types.js +11 -11
  74. package/esm2015/lib/record/record-attachment.service.js +101 -101
  75. package/esm2015/lib/record/record.gql.js +179 -179
  76. package/esm2015/lib/record/record.service.js +206 -206
  77. package/esm2015/lib/record/record.types.js +15 -15
  78. package/esm2015/lib/record-type/record-type.service.js +75 -75
  79. package/esm2015/lib/record-type/record-type.types.js +28 -28
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -105
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -1
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -300
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -52
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -97
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -1
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -150
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -229
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -1
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -269
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -368
  91. package/esm2015/lib/scenario/scenario.service.js +611 -611
  92. package/esm2015/lib/scenario/scenario.types.js +64 -64
  93. package/esm2015/lib/search/search.gql.js +62 -62
  94. package/esm2015/lib/search/search.service.js +156 -156
  95. package/esm2015/lib/search/search.types.js +6 -6
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -112
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -129
  98. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -4
  99. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -232
  100. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -299
  101. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -148
  102. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -326
  103. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -41
  104. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -87
  105. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -215
  106. package/esm2015/lib/users/profile-details.service.js +214 -214
  107. package/esm2015/lib/users/profile.gql.js +97 -97
  108. package/esm2015/lib/users/profile.service.js +169 -169
  109. package/esm2015/lib/users/profile.types.js +34 -34
  110. package/esm2015/lib/users/user.gql.js +60 -60
  111. package/esm2015/lib/users/user.service.js +79 -79
  112. package/esm2015/lib/users/user.types.js +5 -5
  113. package/esm2015/lifeready-core.js +10 -10
  114. package/esm2015/public-api.js +81 -81
  115. package/fesm2015/lifeready-core.js +13088 -13088
  116. package/fesm2015/lifeready-core.js.map +1 -1
  117. package/lib/_common/ast.d.ts +11 -11
  118. package/lib/_common/deferred-promise.d.ts +12 -12
  119. package/lib/_common/exceptions.d.ts +109 -109
  120. package/lib/_common/queries.gql.d.ts +10 -10
  121. package/lib/_common/run-outside-angular.d.ts +14 -14
  122. package/lib/_common/types.d.ts +10 -10
  123. package/lib/_common/utils.d.ts +3 -3
  124. package/lib/api/contact-card.gql.d.ts +7 -7
  125. package/lib/api/contact-card.service.d.ts +52 -52
  126. package/lib/api/contact-card2.gql.d.ts +34 -34
  127. package/lib/api/contact-card2.service.d.ts +49 -49
  128. package/lib/api/file.service.d.ts +18 -18
  129. package/lib/api/item2.gql.d.ts +96 -96
  130. package/lib/api/item2.service.d.ts +177 -177
  131. package/lib/api/key-exchange.gql.d.ts +9 -9
  132. package/lib/api/key-exchange.service.d.ts +39 -39
  133. package/lib/api/key-exchange.types.d.ts +196 -196
  134. package/lib/api/key-exchange2.gql.d.ts +125 -125
  135. package/lib/api/key-exchange2.service.d.ts +187 -187
  136. package/lib/api/lock.gql.d.ts +27 -27
  137. package/lib/api/lock.service.d.ts +25 -25
  138. package/lib/api/lr-apollo.service.d.ts +15 -15
  139. package/lib/api/lr-graphql/index.d.ts +5 -5
  140. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -60
  141. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -27
  142. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -28
  143. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -8
  144. package/lib/api/lr-graphql/lr.service.d.ts +9 -9
  145. package/lib/api/message.service.d.ts +58 -58
  146. package/lib/api/persist.service.d.ts +31 -31
  147. package/lib/api/query-processor/common-processors.service.d.ts +36 -36
  148. package/lib/api/query-processor/index.d.ts +2 -2
  149. package/lib/api/query-processor/query-processor.service.d.ts +18 -18
  150. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -15
  151. package/lib/api/shared-contact-card.service.d.ts +33 -33
  152. package/lib/api/shared-contact-card2.gql.d.ts +36 -36
  153. package/lib/api/shared-contact-card2.service.d.ts +45 -45
  154. package/lib/api/time.service.d.ts +16 -16
  155. package/lib/api/types/graphql.types.d.ts +29 -29
  156. package/lib/api/types/index.d.ts +2 -2
  157. package/lib/api/types/lr-graphql.types.d.ts +393 -385
  158. package/lib/auth/auth.config.d.ts +5 -5
  159. package/lib/auth/auth.gql.d.ts +15 -15
  160. package/lib/auth/auth.types.d.ts +66 -66
  161. package/lib/auth/idle.service.d.ts +40 -40
  162. package/lib/auth/idle.types.d.ts +10 -10
  163. package/lib/auth/lbop.service.d.ts +91 -91
  164. package/lib/auth/life-ready-auth.service.d.ts +59 -59
  165. package/lib/auth/password.service.d.ts +78 -78
  166. package/lib/auth/register.service.d.ts +25 -25
  167. package/lib/auth/two-factor.service.d.ts +15 -15
  168. package/lib/category/category-meta.service.d.ts +23 -23
  169. package/lib/category/category.gql.d.ts +45 -45
  170. package/lib/category/category.service.d.ts +67 -67
  171. package/lib/category/category.types.d.ts +79 -79
  172. package/lib/cryptography/cryptography.types.d.ts +83 -83
  173. package/lib/cryptography/encryption.service.d.ts +41 -41
  174. package/lib/cryptography/key-factory.service.d.ts +38 -38
  175. package/lib/cryptography/key-graph.service.d.ts +33 -33
  176. package/lib/cryptography/key-meta.service.d.ts +44 -44
  177. package/lib/cryptography/key.service.d.ts +36 -36
  178. package/lib/cryptography/slip39.service.d.ts +43 -43
  179. package/lib/cryptography/web-crypto.service.d.ts +5 -5
  180. package/lib/life-ready.config.d.ts +14 -14
  181. package/lib/life-ready.module.d.ts +5 -5
  182. package/lib/plan/plan.gql.d.ts +11 -11
  183. package/lib/plan/plan.service.d.ts +33 -33
  184. package/lib/plan/plan.types.d.ts +31 -31
  185. package/lib/record/record-attachment.service.d.ts +16 -16
  186. package/lib/record/record.gql.d.ts +14 -14
  187. package/lib/record/record.service.d.ts +25 -25
  188. package/lib/record/record.types.d.ts +57 -57
  189. package/lib/record-type/record-type.service.d.ts +11 -11
  190. package/lib/record-type/record-type.types.d.ts +50 -50
  191. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -7
  192. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -63
  193. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -32
  194. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -5
  195. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -17
  196. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -18
  197. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -8
  198. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -30
  199. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -54
  200. package/lib/scenario/scenario-setup.service.d.ts +22 -22
  201. package/lib/scenario/scenario.gql.d.ts +34 -34
  202. package/lib/scenario/scenario.service.d.ts +58 -58
  203. package/lib/scenario/scenario.types.d.ts +217 -217
  204. package/lib/search/search.gql.d.ts +1 -1
  205. package/lib/search/search.service.d.ts +25 -25
  206. package/lib/search/search.types.d.ts +20 -20
  207. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -20
  208. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -35
  209. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -3
  210. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -218
  211. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -130
  212. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -9
  213. package/lib/trusted-parties/trusted-party.service.d.ts +44 -44
  214. package/lib/trusted-parties/trusted-party.types.d.ts +102 -102
  215. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -79
  216. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -114
  217. package/lib/users/profile-details.service.d.ts +21 -21
  218. package/lib/users/profile.gql.d.ts +11 -11
  219. package/lib/users/profile.service.d.ts +35 -35
  220. package/lib/users/profile.types.d.ts +96 -96
  221. package/lib/users/user.gql.d.ts +9 -9
  222. package/lib/users/user.service.d.ts +12 -12
  223. package/lib/users/user.types.d.ts +23 -23
  224. package/lifeready-core.d.ts +9 -9
  225. package/package.json +1 -1
  226. package/public-api.d.ts +77 -77
@@ -1,155 +1,155 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import * as lodash from 'lodash';
3
- import { Injectable, NgZone } from '@angular/core';
4
- import { Apollo } from 'apollo-angular';
5
- import { KeyGraphService } from '../../cryptography/key-graph.service';
6
- import { handleApolloError, LrBadStateException, LrUnsupportedException, } from '../../_common/exceptions';
7
- import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
8
- import { getQuery, getMutation } from '../../_common/ast';
9
- import gql from 'graphql-tag';
10
- import { QueryProcessorService } from '../query-processor';
11
- import { RunOutsideAngular } from '../../_common/run-outside-angular';
12
- import * as gqlPrinter from 'graphql/language/printer';
13
- import { LrMergedMutation } from './lr-merged-mutation';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "apollo-angular";
16
- import * as i2 from "../../cryptography/key-graph.service";
17
- import * as i3 from "../query-processor/query-processor.service";
18
- // Data structures
19
- // --------------------------------------------------------------------------
20
- const keyGraphFieldAstSelection = getQuery(gql `
21
- query {
22
- ${KeyGraphField}
23
- }
24
- `).selectionSet.selections[0];
25
- const fetchKeyGraphFieldAstSelection = getQuery(gql `
26
- query {
27
- ${FetchKeyGraphField}
28
- }
29
- `).selectionSet.selections[0];
30
- let LrGraphQLService = class LrGraphQLService {
31
- constructor(ngZone, apollo, keyGraph, queryProcessor) {
32
- this.ngZone = ngZone;
33
- this.apollo = apollo;
34
- this.keyGraph = keyGraph;
35
- this.queryProcessor = queryProcessor;
36
- this.stats = {
37
- queryCount: 0,
38
- mutationCount: 0,
39
- };
40
- }
41
- query(options) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- // Make copies to avoid side effect.
44
- options = lodash.cloneDeep(options);
45
- // Append the key graph query
46
- const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
47
- if (includeKeyGraph) {
48
- const operation = getQuery(options.query);
49
- operation.selectionSet.selections = [
50
- ...operation.selectionSet.selections,
51
- keyGraphFieldAstSelection,
52
- ];
53
- }
54
- const response = yield this.apollo.query(options).toPromise();
55
- this.stats.queryCount++;
56
- handleApolloError(response.errors);
57
- this.addKeys(response);
58
- const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
59
- return data;
60
- });
61
- }
62
- lrMutateImpl(lrMutation, options) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- if (options === null || options === void 0 ? void 0 : options.variables) {
65
- throw new LrUnsupportedException('Unsupported field: "options.variables"');
66
- }
67
- if (lrMutation.executed) {
68
- throw new LrBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
69
- }
70
- lrMutation.setExecuted();
71
- return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
72
- .then((res) => {
73
- // Resolve promises set on the lrMutation rather than the lrMutate() call.
74
- lrMutation.resolve(res);
75
- // Still need to return value to the promise waiting for the results of lrMutate().
76
- return res;
77
- })
78
- .catch((error) => {
79
- lrMutation.reject(error);
80
- throw error;
81
- });
82
- });
83
- }
84
- apolloMutate(options) {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- // Make copies to avoid side effect.
87
- options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
88
- // Append the key graph query
89
- const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
90
- if (includeKeyGraph) {
91
- const operation = getMutation(options.mutation);
92
- operation.selectionSet.selections = [
93
- ...operation.selectionSet.selections,
94
- fetchKeyGraphFieldAstSelection,
95
- ];
96
- }
97
- // Format to string and parse again. This allows the "loc": { "start": ... }
98
- // part of the DocumentNode to be correctly setup. It's extra processing
99
- // in serialising and parsing, but probably minimal overhead.
100
- options.mutation = gql(gqlPrinter.print(options.mutation));
101
- const response = yield this.apollo.mutate(options).toPromise();
102
- this.stats.mutationCount++;
103
- handleApolloError(response.errors);
104
- this.addKeys(response);
105
- const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
106
- return data;
107
- });
108
- }
109
- statsSnapshot() {
110
- return lodash.cloneDeep(this.stats);
111
- }
112
- addKeys(response) {
113
- if (response.data.keyGraph) {
114
- this.keyGraph.addKeys(response.data.keyGraph);
115
- delete response.data.keyGraph;
116
- }
117
- }
118
- isIncludeKeyGraph(includeKeyGraph) {
119
- // Default to true when null or undefined.
120
- return includeKeyGraph == null ? true : false;
121
- }
122
- lrMutate(lrMutations, options) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- if (lrMutations instanceof Array) {
125
- const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
126
- yield this.lrMutateImpl(merged, options);
127
- return merged.promise;
128
- }
129
- else {
130
- const resolved = yield lrMutations;
131
- yield this.lrMutateImpl(resolved, options);
132
- return resolved.promise;
133
- }
134
- });
135
- }
136
- };
137
- LrGraphQLService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrGraphQLService_Factory() { return new LrGraphQLService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.QueryProcessorService)); }, token: LrGraphQLService, providedIn: "root" });
138
- LrGraphQLService.decorators = [
139
- { type: Injectable, args: [{
140
- providedIn: 'root',
141
- },] }
142
- ];
143
- LrGraphQLService.ctorParameters = () => [
144
- { type: NgZone },
145
- { type: Apollo },
146
- { type: KeyGraphService },
147
- { type: QueryProcessorService }
148
- ];
149
- LrGraphQLService = __decorate([
150
- RunOutsideAngular({
151
- ngZoneName: 'ngZone',
152
- })
153
- ], LrGraphQLService);
154
- export { LrGraphQLService };
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL25ld3JlcG8va2MtY2xpZW50L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2FwaS9sci1ncmFwaHFsL2xyLWdyYXBocWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFxQixRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQzlCLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd0RSxPQUFPLEtBQUssVUFBVSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUV4RCxrQkFBa0I7QUFDbEIsNkVBQTZFO0FBQzdFLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTs7SUFFMUMsYUFBYTs7Q0FFaEIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFjLENBQUM7QUFFM0MsTUFBTSw4QkFBOEIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFBOztJQUUvQyxrQkFBa0I7O0NBRXJCLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBYyxDQUFDO0lBZ0Q5QixnQkFBZ0IsU0FBaEIsZ0JBQWdCO0lBTTNCLFlBQ1UsTUFBYyxFQUNkLE1BQWMsRUFDZCxRQUF5QixFQUN6QixjQUFxQztRQUhyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQVR2QyxVQUFLLEdBQTBCO1lBQ3JDLFVBQVUsRUFBRSxDQUFDO1lBQ2IsYUFBYSxFQUFFLENBQUM7U0FDakIsQ0FBQztJQU9DLENBQUM7SUFFRSxLQUFLLENBQ1QsT0FBNkI7O1lBRTdCLG9DQUFvQztZQUNwQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVwQyw2QkFBNkI7WUFDN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN4RSxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUc7b0JBQ2xDLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVO29CQUNwQyx5QkFBeUI7aUJBQzFCLENBQUM7YUFDSDtZQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQU8sT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUV4QixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUNqRCxRQUFRLENBQUMsSUFBSSxFQUNiLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekIsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBRWEsWUFBWSxDQUFDLFVBQVUsRUFBRSxPQUFROztZQUM3QyxJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxTQUFTLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxzQkFBc0IsQ0FDOUIsd0NBQXdDLENBQ3pDLENBQUM7YUFDSDtZQUVELElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLG1CQUFtQixDQUMzQiw2SEFBNkgsQ0FDOUgsQ0FBQzthQUNIO1lBRUQsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXpCLE9BQU8sSUFBSSxDQUFDLFlBQVksaUNBQ25CLE9BQU8sR0FDUCxVQUFVLENBQUMsY0FBYyxFQUM1QjtpQkFDQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWiwwRUFBMEU7Z0JBQzFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLG1GQUFtRjtnQkFDbkYsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7S0FBQTtJQUVLLFlBQVksQ0FDaEIsT0FBK0M7O1lBRS9DLG9DQUFvQztZQUNwQyxPQUFPLG1DQUNGLE9BQU8sS0FDVixRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQzdDLENBQUM7WUFFRiw2QkFBNkI7WUFDN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUV4RSxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEQsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUc7b0JBQ2xDLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVO29CQUNwQyw4QkFBOEI7aUJBQy9CLENBQUM7YUFDSDtZQUVELDRFQUE0RTtZQUM1RSx3RUFBd0U7WUFDeEUsNkRBQTZEO1lBQzdELE9BQU8sQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFM0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBSSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVsRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRTNCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQ2pELFFBQVEsQ0FBQyxJQUFJLEVBQ2IsT0FBTyxDQUFDLGdCQUFnQixDQUN6QixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQUE7SUFFRCxhQUFhO1FBQ1gsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sT0FBTyxDQUFDLFFBQVE7UUFDdEIsSUFBSyxRQUFRLENBQUMsSUFBb0IsQ0FBQyxRQUFRLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUUsUUFBUSxDQUFDLElBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxlQUFlO1FBQ3ZDLDBDQUEwQztRQUMxQyxPQUFPLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hELENBQUM7SUF3RUssUUFBUSxDQUNaLFdBRXFDLEVBQ3JDLE9BQTJCOztZQUUzQixJQUFJLFdBQVcsWUFBWSxLQUFLLEVBQUU7Z0JBQ2hDLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDO2dCQUNuQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFDekI7UUFDSCxDQUFDO0tBQUE7Q0FDRixDQUFBOzs7WUE5TkEsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFyRm9CLE1BQU07WUFDbEIsTUFBTTtZQVFOLGVBQWU7WUFVRyxxQkFBcUI7O0FBbUVuQyxnQkFBZ0I7SUFONUIsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLGdCQUFnQixDQTJONUI7U0EzTlksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcbmltcG9ydCB7XHJcbiAgUXVlcnlPcHRpb25zLFxyXG4gIE11dGF0aW9uT3B0aW9ucyxcclxuICBPcGVyYXRpb25WYXJpYWJsZXMsXHJcbiAgRmV0Y2hQb2xpY3ksXHJcbn0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XHJcbmltcG9ydCB7IE11dGF0aW9uQmFzZU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3dhdGNoUXVlcnlPcHRpb25zJztcclxuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi8uLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcclxuaW1wb3J0IHtcclxuICBoYW5kbGVBcG9sbG9FcnJvcixcclxuICBMckJhZFN0YXRlRXhjZXB0aW9uLFxyXG4gIExyVW5zdXBwb3J0ZWRFeGNlcHRpb24sXHJcbn0gZnJvbSAnLi4vLi4vX2NvbW1vbi9leGNlcHRpb25zJztcclxuaW1wb3J0IHsgRmV0Y2hLZXlHcmFwaEZpZWxkLCBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XHJcbmltcG9ydCB7IFR5cGVkRG9jdW1lbnROb2RlLCBnZXRRdWVyeSwgZ2V0TXV0YXRpb24gfSBmcm9tICcuLi8uLi9fY29tbW9uL2FzdCc7XHJcbmltcG9ydCBncWwgZnJvbSAnZ3JhcGhxbC10YWcnO1xyXG5pbXBvcnQgeyBQcm9jZXNzb3JPcHRpb25zLCBRdWVyeVByb2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS1wcm9jZXNzb3InO1xyXG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uLy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEZpZWxkTm9kZSB9IGZyb20gJ2dyYXBocWwnO1xyXG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XHJcbmltcG9ydCAqIGFzIGdxbFByaW50ZXIgZnJvbSAnZ3JhcGhxbC9sYW5ndWFnZS9wcmludGVyJztcclxuaW1wb3J0IHsgTHJNZXJnZWRNdXRhdGlvbiB9IGZyb20gJy4vbHItbWVyZ2VkLW11dGF0aW9uJztcclxuXHJcbi8vIERhdGEgc3RydWN0dXJlc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5jb25zdCBrZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxyXG5xdWVyeSB7XHJcbiAgJHtLZXlHcmFwaEZpZWxkfVxyXG59XHJcbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZpZWxkTm9kZTtcclxuXHJcbmNvbnN0IGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9IGdldFF1ZXJ5KGdxbGBcclxucXVlcnkge1xyXG4gICR7RmV0Y2hLZXlHcmFwaEZpZWxkfVxyXG59XHJcbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZpZWxkTm9kZTtcclxuXHJcbi8vIGNvbnN0IGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSAoKSA9PlxyXG4vLyAgIGxvZGFzaC5kZWVwQ2xvbmUoX2tleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24pIGFzIEZpZWxkTm9kZTtcclxuLy8gY29uc3QgZmV0Y2hLZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gKCkgPT5cclxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9mZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24pIGFzIEZpZWxkTm9kZTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTHJRdWVyeU9wdGlvbnM8VCwgVFZhcmlhYmxlcz5cclxuICBleHRlbmRzIFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzPiB7XHJcbiAgcXVlcnk6IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xyXG4gIGluY2x1ZGVLZXlHcmFwaD86IGJvb2xlYW47XHJcbiAgcHJvY2Vzc29yT3B0aW9ucz86IFByb2Nlc3Nvck9wdGlvbnM7XHJcbn1cclxuXHJcbi8vIENvcGllZCBmcm9tIE11dGF0aW9uT3B0aW9uc1xyXG4vLyBSZW1vdmVkIHJlcXVpcmVkIGZpZWxkIFwibXV0YXRpb25cIi4gVGhlIFwidmFyaWFibGVzXCIgZmllbGQgaXMgc3RpbGwgdGhlcmVcclxuLy8gYnV0IGl0J3MgZHluYW1pY2FsbHkgY2hlY2tlZC5cclxuZXhwb3J0IGludGVyZmFjZSBMck11dGF0aW9uT3B0aW9uczxcclxuICBUID0ge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gIH0sXHJcbiAgVFZhcmlhYmxlcyA9IE9wZXJhdGlvblZhcmlhYmxlc1xyXG4+IGV4dGVuZHMgTXV0YXRpb25CYXNlT3B0aW9uczxULCBUVmFyaWFibGVzPiB7XHJcbiAgY29udGV4dD86IGFueTtcclxuICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xyXG4gIGluY2x1ZGVLZXlHcmFwaD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8vIFRoZSBcIm11dGF0aW9uXCIgYW5kIFwidmFyaWFibGVcIiBmaWVsZHMgYXJlIGluaGVyaXRlZCBidXQgZHluYW1pY2FsbHkgcHJvaGliaXRlZCBiZWNhdXNlXHJcbi8vIHRoZXkgYXJlIHByb3ZpZGVkIGJ5IExyTXV0YXRpb24uIEl0J3MgYSBiaXQgdW5jbGVhbiBidXQgYXZvaWRzIGEgbG90IG9mIHR5cGluZyB3b3JrLlxyXG5leHBvcnQgaW50ZXJmYWNlIExyQXBvbGxvTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXMgPSBPcGVyYXRpb25WYXJpYWJsZXM+XHJcbiAgZXh0ZW5kcyBNdXRhdGlvbk9wdGlvbnM8VCwgVFZhcmlhYmxlcz4ge1xyXG4gIG11dGF0aW9uOiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcclxuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xyXG4gIHByb2Nlc3Nvck9wdGlvbnM/OiBQcm9jZXNzb3JPcHRpb25zO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTHJHcmFwaFFMU2VydmljZVN0YXRzIHtcclxuICBxdWVyeUNvdW50OiBudW1iZXI7XHJcbiAgbXV0YXRpb25Db3VudDogbnVtYmVyO1xyXG59XHJcblxyXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xyXG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxyXG59KVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTHJHcmFwaFFMU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdGF0czogTHJHcmFwaFFMU2VydmljZVN0YXRzID0ge1xyXG4gICAgcXVlcnlDb3VudDogMCxcclxuICAgIG11dGF0aW9uQ291bnQ6IDAsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsbyxcclxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcclxuICAgIHByaXZhdGUgcXVlcnlQcm9jZXNzb3I6IFF1ZXJ5UHJvY2Vzc29yU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgcXVlcnk8VCwgViA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxyXG4gICAgb3B0aW9uczogTHJRdWVyeU9wdGlvbnM8VCwgVj5cclxuICApOiBQcm9taXNlPFQ+IHtcclxuICAgIC8vIE1ha2UgY29waWVzIHRvIGF2b2lkIHNpZGUgZWZmZWN0LlxyXG4gICAgb3B0aW9ucyA9IGxvZGFzaC5jbG9uZURlZXAob3B0aW9ucyk7XHJcblxyXG4gICAgLy8gQXBwZW5kIHRoZSBrZXkgZ3JhcGggcXVlcnlcclxuICAgIGNvbnN0IGluY2x1ZGVLZXlHcmFwaCA9IHRoaXMuaXNJbmNsdWRlS2V5R3JhcGgob3B0aW9ucy5pbmNsdWRlS2V5R3JhcGgpO1xyXG4gICAgaWYgKGluY2x1ZGVLZXlHcmFwaCkge1xyXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRRdWVyeShvcHRpb25zLnF1ZXJ5KTtcclxuICAgICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gW1xyXG4gICAgICAgIC4uLm9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyxcclxuICAgICAgICBrZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ucXVlcnk8VCwgVj4ob3B0aW9ucykudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgdGhpcy5zdGF0cy5xdWVyeUNvdW50Kys7XHJcblxyXG4gICAgaGFuZGxlQXBvbGxvRXJyb3IocmVzcG9uc2UuZXJyb3JzKTtcclxuXHJcbiAgICB0aGlzLmFkZEtleXMocmVzcG9uc2UpO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcclxuICAgICAgcmVzcG9uc2UuZGF0YSxcclxuICAgICAgb3B0aW9ucy5wcm9jZXNzb3JPcHRpb25zXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBsck11dGF0ZUltcGwobHJNdXRhdGlvbiwgb3B0aW9ucz8pIHtcclxuICAgIGlmIChvcHRpb25zPy52YXJpYWJsZXMpIHtcclxuICAgICAgdGhyb3cgbmV3IExyVW5zdXBwb3J0ZWRFeGNlcHRpb24oXHJcbiAgICAgICAgJ1Vuc3VwcG9ydGVkIGZpZWxkOiBcIm9wdGlvbnMudmFyaWFibGVzXCInXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxyTXV0YXRpb24uZXhlY3V0ZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXHJcbiAgICAgICAgJ0xyTXV0YXRpb24gaGFzIGFscmVhZHkgZXhlY3V0ZWQuIExyTXV0YXRpb24gY2FuIG9ubHkgYmUgdXNlZCBvbmNlIGluIGEgbHJNdXRhdGUoKSBjYWxsLiBDcmVhdGUgbmV3IGluc3RhbmNlcyBvZiBMck11dGF0aW9uLidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBsck11dGF0aW9uLnNldEV4ZWN1dGVkKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvTXV0YXRlKHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgLi4ubHJNdXRhdGlvbi5sck11dGF0aW9uRGF0YSxcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAvLyBSZXNvbHZlIHByb21pc2VzIHNldCBvbiB0aGUgbHJNdXRhdGlvbiByYXRoZXIgdGhhbiB0aGUgbHJNdXRhdGUoKSBjYWxsLlxyXG4gICAgICAgIGxyTXV0YXRpb24ucmVzb2x2ZShyZXMpO1xyXG4gICAgICAgIC8vIFN0aWxsIG5lZWQgdG8gcmV0dXJuIHZhbHVlIHRvIHRoZSBwcm9taXNlIHdhaXRpbmcgZm9yIHRoZSByZXN1bHRzIG9mIGxyTXV0YXRlKCkuXHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGxyTXV0YXRpb24ucmVqZWN0KGVycm9yKTtcclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBhcG9sbG9NdXRhdGU8VCBleHRlbmRzIGFueSwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxyXG4gICAgb3B0aW9uczogTHJBcG9sbG9NdXRhdGlvbk9wdGlvbnM8VCwgVFZhcmlhYmxlcz5cclxuICApOiBQcm9taXNlPFQ+IHtcclxuICAgIC8vIE1ha2UgY29waWVzIHRvIGF2b2lkIHNpZGUgZWZmZWN0LlxyXG4gICAgb3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgbXV0YXRpb246IGxvZGFzaC5jbG9uZURlZXAob3B0aW9ucy5tdXRhdGlvbiksXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEFwcGVuZCB0aGUga2V5IGdyYXBoIHF1ZXJ5XHJcbiAgICBjb25zdCBpbmNsdWRlS2V5R3JhcGggPSB0aGlzLmlzSW5jbHVkZUtleUdyYXBoKG9wdGlvbnMuaW5jbHVkZUtleUdyYXBoKTtcclxuXHJcbiAgICBpZiAoaW5jbHVkZUtleUdyYXBoKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE11dGF0aW9uKG9wdGlvbnMubXV0YXRpb24pO1xyXG4gICAgICBvcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgPSBbXHJcbiAgICAgICAgLi4ub3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxyXG4gICAgICAgIGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbixcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3JtYXQgdG8gc3RyaW5nIGFuZCBwYXJzZSBhZ2Fpbi4gVGhpcyBhbGxvd3MgdGhlIFwibG9jXCI6IHsgXCJzdGFydFwiOiAuLi4gfVxyXG4gICAgLy8gcGFydCBvZiB0aGUgRG9jdW1lbnROb2RlIHRvIGJlIGNvcnJlY3RseSBzZXR1cC4gSXQncyBleHRyYSBwcm9jZXNzaW5nXHJcbiAgICAvLyBpbiBzZXJpYWxpc2luZyBhbmQgcGFyc2luZywgYnV0IHByb2JhYmx5IG1pbmltYWwgb3ZlcmhlYWQuXHJcbiAgICBvcHRpb25zLm11dGF0aW9uID0gZ3FsKGdxbFByaW50ZXIucHJpbnQob3B0aW9ucy5tdXRhdGlvbikpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ubXV0YXRlPFQ+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIHRoaXMuc3RhdHMubXV0YXRpb25Db3VudCsrO1xyXG5cclxuICAgIGhhbmRsZUFwb2xsb0Vycm9yKHJlc3BvbnNlLmVycm9ycyk7XHJcblxyXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5xdWVyeVByb2Nlc3Nvci5wcm9jZXNzUXVlcnkoXHJcbiAgICAgIHJlc3BvbnNlLmRhdGEsXHJcbiAgICAgIG9wdGlvbnMucHJvY2Vzc29yT3B0aW9uc1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHN0YXRzU25hcHNob3QoKTogTHJHcmFwaFFMU2VydmljZVN0YXRzIHtcclxuICAgIHJldHVybiBsb2Rhc2guY2xvbmVEZWVwKHRoaXMuc3RhdHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRLZXlzKHJlc3BvbnNlKSB7XHJcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XHJcbiAgICAgIHRoaXMua2V5R3JhcGguYWRkS2V5cygocmVzcG9uc2UuZGF0YSBhcyBIYXNLZXlHcmFwaCkua2V5R3JhcGgpO1xyXG4gICAgICBkZWxldGUgcmVzcG9uc2UuZGF0YS5rZXlHcmFwaDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbmNsdWRlS2V5R3JhcGgoaW5jbHVkZUtleUdyYXBoKSB7XHJcbiAgICAvLyBEZWZhdWx0IHRvIHRydWUgd2hlbiBudWxsIG9yIHVuZGVmaW5lZC5cclxuICAgIHJldHVybiBpbmNsdWRlS2V5R3JhcGggPT0gbnVsbCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFQxLCBUVmFyaWFibGVzMSwgVDIsIFRWYXJpYWJsZXMyPihcclxuICAgIGxyTXV0YXRpb25zOiBbXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPlxyXG4gICAgXSxcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uc1xyXG4gICk6IFByb21pc2U8W1QxLCBUMl0+O1xyXG5cclxuICBhc3luYyBsck11dGF0ZTxUMSwgVFZhcmlhYmxlczEsIFQyLCBUVmFyaWFibGVzMiwgVDMsIFRWYXJpYWJsZXMzPihcclxuICAgIGxyTXV0YXRpb25zOiBbXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz5cclxuICAgIF0sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcclxuICApOiBQcm9taXNlPFtUMSwgVDIsIFQzXT47XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFxyXG4gICAgVDEsXHJcbiAgICBUVmFyaWFibGVzMSxcclxuICAgIFQyLFxyXG4gICAgVFZhcmlhYmxlczIsXHJcbiAgICBUMyxcclxuICAgIFRWYXJpYWJsZXMzLFxyXG4gICAgVDQsXHJcbiAgICBUVmFyaWFibGVzNFxyXG4gID4oXHJcbiAgICBsck11dGF0aW9uczogW1xyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDQsIFRWYXJpYWJsZXM0PlxyXG4gICAgXSxcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uc1xyXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFxyXG4gICAgVDEsXHJcbiAgICBUVmFyaWFibGVzMSxcclxuICAgIFQyLFxyXG4gICAgVFZhcmlhYmxlczIsXHJcbiAgICBUMyxcclxuICAgIFRWYXJpYWJsZXMzLFxyXG4gICAgVDQsXHJcbiAgICBUVmFyaWFibGVzNCxcclxuICAgIFQ1LFxyXG4gICAgVFZhcmlhYmxlczVcclxuICA+KFxyXG4gICAgbHJNdXRhdGlvbnM6IFtcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ0LCBUVmFyaWFibGVzND4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUNSwgVFZhcmlhYmxlczU+XHJcbiAgICBdLFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXHJcbiAgKTogUHJvbWlzZTxbVDEsIFQyLCBUMywgVDQsIFQ1XT47XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcclxuICAgIGxyTXV0YXRpb246IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPixcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzPlxyXG4gICk6IFByb21pc2U8VD47XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcclxuICAgIGxyTXV0YXRpb25zOlxyXG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPltdXHJcbiAgICAgIHwgTHJNdXRhdGlvbk1heUFzeW5jPFQsIFRWYXJpYWJsZXM+LFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXHJcbiAgKTtcclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxyXG4gICAgbHJNdXRhdGlvbnM6XHJcbiAgICAgIHwgTHJNdXRhdGlvbk1heUFzeW5jPFQsIFRWYXJpYWJsZXM+W11cclxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcclxuICApIHtcclxuICAgIGlmIChsck11dGF0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgIGNvbnN0IG1lcmdlZCA9IExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKGF3YWl0IFByb21pc2UuYWxsKGxyTXV0YXRpb25zKSk7XHJcbiAgICAgIGF3YWl0IHRoaXMubHJNdXRhdGVJbXBsKG1lcmdlZCwgb3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiBtZXJnZWQucHJvbWlzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgbHJNdXRhdGlvbnM7XHJcbiAgICAgIGF3YWl0IHRoaXMubHJNdXRhdGVJbXBsKHJlc29sdmVkLCBvcHRpb25zKTtcclxuICAgICAgcmV0dXJuIHJlc29sdmVkLnByb21pc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG50eXBlIExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPiA9XHJcbiAgfCBMck11dGF0aW9uQmFzZTxULCBUVmFyaWFibGVzPlxyXG4gIHwgUHJvbWlzZTxMck11dGF0aW9uQmFzZTxULCBUVmFyaWFibGVzPj5cclxuICB8IExyTWVyZ2VkTXV0YXRpb248VD5cclxuICB8IFByb21pc2U8THJNZXJnZWRNdXRhdGlvbjxUPj47XHJcbiJdfQ==
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import * as lodash from 'lodash';
3
+ import { Injectable, NgZone } from '@angular/core';
4
+ import { Apollo } from 'apollo-angular';
5
+ import { KeyGraphService } from '../../cryptography/key-graph.service';
6
+ import { handleApolloError, LrBadStateException, LrUnsupportedException, } from '../../_common/exceptions';
7
+ import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
8
+ import { getQuery, getMutation } from '../../_common/ast';
9
+ import gql from 'graphql-tag';
10
+ import { QueryProcessorService } from '../query-processor';
11
+ import { RunOutsideAngular } from '../../_common/run-outside-angular';
12
+ import * as gqlPrinter from 'graphql/language/printer';
13
+ import { LrMergedMutation } from './lr-merged-mutation';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "apollo-angular";
16
+ import * as i2 from "../../cryptography/key-graph.service";
17
+ import * as i3 from "../query-processor/query-processor.service";
18
+ // Data structures
19
+ // --------------------------------------------------------------------------
20
+ const keyGraphFieldAstSelection = getQuery(gql `
21
+ query {
22
+ ${KeyGraphField}
23
+ }
24
+ `).selectionSet.selections[0];
25
+ const fetchKeyGraphFieldAstSelection = getQuery(gql `
26
+ query {
27
+ ${FetchKeyGraphField}
28
+ }
29
+ `).selectionSet.selections[0];
30
+ let LrGraphQLService = class LrGraphQLService {
31
+ constructor(ngZone, apollo, keyGraph, queryProcessor) {
32
+ this.ngZone = ngZone;
33
+ this.apollo = apollo;
34
+ this.keyGraph = keyGraph;
35
+ this.queryProcessor = queryProcessor;
36
+ this.stats = {
37
+ queryCount: 0,
38
+ mutationCount: 0,
39
+ };
40
+ }
41
+ query(options) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // Make copies to avoid side effect.
44
+ options = lodash.cloneDeep(options);
45
+ // Append the key graph query
46
+ const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
47
+ if (includeKeyGraph) {
48
+ const operation = getQuery(options.query);
49
+ operation.selectionSet.selections = [
50
+ ...operation.selectionSet.selections,
51
+ keyGraphFieldAstSelection,
52
+ ];
53
+ }
54
+ const response = yield this.apollo.query(options).toPromise();
55
+ this.stats.queryCount++;
56
+ handleApolloError(response.errors);
57
+ this.addKeys(response);
58
+ const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
59
+ return data;
60
+ });
61
+ }
62
+ lrMutateImpl(lrMutation, options) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ if (options === null || options === void 0 ? void 0 : options.variables) {
65
+ throw new LrUnsupportedException('Unsupported field: "options.variables"');
66
+ }
67
+ if (lrMutation.executed) {
68
+ throw new LrBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
69
+ }
70
+ lrMutation.setExecuted();
71
+ return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
72
+ .then((res) => {
73
+ // Resolve promises set on the lrMutation rather than the lrMutate() call.
74
+ lrMutation.resolve(res);
75
+ // Still need to return value to the promise waiting for the results of lrMutate().
76
+ return res;
77
+ })
78
+ .catch((error) => {
79
+ lrMutation.reject(error);
80
+ throw error;
81
+ });
82
+ });
83
+ }
84
+ apolloMutate(options) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ // Make copies to avoid side effect.
87
+ options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
88
+ // Append the key graph query
89
+ const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
90
+ if (includeKeyGraph) {
91
+ const operation = getMutation(options.mutation);
92
+ operation.selectionSet.selections = [
93
+ ...operation.selectionSet.selections,
94
+ fetchKeyGraphFieldAstSelection,
95
+ ];
96
+ }
97
+ // Format to string and parse again. This allows the "loc": { "start": ... }
98
+ // part of the DocumentNode to be correctly setup. It's extra processing
99
+ // in serialising and parsing, but probably minimal overhead.
100
+ options.mutation = gql(gqlPrinter.print(options.mutation));
101
+ const response = yield this.apollo.mutate(options).toPromise();
102
+ this.stats.mutationCount++;
103
+ handleApolloError(response.errors);
104
+ this.addKeys(response);
105
+ const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
106
+ return data;
107
+ });
108
+ }
109
+ statsSnapshot() {
110
+ return lodash.cloneDeep(this.stats);
111
+ }
112
+ addKeys(response) {
113
+ if (response.data.keyGraph) {
114
+ this.keyGraph.addKeys(response.data.keyGraph);
115
+ delete response.data.keyGraph;
116
+ }
117
+ }
118
+ isIncludeKeyGraph(includeKeyGraph) {
119
+ // Default to true when null or undefined.
120
+ return includeKeyGraph == null ? true : false;
121
+ }
122
+ lrMutate(lrMutations, options) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ if (lrMutations instanceof Array) {
125
+ const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
126
+ yield this.lrMutateImpl(merged, options);
127
+ return merged.promise;
128
+ }
129
+ else {
130
+ const resolved = yield lrMutations;
131
+ yield this.lrMutateImpl(resolved, options);
132
+ return resolved.promise;
133
+ }
134
+ });
135
+ }
136
+ };
137
+ LrGraphQLService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrGraphQLService_Factory() { return new LrGraphQLService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.QueryProcessorService)); }, token: LrGraphQLService, providedIn: "root" });
138
+ LrGraphQLService.decorators = [
139
+ { type: Injectable, args: [{
140
+ providedIn: 'root',
141
+ },] }
142
+ ];
143
+ LrGraphQLService.ctorParameters = () => [
144
+ { type: NgZone },
145
+ { type: Apollo },
146
+ { type: KeyGraphService },
147
+ { type: QueryProcessorService }
148
+ ];
149
+ LrGraphQLService = __decorate([
150
+ RunOutsideAngular({
151
+ ngZoneName: 'ngZone',
152
+ })
153
+ ], LrGraphQLService);
154
+ export { LrGraphQLService };
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvbHItZ3JhcGhxbC9sci1ncmFwaHFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVF4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsc0JBQXNCLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBcUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHdEUsT0FBTyxLQUFLLFVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFFeEQsa0JBQWtCO0FBQ2xCLDZFQUE2RTtBQUM3RSxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUE7O0lBRTFDLGFBQWE7O0NBRWhCLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBYyxDQUFDO0FBRTNDLE1BQU0s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QUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsZUFBZTtRQUN2QywwQ0FBMEM7UUFDMUMsT0FBTyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBd0VLLFFBQVEsQ0FDWixXQUVxQyxFQUNyQyxPQUEyQjs7WUFFM0IsSUFBSSxXQUFXLFlBQVksS0FBSyxFQUFFO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQztLQUFBO0NBQ0YsQ0FBQTs7O1lBOU5BLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBckZvQixNQUFNO1lBQ2xCLE1BQU07WUFRTixlQUFlO1lBVUcscUJBQXFCOztBQW1FbkMsZ0JBQWdCO0lBTjVCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxnQkFBZ0IsQ0EyTjVCO1NBM05ZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQge1xuICBRdWVyeU9wdGlvbnMsXG4gIE11dGF0aW9uT3B0aW9ucyxcbiAgT3BlcmF0aW9uVmFyaWFibGVzLFxuICBGZXRjaFBvbGljeSxcbn0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBNdXRhdGlvbkJhc2VPcHRpb25zIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZS93YXRjaFF1ZXJ5T3B0aW9ucyc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi8uLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7XG4gIGhhbmRsZUFwb2xsb0Vycm9yLFxuICBMckJhZFN0YXRlRXhjZXB0aW9uLFxuICBMclVuc3VwcG9ydGVkRXhjZXB0aW9uLFxufSBmcm9tICcuLi8uLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgRmV0Y2hLZXlHcmFwaEZpZWxkLCBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSwgZ2V0UXVlcnksIGdldE11dGF0aW9uIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9hc3QnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgeyBQcm9jZXNzb3JPcHRpb25zLCBRdWVyeVByb2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuLi9xdWVyeS1wcm9jZXNzb3InO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi8uLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgRmllbGROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5pbXBvcnQgKiBhcyBncWxQcmludGVyIGZyb20gJ2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlcic7XG5pbXBvcnQgeyBMck1lcmdlZE11dGF0aW9uIH0gZnJvbSAnLi9sci1tZXJnZWQtbXV0YXRpb24nO1xuXG4vLyBEYXRhIHN0cnVjdHVyZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBrZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxucXVlcnkge1xuICAke0tleUdyYXBoRmllbGR9XG59XG5gKS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1swXSBhcyBGaWVsZE5vZGU7XG5cbmNvbnN0IGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9IGdldFF1ZXJ5KGdxbGBcbnF1ZXJ5IHtcbiAgJHtGZXRjaEtleUdyYXBoRmllbGR9XG59XG5gKS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1swXSBhcyBGaWVsZE5vZGU7XG5cbi8vIGNvbnN0IGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSAoKSA9PlxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9rZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uKSBhcyBGaWVsZE5vZGU7XG4vLyBjb25zdCBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSAoKSA9PlxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9mZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24pIGFzIEZpZWxkTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBMclF1ZXJ5T3B0aW9uczxULCBUVmFyaWFibGVzPlxuICBleHRlbmRzIFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzPiB7XG4gIHF1ZXJ5OiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcbiAgcHJvY2Vzc29yT3B0aW9ucz86IFByb2Nlc3Nvck9wdGlvbnM7XG59XG5cbi8vIENvcGllZCBmcm9tIE11dGF0aW9uT3B0aW9uc1xuLy8gUmVtb3ZlZCByZXF1aXJlZCBmaWVsZCBcIm11dGF0aW9uXCIuIFRoZSBcInZhcmlhYmxlc1wiIGZpZWxkIGlzIHN0aWxsIHRoZXJlXG4vLyBidXQgaXQncyBkeW5hbWljYWxseSBjaGVja2VkLlxuZXhwb3J0IGludGVyZmFjZSBMck11dGF0aW9uT3B0aW9uczxcbiAgVCA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH0sXG4gIFRWYXJpYWJsZXMgPSBPcGVyYXRpb25WYXJpYWJsZXNcbj4gZXh0ZW5kcyBNdXRhdGlvbkJhc2VPcHRpb25zPFQsIFRWYXJpYWJsZXM+IHtcbiAgY29udGV4dD86IGFueTtcbiAgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTtcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcbn1cblxuLy8gVGhlIFwibXV0YXRpb25cIiBhbmQgXCJ2YXJpYWJsZVwiIGZpZWxkcyBhcmUgaW5oZXJpdGVkIGJ1dCBkeW5hbWljYWxseSBwcm9oaWJpdGVkIGJlY2F1c2Vcbi8vIHRoZXkgYXJlIHByb3ZpZGVkIGJ5IExyTXV0YXRpb24uIEl0J3MgYSBiaXQgdW5jbGVhbiBidXQgYXZvaWRzIGEgbG90IG9mIHR5cGluZyB3b3JrLlxuZXhwb3J0IGludGVyZmFjZSBMckFwb2xsb011dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPlxuICBleHRlbmRzIE11dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzPiB7XG4gIG11dGF0aW9uOiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcbiAgcHJvY2Vzc29yT3B0aW9ucz86IFByb2Nlc3Nvck9wdGlvbnM7XG59XG5cbmludGVyZmFjZSBMckdyYXBoUUxTZXJ2aWNlU3RhdHMge1xuICBxdWVyeUNvdW50OiBudW1iZXI7XG4gIG11dGF0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExyR3JhcGhRTFNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRzOiBMckdyYXBoUUxTZXJ2aWNlU3RhdHMgPSB7XG4gICAgcXVlcnlDb3VudDogMCxcbiAgICBtdXRhdGlvbkNvdW50OiAwLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeVByb2Nlc3NvcjogUXVlcnlQcm9jZXNzb3JTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBxdWVyeTxULCBWID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgb3B0aW9uczogTHJRdWVyeU9wdGlvbnM8VCwgVj5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgLy8gTWFrZSBjb3BpZXMgdG8gYXZvaWQgc2lkZSBlZmZlY3QuXG4gICAgb3B0aW9ucyA9IGxvZGFzaC5jbG9uZURlZXAob3B0aW9ucyk7XG5cbiAgICAvLyBBcHBlbmQgdGhlIGtleSBncmFwaCBxdWVyeVxuICAgIGNvbnN0IGluY2x1ZGVLZXlHcmFwaCA9IHRoaXMuaXNJbmNsdWRlS2V5R3JhcGgob3B0aW9ucy5pbmNsdWRlS2V5R3JhcGgpO1xuICAgIGlmIChpbmNsdWRlS2V5R3JhcGgpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldFF1ZXJ5KG9wdGlvbnMucXVlcnkpO1xuICAgICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gW1xuICAgICAgICAuLi5vcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXG4gICAgICAgIGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ucXVlcnk8VCwgVj4ob3B0aW9ucykudG9Qcm9taXNlKCk7XG5cbiAgICB0aGlzLnN0YXRzLnF1ZXJ5Q291bnQrKztcblxuICAgIGhhbmRsZUFwb2xsb0Vycm9yKHJlc3BvbnNlLmVycm9ycyk7XG5cbiAgICB0aGlzLmFkZEtleXMocmVzcG9uc2UpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucXVlcnlQcm9jZXNzb3IucHJvY2Vzc1F1ZXJ5KFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIG9wdGlvbnMucHJvY2Vzc29yT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbHJNdXRhdGVJbXBsKGxyTXV0YXRpb24sIG9wdGlvbnM/KSB7XG4gICAgaWYgKG9wdGlvbnM/LnZhcmlhYmxlcykge1xuICAgICAgdGhyb3cgbmV3IExyVW5zdXBwb3J0ZWRFeGNlcHRpb24oXG4gICAgICAgICdVbnN1cHBvcnRlZCBmaWVsZDogXCJvcHRpb25zLnZhcmlhYmxlc1wiJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobHJNdXRhdGlvbi5leGVjdXRlZCkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oXG4gICAgICAgICdMck11dGF0aW9uIGhhcyBhbHJlYWR5IGV4ZWN1dGVkLiBMck11dGF0aW9uIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBpbiBhIGxyTXV0YXRlKCkgY2FsbC4gQ3JlYXRlIG5ldyBpbnN0YW5jZXMgb2YgTHJNdXRhdGlvbi4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGxyTXV0YXRpb24uc2V0RXhlY3V0ZWQoKTtcblxuICAgIHJldHVybiB0aGlzLmFwb2xsb011dGF0ZSh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLi4ubHJNdXRhdGlvbi5sck11dGF0aW9uRGF0YSxcbiAgICB9KVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAvLyBSZXNvbHZlIHByb21pc2VzIHNldCBvbiB0aGUgbHJNdXRhdGlvbiByYXRoZXIgdGhhbiB0aGUgbHJNdXRhdGUoKSBjYWxsLlxuICAgICAgICBsck11dGF0aW9uLnJlc29sdmUocmVzKTtcbiAgICAgICAgLy8gU3RpbGwgbmVlZCB0byByZXR1cm4gdmFsdWUgdG8gdGhlIHByb21pc2Ugd2FpdGluZyBmb3IgdGhlIHJlc3VsdHMgb2YgbHJNdXRhdGUoKS5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGxyTXV0YXRpb24ucmVqZWN0KGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGFwb2xsb011dGF0ZTxUIGV4dGVuZHMgYW55LCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgb3B0aW9uczogTHJBcG9sbG9NdXRhdGlvbk9wdGlvbnM8VCwgVFZhcmlhYmxlcz5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgLy8gTWFrZSBjb3BpZXMgdG8gYXZvaWQgc2lkZSBlZmZlY3QuXG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtdXRhdGlvbjogbG9kYXNoLmNsb25lRGVlcChvcHRpb25zLm11dGF0aW9uKSxcbiAgICB9O1xuXG4gICAgLy8gQXBwZW5kIHRoZSBrZXkgZ3JhcGggcXVlcnlcbiAgICBjb25zdCBpbmNsdWRlS2V5R3JhcGggPSB0aGlzLmlzSW5jbHVkZUtleUdyYXBoKG9wdGlvbnMuaW5jbHVkZUtleUdyYXBoKTtcblxuICAgIGlmIChpbmNsdWRlS2V5R3JhcGgpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE11dGF0aW9uKG9wdGlvbnMubXV0YXRpb24pO1xuICAgICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gW1xuICAgICAgICAuLi5vcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXG4gICAgICAgIGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbixcbiAgICAgIF07XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0IHRvIHN0cmluZyBhbmQgcGFyc2UgYWdhaW4uIFRoaXMgYWxsb3dzIHRoZSBcImxvY1wiOiB7IFwic3RhcnRcIjogLi4uIH1cbiAgICAvLyBwYXJ0IG9mIHRoZSBEb2N1bWVudE5vZGUgdG8gYmUgY29ycmVjdGx5IHNldHVwLiBJdCdzIGV4dHJhIHByb2Nlc3NpbmdcbiAgICAvLyBpbiBzZXJpYWxpc2luZyBhbmQgcGFyc2luZywgYnV0IHByb2JhYmx5IG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgb3B0aW9ucy5tdXRhdGlvbiA9IGdxbChncWxQcmludGVyLnByaW50KG9wdGlvbnMubXV0YXRpb24pKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ubXV0YXRlPFQ+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5zdGF0cy5tdXRhdGlvbkNvdW50Kys7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBzdGF0c1NuYXBzaG90KCk6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XG4gICAgcmV0dXJuIGxvZGFzaC5jbG9uZURlZXAodGhpcy5zdGF0cyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcbiAgICAgIGRlbGV0ZSByZXNwb25zZS5kYXRhLmtleUdyYXBoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbmNsdWRlS2V5R3JhcGgoaW5jbHVkZUtleUdyYXBoKSB7XG4gICAgLy8gRGVmYXVsdCB0byB0cnVlIHdoZW4gbnVsbCBvciB1bmRlZmluZWQuXG4gICAgcmV0dXJuIGluY2x1ZGVLZXlHcmFwaCA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczI+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+XG4gICAgXSxcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKTogUHJvbWlzZTxbVDEsIFQyXT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczIsIFQzLCBUVmFyaWFibGVzMz4oXG4gICAgbHJNdXRhdGlvbnM6IFtcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDNdPjtcblxuICBhc3luYyBsck11dGF0ZTxcbiAgICBUMSxcbiAgICBUVmFyaWFibGVzMSxcbiAgICBUMixcbiAgICBUVmFyaWFibGVzMixcbiAgICBUMyxcbiAgICBUVmFyaWFibGVzMyxcbiAgICBUNCxcbiAgICBUVmFyaWFibGVzNFxuICA+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDQsIFRWYXJpYWJsZXM0PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8XG4gICAgVDEsXG4gICAgVFZhcmlhYmxlczEsXG4gICAgVDIsXG4gICAgVFZhcmlhYmxlczIsXG4gICAgVDMsXG4gICAgVFZhcmlhYmxlczMsXG4gICAgVDQsXG4gICAgVFZhcmlhYmxlczQsXG4gICAgVDUsXG4gICAgVFZhcmlhYmxlczVcbiAgPihcbiAgICBsck11dGF0aW9uczogW1xuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ0LCBUVmFyaWFibGVzND4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDUsIFRWYXJpYWJsZXM1PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xuXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBsck11dGF0aW9uOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gICk6IFByb21pc2U8VD47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGxyTXV0YXRpb25zOlxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXVxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk7XG5cbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGxyTXV0YXRpb25zOlxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXVxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICkge1xuICAgIGlmIChsck11dGF0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBtZXJnZWQgPSBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShhd2FpdCBQcm9taXNlLmFsbChsck11dGF0aW9ucykpO1xuICAgICAgYXdhaXQgdGhpcy5sck11dGF0ZUltcGwobWVyZ2VkLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBtZXJnZWQucHJvbWlzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBsck11dGF0aW9ucztcbiAgICAgIGF3YWl0IHRoaXMubHJNdXRhdGVJbXBsKHJlc29sdmVkLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiByZXNvbHZlZC5wcm9taXNlO1xuICAgIH1cbiAgfVxufVxuXG50eXBlIExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPiA9XG4gIHwgTHJNdXRhdGlvbkJhc2U8VCwgVFZhcmlhYmxlcz5cbiAgfCBQcm9taXNlPExyTXV0YXRpb25CYXNlPFQsIFRWYXJpYWJsZXM+PlxuICB8IExyTWVyZ2VkTXV0YXRpb248VD5cbiAgfCBQcm9taXNlPExyTWVyZ2VkTXV0YXRpb248VD4+O1xuIl19