@lifeready/core 1.0.2 → 1.0.4

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 (225) 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.map +1 -1
  5. package/esm2015/lib/_common/ast.js +40 -40
  6. package/esm2015/lib/_common/deferred-promise.js +24 -24
  7. package/esm2015/lib/_common/exceptions.js +157 -157
  8. package/esm2015/lib/_common/queries.gql.js +190 -190
  9. package/esm2015/lib/_common/run-outside-angular.js +79 -79
  10. package/esm2015/lib/_common/types.js +1 -1
  11. package/esm2015/lib/_common/utils.js +44 -44
  12. package/esm2015/lib/api/contact-card.gql.js +79 -79
  13. package/esm2015/lib/api/contact-card.service.js +154 -154
  14. package/esm2015/lib/api/contact-card2.gql.js +60 -60
  15. package/esm2015/lib/api/contact-card2.service.js +103 -103
  16. package/esm2015/lib/api/file.service.js +74 -74
  17. package/esm2015/lib/api/item2.gql.js +110 -110
  18. package/esm2015/lib/api/item2.service.js +311 -311
  19. package/esm2015/lib/api/key-exchange.gql.js +188 -188
  20. package/esm2015/lib/api/key-exchange.service.js +442 -442
  21. package/esm2015/lib/api/key-exchange.types.js +18 -18
  22. package/esm2015/lib/api/key-exchange2.gql.js +171 -171
  23. package/esm2015/lib/api/key-exchange2.service.js +479 -479
  24. package/esm2015/lib/api/lock.gql.js +40 -40
  25. package/esm2015/lib/api/lock.service.js +64 -64
  26. package/esm2015/lib/api/lr-apollo.service.js +46 -46
  27. package/esm2015/lib/api/lr-graphql/index.js +6 -6
  28. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -155
  29. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -213
  30. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -51
  31. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -48
  32. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -18
  33. package/esm2015/lib/api/message.service.js +138 -138
  34. package/esm2015/lib/api/persist.service.js +181 -181
  35. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -93
  36. package/esm2015/lib/api/query-processor/index.js +3 -3
  37. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -192
  38. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -109
  39. package/esm2015/lib/api/shared-contact-card.service.js +119 -119
  40. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -41
  41. package/esm2015/lib/api/shared-contact-card2.service.js +117 -117
  42. package/esm2015/lib/api/time.service.js +146 -146
  43. package/esm2015/lib/api/types/graphql.types.js +7 -7
  44. package/esm2015/lib/api/types/index.js +3 -3
  45. package/esm2015/lib/api/types/lr-graphql.types.js +71 -71
  46. package/esm2015/lib/auth/auth.config.js +57 -57
  47. package/esm2015/lib/auth/auth.gql.js +48 -48
  48. package/esm2015/lib/auth/auth.types.js +27 -27
  49. package/esm2015/lib/auth/idle.service.js +168 -168
  50. package/esm2015/lib/auth/idle.types.js +7 -7
  51. package/esm2015/lib/auth/lbop.service.js +355 -355
  52. package/esm2015/lib/auth/life-ready-auth.service.js +500 -500
  53. package/esm2015/lib/auth/password.service.js +320 -320
  54. package/esm2015/lib/auth/register.service.js +172 -172
  55. package/esm2015/lib/auth/two-factor.service.js +74 -74
  56. package/esm2015/lib/category/category-meta.service.js +99 -99
  57. package/esm2015/lib/category/category.gql.js +406 -406
  58. package/esm2015/lib/category/category.service.js +390 -390
  59. package/esm2015/lib/category/category.types.js +29 -29
  60. package/esm2015/lib/cryptography/cryptography.types.js +11 -11
  61. package/esm2015/lib/cryptography/encryption.service.js +189 -189
  62. package/esm2015/lib/cryptography/key-factory.service.js +237 -237
  63. package/esm2015/lib/cryptography/key-graph.service.js +280 -280
  64. package/esm2015/lib/cryptography/key-meta.service.js +200 -200
  65. package/esm2015/lib/cryptography/key.service.js +124 -124
  66. package/esm2015/lib/cryptography/slip39.service.js +169 -169
  67. package/esm2015/lib/cryptography/web-crypto.service.js +29 -29
  68. package/esm2015/lib/life-ready.config.js +84 -84
  69. package/esm2015/lib/life-ready.module.js +74 -74
  70. package/esm2015/lib/plan/plan.gql.js +123 -123
  71. package/esm2015/lib/plan/plan.service.js +149 -149
  72. package/esm2015/lib/plan/plan.types.js +11 -11
  73. package/esm2015/lib/record/record-attachment.service.js +101 -101
  74. package/esm2015/lib/record/record.gql.js +179 -179
  75. package/esm2015/lib/record/record.service.js +206 -206
  76. package/esm2015/lib/record/record.types.js +15 -15
  77. package/esm2015/lib/record-type/record-type.service.js +75 -75
  78. package/esm2015/lib/record-type/record-type.types.js +28 -28
  79. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -105
  80. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -1
  81. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -300
  82. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -52
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -97
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -1
  85. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -150
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -229
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -1
  88. package/esm2015/lib/scenario/scenario-setup.service.js +269 -269
  89. package/esm2015/lib/scenario/scenario.gql.js +368 -368
  90. package/esm2015/lib/scenario/scenario.service.js +611 -611
  91. package/esm2015/lib/scenario/scenario.types.js +64 -64
  92. package/esm2015/lib/search/search.gql.js +62 -62
  93. package/esm2015/lib/search/search.service.js +156 -156
  94. package/esm2015/lib/search/search.types.js +6 -6
  95. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -112
  96. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -129
  97. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -4
  98. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -232
  99. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -299
  100. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -148
  101. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -326
  102. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -41
  103. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -87
  104. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -215
  105. package/esm2015/lib/users/profile-details.service.js +214 -214
  106. package/esm2015/lib/users/profile.gql.js +97 -97
  107. package/esm2015/lib/users/profile.service.js +169 -169
  108. package/esm2015/lib/users/profile.types.js +34 -34
  109. package/esm2015/lib/users/user.gql.js +60 -60
  110. package/esm2015/lib/users/user.service.js +79 -79
  111. package/esm2015/lib/users/user.types.js +5 -5
  112. package/esm2015/lifeready-core.js +10 -10
  113. package/esm2015/public-api.js +81 -81
  114. package/fesm2015/lifeready-core.js +13088 -13088
  115. package/fesm2015/lifeready-core.js.map +1 -1
  116. package/lib/_common/ast.d.ts +11 -11
  117. package/lib/_common/deferred-promise.d.ts +12 -12
  118. package/lib/_common/exceptions.d.ts +109 -109
  119. package/lib/_common/queries.gql.d.ts +10 -10
  120. package/lib/_common/run-outside-angular.d.ts +14 -14
  121. package/lib/_common/types.d.ts +10 -10
  122. package/lib/_common/utils.d.ts +3 -3
  123. package/lib/api/contact-card.gql.d.ts +7 -7
  124. package/lib/api/contact-card.service.d.ts +52 -52
  125. package/lib/api/contact-card2.gql.d.ts +34 -34
  126. package/lib/api/contact-card2.service.d.ts +49 -49
  127. package/lib/api/file.service.d.ts +18 -18
  128. package/lib/api/item2.gql.d.ts +96 -96
  129. package/lib/api/item2.service.d.ts +177 -177
  130. package/lib/api/key-exchange.gql.d.ts +9 -9
  131. package/lib/api/key-exchange.service.d.ts +39 -39
  132. package/lib/api/key-exchange.types.d.ts +196 -196
  133. package/lib/api/key-exchange2.gql.d.ts +125 -125
  134. package/lib/api/key-exchange2.service.d.ts +187 -187
  135. package/lib/api/lock.gql.d.ts +27 -27
  136. package/lib/api/lock.service.d.ts +25 -25
  137. package/lib/api/lr-apollo.service.d.ts +15 -15
  138. package/lib/api/lr-graphql/index.d.ts +5 -5
  139. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -60
  140. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -27
  141. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -28
  142. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -8
  143. package/lib/api/lr-graphql/lr.service.d.ts +9 -9
  144. package/lib/api/message.service.d.ts +58 -58
  145. package/lib/api/persist.service.d.ts +31 -31
  146. package/lib/api/query-processor/common-processors.service.d.ts +36 -36
  147. package/lib/api/query-processor/index.d.ts +2 -2
  148. package/lib/api/query-processor/query-processor.service.d.ts +18 -18
  149. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -15
  150. package/lib/api/shared-contact-card.service.d.ts +33 -33
  151. package/lib/api/shared-contact-card2.gql.d.ts +36 -36
  152. package/lib/api/shared-contact-card2.service.d.ts +45 -45
  153. package/lib/api/time.service.d.ts +16 -16
  154. package/lib/api/types/graphql.types.d.ts +29 -29
  155. package/lib/api/types/index.d.ts +2 -2
  156. package/lib/api/types/lr-graphql.types.d.ts +385 -385
  157. package/lib/auth/auth.config.d.ts +5 -5
  158. package/lib/auth/auth.gql.d.ts +15 -15
  159. package/lib/auth/auth.types.d.ts +66 -66
  160. package/lib/auth/idle.service.d.ts +40 -40
  161. package/lib/auth/idle.types.d.ts +10 -10
  162. package/lib/auth/lbop.service.d.ts +91 -91
  163. package/lib/auth/life-ready-auth.service.d.ts +59 -59
  164. package/lib/auth/password.service.d.ts +78 -78
  165. package/lib/auth/register.service.d.ts +25 -25
  166. package/lib/auth/two-factor.service.d.ts +15 -15
  167. package/lib/category/category-meta.service.d.ts +23 -23
  168. package/lib/category/category.gql.d.ts +45 -45
  169. package/lib/category/category.service.d.ts +67 -67
  170. package/lib/category/category.types.d.ts +79 -79
  171. package/lib/cryptography/cryptography.types.d.ts +83 -83
  172. package/lib/cryptography/encryption.service.d.ts +41 -41
  173. package/lib/cryptography/key-factory.service.d.ts +38 -38
  174. package/lib/cryptography/key-graph.service.d.ts +33 -33
  175. package/lib/cryptography/key-meta.service.d.ts +44 -44
  176. package/lib/cryptography/key.service.d.ts +36 -36
  177. package/lib/cryptography/slip39.service.d.ts +43 -43
  178. package/lib/cryptography/web-crypto.service.d.ts +5 -5
  179. package/lib/life-ready.config.d.ts +14 -14
  180. package/lib/life-ready.module.d.ts +5 -5
  181. package/lib/plan/plan.gql.d.ts +11 -11
  182. package/lib/plan/plan.service.d.ts +33 -33
  183. package/lib/plan/plan.types.d.ts +31 -31
  184. package/lib/record/record-attachment.service.d.ts +16 -16
  185. package/lib/record/record.gql.d.ts +14 -14
  186. package/lib/record/record.service.d.ts +25 -25
  187. package/lib/record/record.types.d.ts +57 -57
  188. package/lib/record-type/record-type.service.d.ts +11 -11
  189. package/lib/record-type/record-type.types.d.ts +50 -50
  190. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -7
  191. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -63
  192. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -32
  193. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -5
  194. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -17
  195. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -18
  196. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -8
  197. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -30
  198. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -54
  199. package/lib/scenario/scenario-setup.service.d.ts +22 -22
  200. package/lib/scenario/scenario.gql.d.ts +34 -34
  201. package/lib/scenario/scenario.service.d.ts +58 -58
  202. package/lib/scenario/scenario.types.d.ts +217 -217
  203. package/lib/search/search.gql.d.ts +1 -1
  204. package/lib/search/search.service.d.ts +25 -25
  205. package/lib/search/search.types.d.ts +20 -20
  206. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -20
  207. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -35
  208. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -3
  209. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -218
  210. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -130
  211. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -9
  212. package/lib/trusted-parties/trusted-party.service.d.ts +44 -44
  213. package/lib/trusted-parties/trusted-party.types.d.ts +102 -102
  214. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -79
  215. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -114
  216. package/lib/users/profile-details.service.d.ts +21 -21
  217. package/lib/users/profile.gql.d.ts +11 -11
  218. package/lib/users/profile.service.d.ts +35 -35
  219. package/lib/users/profile.types.d.ts +96 -96
  220. package/lib/users/user.gql.d.ts +9 -9
  221. package/lib/users/user.service.d.ts +12 -12
  222. package/lib/users/user.types.d.ts +23 -23
  223. package/lifeready-core.d.ts +9 -9
  224. package/package.json +1 -1
  225. package/public-api.d.ts +77 -77
@@ -1,232 +1,232 @@
1
- import { gqlTyped } from '../_common/ast';
2
- const SharedTpPasswordResetFragment = gqlTyped `
3
- fragment SharedTpPasswordResetFragment on SharedTpPasswordResetNode {
4
- id
5
- tp {
6
- id
7
- other {
8
- username
9
- }
10
- }
11
- assembly {
12
- asApprovers {
13
- edges {
14
- node {
15
- id
16
- sharedKey {
17
- id
18
- }
19
- sharedCipherData
20
- }
21
- }
22
- }
23
- }
24
- sharedRequest {
25
- id
26
- pxk {
27
- id
28
- pbk
29
- }
30
- claim {
31
- id
32
- state
33
- asClaimApprovers {
34
- edges {
35
- node {
36
- id
37
- state
38
- sharedKey {
39
- id
40
- }
41
- sharedCipherApprovalData
42
- sharedCipherPartialAssemblyKey
43
- receiverApprovals {
44
- edges {
45
- node {
46
- id
47
- }
48
- }
49
- }
50
- }
51
- }
52
- }
53
- }
54
- }
55
- }`;
56
- export const SharedTpPasswordResetsQuery = gqlTyped `
57
- query SharedTpPasswordResetsQuery {
58
- sharedTpPasswordResets {
59
- edges {
60
- node {
61
- ...SharedTpPasswordResetFragment
62
- }
63
- }
64
- }
65
- }
66
- ${SharedTpPasswordResetFragment}
67
- `;
68
- export const SharedTpPasswordResetQuery = gqlTyped `
69
- query SharedTpPasswordResetQuery($id: LrRelayIdInput!) {
70
- sharedTpPasswordReset(id: $id) {
71
- ...SharedTpPasswordResetFragment
72
- }
73
- }
74
- ${SharedTpPasswordResetFragment}
75
- `;
76
- export const CancelTpPasswordResetRequestMutation = gqlTyped `
77
- mutation CancelTpPasswordResetRequestMutation {
78
- cancelTpPasswordResetRequest(input: {}) {
79
- id
80
- }
81
- }`;
82
- export const CreateTpAssemblyKeyChallengeMutation = gqlTyped `
83
- mutation CreateTpAssemblyKeyChallengeMutation(
84
- $input: CreateTpAssemblyKeyChallengeInput!
85
- ) {
86
- createTpAssemblyKeyChallenge(input: $input) {
87
- challenge
88
- }
89
- }`;
90
- export const PreCompleteTpPasswordResetRequestMutation = gqlTyped `
91
- mutation PreCompleteTpPasswordResetRequestMutation(
92
- $input: PreCompleteTpPasswordResetRequestInput!
93
- ) {
94
- preCompleteTpPasswordResetRequest(input: $input) {
95
- idpPassword
96
- }
97
- }`;
98
- export const CompleteTpPasswordResetRequestMutation = gqlTyped `
99
- mutation CompleteTpPasswordResetRequestMutation(
100
- $input: CompleteTpPasswordResetRequestInput!
101
- ) {
102
- completeTpPasswordResetRequest(input: $input) {
103
- id
104
- }
105
- }`;
106
- export const ApproveTpPasswordResetRequestMutation = gqlTyped `
107
- mutation ApproveTpPasswordResetRequestMutation(
108
- $input: ApproveTpPasswordResetRequestInput!
109
- ) {
110
- approveTpPasswordResetRequest(input: $input) {
111
- claimApprover {
112
- id
113
- }
114
- }
115
- }`;
116
- export const RejectTpPasswordResetRequestMutation = gqlTyped `
117
- mutation RejectTpPasswordResetRequestMutation(
118
- $input: RejectTpPasswordResetRequestInput!
119
- ) {
120
- rejectTpPasswordResetRequest(input: $input) {
121
- claimApprover {
122
- id
123
- }
124
- }
125
- }`;
126
- export const TpPasswordResetUserQuery = gqlTyped `
127
- query TpPasswordResetUserQuery {
128
- tpPasswordResetUser {
129
- username
130
- resetUsername
131
- state
132
- passKey {
133
- id
134
- passKeyParams
135
- passIdpParams
136
- }
137
- masterKey {
138
- id
139
- }
140
- pxk {
141
- id
142
- }
143
- sessionEncryptionKey
144
- assembly {
145
- singleReject
146
- quorum
147
- subAssemblies {
148
- singleReject
149
- quorum
150
- approvers {
151
- name
152
- email
153
- state
154
- }
155
- }
156
- }
157
- approvals {
158
- id
159
- modified
160
- approverEmail
161
- receiverCipher
162
- receiverCipherPartialAssemblyKey
163
- }
164
- assemblyCipherData
165
- wrappedAssemblyKeyVerifierPrk
166
- }
167
- }`;
168
- export const TpPasswordResetQuery = gqlTyped `
169
- query TpPasswordResetQuery {
170
- tpPasswordReset {
171
- id
172
- applied
173
- assembly {
174
- singleReject
175
- quorum
176
- subjectKey {
177
- id
178
- }
179
- assemblyKey {
180
- id
181
- }
182
- assemblyCipherData
183
- subAssemblies {
184
- edges {
185
- node {
186
- id
187
- singleReject
188
- quorum
189
- subjectCipherData
190
- approvers {
191
- edges {
192
- node {
193
- id
194
- tp {
195
- id
196
- }
197
- sharedKey {
198
- id
199
- }
200
- sharedCipherData
201
- }
202
- }
203
- }
204
- }
205
- }
206
- }
207
- }
208
- }
209
- }`;
210
- export const CreateTpPasswordResetMutation = gqlTyped `
211
- mutation CreateTpPasswordResetMutation($input: CreateTpPasswordResetInput!) {
212
- createTpPasswordReset(input: $input) {
213
- tpPasswordReset {
214
- id
215
- }
216
- }
217
- }`;
218
- export const DeleteTpPasswordResetMutation = gqlTyped `
219
- mutation DeleteTpPasswordResetMutation {
220
- deleteTpPasswordReset(input: {}) {
221
- id
222
- }
223
- }`;
224
- export const UpdateTpPasswordResetMutation = gqlTyped `
225
- mutation UpdateTpPasswordResetMutation($input: UpdateTpPasswordResetInput!) {
226
- updateTpPasswordReset(input: $input) {
227
- tpPasswordReset {
228
- id
229
- }
230
- }
231
- }`;
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuZ3FsLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnRpZXMvdHAtcGFzc3dvcmQtcmVzZXQuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQStEMUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXFEakYsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFFBQVEsQ0FBbUM7Ozs7Ozs7Ozs7RUFVcEYsNkJBQTZCO0NBQzlCLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQWtDOzs7Ozs7RUFNbEYsNkJBQTZCO0NBQzlCLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7OztFQUt0RyxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsUUFBUSxDQUE0Qzs7Ozs7OztFQU90RyxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsUUFBUSxDQUFpRDs7Ozs7OztFQU9oSCxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsUUFBUSxDQUE4Qzs7Ozs7OztFQU8xRyxDQUFDO0FBU0gsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsUUFBUSxDQUE2Qzs7Ozs7Ozs7O0VBU3hHLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7Ozs7Ozs7RUFTdEcsQ0FBQztBQTJDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlDOUUsQ0FBQztBQTRDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlDdEUsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBcUM7Ozs7Ozs7RUFPeEYsQ0FBQztBQU9ILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBcUM7Ozs7O0VBS3hGLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQXFDOzs7Ozs7O0VBT3hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljU2NhbGFyLCBJRCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7XG4gIFRwQ2xhaW1TdGF0ZSxcbiAgVHBDbGFpbUFwcHJvdmVyU3RhdGUsXG59IGZyb20gJy4uL2FwaS90eXBlcy9sci1ncmFwaHFsLnR5cGVzJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnLi4vYXBpL3R5cGVzL2dyYXBocWwudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0IHtcbiAgaWQ6IElEO1xuICB0cDoge1xuICAgIGlkOiBJRDtcbiAgICBvdGhlcjoge1xuICAgICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBhc3NlbWJseToge1xuICAgIGFzQXBwcm92ZXJzOiB7XG4gICAgICBlZGdlczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgIHNoYXJlZEtleToge1xuICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgIH07XG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc3RyaW5nO1xuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IGFueTtcbiAgICAgICAgfTtcbiAgICAgIH1bXTtcbiAgICB9O1xuICB9O1xuICBzaGFyZWRSZXF1ZXN0OiB7XG4gICAgaWQ6IElEO1xuICAgIHB4azoge1xuICAgICAgaWQ6IElEO1xuICAgICAgcGJrOiBzdHJpbmc7XG4gICAgfTtcbiAgICBjbGFpbToge1xuICAgICAgaWQ6IElEO1xuICAgICAgc3RhdGU6IFRwQ2xhaW1TdGF0ZTtcbiAgICAgIGFzQ2xhaW1BcHByb3ZlcnM6IHtcbiAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICBzdGF0ZTogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG4gICAgICAgICAgICBzaGFyZWRLZXk6IHtcbiAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhQ2xlYXJKc29uOiBhbnk7XG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IHN0cmluZztcbiAgICAgICAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbjogYW55O1xuICAgICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbHM6IHtcbiAgICAgICAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9O1xuICAgICAgICB9W107XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG5jb25zdCBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudCA9IGdxbFR5cGVkPFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0PmBcbmZyYWdtZW50IFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50IG9uIFNoYXJlZFRwUGFzc3dvcmRSZXNldE5vZGUge1xuICBpZFxuICB0cCB7XG4gICAgaWRcbiAgICBvdGhlciB7XG4gICAgICB1c2VybmFtZVxuICAgIH1cbiAgfVxuICBhc3NlbWJseSB7XG4gICAgYXNBcHByb3ZlcnMge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBpZFxuICAgICAgICAgIHNoYXJlZEtleSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgIH1cbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2hhcmVkUmVxdWVzdCB7XG4gICAgaWRcbiAgICBweGsge1xuICAgICAgaWRcbiAgICAgIHBia1xuICAgIH1cbiAgICBjbGFpbSB7XG4gICAgICBpZFxuICAgICAgc3RhdGVcbiAgICAgIGFzQ2xhaW1BcHByb3ZlcnMge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgIHNoYXJlZEtleSB7XG4gICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFcbiAgICAgICAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbHMge1xuICAgICAgICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5UmVzdWx0IHtcbiAgc2hhcmVkVHBQYXNzd29yZFJlc2V0czoge1xuICAgIGVkZ2VzOiB7XG4gICAgICBub2RlOiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdDtcbiAgICB9W107XG4gIH07XG59XG5leHBvcnQgY29uc3QgU2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5ID0gZ3FsVHlwZWQ8U2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFNoYXJlZFRwUGFzc3dvcmRSZXNldHNRdWVyeSB7XG4gIHNoYXJlZFRwUGFzc3dvcmRSZXNldHMge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAuLi5TaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuJHtTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQge1xuICBzaGFyZWRUcFBhc3N3b3JkUmVzZXQ6IFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0O1xufVxuZXhwb3J0IGNvbnN0IFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5ID0gZ3FsVHlwZWQ8U2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQ+YFxucXVlcnkgU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgc2hhcmVkVHBQYXNzd29yZFJlc2V0KGlkOiAkaWQpIHtcbiAgICAuLi5TaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFxuICB9XG59XG4ke1NoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICBjYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgaWQ6IElEO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IENhbmNlbFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPENhbmNlbFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdD5gXG5tdXRhdGlvbiBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24ge1xuICBjYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiB7fSkge1xuICAgIGlkXG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvblJlc3VsdCB7XG4gIGNyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2U6IHtcbiAgICBjaGFsbGVuZ2U6IGFueTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb24gPSBncWxUeXBlZDxDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uKFxuICAkaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VJbnB1dCFcbikge1xuICBjcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICBjaGFsbGVuZ2VcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICBwcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3Q6IHtcbiAgICBpZHBQYXNzd29yZDogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8UHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24oXG4gICRpbnB1dDogUHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0SW5wdXQhXG4pIHtcbiAgcHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiAkaW5wdXQpIHtcbiAgICBpZHBQYXNzd29yZFxuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdCB7XG4gIGNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdDoge1xuICAgIGlkOiBJRDtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uKFxuICAkaW5wdXQ6IENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxuKSB7XG4gIGNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XG4gICAgaWRcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdCB7XG4gIGFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgY2xhaW1BcHByb3Zlcjoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbihcbiAgJGlucHV0OiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxuKSB7XG4gIGFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiAkaW5wdXQpIHtcbiAgICBjbGFpbUFwcHJvdmVyIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xuICByZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgY2xhaW1BcHByb3Zlcjoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8UmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIFJlamVjdFRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbihcbiAgJGlucHV0OiBSZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0SW5wdXQhXG4pIHtcbiAgcmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XG4gICAgY2xhaW1BcHByb3ZlciB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5UmVzdWx0IHtcbiAgdHBQYXNzd29yZFJlc2V0VXNlcjoge1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcmVzZXRVc2VybmFtZTogc3RyaW5nO1xuICAgIHN0YXRlOiBUcENsYWltU3RhdGU7XG4gICAgcGFzc0tleToge1xuICAgICAgaWQ6IElEO1xuICAgICAgcGFzc0tleVBhcmFtczogR2VuZXJpY1NjYWxhcjtcbiAgICAgIHBhc3NJZHBQYXJhbXM6IEdlbmVyaWNTY2FsYXI7XG4gICAgfTtcbiAgICBtYXN0ZXJLZXk6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICAgIHB4azoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcbiAgICBhc3NlbWJseToge1xuICAgICAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xuICAgICAgcXVvcnVtOiBudW1iZXI7XG4gICAgICBzdWJBc3NlbWJsaWVzOiB7XG4gICAgICAgIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcbiAgICAgICAgcXVvcnVtOiBudW1iZXI7XG4gICAgICAgIGFwcHJvdmVyczoge1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIHN0YXRlOiBUcENsYWltQXBwcm92ZXJTdGF0ZTtcbiAgICAgICAgfVtdO1xuICAgICAgfVtdO1xuICAgIH07XG4gICAgYXBwcm92YWxzOiB7XG4gICAgICBpZDogSUQ7XG4gICAgICBtb2RpZmllZDogRGF0ZVRpbWU7XG4gICAgICBhcHByb3ZlckVtYWlsOiBzdHJpbmc7XG4gICAgICByZWNlaXZlckNpcGhlcjogc3RyaW5nO1xuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IHN0cmluZztcbiAgICB9W107XG4gICAgYXNzZW1ibHlDaXBoZXJEYXRhOiBzdHJpbmc7XG4gICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcms6IHN0cmluZztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBUcFBhc3N3b3JkUmVzZXRVc2VyUXVlcnkgPSBncWxUeXBlZDxUcFBhc3N3b3JkUmVzZXRVc2VyUXVlcnlSZXN1bHQ+YFxucXVlcnkgVHBQYXNzd29yZFJlc2V0VXNlclF1ZXJ5IHtcbiAgdHBQYXNzd29yZFJlc2V0VXNlciB7XG4gICAgdXNlcm5hbWVcbiAgICByZXNldFVzZXJuYW1lXG4gICAgc3RhdGVcbiAgICBwYXNzS2V5IHtcbiAgICAgIGlkXG4gICAgICBwYXNzS2V5UGFyYW1zXG4gICAgICBwYXNzSWRwUGFyYW1zXG4gICAgfVxuICAgIG1hc3RlcktleSB7XG4gICAgICBpZFxuICAgIH1cbiAgICBweGsge1xuICAgICAgaWRcbiAgICB9XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXlcbiAgICBhc3NlbWJseSB7XG4gICAgICBzaW5nbGVSZWplY3RcbiAgICAgIHF1b3J1bVxuICAgICAgc3ViQXNzZW1ibGllcyB7XG4gICAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgICBxdW9ydW1cbiAgICAgICAgYXBwcm92ZXJzIHtcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgZW1haWxcbiAgICAgICAgICBzdGF0ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGFwcHJvdmFscyB7XG4gICAgICBpZFxuICAgICAgbW9kaWZpZWRcbiAgICAgIGFwcHJvdmVyRW1haWxcbiAgICAgIHJlY2VpdmVyQ2lwaGVyXG4gICAgICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgIH1cbiAgICBhc3NlbWJseUNpcGhlckRhdGFcbiAgICB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclBya1xuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRRdWVyeVJlc3VsdCB7XG4gIHRwUGFzc3dvcmRSZXNldDoge1xuICAgIGlkOiBJRDtcbiAgICBhcHBsaWVkOiBib29sZWFuO1xuICAgIGFzc2VtYmx5OiB7XG4gICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gICAgICBxdW9ydW06IG51bWJlcjtcbiAgICAgIHN1YmplY3RLZXk6IHtcbiAgICAgICAgaWQ6IElEO1xuICAgICAgfTtcbiAgICAgIGFzc2VtYmx5S2V5OiB7XG4gICAgICAgIGlkOiBJRDtcbiAgICAgIH07XG4gICAgICBhc3NlbWJseUNpcGhlckRhdGE6IHN0cmluZztcbiAgICAgIHN1YkFzc2VtYmxpZXM6IHtcbiAgICAgICAgZWRnZXM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gICAgICAgICAgICBxdW9ydW06IG51bWJlcjtcbiAgICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhOiBzdHJpbmc7XG4gICAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbjogYW55O1xuICAgICAgICAgICAgYXBwcm92ZXJzOiB7XG4gICAgICAgICAgICAgIGVkZ2VzOiB7XG4gICAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgICAgdHA6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IElEO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHNoYXJlZEtleToge1xuICAgICAgICAgICAgICAgICAgICBpZDogSUQ7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1bXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcbiAgICAgICAgfVtdO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFRwUGFzc3dvcmRSZXNldFF1ZXJ5ID0gZ3FsVHlwZWQ8VHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQ+YFxucXVlcnkgVHBQYXNzd29yZFJlc2V0UXVlcnkge1xuICB0cFBhc3N3b3JkUmVzZXQge1xuICAgIGlkXG4gICAgYXBwbGllZFxuICAgIGFzc2VtYmx5IHtcbiAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgcXVvcnVtXG4gICAgICBzdWJqZWN0S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIGFzc2VtYmx5S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIGFzc2VtYmx5Q2lwaGVyRGF0YVxuICAgICAgc3ViQXNzZW1ibGllcyB7XG4gICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBzaW5nbGVSZWplY3RcbiAgICAgICAgICAgIHF1b3J1bVxuICAgICAgICAgICAgc3ViamVjdENpcGhlckRhdGFcbiAgICAgICAgICAgIGFwcHJvdmVycyB7XG4gICAgICAgICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICB0cCB7XG4gICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xuICBjcmVhdGVUcFBhc3N3b3JkUmVzZXQ6IHtcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IENyZWF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8Q3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBDcmVhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcbiAgY3JlYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICB0cFBhc3N3b3JkUmVzZXQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uUmVzdWx0IHtcbiAgZGVsZXRlVHBQYXNzd29yZFJlc2V0OiB7XG4gICAgaWQ6IElEO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8RGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gRGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24ge1xuICBkZWxldGVUcFBhc3N3b3JkUmVzZXQoaW5wdXQ6IHt9KSB7XG4gICAgaWRcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xuICB1cGRhdGVUcFBhc3N3b3JkUmVzZXQ6IHtcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFVwZGF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8VXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBVcGRhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcbiAgdXBkYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICB0cFBhc3N3b3JkUmVzZXQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1gO1xuIl19
1
+ import { gqlTyped } from '../_common/ast';
2
+ const SharedTpPasswordResetFragment = gqlTyped `
3
+ fragment SharedTpPasswordResetFragment on SharedTpPasswordResetNode {
4
+ id
5
+ tp {
6
+ id
7
+ other {
8
+ username
9
+ }
10
+ }
11
+ assembly {
12
+ asApprovers {
13
+ edges {
14
+ node {
15
+ id
16
+ sharedKey {
17
+ id
18
+ }
19
+ sharedCipherData
20
+ }
21
+ }
22
+ }
23
+ }
24
+ sharedRequest {
25
+ id
26
+ pxk {
27
+ id
28
+ pbk
29
+ }
30
+ claim {
31
+ id
32
+ state
33
+ asClaimApprovers {
34
+ edges {
35
+ node {
36
+ id
37
+ state
38
+ sharedKey {
39
+ id
40
+ }
41
+ sharedCipherApprovalData
42
+ sharedCipherPartialAssemblyKey
43
+ receiverApprovals {
44
+ edges {
45
+ node {
46
+ id
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }`;
56
+ export const SharedTpPasswordResetsQuery = gqlTyped `
57
+ query SharedTpPasswordResetsQuery {
58
+ sharedTpPasswordResets {
59
+ edges {
60
+ node {
61
+ ...SharedTpPasswordResetFragment
62
+ }
63
+ }
64
+ }
65
+ }
66
+ ${SharedTpPasswordResetFragment}
67
+ `;
68
+ export const SharedTpPasswordResetQuery = gqlTyped `
69
+ query SharedTpPasswordResetQuery($id: LrRelayIdInput!) {
70
+ sharedTpPasswordReset(id: $id) {
71
+ ...SharedTpPasswordResetFragment
72
+ }
73
+ }
74
+ ${SharedTpPasswordResetFragment}
75
+ `;
76
+ export const CancelTpPasswordResetRequestMutation = gqlTyped `
77
+ mutation CancelTpPasswordResetRequestMutation {
78
+ cancelTpPasswordResetRequest(input: {}) {
79
+ id
80
+ }
81
+ }`;
82
+ export const CreateTpAssemblyKeyChallengeMutation = gqlTyped `
83
+ mutation CreateTpAssemblyKeyChallengeMutation(
84
+ $input: CreateTpAssemblyKeyChallengeInput!
85
+ ) {
86
+ createTpAssemblyKeyChallenge(input: $input) {
87
+ challenge
88
+ }
89
+ }`;
90
+ export const PreCompleteTpPasswordResetRequestMutation = gqlTyped `
91
+ mutation PreCompleteTpPasswordResetRequestMutation(
92
+ $input: PreCompleteTpPasswordResetRequestInput!
93
+ ) {
94
+ preCompleteTpPasswordResetRequest(input: $input) {
95
+ idpPassword
96
+ }
97
+ }`;
98
+ export const CompleteTpPasswordResetRequestMutation = gqlTyped `
99
+ mutation CompleteTpPasswordResetRequestMutation(
100
+ $input: CompleteTpPasswordResetRequestInput!
101
+ ) {
102
+ completeTpPasswordResetRequest(input: $input) {
103
+ id
104
+ }
105
+ }`;
106
+ export const ApproveTpPasswordResetRequestMutation = gqlTyped `
107
+ mutation ApproveTpPasswordResetRequestMutation(
108
+ $input: ApproveTpPasswordResetRequestInput!
109
+ ) {
110
+ approveTpPasswordResetRequest(input: $input) {
111
+ claimApprover {
112
+ id
113
+ }
114
+ }
115
+ }`;
116
+ export const RejectTpPasswordResetRequestMutation = gqlTyped `
117
+ mutation RejectTpPasswordResetRequestMutation(
118
+ $input: RejectTpPasswordResetRequestInput!
119
+ ) {
120
+ rejectTpPasswordResetRequest(input: $input) {
121
+ claimApprover {
122
+ id
123
+ }
124
+ }
125
+ }`;
126
+ export const TpPasswordResetUserQuery = gqlTyped `
127
+ query TpPasswordResetUserQuery {
128
+ tpPasswordResetUser {
129
+ username
130
+ resetUsername
131
+ state
132
+ passKey {
133
+ id
134
+ passKeyParams
135
+ passIdpParams
136
+ }
137
+ masterKey {
138
+ id
139
+ }
140
+ pxk {
141
+ id
142
+ }
143
+ sessionEncryptionKey
144
+ assembly {
145
+ singleReject
146
+ quorum
147
+ subAssemblies {
148
+ singleReject
149
+ quorum
150
+ approvers {
151
+ name
152
+ email
153
+ state
154
+ }
155
+ }
156
+ }
157
+ approvals {
158
+ id
159
+ modified
160
+ approverEmail
161
+ receiverCipher
162
+ receiverCipherPartialAssemblyKey
163
+ }
164
+ assemblyCipherData
165
+ wrappedAssemblyKeyVerifierPrk
166
+ }
167
+ }`;
168
+ export const TpPasswordResetQuery = gqlTyped `
169
+ query TpPasswordResetQuery {
170
+ tpPasswordReset {
171
+ id
172
+ applied
173
+ assembly {
174
+ singleReject
175
+ quorum
176
+ subjectKey {
177
+ id
178
+ }
179
+ assemblyKey {
180
+ id
181
+ }
182
+ assemblyCipherData
183
+ subAssemblies {
184
+ edges {
185
+ node {
186
+ id
187
+ singleReject
188
+ quorum
189
+ subjectCipherData
190
+ approvers {
191
+ edges {
192
+ node {
193
+ id
194
+ tp {
195
+ id
196
+ }
197
+ sharedKey {
198
+ id
199
+ }
200
+ sharedCipherData
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }`;
210
+ export const CreateTpPasswordResetMutation = gqlTyped `
211
+ mutation CreateTpPasswordResetMutation($input: CreateTpPasswordResetInput!) {
212
+ createTpPasswordReset(input: $input) {
213
+ tpPasswordReset {
214
+ id
215
+ }
216
+ }
217
+ }`;
218
+ export const DeleteTpPasswordResetMutation = gqlTyped `
219
+ mutation DeleteTpPasswordResetMutation {
220
+ deleteTpPasswordReset(input: {}) {
221
+ id
222
+ }
223
+ }`;
224
+ export const UpdateTpPasswordResetMutation = gqlTyped `
225
+ mutation UpdateTpPasswordResetMutation($input: UpdateTpPasswordResetInput!) {
226
+ updateTpPasswordReset(input: $input) {
227
+ tpPasswordReset {
228
+ id
229
+ }
230
+ }
231
+ }`;
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuZ3FsLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL25ld3JlcG8va2MtY2xpZW50L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RydXN0ZWQtcGFydGllcy90cC1wYXNzd29yZC1yZXNldC5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBK0QxQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBcUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURqRixDQUFDO0FBU0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsUUFBUSxDQUFtQzs7Ozs7Ozs7OztFQVVwRiw2QkFBNkI7Q0FDOUIsQ0FBQztBQUtGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBa0M7Ozs7OztFQU1sRiw2QkFBNkI7Q0FDOUIsQ0FBQztBQU9GLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLFFBQVEsQ0FBNEM7Ozs7O0VBS3RHLENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLENBQTRDOzs7Ozs7O0VBT3RHLENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxRQUFRLENBQWlEOzs7Ozs7O0VBT2hILENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxRQUFRLENBQThDOzs7Ozs7O0VBTzFHLENBQUM7QUFTSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxRQUFRLENBQTZDOzs7Ozs7Ozs7RUFTeEcsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLFFBQVEsQ0FBNEM7Ozs7Ozs7OztFQVN0RyxDQUFDO0FBMkNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLFFBQVEsQ0FBZ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUM5RSxDQUFDO0FBNENILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUN0RSxDQUFDO0FBU0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsUUFBUSxDQUFxQzs7Ozs7OztFQU94RixDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsUUFBUSxDQUFxQzs7Ozs7RUFLeEYsQ0FBQztBQVNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBcUM7Ozs7Ozs7RUFPeEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlbmVyaWNTY2FsYXIsIElEIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcclxuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XHJcbmltcG9ydCB7XHJcbiAgVHBDbGFpbVN0YXRlLFxyXG4gIFRwQ2xhaW1BcHByb3ZlclN0YXRlLFxyXG59IGZyb20gJy4uL2FwaS90eXBlcy9sci1ncmFwaHFsLnR5cGVzJztcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICcuLi9hcGkvdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0IHtcclxuICBpZDogSUQ7XHJcbiAgdHA6IHtcclxuICAgIGlkOiBJRDtcclxuICAgIG90aGVyOiB7XHJcbiAgICAgIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgICB9O1xyXG4gIH07XHJcbiAgYXNzZW1ibHk6IHtcclxuICAgIGFzQXBwcm92ZXJzOiB7XHJcbiAgICAgIGVkZ2VzOiB7XHJcbiAgICAgICAgbm9kZToge1xyXG4gICAgICAgICAgaWQ6IElEO1xyXG4gICAgICAgICAgc2hhcmVkS2V5OiB7XHJcbiAgICAgICAgICAgIGlkOiBJRDtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhOiBzdHJpbmc7XHJcbiAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBhbnk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVtdO1xyXG4gICAgfTtcclxuICB9O1xyXG4gIHNoYXJlZFJlcXVlc3Q6IHtcclxuICAgIGlkOiBJRDtcclxuICAgIHB4azoge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICAgIHBiazogc3RyaW5nO1xyXG4gICAgfTtcclxuICAgIGNsYWltOiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgICAgc3RhdGU6IFRwQ2xhaW1TdGF0ZTtcclxuICAgICAgYXNDbGFpbUFwcHJvdmVyczoge1xyXG4gICAgICAgIGVkZ2VzOiB7XHJcbiAgICAgICAgICBub2RlOiB7XHJcbiAgICAgICAgICAgIGlkOiBJRDtcclxuICAgICAgICAgICAgc3RhdGU6IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xyXG4gICAgICAgICAgICBzaGFyZWRLZXk6IHtcclxuICAgICAgICAgICAgICBpZDogSUQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YTogc3RyaW5nO1xyXG4gICAgICAgICAgICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb246IGFueTtcclxuICAgICAgICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbjogYW55O1xyXG4gICAgICAgICAgICByZWNlaXZlckFwcHJvdmFsczoge1xyXG4gICAgICAgICAgICAgIGVkZ2VzOiB7XHJcbiAgICAgICAgICAgICAgICBub2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgIGlkOiBJRDtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVtdO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9W107XHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuY29uc3QgU2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnQgPSBncWxUeXBlZDxTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdD5gXHJcbmZyYWdtZW50IFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50IG9uIFNoYXJlZFRwUGFzc3dvcmRSZXNldE5vZGUge1xyXG4gIGlkXHJcbiAgdHAge1xyXG4gICAgaWRcclxuICAgIG90aGVyIHtcclxuICAgICAgdXNlcm5hbWVcclxuICAgIH1cclxuICB9XHJcbiAgYXNzZW1ibHkge1xyXG4gICAgYXNBcHByb3ZlcnMge1xyXG4gICAgICBlZGdlcyB7XHJcbiAgICAgICAgbm9kZSB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgICAgc2hhcmVkS2V5IHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2hhcmVkUmVxdWVzdCB7XHJcbiAgICBpZFxyXG4gICAgcHhrIHtcclxuICAgICAgaWRcclxuICAgICAgcGJrXHJcbiAgICB9XHJcbiAgICBjbGFpbSB7XHJcbiAgICAgIGlkXHJcbiAgICAgIHN0YXRlXHJcbiAgICAgIGFzQ2xhaW1BcHByb3ZlcnMge1xyXG4gICAgICAgIGVkZ2VzIHtcclxuICAgICAgICAgIG5vZGUge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBzdGF0ZVxyXG4gICAgICAgICAgICBzaGFyZWRLZXkge1xyXG4gICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhXHJcbiAgICAgICAgICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleVxyXG4gICAgICAgICAgICByZWNlaXZlckFwcHJvdmFscyB7XHJcbiAgICAgICAgICAgICAgZWRnZXMge1xyXG4gICAgICAgICAgICAgICAgbm9kZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0c1F1ZXJ5UmVzdWx0IHtcclxuICBzaGFyZWRUcFBhc3N3b3JkUmVzZXRzOiB7XHJcbiAgICBlZGdlczoge1xyXG4gICAgICBub2RlOiBTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFJlc3VsdDtcclxuICAgIH1bXTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBTaGFyZWRUcFBhc3N3b3JkUmVzZXRzUXVlcnkgPSBncWxUeXBlZDxTaGFyZWRUcFBhc3N3b3JkUmVzZXRzUXVlcnlSZXN1bHQ+YFxyXG5xdWVyeSBTaGFyZWRUcFBhc3N3b3JkUmVzZXRzUXVlcnkge1xyXG4gIHNoYXJlZFRwUGFzc3dvcmRSZXNldHMge1xyXG4gICAgZWRnZXMge1xyXG4gICAgICBub2RlIHtcclxuICAgICAgICAuLi5TaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiR7U2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnR9XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5UmVzdWx0IHtcclxuICBzaGFyZWRUcFBhc3N3b3JkUmVzZXQ6IFNoYXJlZFRwUGFzc3dvcmRSZXNldEZyYWdtZW50UmVzdWx0O1xyXG59XHJcbmV4cG9ydCBjb25zdCBTaGFyZWRUcFBhc3N3b3JkUmVzZXRRdWVyeSA9IGdxbFR5cGVkPFNoYXJlZFRwUGFzc3dvcmRSZXNldFF1ZXJ5UmVzdWx0PmBcclxucXVlcnkgU2hhcmVkVHBQYXNzd29yZFJlc2V0UXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcclxuICBzaGFyZWRUcFBhc3N3b3JkUmVzZXQoaWQ6ICRpZCkge1xyXG4gICAgLi4uU2hhcmVkVHBQYXNzd29yZFJlc2V0RnJhZ21lbnRcclxuICB9XHJcbn1cclxuJHtTaGFyZWRUcFBhc3N3b3JkUmVzZXRGcmFnbWVudH1cclxuYDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0IHtcclxuICBjYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XHJcbiAgICBpZDogSUQ7XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgQ2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8Q2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcclxubXV0YXRpb24gQ2FuY2VsVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uIHtcclxuICBjYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiB7fSkge1xyXG4gICAgaWRcclxuICB9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb25SZXN1bHQge1xyXG4gIGNyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2U6IHtcclxuICAgIGNoYWxsZW5nZTogYW55O1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvbiA9IGdxbFR5cGVkPENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvblJlc3VsdD5gXHJcbm11dGF0aW9uIENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VNdXRhdGlvbihcclxuICAkaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlLZXlDaGFsbGVuZ2VJbnB1dCFcclxuKSB7XHJcbiAgY3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZShpbnB1dDogJGlucHV0KSB7XHJcbiAgICBjaGFsbGVuZ2VcclxuICB9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdCB7XHJcbiAgcHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XHJcbiAgICBpZHBQYXNzd29yZDogc3RyaW5nO1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8UHJlQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxyXG5tdXRhdGlvbiBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbihcclxuICAkaW5wdXQ6IFByZUNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxyXG4pIHtcclxuICBwcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3QoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgaWRwUGFzc3dvcmRcclxuICB9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdCB7XHJcbiAgY29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XHJcbiAgICBpZDogSUQ7XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24gPSBncWxUeXBlZDxDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvblJlc3VsdD5gXHJcbm11dGF0aW9uIENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uKFxyXG4gICRpbnB1dDogQ29tcGxldGVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0SW5wdXQhXHJcbikge1xyXG4gIGNvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdChpbnB1dDogJGlucHV0KSB7XHJcbiAgICBpZFxyXG4gIH1cclxufWA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQge1xyXG4gIGFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XHJcbiAgICBjbGFpbUFwcHJvdmVyOiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbiA9IGdxbFR5cGVkPEFwcHJvdmVUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb25SZXN1bHQ+YFxyXG5tdXRhdGlvbiBBcHByb3ZlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uKFxyXG4gICRpbnB1dDogQXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RJbnB1dCFcclxuKSB7XHJcbiAgYXBwcm92ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3QoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgY2xhaW1BcHByb3ZlciB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0IHtcclxuICByZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XHJcbiAgICBjbGFpbUFwcHJvdmVyOiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uID0gZ3FsVHlwZWQ8UmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uUmVzdWx0PmBcclxubXV0YXRpb24gUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uKFxyXG4gICRpbnB1dDogUmVqZWN0VHBQYXNzd29yZFJlc2V0UmVxdWVzdElucHV0IVxyXG4pIHtcclxuICByZWplY3RUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0KGlucHV0OiAkaW5wdXQpIHtcclxuICAgIGNsYWltQXBwcm92ZXIge1xyXG4gICAgICBpZFxyXG4gICAgfVxyXG4gIH1cclxufWA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeVJlc3VsdCB7XHJcbiAgdHBQYXNzd29yZFJlc2V0VXNlcjoge1xyXG4gICAgdXNlcm5hbWU6IHN0cmluZztcclxuICAgIHJlc2V0VXNlcm5hbWU6IHN0cmluZztcclxuICAgIHN0YXRlOiBUcENsYWltU3RhdGU7XHJcbiAgICBwYXNzS2V5OiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgICAgcGFzc0tleVBhcmFtczogR2VuZXJpY1NjYWxhcjtcclxuICAgICAgcGFzc0lkcFBhcmFtczogR2VuZXJpY1NjYWxhcjtcclxuICAgIH07XHJcbiAgICBtYXN0ZXJLZXk6IHtcclxuICAgICAgaWQ6IElEO1xyXG4gICAgfTtcclxuICAgIHB4azoge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICB9O1xyXG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcclxuICAgIGFzc2VtYmx5OiB7XHJcbiAgICAgIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcclxuICAgICAgcXVvcnVtOiBudW1iZXI7XHJcbiAgICAgIHN1YkFzc2VtYmxpZXM6IHtcclxuICAgICAgICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XHJcbiAgICAgICAgcXVvcnVtOiBudW1iZXI7XHJcbiAgICAgICAgYXBwcm92ZXJzOiB7XHJcbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgICAgICAgc3RhdGU6IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xyXG4gICAgICAgIH1bXTtcclxuICAgICAgfVtdO1xyXG4gICAgfTtcclxuICAgIGFwcHJvdmFsczoge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICAgIG1vZGlmaWVkOiBEYXRlVGltZTtcclxuICAgICAgYXBwcm92ZXJFbWFpbDogc3RyaW5nO1xyXG4gICAgICByZWNlaXZlckNpcGhlcjogc3RyaW5nO1xyXG4gICAgICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleTogc3RyaW5nO1xyXG4gICAgfVtdO1xyXG4gICAgYXNzZW1ibHlDaXBoZXJEYXRhOiBzdHJpbmc7XHJcbiAgICB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByazogc3RyaW5nO1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeSA9IGdxbFR5cGVkPFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeVJlc3VsdD5gXHJcbnF1ZXJ5IFRwUGFzc3dvcmRSZXNldFVzZXJRdWVyeSB7XHJcbiAgdHBQYXNzd29yZFJlc2V0VXNlciB7XHJcbiAgICB1c2VybmFtZVxyXG4gICAgcmVzZXRVc2VybmFtZVxyXG4gICAgc3RhdGVcclxuICAgIHBhc3NLZXkge1xyXG4gICAgICBpZFxyXG4gICAgICBwYXNzS2V5UGFyYW1zXHJcbiAgICAgIHBhc3NJZHBQYXJhbXNcclxuICAgIH1cclxuICAgIG1hc3RlcktleSB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgICBweGsge1xyXG4gICAgICBpZFxyXG4gICAgfVxyXG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXlcclxuICAgIGFzc2VtYmx5IHtcclxuICAgICAgc2luZ2xlUmVqZWN0XHJcbiAgICAgIHF1b3J1bVxyXG4gICAgICBzdWJBc3NlbWJsaWVzIHtcclxuICAgICAgICBzaW5nbGVSZWplY3RcclxuICAgICAgICBxdW9ydW1cclxuICAgICAgICBhcHByb3ZlcnMge1xyXG4gICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgZW1haWxcclxuICAgICAgICAgIHN0YXRlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhcHByb3ZhbHMge1xyXG4gICAgICBpZFxyXG4gICAgICBtb2RpZmllZFxyXG4gICAgICBhcHByb3ZlckVtYWlsXHJcbiAgICAgIHJlY2VpdmVyQ2lwaGVyXHJcbiAgICAgIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5XHJcbiAgICB9XHJcbiAgICBhc3NlbWJseUNpcGhlckRhdGFcclxuICAgIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrXHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0UXVlcnlSZXN1bHQge1xyXG4gIHRwUGFzc3dvcmRSZXNldDoge1xyXG4gICAgaWQ6IElEO1xyXG4gICAgYXBwbGllZDogYm9vbGVhbjtcclxuICAgIGFzc2VtYmx5OiB7XHJcbiAgICAgIHNpbmdsZVJlamVjdDogYm9vbGVhbjtcclxuICAgICAgcXVvcnVtOiBudW1iZXI7XHJcbiAgICAgIHN1YmplY3RLZXk6IHtcclxuICAgICAgICBpZDogSUQ7XHJcbiAgICAgIH07XHJcbiAgICAgIGFzc2VtYmx5S2V5OiB7XHJcbiAgICAgICAgaWQ6IElEO1xyXG4gICAgICB9O1xyXG4gICAgICBhc3NlbWJseUNpcGhlckRhdGE6IHN0cmluZztcclxuICAgICAgc3ViQXNzZW1ibGllczoge1xyXG4gICAgICAgIGVkZ2VzOiB7XHJcbiAgICAgICAgICBub2RlOiB7XHJcbiAgICAgICAgICAgIGlkOiBJRDtcclxuICAgICAgICAgICAgc2luZ2xlUmVqZWN0OiBib29sZWFuO1xyXG4gICAgICAgICAgICBxdW9ydW06IG51bWJlcjtcclxuICAgICAgICAgICAgc3ViamVjdENpcGhlckRhdGE6IHN0cmluZztcclxuICAgICAgICAgICAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb246IGFueTtcclxuICAgICAgICAgICAgYXBwcm92ZXJzOiB7XHJcbiAgICAgICAgICAgICAgZWRnZXM6IHtcclxuICAgICAgICAgICAgICAgIG5vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgaWQ6IElEO1xyXG4gICAgICAgICAgICAgICAgICB0cDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBJRDtcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgc2hhcmVkS2V5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IElEO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhOiBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1bXTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVtdO1xyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBUcFBhc3N3b3JkUmVzZXRRdWVyeSA9IGdxbFR5cGVkPFRwUGFzc3dvcmRSZXNldFF1ZXJ5UmVzdWx0PmBcclxucXVlcnkgVHBQYXNzd29yZFJlc2V0UXVlcnkge1xyXG4gIHRwUGFzc3dvcmRSZXNldCB7XHJcbiAgICBpZFxyXG4gICAgYXBwbGllZFxyXG4gICAgYXNzZW1ibHkge1xyXG4gICAgICBzaW5nbGVSZWplY3RcclxuICAgICAgcXVvcnVtXHJcbiAgICAgIHN1YmplY3RLZXkge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgICAgYXNzZW1ibHlLZXkge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgICAgYXNzZW1ibHlDaXBoZXJEYXRhXHJcbiAgICAgIHN1YkFzc2VtYmxpZXMge1xyXG4gICAgICAgIGVkZ2VzIHtcclxuICAgICAgICAgIG5vZGUge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBzaW5nbGVSZWplY3RcclxuICAgICAgICAgICAgcXVvcnVtXHJcbiAgICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhXHJcbiAgICAgICAgICAgIGFwcHJvdmVycyB7XHJcbiAgICAgICAgICAgICAgZWRnZXMge1xyXG4gICAgICAgICAgICAgICAgbm9kZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgIHRwIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHNoYXJlZEtleSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBzaGFyZWRDaXBoZXJEYXRhXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xyXG4gIGNyZWF0ZVRwUGFzc3dvcmRSZXNldDoge1xyXG4gICAgdHBQYXNzd29yZFJlc2V0OiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24gPSBncWxUeXBlZDxDcmVhdGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvblJlc3VsdD5gXHJcbm11dGF0aW9uIENyZWF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uKCRpbnB1dDogQ3JlYXRlVHBQYXNzd29yZFJlc2V0SW5wdXQhKSB7XHJcbiAgY3JlYXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiAkaW5wdXQpIHtcclxuICAgIHRwUGFzc3dvcmRSZXNldCB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQge1xyXG4gIGRlbGV0ZVRwUGFzc3dvcmRSZXNldDoge1xyXG4gICAgaWQ6IElEO1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uID0gZ3FsVHlwZWQ8RGVsZXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb25SZXN1bHQ+YFxyXG5tdXRhdGlvbiBEZWxldGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvbiB7XHJcbiAgZGVsZXRlVHBQYXNzd29yZFJlc2V0KGlucHV0OiB7fSkge1xyXG4gICAgaWRcclxuICB9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvblJlc3VsdCB7XHJcbiAgdXBkYXRlVHBQYXNzd29yZFJlc2V0OiB7XHJcbiAgICB0cFBhc3N3b3JkUmVzZXQ6IHtcclxuICAgICAgaWQ6IElEO1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBVcGRhdGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvbiA9IGdxbFR5cGVkPFVwZGF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uUmVzdWx0PmBcclxubXV0YXRpb24gVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24oJGlucHV0OiBVcGRhdGVUcFBhc3N3b3JkUmVzZXRJbnB1dCEpIHtcclxuICB1cGRhdGVUcFBhc3N3b3JkUmVzZXQoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgdHBQYXNzd29yZFJlc2V0IHtcclxuICAgICAgaWRcclxuICAgIH1cclxuICB9XHJcbn1gO1xyXG4iXX0=