@lifeready/core 0.6.0-beta.1

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 -0
  2. package/bundles/lifeready-core.umd.js +15939 -0
  3. package/bundles/lifeready-core.umd.js.map +1 -0
  4. package/bundles/lifeready-core.umd.min.js +2 -0
  5. package/bundles/lifeready-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/_common/ast.js +40 -0
  7. package/esm2015/lib/_common/deferred-promise.js +24 -0
  8. package/esm2015/lib/_common/exceptions.js +157 -0
  9. package/esm2015/lib/_common/queries.gql.js +190 -0
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  11. package/esm2015/lib/_common/types.js +1 -0
  12. package/esm2015/lib/_common/utils.js +44 -0
  13. package/esm2015/lib/api/contact-card.gql.js +79 -0
  14. package/esm2015/lib/api/contact-card.service.js +154 -0
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  16. package/esm2015/lib/api/contact-card2.service.js +103 -0
  17. package/esm2015/lib/api/file.service.js +74 -0
  18. package/esm2015/lib/api/item2.gql.js +110 -0
  19. package/esm2015/lib/api/item2.service.js +311 -0
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  21. package/esm2015/lib/api/key-exchange.service.js +442 -0
  22. package/esm2015/lib/api/key-exchange.types.js +18 -0
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  25. package/esm2015/lib/api/lock.gql.js +40 -0
  26. package/esm2015/lib/api/lock.service.js +64 -0
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  34. package/esm2015/lib/api/message.service.js +138 -0
  35. package/esm2015/lib/api/persist.service.js +181 -0
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  37. package/esm2015/lib/api/query-processor/index.js +3 -0
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  43. package/esm2015/lib/api/time.service.js +146 -0
  44. package/esm2015/lib/api/types/graphql.types.js +7 -0
  45. package/esm2015/lib/api/types/index.js +3 -0
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  47. package/esm2015/lib/auth/auth.config.js +57 -0
  48. package/esm2015/lib/auth/auth.gql.js +48 -0
  49. package/esm2015/lib/auth/auth.types.js +27 -0
  50. package/esm2015/lib/auth/idle.service.js +168 -0
  51. package/esm2015/lib/auth/idle.types.js +7 -0
  52. package/esm2015/lib/auth/lbop.service.js +355 -0
  53. package/esm2015/lib/auth/life-ready-auth.service.js +333 -0
  54. package/esm2015/lib/auth/password.service.js +320 -0
  55. package/esm2015/lib/auth/register.service.js +172 -0
  56. package/esm2015/lib/auth/two-factor.service.js +74 -0
  57. package/esm2015/lib/category/category-meta.service.js +99 -0
  58. package/esm2015/lib/category/category.gql.js +406 -0
  59. package/esm2015/lib/category/category.service.js +390 -0
  60. package/esm2015/lib/category/category.types.js +29 -0
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  66. package/esm2015/lib/cryptography/key.service.js +124 -0
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  69. package/esm2015/lib/life-ready.config.js +84 -0
  70. package/esm2015/lib/life-ready.module.js +74 -0
  71. package/esm2015/lib/plan/plan.gql.js +123 -0
  72. package/esm2015/lib/plan/plan.service.js +149 -0
  73. package/esm2015/lib/plan/plan.types.js +11 -0
  74. package/esm2015/lib/record/record-attachment.service.js +101 -0
  75. package/esm2015/lib/record/record.gql.js +179 -0
  76. package/esm2015/lib/record/record.service.js +206 -0
  77. package/esm2015/lib/record/record.types.js +15 -0
  78. package/esm2015/lib/record-type/record-type.service.js +75 -0
  79. package/esm2015/lib/record-type/record-type.types.js +28 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  91. package/esm2015/lib/scenario/scenario.service.js +611 -0
  92. package/esm2015/lib/scenario/scenario.types.js +64 -0
  93. package/esm2015/lib/search/search.gql.js +62 -0
  94. package/esm2015/lib/search/search.service.js +156 -0
  95. package/esm2015/lib/search/search.types.js +6 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +266 -0
  98. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
  99. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +300 -0
  100. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
  101. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
  102. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
  103. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
  104. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
  105. package/esm2015/lib/users/profile-details.service.js +214 -0
  106. package/esm2015/lib/users/profile.gql.js +97 -0
  107. package/esm2015/lib/users/profile.service.js +169 -0
  108. package/esm2015/lib/users/profile.types.js +34 -0
  109. package/esm2015/lib/users/user.gql.js +60 -0
  110. package/esm2015/lib/users/user.service.js +79 -0
  111. package/esm2015/lib/users/user.types.js +5 -0
  112. package/esm2015/lifeready-core.js +10 -0
  113. package/esm2015/public-api.js +81 -0
  114. package/fesm2015/lifeready-core.js +13290 -0
  115. package/fesm2015/lifeready-core.js.map +1 -0
  116. package/lib/_common/ast.d.ts +11 -0
  117. package/lib/_common/deferred-promise.d.ts +12 -0
  118. package/lib/_common/exceptions.d.ts +109 -0
  119. package/lib/_common/queries.gql.d.ts +10 -0
  120. package/lib/_common/run-outside-angular.d.ts +14 -0
  121. package/lib/_common/types.d.ts +10 -0
  122. package/lib/_common/utils.d.ts +3 -0
  123. package/lib/api/contact-card.gql.d.ts +7 -0
  124. package/lib/api/contact-card.service.d.ts +52 -0
  125. package/lib/api/contact-card2.gql.d.ts +34 -0
  126. package/lib/api/contact-card2.service.d.ts +49 -0
  127. package/lib/api/file.service.d.ts +18 -0
  128. package/lib/api/item2.gql.d.ts +96 -0
  129. package/lib/api/item2.service.d.ts +177 -0
  130. package/lib/api/key-exchange.gql.d.ts +9 -0
  131. package/lib/api/key-exchange.service.d.ts +39 -0
  132. package/lib/api/key-exchange.types.d.ts +196 -0
  133. package/lib/api/key-exchange2.gql.d.ts +125 -0
  134. package/lib/api/key-exchange2.service.d.ts +187 -0
  135. package/lib/api/lock.gql.d.ts +27 -0
  136. package/lib/api/lock.service.d.ts +25 -0
  137. package/lib/api/lr-apollo.service.d.ts +15 -0
  138. package/lib/api/lr-graphql/index.d.ts +5 -0
  139. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
  140. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  141. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  142. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  143. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  144. package/lib/api/message.service.d.ts +58 -0
  145. package/lib/api/persist.service.d.ts +31 -0
  146. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  147. package/lib/api/query-processor/index.d.ts +2 -0
  148. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  149. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  150. package/lib/api/shared-contact-card.service.d.ts +33 -0
  151. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  152. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  153. package/lib/api/time.service.d.ts +16 -0
  154. package/lib/api/types/graphql.types.d.ts +29 -0
  155. package/lib/api/types/index.d.ts +2 -0
  156. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  157. package/lib/auth/auth.config.d.ts +5 -0
  158. package/lib/auth/auth.gql.d.ts +15 -0
  159. package/lib/auth/auth.types.d.ts +66 -0
  160. package/lib/auth/idle.service.d.ts +40 -0
  161. package/lib/auth/idle.types.d.ts +10 -0
  162. package/lib/auth/lbop.service.d.ts +91 -0
  163. package/lib/auth/life-ready-auth.service.d.ts +46 -0
  164. package/lib/auth/password.service.d.ts +78 -0
  165. package/lib/auth/register.service.d.ts +25 -0
  166. package/lib/auth/two-factor.service.d.ts +15 -0
  167. package/lib/category/category-meta.service.d.ts +23 -0
  168. package/lib/category/category.gql.d.ts +45 -0
  169. package/lib/category/category.service.d.ts +67 -0
  170. package/lib/category/category.types.d.ts +79 -0
  171. package/lib/cryptography/cryptography.types.d.ts +83 -0
  172. package/lib/cryptography/encryption.service.d.ts +41 -0
  173. package/lib/cryptography/key-factory.service.d.ts +38 -0
  174. package/lib/cryptography/key-graph.service.d.ts +33 -0
  175. package/lib/cryptography/key-meta.service.d.ts +44 -0
  176. package/lib/cryptography/key.service.d.ts +36 -0
  177. package/lib/cryptography/slip39.service.d.ts +43 -0
  178. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  179. package/lib/life-ready.config.d.ts +14 -0
  180. package/lib/life-ready.module.d.ts +5 -0
  181. package/lib/plan/plan.gql.d.ts +11 -0
  182. package/lib/plan/plan.service.d.ts +33 -0
  183. package/lib/plan/plan.types.d.ts +31 -0
  184. package/lib/record/record-attachment.service.d.ts +16 -0
  185. package/lib/record/record.gql.d.ts +14 -0
  186. package/lib/record/record.service.d.ts +25 -0
  187. package/lib/record/record.types.d.ts +57 -0
  188. package/lib/record-type/record-type.service.d.ts +11 -0
  189. package/lib/record-type/record-type.types.d.ts +50 -0
  190. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  191. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  192. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  193. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  194. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  195. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  196. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  197. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  198. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  199. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  200. package/lib/scenario/scenario.gql.d.ts +34 -0
  201. package/lib/scenario/scenario.service.d.ts +58 -0
  202. package/lib/scenario/scenario.types.d.ts +217 -0
  203. package/lib/search/search.gql.d.ts +1 -0
  204. package/lib/search/search.service.d.ts +25 -0
  205. package/lib/search/search.types.d.ts +20 -0
  206. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  207. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +41 -0
  208. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  209. package/lib/trusted-parties/tp-password-reset.service.d.ts +131 -0
  210. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  211. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  212. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  213. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  214. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  215. package/lib/users/profile-details.service.d.ts +21 -0
  216. package/lib/users/profile.gql.d.ts +11 -0
  217. package/lib/users/profile.service.d.ts +35 -0
  218. package/lib/users/profile.types.d.ts +96 -0
  219. package/lib/users/user.gql.d.ts +9 -0
  220. package/lib/users/user.service.d.ts +12 -0
  221. package/lib/users/user.types.d.ts +23 -0
  222. package/lifeready-core.d.ts +9 -0
  223. package/lifeready-core.metadata.json +1 -0
  224. package/package.json +29 -0
  225. package/public-api.d.ts +77 -0
@@ -0,0 +1,150 @@
1
+ import gql from 'graphql-tag';
2
+ import { KeyGraphField } from '../../_common/queries.gql';
3
+ import { TrustedPartyProperties } from '../../trusted-parties/trusted-party.gql';
4
+ import { CategoryFields, AccessFields } from '../../category/category.gql';
5
+ export const ReceiverFields = `
6
+ id
7
+ tp {
8
+ ${TrustedPartyProperties}
9
+ }
10
+ pbk {
11
+ id
12
+ }
13
+ sharedKey {
14
+ id
15
+ }
16
+ sharedCipherData
17
+ categories: receiverDirectories(plainMeta: $categoryFilter, orderBy: "created") {
18
+ edges {
19
+ node {
20
+ id
21
+ sharedKey {
22
+ id
23
+ }
24
+ sharedCipherData
25
+ accessRole
26
+ wrappedItemKey
27
+ directory {
28
+ ${CategoryFields}
29
+ }
30
+ }
31
+ }
32
+ }
33
+ records: receiverDirectories(plainMeta: $recordFilter, orderBy: "created") {
34
+ edges {
35
+ node {
36
+ id
37
+ sharedKey {
38
+ id
39
+ }
40
+ sharedCipherData
41
+ accessRole
42
+ wrappedItemKey
43
+ directory {
44
+ id
45
+ keyId
46
+ archived
47
+ plainMeta
48
+ cipherMeta
49
+ created
50
+ modified
51
+ ${AccessFields}
52
+ content: childFileLinks(plainMeta: $contentFilter) {
53
+ edges {
54
+ node {
55
+ childFile {
56
+ id
57
+ archived
58
+ currentVersion {
59
+ state {
60
+ keyId
61
+ plainMeta
62
+ cipherMeta
63
+ created
64
+ modified
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
75
+ `;
76
+ export const GetScenarioReceiverQuery = gql `
77
+ query GetScenarioReceiverQuery(
78
+ $id: LrRelayIdInput!,
79
+ $categoryFilter: LrJSONFilter!,
80
+ $recordFilter: LrJSONFilter!,
81
+ $contentFilter: LrJSONFilter
82
+ ) {
83
+ scenarioReceiver(id: $id) {
84
+ ${ReceiverFields}
85
+ }
86
+ ${KeyGraphField}
87
+ } `;
88
+ export const CreateScenarioReceiverMutation = gql `
89
+ mutation CreateScenarioReceiverMutation(
90
+ $input: CreateScenarioReceiverInput!
91
+ ) {
92
+ createScenarioReceiver(input: $input) {
93
+ receiver {
94
+ id
95
+ }
96
+ }
97
+ }
98
+ `;
99
+ export const UpdateScenarioReceiverMutation = gql `
100
+ mutation UpdateScenarioReceiverMutation(
101
+ $input: UpdateScenarioReceiverInput!
102
+ ) {
103
+ updateScenarioReceiver(input: $input) {
104
+ receiver {
105
+ id
106
+ }
107
+ }
108
+ }
109
+ `;
110
+ export const DeleteScenarioReceiverMutation = gql `
111
+ mutation DeleteScenarioReceiverMutation(
112
+ $input: DeleteScenarioReceiverInput!
113
+ ) {
114
+ deleteScenarioReceiver(input: $input) {
115
+ id
116
+ }
117
+ }
118
+ `;
119
+ export const AddScenarioReceiverDirectoryMutation = gql `
120
+ mutation AddScenarioReceiverDirectoryMutation(
121
+ $input: AddScenarioReceiverDirectoryInput!
122
+ ) {
123
+ addScenarioReceiverDirectory(input: $input) {
124
+ receiverDirectory {
125
+ id
126
+ }
127
+ }
128
+ }
129
+ `;
130
+ export const UpdateScenarioReceiverDirectoryMutation = gql `
131
+ mutation UpdateScenarioReceiverDirectoryMutation(
132
+ $input: UpdateScenarioReceiverDirectoryInput!
133
+ ) {
134
+ updateScenarioReceiverDirectory(input: $input) {
135
+ receiverDirectory {
136
+ id
137
+ }
138
+ }
139
+ }
140
+ `;
141
+ export const DeleteScenarioReceiverDirectoryMutation = gql `
142
+ mutation DeleteScenarioReceiverDirectoryMutation(
143
+ $input: DeleteScenarioReceiverDirectoryInput!
144
+ ) {
145
+ deleteScenarioReceiverDirectory(input: $input) {
146
+ id
147
+ }
148
+ }
149
+ `;
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tcmVjZWl2ZXIuZ3FsLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvc2NlbmFyaW8vcmVjZWl2ZXJzL3NjZW5hcmlvLXJlY2VpdmVyLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHOzs7TUFHeEIsc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQW9CaEIsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF1QmQsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0J2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztNQVFyQyxjQUFjOztJQUVoQixhQUFhO0dBQ2QsQ0FBQztBQUVKLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztDQVVoRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7O0NBVWhELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUWhELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Q0FVdEQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztDQVV6RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztDQVF6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XHJcbmltcG9ydCB7IEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi8uLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcclxuaW1wb3J0IHsgVHJ1c3RlZFBhcnR5UHJvcGVydGllcyB9IGZyb20gJy4uLy4uL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5LmdxbCc7XHJcbmltcG9ydCB7IENhdGVnb3J5RmllbGRzLCBBY2Nlc3NGaWVsZHMgfSBmcm9tICcuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5ncWwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJlY2VpdmVyRmllbGRzID0gYFxyXG4gIGlkXHJcbiAgdHAge1xyXG4gICAgJHtUcnVzdGVkUGFydHlQcm9wZXJ0aWVzfVxyXG4gIH1cclxuICBwYmsge1xyXG4gICAgaWRcclxuICB9XHJcbiAgc2hhcmVkS2V5IHtcclxuICAgIGlkXHJcbiAgfVxyXG4gIHNoYXJlZENpcGhlckRhdGFcclxuICBjYXRlZ29yaWVzOiByZWNlaXZlckRpcmVjdG9yaWVzKHBsYWluTWV0YTogJGNhdGVnb3J5RmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xyXG4gICAgZWRnZXMge1xyXG4gICAgICBub2RlIHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIHNoYXJlZEtleSB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhXHJcbiAgICAgICAgYWNjZXNzUm9sZVxyXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5XHJcbiAgICAgICAgZGlyZWN0b3J5IHtcclxuICAgICAgICAgICR7Q2F0ZWdvcnlGaWVsZHN9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlY29yZHM6IHJlY2VpdmVyRGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkcmVjb3JkRmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xyXG4gICAgZWRnZXMge1xyXG4gICAgICBub2RlIHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIHNoYXJlZEtleSB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhXHJcbiAgICAgICAgYWNjZXNzUm9sZVxyXG4gICAgICAgIHdyYXBwZWRJdGVtS2V5XHJcbiAgICAgICAgZGlyZWN0b3J5IHtcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgICBrZXlJZFxyXG4gICAgICAgICAgYXJjaGl2ZWRcclxuICAgICAgICAgIHBsYWluTWV0YVxyXG4gICAgICAgICAgY2lwaGVyTWV0YVxyXG4gICAgICAgICAgY3JlYXRlZFxyXG4gICAgICAgICAgbW9kaWZpZWRcclxuICAgICAgICAgICR7QWNjZXNzRmllbGRzfVxyXG4gICAgICAgICAgY29udGVudDogY2hpbGRGaWxlTGlua3MocGxhaW5NZXRhOiAkY29udGVudEZpbHRlcikge1xyXG4gICAgICAgICAgICBlZGdlcyB7XHJcbiAgICAgICAgICAgICAgbm9kZSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZEZpbGUge1xyXG4gICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICBhcmNoaXZlZFxyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUge1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5SWRcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWluTWV0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2lwaGVyTWV0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR2V0U2NlbmFyaW9SZWNlaXZlclF1ZXJ5ID0gZ3FsYFxyXG5xdWVyeSBHZXRTY2VuYXJpb1JlY2VpdmVyUXVlcnkoXHJcbiAgJGlkOiBMclJlbGF5SWRJbnB1dCEsXHJcbiAgJGNhdGVnb3J5RmlsdGVyOiBMckpTT05GaWx0ZXIhLFxyXG4gICRyZWNvcmRGaWx0ZXI6IExySlNPTkZpbHRlciEsXHJcbiAgJGNvbnRlbnRGaWx0ZXI6IExySlNPTkZpbHRlclxyXG4pIHtcclxuICBzY2VuYXJpb1JlY2VpdmVyKGlkOiAkaWQpIHtcclxuICAgICR7UmVjZWl2ZXJGaWVsZHN9XHJcbiAgfVxyXG4gICR7S2V5R3JhcGhGaWVsZH1cclxufSBgO1xyXG5cclxuZXhwb3J0IGNvbnN0IENyZWF0ZVNjZW5hcmlvUmVjZWl2ZXJNdXRhdGlvbiA9IGdxbGBcclxuICBtdXRhdGlvbiBDcmVhdGVTY2VuYXJpb1JlY2VpdmVyTXV0YXRpb24oXHJcbiAgICAkaW5wdXQ6IENyZWF0ZVNjZW5hcmlvUmVjZWl2ZXJJbnB1dCFcclxuICApIHtcclxuICAgIGNyZWF0ZVNjZW5hcmlvUmVjZWl2ZXIoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICByZWNlaXZlciB7XHJcbiAgICAgICAgaWRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVcGRhdGVTY2VuYXJpb1JlY2VpdmVyTXV0YXRpb24gPSBncWxgXHJcbiAgbXV0YXRpb24gVXBkYXRlU2NlbmFyaW9SZWNlaXZlck11dGF0aW9uKFxyXG4gICAgJGlucHV0OiBVcGRhdGVTY2VuYXJpb1JlY2VpdmVySW5wdXQhXHJcbiAgKSB7XHJcbiAgICB1cGRhdGVTY2VuYXJpb1JlY2VpdmVyKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgcmVjZWl2ZXIge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgRGVsZXRlU2NlbmFyaW9SZWNlaXZlck11dGF0aW9uID0gZ3FsYFxyXG4gIG11dGF0aW9uIERlbGV0ZVNjZW5hcmlvUmVjZWl2ZXJNdXRhdGlvbihcclxuICAgICRpbnB1dDogRGVsZXRlU2NlbmFyaW9SZWNlaXZlcklucHV0IVxyXG4gICkge1xyXG4gICAgZGVsZXRlU2NlbmFyaW9SZWNlaXZlcihpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFkZFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlNdXRhdGlvbiA9IGdxbGBcclxuICBtdXRhdGlvbiBBZGRTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5TXV0YXRpb24oXHJcbiAgICAkaW5wdXQ6IEFkZFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlJbnB1dCFcclxuICApIHtcclxuICAgIGFkZFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnkoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICByZWNlaXZlckRpcmVjdG9yeSB7XHJcbiAgICAgICAgaWRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVcGRhdGVTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5TXV0YXRpb24gPSBncWxgXHJcbiAgbXV0YXRpb24gVXBkYXRlU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU11dGF0aW9uKFxyXG4gICAgJGlucHV0OiBVcGRhdGVTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5SW5wdXQhXHJcbiAgKSB7XHJcbiAgICB1cGRhdGVTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5KGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgcmVjZWl2ZXJEaXJlY3Rvcnkge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgRGVsZXRlU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU11dGF0aW9uID0gZ3FsYFxyXG4gIG11dGF0aW9uIERlbGV0ZVNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlNdXRhdGlvbihcclxuICAgICRpbnB1dDogRGVsZXRlU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeUlucHV0IVxyXG4gICkge1xyXG4gICAgZGVsZXRlU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG4iXX0=
@@ -0,0 +1,229 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { LrApolloService } from '../../api/lr-apollo.service';
4
+ import { CategoryFilter, RecordFilter } from '../../category/category.gql';
5
+ import { CategoryService } from '../../category/category.service';
6
+ import { KeyGraphService } from '../../cryptography/key-graph.service';
7
+ import { KeyMetaService } from '../../cryptography/key-meta.service';
8
+ import { RecordContentFilter } from '../../record/record.gql';
9
+ import { RecordService } from '../../record/record.service';
10
+ import { TrustedPartyService } from '../../trusted-parties/trusted-party.service';
11
+ import { AddScenarioReceiverDirectoryMutation, CreateScenarioReceiverMutation, DeleteScenarioReceiverDirectoryMutation, DeleteScenarioReceiverMutation, GetScenarioReceiverQuery, UpdateScenarioReceiverDirectoryMutation, UpdateScenarioReceiverMutation, } from './scenario-receiver.gql';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../../api/lr-apollo.service";
14
+ import * as i2 from "../../cryptography/key-graph.service";
15
+ import * as i3 from "../../cryptography/key-meta.service";
16
+ import * as i4 from "../../trusted-parties/trusted-party.service";
17
+ import * as i5 from "../../category/category.service";
18
+ import * as i6 from "../../record/record.service";
19
+ export class ScenarioReceiverService {
20
+ constructor(lrApollo, keyGraph, keyMetaService, tpService, categoryService, recordService) {
21
+ this.lrApollo = lrApollo;
22
+ this.keyGraph = keyGraph;
23
+ this.keyMetaService = keyMetaService;
24
+ this.tpService = tpService;
25
+ this.categoryService = categoryService;
26
+ this.recordService = recordService;
27
+ }
28
+ getReceiver(receiverId) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ const { scenarioReceiver } = yield this.lrApollo.query({
31
+ query: GetScenarioReceiverQuery,
32
+ variables: {
33
+ id: receiverId,
34
+ categoryFilter: CategoryFilter,
35
+ recordFilter: RecordFilter,
36
+ contentFilter: RecordContentFilter,
37
+ },
38
+ });
39
+ return this.mapReceiver(scenarioReceiver);
40
+ });
41
+ }
42
+ mapReceiver(receiver) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const { message } = yield this.keyGraph.decryptFromString(receiver.sharedKey.id, receiver.sharedCipherData);
45
+ return {
46
+ id: receiver.id,
47
+ keyId: receiver.sharedKey.id,
48
+ trustedParty: yield this.tpService.mapTrustedParty(receiver.tp),
49
+ message,
50
+ categories: yield this.mapCategories(receiver.categories),
51
+ records: yield this.mapRecords(receiver.records),
52
+ };
53
+ });
54
+ }
55
+ mapCategories(list) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return (yield Promise.all(list.edges
58
+ .map((x) => x.node)
59
+ .map((x) => x.childDirectory || x)
60
+ .map((node) => this.mapReceiverCategory(node))))
61
+ .filter((x) => x)
62
+ .sort((x, y) => x.category.name === y.category.name
63
+ ? 0
64
+ : x.category.name > y.category.name
65
+ ? 1
66
+ : -1);
67
+ });
68
+ }
69
+ mapRecords(list) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ return (yield Promise.all(list.edges
72
+ .map((x) => x.node)
73
+ .map((x) => x.childDirectory || x)
74
+ .map((node) => this.mapReceiverRecord(node))))
75
+ .filter((x) => x)
76
+ .sort((x, y) => x.record.name === y.record.name
77
+ ? 0
78
+ : x.record.name > y.record.name
79
+ ? 1
80
+ : -1);
81
+ });
82
+ }
83
+ mapReceiverCategory(receiverDirectory) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ return {
86
+ id: receiverDirectory.id,
87
+ keyId: receiverDirectory.sharedKey.id,
88
+ accessLevel: receiverDirectory.accessRole,
89
+ category: yield this.categoryService.mapCategory(receiverDirectory.directory),
90
+ };
91
+ });
92
+ }
93
+ mapReceiverRecord(receiverDirectory) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ return {
96
+ id: receiverDirectory.id,
97
+ keyId: receiverDirectory.sharedKey.id,
98
+ accessLevel: receiverDirectory.accessRole,
99
+ record: yield this.categoryService.mapRecord(receiverDirectory.directory),
100
+ };
101
+ });
102
+ }
103
+ addReceiver(receiver) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ const wrappedContent = yield this.keyMetaService.wrapContentWithKey(receiver.plainSharedCipherData, receiver.trustedPartySharedKeyId);
106
+ const { createScenarioReceiver } = yield this.lrApollo.mutate({
107
+ mutation: CreateScenarioReceiverMutation,
108
+ variables: {
109
+ input: {
110
+ scenarioId: receiver.scenarioId,
111
+ tpId: receiver.trustedPartyId,
112
+ tpSharedKeyId: receiver.trustedPartySharedKeyId,
113
+ tpSharedKeyWrappedSharedKey: wrappedContent.rootKey.wrappedKey,
114
+ sharedCipherData: wrappedContent.cipherMeta,
115
+ },
116
+ },
117
+ });
118
+ return createScenarioReceiver.receiver.id;
119
+ });
120
+ }
121
+ updateReceiver(receiver) {
122
+ return __awaiter(this, void 0, void 0, function* () {
123
+ const sharedCipherData = yield this.keyGraph.encryptToString(receiver.keyId, receiver.plainSharedCipherData);
124
+ yield this.lrApollo.mutate({
125
+ mutation: UpdateScenarioReceiverMutation,
126
+ variables: {
127
+ input: {
128
+ receiverId: receiver.id,
129
+ sharedKeyId: receiver.keyId,
130
+ sharedCipherData,
131
+ },
132
+ },
133
+ });
134
+ });
135
+ }
136
+ deleteReceiver(receiverId) {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ yield this.lrApollo.mutate({
139
+ mutation: DeleteScenarioReceiverMutation,
140
+ variables: { input: { receiverId } },
141
+ });
142
+ });
143
+ }
144
+ addReceiverCategory(input) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ const category = yield this.categoryService.getCategory(input.categoryId);
147
+ const res = yield this.lrApollo.mutate({
148
+ mutation: AddScenarioReceiverDirectoryMutation,
149
+ variables: {
150
+ input: Object.assign(Object.assign({}, (yield this.addReceiverItem(input, category.category.keyId))), { directoryId: category.category.id }),
151
+ },
152
+ });
153
+ return res.addScenarioReceiverDirectory.receiverDirectory.id;
154
+ });
155
+ }
156
+ addReceiverRecord(input) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ const record = yield this.recordService.getRecord(input.recordId);
159
+ const { addScenarioReceiverDirectory } = yield this.lrApollo.mutate({
160
+ mutation: AddScenarioReceiverDirectoryMutation,
161
+ variables: {
162
+ input: Object.assign(Object.assign({}, (yield this.addReceiverItem(input, record.keyId))), { directoryId: record.id }),
163
+ },
164
+ });
165
+ return addScenarioReceiverDirectory.receiverDirectory.id;
166
+ });
167
+ }
168
+ addReceiverItem(input, itemKeyId) {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ const sharedCipherData = input.plainSharedCipherData
171
+ ? yield this.keyGraph.encryptToString(input.receiverKeyId, input.plainSharedCipherData)
172
+ : '';
173
+ const itemKey = yield this.keyGraph.getKey(itemKeyId);
174
+ let wrappedItemKey = yield this.keyGraph.encryptToString(input.receiverKeyId, itemKey.jwk.toJSON(true));
175
+ if (input.assemblyKeyId) {
176
+ wrappedItemKey = yield this.keyGraph.encryptToString(input.assemblyKeyId, wrappedItemKey);
177
+ }
178
+ return {
179
+ receiverId: input.receiverId,
180
+ sharedKeyId: input.receiverKeyId,
181
+ assemblyKeyId: input.assemblyKeyId,
182
+ wrappedItemKey,
183
+ accessRole: input.accessRole,
184
+ sharedCipherData,
185
+ };
186
+ });
187
+ }
188
+ updateReceiverItem(input) {
189
+ return __awaiter(this, void 0, void 0, function* () {
190
+ const sharedCipherData = input.plainSharedCipherData
191
+ ? yield this.keyGraph.encryptToString(input.keyId, input.plainSharedCipherData)
192
+ : '';
193
+ yield this.lrApollo.mutate({
194
+ mutation: UpdateScenarioReceiverDirectoryMutation,
195
+ variables: {
196
+ input: {
197
+ receiverDirectoryId: input.id,
198
+ sharedKeyId: input.keyId,
199
+ accessRole: input.accessRole,
200
+ sharedCipherData,
201
+ },
202
+ },
203
+ });
204
+ });
205
+ }
206
+ deleteReceiverItem(receiverCategoryId) {
207
+ return __awaiter(this, void 0, void 0, function* () {
208
+ yield this.lrApollo.mutate({
209
+ mutation: DeleteScenarioReceiverDirectoryMutation,
210
+ variables: { input: { receiverDirectoryId: receiverCategoryId } },
211
+ });
212
+ });
213
+ }
214
+ }
215
+ ScenarioReceiverService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScenarioReceiverService_Factory() { return new ScenarioReceiverService(i0.ɵɵinject(i1.LrApolloService), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.KeyMetaService), i0.ɵɵinject(i4.TrustedPartyService), i0.ɵɵinject(i5.CategoryService), i0.ɵɵinject(i6.RecordService)); }, token: ScenarioReceiverService, providedIn: "root" });
216
+ ScenarioReceiverService.decorators = [
217
+ { type: Injectable, args: [{
218
+ providedIn: 'root',
219
+ },] }
220
+ ];
221
+ ScenarioReceiverService.ctorParameters = () => [
222
+ { type: LrApolloService },
223
+ { type: KeyGraphService },
224
+ { type: KeyMetaService },
225
+ { type: TrustedPartyService },
226
+ { type: CategoryService },
227
+ { type: RecordService }
228
+ ];
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tcmVjZWl2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWN0cy90ZXN0L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3NjZW5hcmlvL3JlY2VpdmVycy9zY2VuYXJpby1yZWNlaXZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVsRixPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsOEJBQThCLEVBQzlCLHdCQUF3QixFQUN4Qix1Q0FBdUMsRUFDdkMsOEJBQThCLEdBQy9CLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7O0FBZ0JqQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQ1UsUUFBeUIsRUFDekIsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsU0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsYUFBNEI7UUFMNUIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENB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QUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFNO2dCQUM5QixRQUFRLEVBQUUsdUNBQXVDO2dCQUNqRCxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUM3QixXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUs7d0JBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTt3QkFDNUIsZ0JBQWdCO3FCQUNqQjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVZLGtCQUFrQixDQUFDLGtCQUEwQjs7WUFDeEQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBTTtnQkFDOUIsUUFBUSxFQUFFLHVDQUF1QztnQkFDakQsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTthQUNsRSxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7Ozs7WUFyUEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFoQ1EsZUFBZTtZQUdmLGVBQWU7WUFDZixjQUFjO1lBR2QsbUJBQW1CO1lBTG5CLGVBQWU7WUFJZixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXRlZ29yeUZpbHRlciwgUmVjb3JkRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2F0ZWdvcnkvY2F0ZWdvcnkuZ3FsJztcclxuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2F0ZWdvcnkvY2F0ZWdvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uLy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XHJcbmltcG9ydCB7IEtleU1ldGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3J5cHRvZ3JhcGh5L2tleS1tZXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNvcmRDb250ZW50RmlsdGVyIH0gZnJvbSAnLi4vLi4vcmVjb3JkL3JlY29yZC5ncWwnO1xyXG5pbXBvcnQgeyBSZWNvcmRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVjb3JkL3JlY29yZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJ1c3RlZFBhcnR5U2VydmljZSB9IGZyb20gJy4uLy4uL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIYXNFZGdlcyB9IGZyb20gJy4uLy4uL19jb21tb24vdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFkZFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlNdXRhdGlvbixcclxuICBDcmVhdGVTY2VuYXJpb1JlY2VpdmVyTXV0YXRpb24sXHJcbiAgRGVsZXRlU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU11dGF0aW9uLFxyXG4gIERlbGV0ZVNjZW5hcmlvUmVjZWl2ZXJNdXRhdGlvbixcclxuICBHZXRTY2VuYXJpb1JlY2VpdmVyUXVlcnksXHJcbiAgVXBkYXRlU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU11dGF0aW9uLFxyXG4gIFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJNdXRhdGlvbixcclxufSBmcm9tICcuL3NjZW5hcmlvLXJlY2VpdmVyLmdxbCc7XHJcbmltcG9ydCB7XHJcbiAgQWRkU2NlbmFyaW9SZWNlaXZlckNhdGVnb3J5SW5wdXQsXHJcbiAgQWRkU2NlbmFyaW9SZWNlaXZlckl0ZW1JbnB1dCxcclxuICBBZGRTY2VuYXJpb1JlY2VpdmVyUmVjb3JkSW5wdXQsXHJcbiAgQWRkU2NlbmFyaW9SZWNlaXZlcixcclxuICBSZWNlaXZlcixcclxuICBSZWNlaXZlckNhdGVnb3J5LFxyXG4gIFJlY2VpdmVyUmVjb3JkLFxyXG4gIFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXIsXHJcbiAgVXBkYXRlU2NlbmFyaW9SZWNlaXZlckl0ZW1JbnB1dCxcclxufSBmcm9tICcuL3NjZW5hcmlvLXJlY2VpdmVyLnR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1JlY2VpdmVyU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxyQXBvbGxvOiBMckFwb2xsb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgdHBTZXJ2aWNlOiBUcnVzdGVkUGFydHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYXRlZ29yeVNlcnZpY2U6IENhdGVnb3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjb3JkU2VydmljZTogUmVjb3JkU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFJlY2VpdmVyKHJlY2VpdmVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVjZWl2ZXI+IHtcclxuICAgIGNvbnN0IHsgc2NlbmFyaW9SZWNlaXZlciB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcclxuICAgICAgcXVlcnk6IEdldFNjZW5hcmlvUmVjZWl2ZXJRdWVyeSxcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaWQ6IHJlY2VpdmVySWQsXHJcbiAgICAgICAgY2F0ZWdvcnlGaWx0ZXI6IENhdGVnb3J5RmlsdGVyLFxyXG4gICAgICAgIHJlY29yZEZpbHRlcjogUmVjb3JkRmlsdGVyLFxyXG4gICAgICAgIGNvbnRlbnRGaWx0ZXI6IFJlY29yZENvbnRlbnRGaWx0ZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLm1hcFJlY2VpdmVyKHNjZW5hcmlvUmVjZWl2ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG1hcFJlY2VpdmVyKHJlY2VpdmVyOiBhbnkpOiBQcm9taXNlPFJlY2VpdmVyPiB7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmc8e1xyXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB9PihyZWNlaXZlci5zaGFyZWRLZXkuaWQsIHJlY2VpdmVyLnNoYXJlZENpcGhlckRhdGEpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IHJlY2VpdmVyLmlkLFxyXG4gICAgICBrZXlJZDogcmVjZWl2ZXIuc2hhcmVkS2V5LmlkLFxyXG4gICAgICB0cnVzdGVkUGFydHk6IGF3YWl0IHRoaXMudHBTZXJ2aWNlLm1hcFRydXN0ZWRQYXJ0eShyZWNlaXZlci50cCksXHJcbiAgICAgIG1lc3NhZ2UsXHJcbiAgICAgIGNhdGVnb3JpZXM6IGF3YWl0IHRoaXMubWFwQ2F0ZWdvcmllcyhyZWNlaXZlci5jYXRlZ29yaWVzKSxcclxuICAgICAgcmVjb3JkczogYXdhaXQgdGhpcy5tYXBSZWNvcmRzKHJlY2VpdmVyLnJlY29yZHMpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbWFwQ2F0ZWdvcmllcyhsaXN0OiBIYXNFZGdlczxhbnk+KSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbDxSZWNlaXZlckNhdGVnb3J5PihcclxuICAgICAgICBsaXN0LmVkZ2VzXHJcbiAgICAgICAgICAubWFwKCh4KSA9PiB4Lm5vZGUpXHJcbiAgICAgICAgICAubWFwKCh4KSA9PiB4LmNoaWxkRGlyZWN0b3J5IHx8IHgpXHJcbiAgICAgICAgICAubWFwKChub2RlOiBhbnkpID0+IHRoaXMubWFwUmVjZWl2ZXJDYXRlZ29yeShub2RlKSlcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4KVxyXG4gICAgICAuc29ydCgoeCwgeSkgPT5cclxuICAgICAgICB4LmNhdGVnb3J5Lm5hbWUgPT09IHkuY2F0ZWdvcnkubmFtZVxyXG4gICAgICAgICAgPyAwXHJcbiAgICAgICAgICA6IHguY2F0ZWdvcnkubmFtZSA+IHkuY2F0ZWdvcnkubmFtZVxyXG4gICAgICAgICAgPyAxXHJcbiAgICAgICAgICA6IC0xXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIG1hcFJlY29yZHMobGlzdDogSGFzRWRnZXM8YW55Pikge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8UmVjZWl2ZXJSZWNvcmQ+KFxyXG4gICAgICAgIGxpc3QuZWRnZXNcclxuICAgICAgICAgIC5tYXAoKHgpID0+IHgubm9kZSlcclxuICAgICAgICAgIC5tYXAoKHgpID0+IHguY2hpbGREaXJlY3RvcnkgfHwgeClcclxuICAgICAgICAgIC5tYXAoKG5vZGU6IGFueSkgPT4gdGhpcy5tYXBSZWNlaXZlclJlY29yZChub2RlKSlcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4KVxyXG4gICAgICAuc29ydCgoeCwgeSkgPT5cclxuICAgICAgICB4LnJlY29yZC5uYW1lID09PSB5LnJlY29yZC5uYW1lXHJcbiAgICAgICAgICA/IDBcclxuICAgICAgICAgIDogeC5yZWNvcmQubmFtZSA+IHkucmVjb3JkLm5hbWVcclxuICAgICAgICAgID8gMVxyXG4gICAgICAgICAgOiAtMVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBtYXBSZWNlaXZlckNhdGVnb3J5KFxyXG4gICAgcmVjZWl2ZXJEaXJlY3Rvcnk6IGFueVxyXG4gICk6IFByb21pc2U8UmVjZWl2ZXJDYXRlZ29yeT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IHJlY2VpdmVyRGlyZWN0b3J5LmlkLFxyXG4gICAgICBrZXlJZDogcmVjZWl2ZXJEaXJlY3Rvcnkuc2hhcmVkS2V5LmlkLFxyXG4gICAgICBhY2Nlc3NMZXZlbDogcmVjZWl2ZXJEaXJlY3RvcnkuYWNjZXNzUm9sZSxcclxuICAgICAgY2F0ZWdvcnk6IGF3YWl0IHRoaXMuY2F0ZWdvcnlTZXJ2aWNlLm1hcENhdGVnb3J5KFxyXG4gICAgICAgIHJlY2VpdmVyRGlyZWN0b3J5LmRpcmVjdG9yeVxyXG4gICAgICApLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbWFwUmVjZWl2ZXJSZWNvcmQoXHJcbiAgICByZWNlaXZlckRpcmVjdG9yeTogYW55XHJcbiAgKTogUHJvbWlzZTxSZWNlaXZlclJlY29yZD4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IHJlY2VpdmVyRGlyZWN0b3J5LmlkLFxyXG4gICAgICBrZXlJZDogcmVjZWl2ZXJEaXJlY3Rvcnkuc2hhcmVkS2V5LmlkLFxyXG4gICAgICBhY2Nlc3NMZXZlbDogcmVjZWl2ZXJEaXJlY3RvcnkuYWNjZXNzUm9sZSxcclxuICAgICAgcmVjb3JkOiBhd2FpdCB0aGlzLmNhdGVnb3J5U2VydmljZS5tYXBSZWNvcmQocmVjZWl2ZXJEaXJlY3RvcnkuZGlyZWN0b3J5KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYWRkUmVjZWl2ZXIocmVjZWl2ZXI6IEFkZFNjZW5hcmlvUmVjZWl2ZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3Qgd3JhcHBlZENvbnRlbnQgPSBhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLndyYXBDb250ZW50V2l0aEtleShcclxuICAgICAgcmVjZWl2ZXIucGxhaW5TaGFyZWRDaXBoZXJEYXRhLFxyXG4gICAgICByZWNlaXZlci50cnVzdGVkUGFydHlTaGFyZWRLZXlJZFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB7IGNyZWF0ZVNjZW5hcmlvUmVjZWl2ZXIgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPGFueT4oe1xyXG4gICAgICBtdXRhdGlvbjogQ3JlYXRlU2NlbmFyaW9SZWNlaXZlck11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgc2NlbmFyaW9JZDogcmVjZWl2ZXIuc2NlbmFyaW9JZCxcclxuICAgICAgICAgIHRwSWQ6IHJlY2VpdmVyLnRydXN0ZWRQYXJ0eUlkLFxyXG4gICAgICAgICAgdHBTaGFyZWRLZXlJZDogcmVjZWl2ZXIudHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQsXHJcbiAgICAgICAgICB0cFNoYXJlZEtleVdyYXBwZWRTaGFyZWRLZXk6IHdyYXBwZWRDb250ZW50LnJvb3RLZXkud3JhcHBlZEtleSxcclxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGE6IHdyYXBwZWRDb250ZW50LmNpcGhlck1ldGEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNyZWF0ZVNjZW5hcmlvUmVjZWl2ZXIucmVjZWl2ZXIuaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUmVjZWl2ZXIocmVjZWl2ZXI6IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcclxuICAgICAgcmVjZWl2ZXIua2V5SWQsXHJcbiAgICAgIHJlY2VpdmVyLnBsYWluU2hhcmVkQ2lwaGVyRGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcclxuICAgICAgbXV0YXRpb246IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIHJlY2VpdmVySWQ6IHJlY2VpdmVyLmlkLFxyXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IHJlY2VpdmVyLmtleUlkLFxyXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsZXRlUmVjZWl2ZXIocmVjZWl2ZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcclxuICAgICAgbXV0YXRpb246IERlbGV0ZVNjZW5hcmlvUmVjZWl2ZXJNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0OiB7IHJlY2VpdmVySWQgfSB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYWRkUmVjZWl2ZXJDYXRlZ29yeShcclxuICAgIGlucHV0OiBBZGRTY2VuYXJpb1JlY2VpdmVyQ2F0ZWdvcnlJbnB1dFxyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlTZXJ2aWNlLmdldENhdGVnb3J5KGlucHV0LmNhdGVnb3J5SWQpO1xyXG5cclxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPGFueT4oe1xyXG4gICAgICBtdXRhdGlvbjogQWRkU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4uKGF3YWl0IHRoaXMuYWRkUmVjZWl2ZXJJdGVtKGlucHV0LCBjYXRlZ29yeS5jYXRlZ29yeS5rZXlJZCkpLFxyXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IGNhdGVnb3J5LmNhdGVnb3J5LmlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzLmFkZFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnkucmVjZWl2ZXJEaXJlY3RvcnkuaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYWRkUmVjZWl2ZXJSZWNvcmQoXHJcbiAgICBpbnB1dDogQWRkU2NlbmFyaW9SZWNlaXZlclJlY29yZElucHV0XHJcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMucmVjb3JkU2VydmljZS5nZXRSZWNvcmQoaW5wdXQucmVjb3JkSWQpO1xyXG5cclxuICAgIGNvbnN0IHsgYWRkU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeSB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XHJcbiAgICAgIG11dGF0aW9uOiBBZGRTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5TXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAuLi4oYXdhaXQgdGhpcy5hZGRSZWNlaXZlckl0ZW0oaW5wdXQsIHJlY29yZC5rZXlJZCkpLFxyXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IHJlY29yZC5pZCxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYWRkU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeS5yZWNlaXZlckRpcmVjdG9yeS5pZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgYWRkUmVjZWl2ZXJJdGVtKFxyXG4gICAgaW5wdXQ6IEFkZFNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQsXHJcbiAgICBpdGVtS2V5SWQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBzaGFyZWRDaXBoZXJEYXRhID0gaW5wdXQucGxhaW5TaGFyZWRDaXBoZXJEYXRhXHJcbiAgICAgID8gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgICAgICBpbnB1dC5yZWNlaXZlcktleUlkLFxyXG4gICAgICAgICAgaW5wdXQucGxhaW5TaGFyZWRDaXBoZXJEYXRhXHJcbiAgICAgICAgKVxyXG4gICAgICA6ICcnO1xyXG5cclxuICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShpdGVtS2V5SWQpO1xyXG4gICAgbGV0IHdyYXBwZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgIGlucHV0LnJlY2VpdmVyS2V5SWQsXHJcbiAgICAgIGl0ZW1LZXkuandrLnRvSlNPTih0cnVlKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoaW5wdXQuYXNzZW1ibHlLZXlJZCkge1xyXG4gICAgICB3cmFwcGVkSXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxyXG4gICAgICAgIGlucHV0LmFzc2VtYmx5S2V5SWQsXHJcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICByZWNlaXZlcklkOiBpbnB1dC5yZWNlaXZlcklkLFxyXG4gICAgICBzaGFyZWRLZXlJZDogaW5wdXQucmVjZWl2ZXJLZXlJZCxcclxuICAgICAgYXNzZW1ibHlLZXlJZDogaW5wdXQuYXNzZW1ibHlLZXlJZCxcclxuICAgICAgd3JhcHBlZEl0ZW1LZXksXHJcbiAgICAgIGFjY2Vzc1JvbGU6IGlucHV0LmFjY2Vzc1JvbGUsXHJcbiAgICAgIHNoYXJlZENpcGhlckRhdGEsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVJlY2VpdmVySXRlbShcclxuICAgIGlucHV0OiBVcGRhdGVTY2VuYXJpb1JlY2VpdmVySXRlbUlucHV0XHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzaGFyZWRDaXBoZXJEYXRhID0gaW5wdXQucGxhaW5TaGFyZWRDaXBoZXJEYXRhXHJcbiAgICAgID8gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgICAgICBpbnB1dC5rZXlJZCxcclxuICAgICAgICAgIGlucHV0LnBsYWluU2hhcmVkQ2lwaGVyRGF0YVxyXG4gICAgICAgIClcclxuICAgICAgOiAnJztcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcclxuICAgICAgbXV0YXRpb246IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIHJlY2VpdmVyRGlyZWN0b3J5SWQ6IGlucHV0LmlkLFxyXG4gICAgICAgICAgc2hhcmVkS2V5SWQ6IGlucHV0LmtleUlkLFxyXG4gICAgICAgICAgYWNjZXNzUm9sZTogaW5wdXQuYWNjZXNzUm9sZSxcclxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZVJlY2VpdmVySXRlbShyZWNlaXZlckNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XHJcbiAgICAgIG11dGF0aW9uOiBEZWxldGVTY2VuYXJpb1JlY2VpdmVyRGlyZWN0b3J5TXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dDogeyByZWNlaXZlckRpcmVjdG9yeUlkOiByZWNlaXZlckNhdGVnb3J5SWQgfSB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tcmVjZWl2ZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zY2VuYXJpby9yZWNlaXZlcnMvc2NlbmFyaW8tcmVjZWl2ZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsIH0gZnJvbSAnLi8uLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XHJcbmltcG9ydCB7IFRydXN0ZWRQYXJ0eSB9IGZyb20gJy4uLy4uL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5LnR5cGVzJztcclxuaW1wb3J0IHsgQ2F0ZWdvcnksIFZhdWx0UmVjb3JkIH0gZnJvbSAnLi4vLi4vY2F0ZWdvcnkvY2F0ZWdvcnkudHlwZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlciB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBrZXlJZDogc3RyaW5nO1xyXG4gIHRydXN0ZWRQYXJ0eTogVHJ1c3RlZFBhcnR5O1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcblxyXG4gIGNhdGVnb3JpZXM6IFJlY2VpdmVyQ2F0ZWdvcnlbXTtcclxuICByZWNvcmRzPzogUmVjZWl2ZXJSZWNvcmRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlckNhdGVnb3J5IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGtleUlkOiBzdHJpbmc7XHJcbiAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsO1xyXG4gIGNhdGVnb3J5OiBDYXRlZ29yeTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlclJlY29yZCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBrZXlJZDogc3RyaW5nO1xyXG4gIGFjY2Vzc0xldmVsOiBBY2Nlc3NMZXZlbDtcclxuICByZWNvcmQ6IFZhdWx0UmVjb3JkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNjZW5hcmlvUmVjZWl2ZXIge1xyXG4gIHNjZW5hcmlvSWQ6IHN0cmluZztcclxuICB0cnVzdGVkUGFydHlJZDogc3RyaW5nO1xyXG4gIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiBzdHJpbmc7XHJcbiAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiBvYmplY3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlU2NlbmFyaW9SZWNlaXZlciB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBrZXlJZDogc3RyaW5nO1xyXG4gIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQge1xyXG4gIHNjZW5hcmlvSWQ6IHN0cmluZztcclxuICBhc3NlbWJseUtleUlkPzogc3RyaW5nO1xyXG4gIHJlY2VpdmVySWQ6IHN0cmluZztcclxuICByZWNlaXZlcktleUlkOiBzdHJpbmc7XHJcbiAgYWNjZXNzUm9sZTogQWNjZXNzTGV2ZWw7XHJcbiAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNjZW5hcmlvUmVjZWl2ZXJDYXRlZ29yeUlucHV0XHJcbiAgZXh0ZW5kcyBBZGRTY2VuYXJpb1JlY2VpdmVySXRlbUlucHV0IHtcclxuICBjYXRlZ29yeUlkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWRkU2NlbmFyaW9SZWNlaXZlclJlY29yZElucHV0XHJcbiAgZXh0ZW5kcyBBZGRTY2VuYXJpb1JlY2VpdmVySXRlbUlucHV0IHtcclxuICByZWNvcmRJZDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAga2V5SWQ6IHN0cmluZztcclxuICBhY2Nlc3NSb2xlOiBBY2Nlc3NMZXZlbDtcclxuICBwbGFpblNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XHJcbn1cclxuIl19