@decaf-ts/integrations 0.4.0 → 0.4.1-0

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 (1068) hide show
  1. package/README.md +11 -3
  2. package/dist/integrations.cjs +2087 -2
  3. package/dist/integrations.js +2356 -2
  4. package/jest.config.cjs +1 -1
  5. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  6. package/lib/cjs/blob/azure/index.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  11. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  12. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  13. package/lib/cjs/blob/core/index.cjs +2 -2
  14. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  15. package/lib/cjs/blob/gcp/index.cjs +2 -2
  16. package/lib/cjs/blob/index.cjs +2 -2
  17. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  18. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  19. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  20. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  21. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  22. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  23. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/local/index.cjs +2 -2
  25. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  26. package/lib/cjs/blob/memory/index.cjs +2 -2
  27. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  28. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  29. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  30. package/lib/cjs/blob/s3/index.cjs +2 -2
  31. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  32. package/lib/cjs/docker/index.cjs +2 -2
  33. package/lib/cjs/feature-flags/constants.cjs +16 -0
  34. package/lib/cjs/feature-flags/decorators.cjs +65 -0
  35. package/lib/cjs/feature-flags/environment.cjs +26 -0
  36. package/lib/cjs/feature-flags/index.cjs +31 -0
  37. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +81 -0
  38. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +78 -0
  39. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +25 -0
  40. package/lib/cjs/feature-flags/readers/index.cjs +19 -0
  41. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +259 -0
  42. package/lib/cjs/feature-flags/types.cjs +4 -0
  43. package/lib/cjs/feature-flags/utils.cjs +141 -0
  44. package/lib/cjs/graph/engine/constants.cjs +2 -2
  45. package/lib/cjs/graph/engine/decorators.cjs +2 -2
  46. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +2 -2
  47. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +2 -2
  48. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +2 -2
  49. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +2 -2
  50. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +2 -2
  51. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +2 -2
  52. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +2 -2
  53. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +2 -2
  54. package/lib/cjs/graph/engine/errors/index.cjs +2 -2
  55. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +2 -2
  56. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +2 -2
  57. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +2 -2
  58. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +2 -2
  59. package/lib/cjs/graph/engine/events/index.cjs +2 -2
  60. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +2 -2
  61. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +2 -2
  62. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +2 -2
  63. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +2 -2
  64. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +2 -2
  65. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +2 -2
  66. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +2 -2
  67. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +2 -2
  68. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +2 -2
  69. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +2 -2
  70. package/lib/cjs/graph/engine/execution/index.cjs +2 -2
  71. package/lib/cjs/graph/engine/index.cjs +2 -2
  72. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +2 -2
  73. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +2 -2
  74. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +2 -2
  75. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +2 -2
  76. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +2 -2
  77. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +2 -2
  78. package/lib/cjs/graph/engine/loops/index.cjs +2 -2
  79. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +2 -2
  80. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +2 -2
  81. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +2 -2
  82. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +2 -2
  83. package/lib/cjs/graph/engine/pinning/index.cjs +2 -2
  84. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +2 -2
  85. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +2 -2
  86. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +2 -2
  87. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +2 -2
  88. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +2 -2
  89. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +2 -2
  90. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +2 -2
  91. package/lib/cjs/graph/engine/planning/index.cjs +2 -2
  92. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +2 -2
  93. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +2 -2
  94. package/lib/cjs/graph/engine/registry/index.cjs +2 -2
  95. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  96. package/lib/cjs/graph/engine/snapshots/index.cjs +2 -2
  97. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +2 -2
  98. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +2 -2
  99. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +2 -2
  100. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +2 -2
  101. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  102. package/lib/cjs/graph/engine/store/index.cjs +2 -2
  103. package/lib/cjs/graph/engine/types.cjs +2 -2
  104. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +2 -2
  105. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +2 -2
  106. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +2 -2
  107. package/lib/cjs/graph/engine/validation/index.cjs +2 -2
  108. package/lib/cjs/graph/index.cjs +2 -2
  109. package/lib/cjs/graph/shared/constants.cjs +2 -2
  110. package/lib/cjs/graph/shared/index.cjs +2 -2
  111. package/lib/cjs/graph/shared/nodes/agent.cjs +2 -2
  112. package/lib/cjs/graph/shared/nodes/base.cjs +2 -2
  113. package/lib/cjs/graph/shared/nodes/category-styles.cjs +2 -2
  114. package/lib/cjs/graph/shared/nodes/flow-control.cjs +2 -2
  115. package/lib/cjs/graph/shared/nodes/index.cjs +2 -2
  116. package/lib/cjs/graph/shared/nodes/triggers.cjs +2 -2
  117. package/lib/cjs/graph/shared/types.cjs +2 -2
  118. package/lib/cjs/index.cjs +6 -5
  119. package/lib/cjs/keycloak/index.cjs +2 -2
  120. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  121. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  122. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  123. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  124. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  125. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  126. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  127. package/lib/cjs/keycloak/services/index.cjs +2 -2
  128. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  129. package/lib/cjs/keycloak/types.cjs +2 -2
  130. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +329 -0
  131. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +37 -0
  132. package/lib/cjs/kibana/builders/index.cjs +20 -0
  133. package/lib/cjs/kibana/helpers.cjs +20 -16
  134. package/lib/cjs/kibana/index.cjs +3 -2
  135. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  136. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  137. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  138. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  139. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  140. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  141. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  142. package/lib/cjs/kibana/services/index.cjs +2 -2
  143. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  144. package/lib/cjs/kibana/types.cjs +11 -2
  145. package/lib/cjs/loader/ObjectLoader.cjs +154 -0
  146. package/lib/cjs/loader/families.cjs +78 -0
  147. package/lib/cjs/loader/index.cjs +28 -0
  148. package/lib/cjs/loader/types.cjs +4 -0
  149. package/lib/cjs/namespaces/index.cjs +2 -2
  150. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  151. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  152. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  153. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  154. package/lib/cjs/namespaces/models/index.cjs +2 -2
  155. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  156. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  157. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  158. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  159. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  160. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  161. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  162. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  163. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  164. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  165. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  166. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  167. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  168. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  169. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  170. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  171. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  172. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  173. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  174. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
  175. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  176. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  177. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  178. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  179. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  180. package/lib/cjs/namespaces/services/index.cjs +2 -2
  181. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
  182. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
  183. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  184. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  185. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  186. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  187. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  188. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  189. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  190. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  191. package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
  192. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  193. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  194. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  195. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  196. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  197. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  198. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  199. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  200. package/lib/cjs/namespaces/types.cjs +2 -2
  201. package/lib/cjs/namespaces/utils.cjs +2 -2
  202. package/lib/cjs/nest/decorators.cjs +17 -0
  203. package/lib/cjs/nest/graph/GraphExecutionController.cjs +2 -2
  204. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +2 -2
  205. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -2
  206. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +2 -2
  207. package/lib/cjs/nest/graph/GraphResultService.cjs +2 -2
  208. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +2 -2
  209. package/lib/cjs/nest/graph/GraphWorkflowService.cjs +2 -2
  210. package/lib/cjs/nest/graph/index.cjs +2 -2
  211. package/lib/cjs/nest/graph/main.cjs +2 -2
  212. package/lib/cjs/nest/index.cjs +3 -3
  213. package/lib/cjs/nest/keycloakAuthHandler.cjs +74 -35
  214. package/lib/cjs/nest/keycloakModule.cjs +7 -10
  215. package/lib/cjs/nest/logging.cjs +2 -2
  216. package/lib/cjs/nest/types.cjs +2 -2
  217. package/lib/cjs/nest/utils.cjs +58 -50
  218. package/lib/cjs/plugins/contract.cjs +76 -0
  219. package/lib/cjs/plugins/index.cjs +35 -0
  220. package/lib/cjs/plugins/kibana/host.cjs +24 -0
  221. package/lib/cjs/plugins/kibana/index.cjs +38 -0
  222. package/lib/cjs/plugins/kibana/installer.cjs +180 -0
  223. package/lib/cjs/plugins/kibana/manifest.cjs +33 -0
  224. package/lib/cjs/plugins/kibana/templates.cjs +503 -0
  225. package/lib/cjs/plugins/kibana/types.cjs +33 -0
  226. package/lib/cjs/plugins/superset/host.cjs +26 -0
  227. package/lib/cjs/plugins/superset/index.cjs +40 -0
  228. package/lib/cjs/plugins/superset/installer.cjs +232 -0
  229. package/lib/cjs/plugins/superset/manifest.cjs +35 -0
  230. package/lib/cjs/plugins/superset/templates.cjs +844 -0
  231. package/lib/cjs/plugins/superset/types.cjs +39 -0
  232. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  233. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  234. package/lib/cjs/secrets/aws/index.cjs +2 -2
  235. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  236. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  237. package/lib/cjs/secrets/azure/index.cjs +2 -2
  238. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  239. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  240. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  241. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  242. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  243. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  244. package/lib/cjs/secrets/core/index.cjs +2 -2
  245. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  246. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  247. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  248. package/lib/cjs/secrets/index.cjs +2 -2
  249. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  250. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  251. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  252. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  253. package/lib/cjs/secrets/model/index.cjs +2 -2
  254. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  255. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  256. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  257. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  258. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  259. package/lib/cjs/secrets/vault/index.cjs +2 -2
  260. package/lib/cjs/shared/runtime.cjs +2 -2
  261. package/lib/cjs/utils.cjs +2 -2
  262. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  263. package/lib/esm/blob/azure/index.js +1 -1
  264. package/lib/esm/blob/core/BlobErrors.js +1 -1
  265. package/lib/esm/blob/core/BlobKey.js +1 -1
  266. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  267. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  268. package/lib/esm/blob/core/BlobTypes.js +1 -1
  269. package/lib/esm/blob/core/BlobValue.js +1 -1
  270. package/lib/esm/blob/core/index.js +1 -1
  271. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  272. package/lib/esm/blob/gcp/index.js +1 -1
  273. package/lib/esm/blob/index.js +1 -1
  274. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  275. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  276. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  277. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  278. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  279. package/lib/esm/blob/ipfs/index.js +1 -1
  280. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  281. package/lib/esm/blob/local/index.js +1 -1
  282. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  283. package/lib/esm/blob/memory/index.js +1 -1
  284. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  285. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  286. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  287. package/lib/esm/blob/s3/index.js +1 -1
  288. package/lib/esm/docker/DockerComposeService.js +1 -1
  289. package/lib/esm/docker/index.js +1 -1
  290. package/lib/esm/feature-flags/constants.js +12 -0
  291. package/lib/esm/feature-flags/decorators.js +49 -0
  292. package/lib/esm/feature-flags/environment.js +18 -0
  293. package/lib/esm/feature-flags/index.js +14 -0
  294. package/lib/esm/feature-flags/models/FeatureFlag.model.js +72 -0
  295. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +69 -0
  296. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +19 -0
  297. package/lib/esm/feature-flags/readers/index.js +2 -0
  298. package/lib/esm/feature-flags/services/FeatureFlag.service.js +250 -0
  299. package/lib/esm/feature-flags/types.js +2 -0
  300. package/lib/esm/feature-flags/utils.js +126 -0
  301. package/lib/esm/graph/engine/constants.js +1 -1
  302. package/lib/esm/graph/engine/decorators.js +1 -1
  303. package/lib/esm/graph/engine/errors/GraphCycleError.js +1 -1
  304. package/lib/esm/graph/engine/errors/GraphExecutionError.js +1 -1
  305. package/lib/esm/graph/engine/errors/GraphInputError.js +1 -1
  306. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +1 -1
  307. package/lib/esm/graph/engine/errors/GraphPinningError.js +1 -1
  308. package/lib/esm/graph/engine/errors/GraphPortError.js +1 -1
  309. package/lib/esm/graph/engine/errors/GraphStoreError.js +1 -1
  310. package/lib/esm/graph/engine/errors/GraphTopologyError.js +1 -1
  311. package/lib/esm/graph/engine/errors/index.js +1 -1
  312. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +1 -1
  313. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +1 -1
  314. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +1 -1
  315. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +1 -1
  316. package/lib/esm/graph/engine/events/index.js +1 -1
  317. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +1 -1
  318. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +1 -1
  319. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +1 -1
  320. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +1 -1
  321. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +1 -1
  322. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +1 -1
  323. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +1 -1
  324. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +1 -1
  325. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +1 -1
  326. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +1 -1
  327. package/lib/esm/graph/engine/execution/index.js +1 -1
  328. package/lib/esm/graph/engine/index.js +1 -1
  329. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +1 -1
  330. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +1 -1
  331. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +1 -1
  332. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +1 -1
  333. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +1 -1
  334. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +1 -1
  335. package/lib/esm/graph/engine/loops/index.js +1 -1
  336. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +1 -1
  337. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +1 -1
  338. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +1 -1
  339. package/lib/esm/graph/engine/pinning/GraphPinningService.js +1 -1
  340. package/lib/esm/graph/engine/pinning/index.js +1 -1
  341. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +1 -1
  342. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +1 -1
  343. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +1 -1
  344. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +1 -1
  345. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +1 -1
  346. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +1 -1
  347. package/lib/esm/graph/engine/planning/GraphTopology.js +1 -1
  348. package/lib/esm/graph/engine/planning/index.js +1 -1
  349. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +1 -1
  350. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +1 -1
  351. package/lib/esm/graph/engine/registry/index.js +1 -1
  352. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  353. package/lib/esm/graph/engine/snapshots/index.js +1 -1
  354. package/lib/esm/graph/engine/store/GraphCachedValue.js +1 -1
  355. package/lib/esm/graph/engine/store/GraphValueKey.js +1 -1
  356. package/lib/esm/graph/engine/store/GraphValueStore.js +1 -1
  357. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +1 -1
  358. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +1 -1
  359. package/lib/esm/graph/engine/store/index.js +1 -1
  360. package/lib/esm/graph/engine/types.js +1 -1
  361. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +1 -1
  362. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +1 -1
  363. package/lib/esm/graph/engine/validation/GraphValueValidator.js +1 -1
  364. package/lib/esm/graph/engine/validation/index.js +1 -1
  365. package/lib/esm/graph/index.js +1 -1
  366. package/lib/esm/graph/shared/constants.js +1 -1
  367. package/lib/esm/graph/shared/index.js +1 -1
  368. package/lib/esm/graph/shared/nodes/agent.js +1 -1
  369. package/lib/esm/graph/shared/nodes/base.js +1 -1
  370. package/lib/esm/graph/shared/nodes/category-styles.js +1 -1
  371. package/lib/esm/graph/shared/nodes/flow-control.js +1 -1
  372. package/lib/esm/graph/shared/nodes/index.js +1 -1
  373. package/lib/esm/graph/shared/nodes/triggers.js +1 -1
  374. package/lib/esm/graph/shared/types.js +1 -1
  375. package/lib/esm/index.js +5 -4
  376. package/lib/esm/keycloak/index.js +1 -1
  377. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  378. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  379. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  380. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  381. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  382. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  383. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  384. package/lib/esm/keycloak/services/index.js +1 -1
  385. package/lib/esm/keycloak/services/runtime.js +1 -1
  386. package/lib/esm/keycloak/types.js +1 -1
  387. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +319 -0
  388. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +32 -0
  389. package/lib/esm/kibana/builders/index.js +3 -0
  390. package/lib/esm/kibana/helpers.js +19 -15
  391. package/lib/esm/kibana/index.js +2 -1
  392. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  393. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  394. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  395. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  396. package/lib/esm/kibana/services/KibanaService.js +1 -1
  397. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  398. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  399. package/lib/esm/kibana/services/index.js +1 -1
  400. package/lib/esm/kibana/services/runtime.js +1 -1
  401. package/lib/esm/kibana/types.js +13 -2
  402. package/lib/esm/loader/ObjectLoader.js +115 -0
  403. package/lib/esm/loader/families.js +66 -0
  404. package/lib/esm/loader/index.js +11 -0
  405. package/lib/esm/loader/types.js +2 -0
  406. package/lib/esm/namespaces/index.js +1 -1
  407. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  408. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  409. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  410. package/lib/esm/namespaces/models/group.model.js +1 -1
  411. package/lib/esm/namespaces/models/index.js +1 -1
  412. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  413. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  414. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  415. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  416. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  417. package/lib/esm/namespaces/models/permission.model.js +1 -1
  418. package/lib/esm/namespaces/models/principal.model.js +1 -1
  419. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  420. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  421. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  422. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  423. package/lib/esm/namespaces/models/role.model.js +1 -1
  424. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  425. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  426. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  427. package/lib/esm/namespaces/models/tenant.model.js +1 -1
  428. package/lib/esm/namespaces/models/user.model.js +1 -1
  429. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  430. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  431. package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
  432. package/lib/esm/namespaces/services/authz.service.js +1 -1
  433. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  434. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  435. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  436. package/lib/esm/namespaces/services/group.service.js +1 -1
  437. package/lib/esm/namespaces/services/index.js +1 -1
  438. package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
  439. package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
  440. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  441. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  442. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  443. package/lib/esm/namespaces/services/permission.service.js +1 -1
  444. package/lib/esm/namespaces/services/principal.service.js +1 -1
  445. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  446. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  447. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  448. package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
  449. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  450. package/lib/esm/namespaces/services/role.service.js +1 -1
  451. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  452. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  453. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  454. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  455. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  456. package/lib/esm/namespaces/services/user.service.js +1 -1
  457. package/lib/esm/namespaces/types.js +1 -1
  458. package/lib/esm/namespaces/utils.js +1 -1
  459. package/lib/esm/nest/decorators.js +12 -0
  460. package/lib/esm/nest/graph/GraphExecutionController.js +1 -1
  461. package/lib/esm/nest/graph/GraphExecutionModule.js +1 -1
  462. package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -1
  463. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +1 -1
  464. package/lib/esm/nest/graph/GraphResultService.js +1 -1
  465. package/lib/esm/nest/graph/GraphWorkflowModel.js +1 -1
  466. package/lib/esm/nest/graph/GraphWorkflowService.js +1 -1
  467. package/lib/esm/nest/graph/index.js +1 -1
  468. package/lib/esm/nest/graph/main.js +1 -1
  469. package/lib/esm/nest/index.js +2 -2
  470. package/lib/esm/nest/keycloakAuthHandler.js +67 -35
  471. package/lib/esm/nest/keycloakModule.js +7 -10
  472. package/lib/esm/nest/logging.js +1 -1
  473. package/lib/esm/nest/types.js +1 -1
  474. package/lib/esm/nest/utils.js +55 -46
  475. package/lib/esm/plugins/contract.js +68 -0
  476. package/lib/esm/plugins/index.js +18 -0
  477. package/lib/esm/plugins/kibana/host.js +19 -0
  478. package/lib/esm/plugins/kibana/index.js +14 -0
  479. package/lib/esm/plugins/kibana/installer.js +140 -0
  480. package/lib/esm/plugins/kibana/manifest.js +32 -0
  481. package/lib/esm/plugins/kibana/templates.js +499 -0
  482. package/lib/esm/plugins/kibana/types.js +10 -0
  483. package/lib/esm/plugins/superset/host.js +21 -0
  484. package/lib/esm/plugins/superset/index.js +16 -0
  485. package/lib/esm/plugins/superset/installer.js +192 -0
  486. package/lib/esm/plugins/superset/manifest.js +30 -0
  487. package/lib/esm/plugins/superset/templates.js +840 -0
  488. package/lib/esm/plugins/superset/types.js +11 -0
  489. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  490. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  491. package/lib/esm/secrets/aws/index.js +1 -1
  492. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  493. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  494. package/lib/esm/secrets/azure/index.js +1 -1
  495. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  496. package/lib/esm/secrets/core/SecretName.js +1 -1
  497. package/lib/esm/secrets/core/SecretReference.js +1 -1
  498. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  499. package/lib/esm/secrets/core/SecretService.js +1 -1
  500. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  501. package/lib/esm/secrets/core/index.js +1 -1
  502. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  503. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  504. package/lib/esm/secrets/gcp/index.js +1 -1
  505. package/lib/esm/secrets/index.js +1 -1
  506. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  507. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  508. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  509. package/lib/esm/secrets/model/Secret.js +1 -1
  510. package/lib/esm/secrets/model/index.js +1 -1
  511. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  512. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  513. package/lib/esm/secrets/onepassword/index.js +1 -1
  514. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  515. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  516. package/lib/esm/secrets/vault/index.js +1 -1
  517. package/lib/esm/shared/runtime.js +1 -1
  518. package/lib/esm/utils.js +1 -1
  519. package/lib/types/feature-flags/constants.d.cts +11 -0
  520. package/lib/types/feature-flags/constants.d.mts +11 -0
  521. package/lib/types/feature-flags/decorators.d.cts +11 -0
  522. package/lib/types/feature-flags/decorators.d.mts +11 -0
  523. package/lib/types/feature-flags/environment.d.cts +11 -0
  524. package/lib/types/feature-flags/environment.d.mts +11 -0
  525. package/lib/types/feature-flags/index.d.cts +13 -0
  526. package/lib/types/feature-flags/index.d.mts +13 -0
  527. package/lib/types/feature-flags/models/FeatureFlag.model.d.cts +16 -0
  528. package/lib/types/feature-flags/models/FeatureFlag.model.d.mts +16 -0
  529. package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.cts +15 -0
  530. package/lib/types/feature-flags/models/FeatureFlagAccess.model.d.mts +15 -0
  531. package/lib/types/feature-flags/readers/FeatureFlagReader.d.cts +10 -0
  532. package/lib/types/feature-flags/readers/FeatureFlagReader.d.mts +10 -0
  533. package/lib/types/feature-flags/readers/index.d.cts +1 -0
  534. package/lib/types/feature-flags/readers/index.d.mts +1 -0
  535. package/lib/types/feature-flags/services/FeatureFlag.service.d.cts +43 -0
  536. package/lib/types/feature-flags/services/FeatureFlag.service.d.mts +43 -0
  537. package/lib/types/feature-flags/types.d.cts +39 -0
  538. package/lib/types/feature-flags/types.d.mts +39 -0
  539. package/lib/types/feature-flags/utils.d.cts +13 -0
  540. package/lib/types/feature-flags/utils.d.mts +13 -0
  541. package/lib/types/index.d.cts +3 -2
  542. package/lib/types/index.d.mts +3 -2
  543. package/lib/types/kibana/builders/KibanaIndexBuilder.d.cts +67 -0
  544. package/lib/types/kibana/builders/KibanaIndexBuilder.d.mts +67 -0
  545. package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.cts +17 -0
  546. package/lib/types/kibana/builders/KibanaIndexBuilderCollection.d.mts +17 -0
  547. package/lib/types/kibana/builders/index.d.cts +2 -0
  548. package/lib/types/kibana/builders/index.d.mts +2 -0
  549. package/lib/types/kibana/index.d.cts +1 -0
  550. package/lib/types/kibana/index.d.mts +1 -0
  551. package/lib/types/kibana/types.d.cts +11 -0
  552. package/lib/types/kibana/types.d.mts +11 -0
  553. package/lib/types/loader/ObjectLoader.d.cts +27 -0
  554. package/lib/types/loader/ObjectLoader.d.mts +27 -0
  555. package/lib/types/loader/families.d.cts +34 -0
  556. package/lib/types/loader/families.d.mts +34 -0
  557. package/lib/types/loader/index.d.cts +10 -0
  558. package/lib/types/loader/index.d.mts +10 -0
  559. package/lib/types/loader/types.d.cts +24 -0
  560. package/lib/types/loader/types.d.mts +24 -0
  561. package/lib/types/nest/decorators.d.cts +8 -0
  562. package/lib/types/nest/decorators.d.mts +8 -0
  563. package/lib/types/nest/index.d.cts +1 -1
  564. package/lib/types/nest/index.d.mts +1 -1
  565. package/lib/types/nest/keycloakAuthHandler.d.cts +19 -42
  566. package/lib/types/nest/keycloakAuthHandler.d.mts +19 -42
  567. package/lib/types/nest/keycloakModule.d.cts +3 -5
  568. package/lib/types/nest/keycloakModule.d.mts +3 -5
  569. package/lib/types/nest/types.d.cts +2 -0
  570. package/lib/types/nest/types.d.mts +2 -0
  571. package/lib/types/nest/utils.d.cts +3 -4
  572. package/lib/types/nest/utils.d.mts +3 -4
  573. package/lib/types/plugins/contract.d.cts +180 -0
  574. package/lib/types/plugins/contract.d.mts +180 -0
  575. package/lib/types/plugins/index.d.cts +17 -0
  576. package/lib/types/plugins/index.d.mts +17 -0
  577. package/lib/types/plugins/kibana/host.d.cts +18 -0
  578. package/lib/types/plugins/kibana/host.d.mts +18 -0
  579. package/lib/types/plugins/kibana/index.d.cts +13 -0
  580. package/lib/types/plugins/kibana/index.d.mts +13 -0
  581. package/lib/types/plugins/kibana/installer.d.cts +45 -0
  582. package/lib/types/plugins/kibana/installer.d.mts +45 -0
  583. package/lib/types/plugins/kibana/manifest.d.cts +31 -0
  584. package/lib/types/plugins/kibana/manifest.d.mts +31 -0
  585. package/lib/types/plugins/kibana/templates.d.cts +12 -0
  586. package/lib/types/plugins/kibana/templates.d.mts +12 -0
  587. package/lib/types/plugins/kibana/types.d.cts +9 -0
  588. package/lib/types/plugins/kibana/types.d.mts +9 -0
  589. package/lib/types/plugins/superset/host.d.cts +20 -0
  590. package/lib/types/plugins/superset/host.d.mts +20 -0
  591. package/lib/types/plugins/superset/index.d.cts +15 -0
  592. package/lib/types/plugins/superset/index.d.mts +15 -0
  593. package/lib/types/plugins/superset/installer.d.cts +70 -0
  594. package/lib/types/plugins/superset/installer.d.mts +70 -0
  595. package/lib/types/plugins/superset/manifest.d.cts +28 -0
  596. package/lib/types/plugins/superset/manifest.d.mts +28 -0
  597. package/lib/types/plugins/superset/templates.d.cts +12 -0
  598. package/lib/types/plugins/superset/templates.d.mts +12 -0
  599. package/lib/types/plugins/superset/types.d.cts +10 -0
  600. package/lib/types/plugins/superset/types.d.mts +10 -0
  601. package/package.json +62 -3
  602. package/plugins/kibana/.gitignore +16 -0
  603. package/plugins/kibana/Dockerfile +19 -0
  604. package/plugins/kibana/docker-compose.yml +50 -0
  605. package/plugins/kibana/host/index.html +101 -0
  606. package/plugins/kibana/setup-dashboards.sh +84 -0
  607. package/plugins/superset/.gitignore +17 -0
  608. package/plugins/superset/Dockerfile +79 -0
  609. package/plugins/superset/docker-compose.yml +62 -0
  610. package/plugins/superset/host/index.html +168 -0
  611. package/plugins/superset/setup-dashboards.sh +106 -0
  612. package/plugins/superset/superset_config.py +49 -0
  613. package/dist/integrations.cjs.map +0 -1
  614. package/dist/integrations.js.map +0 -1
  615. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  616. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  617. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  618. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  619. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  620. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  621. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  622. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  623. package/lib/cjs/blob/core/index.cjs.map +0 -1
  624. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  625. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  626. package/lib/cjs/blob/index.cjs.map +0 -1
  627. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
  628. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
  629. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
  630. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
  631. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
  632. package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
  633. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  634. package/lib/cjs/blob/local/index.cjs.map +0 -1
  635. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  636. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  637. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  638. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  639. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  640. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  641. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  642. package/lib/cjs/docker/index.cjs.map +0 -1
  643. package/lib/cjs/graph/engine/constants.cjs.map +0 -1
  644. package/lib/cjs/graph/engine/decorators.cjs.map +0 -1
  645. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +0 -1
  646. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +0 -1
  647. package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +0 -1
  648. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +0 -1
  649. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +0 -1
  650. package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +0 -1
  651. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +0 -1
  652. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +0 -1
  653. package/lib/cjs/graph/engine/errors/index.cjs.map +0 -1
  654. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +0 -1
  655. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +0 -1
  656. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +0 -1
  657. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +0 -1
  658. package/lib/cjs/graph/engine/events/index.cjs.map +0 -1
  659. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +0 -1
  660. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +0 -1
  661. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +0 -1
  662. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +0 -1
  663. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +0 -1
  664. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +0 -1
  665. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +0 -1
  666. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs.map +0 -1
  667. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs.map +0 -1
  668. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
  669. package/lib/cjs/graph/engine/execution/index.cjs.map +0 -1
  670. package/lib/cjs/graph/engine/index.cjs.map +0 -1
  671. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +0 -1
  672. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  673. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +0 -1
  674. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +0 -1
  675. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  676. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  677. package/lib/cjs/graph/engine/loops/index.cjs.map +0 -1
  678. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
  679. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +0 -1
  680. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +0 -1
  681. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +0 -1
  682. package/lib/cjs/graph/engine/pinning/index.cjs.map +0 -1
  683. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +0 -1
  684. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +0 -1
  685. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +0 -1
  686. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +0 -1
  687. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +0 -1
  688. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +0 -1
  689. package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +0 -1
  690. package/lib/cjs/graph/engine/planning/index.cjs.map +0 -1
  691. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
  692. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +0 -1
  693. package/lib/cjs/graph/engine/registry/index.cjs.map +0 -1
  694. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
  695. package/lib/cjs/graph/engine/snapshots/index.cjs.map +0 -1
  696. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +0 -1
  697. package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +0 -1
  698. package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +0 -1
  699. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +0 -1
  700. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
  701. package/lib/cjs/graph/engine/store/index.cjs.map +0 -1
  702. package/lib/cjs/graph/engine/types.cjs.map +0 -1
  703. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +0 -1
  704. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +0 -1
  705. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +0 -1
  706. package/lib/cjs/graph/engine/validation/index.cjs.map +0 -1
  707. package/lib/cjs/graph/index.cjs.map +0 -1
  708. package/lib/cjs/graph/shared/constants.cjs.map +0 -1
  709. package/lib/cjs/graph/shared/index.cjs.map +0 -1
  710. package/lib/cjs/graph/shared/nodes/agent.cjs.map +0 -1
  711. package/lib/cjs/graph/shared/nodes/base.cjs.map +0 -1
  712. package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +0 -1
  713. package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +0 -1
  714. package/lib/cjs/graph/shared/nodes/index.cjs.map +0 -1
  715. package/lib/cjs/graph/shared/nodes/triggers.cjs.map +0 -1
  716. package/lib/cjs/graph/shared/types.cjs.map +0 -1
  717. package/lib/cjs/index.cjs.map +0 -1
  718. package/lib/cjs/keycloak/index.cjs.map +0 -1
  719. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  720. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  721. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  722. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  723. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  724. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  725. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  726. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  727. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  728. package/lib/cjs/keycloak/types.cjs.map +0 -1
  729. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  730. package/lib/cjs/kibana/index.cjs.map +0 -1
  731. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  732. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  733. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  734. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  735. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  736. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  737. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  738. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  739. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  740. package/lib/cjs/kibana/types.cjs.map +0 -1
  741. package/lib/cjs/namespaces/index.cjs.map +0 -1
  742. package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
  743. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
  744. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
  745. package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
  746. package/lib/cjs/namespaces/models/index.cjs.map +0 -1
  747. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
  748. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
  749. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
  750. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
  751. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
  752. package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
  753. package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
  754. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
  755. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
  756. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
  757. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
  758. package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
  759. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
  760. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
  761. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
  762. package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
  763. package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
  764. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
  765. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
  766. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
  767. package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
  768. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
  769. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
  770. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
  771. package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
  772. package/lib/cjs/namespaces/services/index.cjs.map +0 -1
  773. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
  774. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
  775. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
  776. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
  777. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
  778. package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
  779. package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
  780. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
  781. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
  782. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
  783. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
  784. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
  785. package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
  786. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
  787. package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
  788. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
  789. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
  790. package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
  791. package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
  792. package/lib/cjs/namespaces/types.cjs.map +0 -1
  793. package/lib/cjs/namespaces/utils.cjs.map +0 -1
  794. package/lib/cjs/nest/authService.cjs +0 -91
  795. package/lib/cjs/nest/authService.cjs.map +0 -1
  796. package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +0 -1
  797. package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +0 -1
  798. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +0 -1
  799. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +0 -1
  800. package/lib/cjs/nest/graph/GraphResultService.cjs.map +0 -1
  801. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs.map +0 -1
  802. package/lib/cjs/nest/graph/GraphWorkflowService.cjs.map +0 -1
  803. package/lib/cjs/nest/graph/index.cjs.map +0 -1
  804. package/lib/cjs/nest/graph/main.cjs.map +0 -1
  805. package/lib/cjs/nest/index.cjs.map +0 -1
  806. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  807. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  808. package/lib/cjs/nest/logging.cjs.map +0 -1
  809. package/lib/cjs/nest/types.cjs.map +0 -1
  810. package/lib/cjs/nest/utils.cjs.map +0 -1
  811. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  812. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  813. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  814. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  815. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  816. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  817. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  818. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  819. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  820. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  821. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  822. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  823. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  824. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  825. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  826. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  827. package/lib/cjs/secrets/index.cjs.map +0 -1
  828. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  829. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  830. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  831. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  832. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  833. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  834. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  835. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  836. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  837. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  838. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  839. package/lib/cjs/shared/runtime.cjs.map +0 -1
  840. package/lib/cjs/utils.cjs.map +0 -1
  841. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  842. package/lib/esm/blob/azure/index.js.map +0 -1
  843. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  844. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  845. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  846. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  847. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  848. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  849. package/lib/esm/blob/core/index.js.map +0 -1
  850. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  851. package/lib/esm/blob/gcp/index.js.map +0 -1
  852. package/lib/esm/blob/index.js.map +0 -1
  853. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
  854. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
  855. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
  856. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
  857. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
  858. package/lib/esm/blob/ipfs/index.js.map +0 -1
  859. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  860. package/lib/esm/blob/local/index.js.map +0 -1
  861. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  862. package/lib/esm/blob/memory/index.js.map +0 -1
  863. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  864. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  865. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  866. package/lib/esm/blob/s3/index.js.map +0 -1
  867. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  868. package/lib/esm/docker/index.js.map +0 -1
  869. package/lib/esm/graph/engine/constants.js.map +0 -1
  870. package/lib/esm/graph/engine/decorators.js.map +0 -1
  871. package/lib/esm/graph/engine/errors/GraphCycleError.js.map +0 -1
  872. package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +0 -1
  873. package/lib/esm/graph/engine/errors/GraphInputError.js.map +0 -1
  874. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +0 -1
  875. package/lib/esm/graph/engine/errors/GraphPinningError.js.map +0 -1
  876. package/lib/esm/graph/engine/errors/GraphPortError.js.map +0 -1
  877. package/lib/esm/graph/engine/errors/GraphStoreError.js.map +0 -1
  878. package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +0 -1
  879. package/lib/esm/graph/engine/errors/index.js.map +0 -1
  880. package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +0 -1
  881. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +0 -1
  882. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +0 -1
  883. package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +0 -1
  884. package/lib/esm/graph/engine/events/index.js.map +0 -1
  885. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +0 -1
  886. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +0 -1
  887. package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +0 -1
  888. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +0 -1
  889. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +0 -1
  890. package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +0 -1
  891. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +0 -1
  892. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js.map +0 -1
  893. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js.map +0 -1
  894. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +0 -1
  895. package/lib/esm/graph/engine/execution/index.js.map +0 -1
  896. package/lib/esm/graph/engine/index.js.map +0 -1
  897. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +0 -1
  898. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +0 -1
  899. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +0 -1
  900. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +0 -1
  901. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +0 -1
  902. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +0 -1
  903. package/lib/esm/graph/engine/loops/index.js.map +0 -1
  904. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +0 -1
  905. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +0 -1
  906. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +0 -1
  907. package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +0 -1
  908. package/lib/esm/graph/engine/pinning/index.js.map +0 -1
  909. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +0 -1
  910. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +0 -1
  911. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +0 -1
  912. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +0 -1
  913. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +0 -1
  914. package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +0 -1
  915. package/lib/esm/graph/engine/planning/GraphTopology.js.map +0 -1
  916. package/lib/esm/graph/engine/planning/index.js.map +0 -1
  917. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +0 -1
  918. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +0 -1
  919. package/lib/esm/graph/engine/registry/index.js.map +0 -1
  920. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
  921. package/lib/esm/graph/engine/snapshots/index.js.map +0 -1
  922. package/lib/esm/graph/engine/store/GraphCachedValue.js.map +0 -1
  923. package/lib/esm/graph/engine/store/GraphValueKey.js.map +0 -1
  924. package/lib/esm/graph/engine/store/GraphValueStore.js.map +0 -1
  925. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +0 -1
  926. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
  927. package/lib/esm/graph/engine/store/index.js.map +0 -1
  928. package/lib/esm/graph/engine/types.js.map +0 -1
  929. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +0 -1
  930. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +0 -1
  931. package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +0 -1
  932. package/lib/esm/graph/engine/validation/index.js.map +0 -1
  933. package/lib/esm/graph/index.js.map +0 -1
  934. package/lib/esm/graph/shared/constants.js.map +0 -1
  935. package/lib/esm/graph/shared/index.js.map +0 -1
  936. package/lib/esm/graph/shared/nodes/agent.js.map +0 -1
  937. package/lib/esm/graph/shared/nodes/base.js.map +0 -1
  938. package/lib/esm/graph/shared/nodes/category-styles.js.map +0 -1
  939. package/lib/esm/graph/shared/nodes/flow-control.js.map +0 -1
  940. package/lib/esm/graph/shared/nodes/index.js.map +0 -1
  941. package/lib/esm/graph/shared/nodes/triggers.js.map +0 -1
  942. package/lib/esm/graph/shared/types.js.map +0 -1
  943. package/lib/esm/index.js.map +0 -1
  944. package/lib/esm/keycloak/index.js.map +0 -1
  945. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  946. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  947. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  948. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  949. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  950. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  951. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  952. package/lib/esm/keycloak/services/index.js.map +0 -1
  953. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  954. package/lib/esm/keycloak/types.js.map +0 -1
  955. package/lib/esm/kibana/helpers.js.map +0 -1
  956. package/lib/esm/kibana/index.js.map +0 -1
  957. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  958. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  959. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  960. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  961. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  962. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  963. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  964. package/lib/esm/kibana/services/index.js.map +0 -1
  965. package/lib/esm/kibana/services/runtime.js.map +0 -1
  966. package/lib/esm/kibana/types.js.map +0 -1
  967. package/lib/esm/namespaces/index.js.map +0 -1
  968. package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
  969. package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
  970. package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
  971. package/lib/esm/namespaces/models/group.model.js.map +0 -1
  972. package/lib/esm/namespaces/models/index.js.map +0 -1
  973. package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
  974. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
  975. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
  976. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
  977. package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
  978. package/lib/esm/namespaces/models/permission.model.js.map +0 -1
  979. package/lib/esm/namespaces/models/principal.model.js.map +0 -1
  980. package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
  981. package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
  982. package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
  983. package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
  984. package/lib/esm/namespaces/models/role.model.js.map +0 -1
  985. package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
  986. package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
  987. package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
  988. package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
  989. package/lib/esm/namespaces/models/user.model.js.map +0 -1
  990. package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
  991. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
  992. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
  993. package/lib/esm/namespaces/services/authz.service.js.map +0 -1
  994. package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
  995. package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
  996. package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
  997. package/lib/esm/namespaces/services/group.service.js.map +0 -1
  998. package/lib/esm/namespaces/services/index.js.map +0 -1
  999. package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
  1000. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
  1001. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
  1002. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
  1003. package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
  1004. package/lib/esm/namespaces/services/permission.service.js.map +0 -1
  1005. package/lib/esm/namespaces/services/principal.service.js.map +0 -1
  1006. package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
  1007. package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
  1008. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
  1009. package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
  1010. package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
  1011. package/lib/esm/namespaces/services/role.service.js.map +0 -1
  1012. package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
  1013. package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
  1014. package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
  1015. package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
  1016. package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
  1017. package/lib/esm/namespaces/services/user.service.js.map +0 -1
  1018. package/lib/esm/namespaces/types.js.map +0 -1
  1019. package/lib/esm/namespaces/utils.js.map +0 -1
  1020. package/lib/esm/nest/authService.js +0 -86
  1021. package/lib/esm/nest/authService.js.map +0 -1
  1022. package/lib/esm/nest/graph/GraphExecutionController.js.map +0 -1
  1023. package/lib/esm/nest/graph/GraphExecutionModule.js.map +0 -1
  1024. package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +0 -1
  1025. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +0 -1
  1026. package/lib/esm/nest/graph/GraphResultService.js.map +0 -1
  1027. package/lib/esm/nest/graph/GraphWorkflowModel.js.map +0 -1
  1028. package/lib/esm/nest/graph/GraphWorkflowService.js.map +0 -1
  1029. package/lib/esm/nest/graph/index.js.map +0 -1
  1030. package/lib/esm/nest/graph/main.js.map +0 -1
  1031. package/lib/esm/nest/index.js.map +0 -1
  1032. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  1033. package/lib/esm/nest/keycloakModule.js.map +0 -1
  1034. package/lib/esm/nest/logging.js.map +0 -1
  1035. package/lib/esm/nest/types.js.map +0 -1
  1036. package/lib/esm/nest/utils.js.map +0 -1
  1037. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  1038. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  1039. package/lib/esm/secrets/aws/index.js.map +0 -1
  1040. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  1041. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  1042. package/lib/esm/secrets/azure/index.js.map +0 -1
  1043. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  1044. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  1045. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  1046. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  1047. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  1048. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  1049. package/lib/esm/secrets/core/index.js.map +0 -1
  1050. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  1051. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  1052. package/lib/esm/secrets/gcp/index.js.map +0 -1
  1053. package/lib/esm/secrets/index.js.map +0 -1
  1054. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  1055. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  1056. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  1057. package/lib/esm/secrets/model/Secret.js.map +0 -1
  1058. package/lib/esm/secrets/model/index.js.map +0 -1
  1059. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  1060. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  1061. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  1062. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  1063. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  1064. package/lib/esm/secrets/vault/index.js.map +0 -1
  1065. package/lib/esm/shared/runtime.js.map +0 -1
  1066. package/lib/esm/utils.js.map +0 -1
  1067. package/lib/types/nest/authService.d.cts +0 -63
  1068. package/lib/types/nest/authService.d.mts +0 -63
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FeatureFlagService = void 0;
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
7
+ r = Reflect.decorate(decorators, target, key, desc);
8
+ else
9
+ for (var i = decorators.length - 1; i >= 0; i--)
10
+ if (d = decorators[i])
11
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
16
+ return Reflect.metadata(k, v);
17
+ };
18
+ const core_1 = require("@decaf-ts/core");
19
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
20
+ const environment_js_1 = require("./../environment.cjs");
21
+ const FeatureFlagAccess_model_js_1 = require("./../models/FeatureFlagAccess.model.cjs");
22
+ const FeatureFlag_model_js_1 = require("./../models/FeatureFlag.model.cjs");
23
+ const index_js_1 = require("./../readers/index.cjs");
24
+ const utils_js_1 = require("./../utils.cjs");
25
+ const utils_js_2 = require("./../utils.cjs");
26
+ let FeatureFlagService = class FeatureFlagService extends core_1.ModelService {
27
+ constructor() {
28
+ super(FeatureFlag_model_js_1.FeatureFlag);
29
+ this.reader = new index_js_1.EnvironmeFlagReader();
30
+ this.cachedRegistry = {};
31
+ }
32
+ async initialize(...args) {
33
+ const config = args[0] ?? {};
34
+ if (config.repository) {
35
+ this._repository = config.repository;
36
+ }
37
+ this.reader = !config.reader
38
+ ? new index_js_1.EnvironmeFlagReader()
39
+ : typeof config.reader === "function"
40
+ ? new config.reader()
41
+ : config.reader;
42
+ const readerConfig = {
43
+ ...(config.readerConfig ?? {}),
44
+ source: config.readerConfig?.source ?? environment_js_1.FeatureFlagEnvironment,
45
+ };
46
+ this.cachedRegistry = await this.refreshCachedRegistry(readerConfig, ...args);
47
+ const effectiveConfig = {
48
+ ...config,
49
+ reader: this.reader,
50
+ readerConfig,
51
+ };
52
+ return { config: effectiveConfig, client: this.reader };
53
+ }
54
+ cloneRegistry(registry) {
55
+ return Object.entries(registry).reduce((acc, [key, value]) => {
56
+ acc[key] =
57
+ value && typeof value === "object" && !Array.isArray(value)
58
+ ? { ...value }
59
+ : value;
60
+ return acc;
61
+ }, {});
62
+ }
63
+ async refreshCachedRegistry(options = {}, ...args) {
64
+ const envRegistry = await this.reader.read({
65
+ ...options,
66
+ source: options.source ?? environment_js_1.FeatureFlagEnvironment,
67
+ });
68
+ let persisted = [];
69
+ try {
70
+ persisted = await this.repo.select().execute(...args);
71
+ }
72
+ catch {
73
+ persisted = [];
74
+ }
75
+ const registry = this.cloneRegistry(envRegistry);
76
+ for (const flag of persisted) {
77
+ registry[flag.key] = flag.enabled ? (flag.config ?? true) : false;
78
+ }
79
+ return registry;
80
+ }
81
+ setCachedFlag(flag) {
82
+ this.cachedRegistry[flag.key] = flag.enabled
83
+ ? (flag.config ?? true)
84
+ : false;
85
+ }
86
+ getAccessRepository() {
87
+ return this.accessRepository ?? core_1.Repository.forModel(FeatureFlagAccess_model_js_1.FeatureFlagAccess);
88
+ }
89
+ assertInitialized() {
90
+ void this.reader;
91
+ }
92
+ normalizeFeatureAccessInput(input) {
93
+ return {
94
+ ...input,
95
+ featureKey: (0, utils_js_1.normalizeFeatureName)(input.featureKey),
96
+ subjectType: (0, utils_js_2.normalizeFeatureSubjectType)(input.subjectType),
97
+ subjectKey: (0, utils_js_2.normalizeFeatureSubjectKey)(input.subjectKey),
98
+ };
99
+ }
100
+ buildAccessCondition(query) {
101
+ let condition = core_1.Condition.attr("subjectType").eq((0, utils_js_2.normalizeFeatureSubjectType)(query.subjectType));
102
+ condition = condition.and(core_1.Condition.attr("subjectKey").eq((0, utils_js_2.normalizeFeatureSubjectKey)(query.subjectKey)));
103
+ if (typeof query.enabled !== "undefined") {
104
+ condition = condition.and(core_1.Condition.attr("enabled").eq(query.enabled));
105
+ }
106
+ if (query.featureKeys && query.featureKeys.length > 0) {
107
+ condition = condition.and(core_1.Condition.attr("featureKey").in(query.featureKeys.map(utils_js_1.normalizeFeatureName)));
108
+ }
109
+ return condition;
110
+ }
111
+ async create(model, ...args) {
112
+ model.key = (0, utils_js_1.normalizeFeatureName)(model.key);
113
+ model.enabled ??= true;
114
+ const created = await super.create(model, ...args);
115
+ this.setCachedFlag(created);
116
+ return created;
117
+ }
118
+ async update(model, ...args) {
119
+ model.key = (0, utils_js_1.normalizeFeatureName)(model.key);
120
+ model.enabled ??= true;
121
+ const updated = await super.update(model, ...args);
122
+ this.setCachedFlag(updated);
123
+ return updated;
124
+ }
125
+ async findOneBy(key, value, ...args) {
126
+ const normalizedValue = key === "key" && typeof value === "string"
127
+ ? (0, utils_js_1.normalizeFeatureName)(value)
128
+ : value;
129
+ return this.repo.findOneBy(key, normalizedValue, ...args);
130
+ }
131
+ async readAll(keys, ...args) {
132
+ const result = await this.repo.readAll(keys, ...args);
133
+ for (const flag of result)
134
+ this.setCachedFlag(flag);
135
+ return result;
136
+ }
137
+ async listEnabled(...args) {
138
+ return this.repo
139
+ .select()
140
+ .where(core_1.Condition.attr("enabled").eq(true))
141
+ .execute(...args);
142
+ }
143
+ async grantFeatureAccess(input, ...args) {
144
+ const normalized = this.normalizeFeatureAccessInput(input);
145
+ const existing = await this.findFeatureAccess(normalized, ...args).catch(() => undefined);
146
+ if (!existing) {
147
+ return this.getAccessRepository().create(new FeatureFlagAccess_model_js_1.FeatureFlagAccess(normalized), ...args);
148
+ }
149
+ return this.getAccessRepository().update(Object.assign(existing, normalized), ...args);
150
+ }
151
+ async revokeFeatureAccess(input, ...args) {
152
+ const existing = await this.findFeatureAccess(input, ...args).catch(() => undefined);
153
+ if (!existing)
154
+ return undefined;
155
+ return this.getAccessRepository().delete(existing.id, ...args);
156
+ }
157
+ async findFeatureAccess(query, ...args) {
158
+ const condition = this.buildAccessCondition(query);
159
+ const results = await this.getAccessRepository()
160
+ .select()
161
+ .where(condition)
162
+ .execute(...args);
163
+ const existing = results[0];
164
+ if (!existing) {
165
+ throw new db_decorators_1.NotFoundError(`Feature access for ${(0, utils_js_2.normalizeFeatureSubjectType)(query.subjectType)}:${(0, utils_js_2.normalizeFeatureSubjectKey)(query.subjectKey)} not found`);
166
+ }
167
+ return existing;
168
+ }
169
+ async listFeatureAccess(query, ...args) {
170
+ return this.getAccessRepository()
171
+ .select()
172
+ .where(this.buildAccessCondition(query))
173
+ .execute(...args);
174
+ }
175
+ async resolveFeatureFlagsForSubject(subject, ...args) {
176
+ this.assertInitialized();
177
+ const access = await this.listFeatureAccess({
178
+ ...subject,
179
+ enabled: true,
180
+ }, ...args);
181
+ const featureKeys = [...new Set(access.map((item) => item.featureKey))];
182
+ if (featureKeys.length === 0)
183
+ return {};
184
+ const condition = core_1.Condition.attr("enabled").eq(true).and(core_1.Condition.attr("key").in(featureKeys.map(utils_js_1.normalizeFeatureName)));
185
+ const enabledFlags = await this.repo.select().where(condition).execute(...args);
186
+ return enabledFlags.reduce((registry, flag) => {
187
+ registry[flag.key] = flag.config ?? true;
188
+ return registry;
189
+ }, {});
190
+ }
191
+ async isEnabledForSubject(key, subject, ...args) {
192
+ const registry = await this.resolveFeatureFlagsForSubject(subject, ...args);
193
+ return (0, utils_js_1.isFeatureFlagEnabledByName)(registry, key);
194
+ }
195
+ isEnabled(key) {
196
+ this.assertInitialized();
197
+ const normalizedKey = (0, utils_js_1.normalizeFeatureName)(key);
198
+ return (0, utils_js_1.isFeatureFlagEnabledByName)(this.cachedRegistry, normalizedKey);
199
+ }
200
+ async resolveFeatureFlags() {
201
+ this.assertInitialized();
202
+ return this.cloneRegistry(this.cachedRegistry);
203
+ }
204
+ async syncFromEnvironment(options = {}, ...args) {
205
+ this.assertInitialized();
206
+ const registry = await this.reader.read({
207
+ ...options,
208
+ source: options.source ?? environment_js_1.FeatureFlagEnvironment,
209
+ });
210
+ const results = [];
211
+ for (const [key, value] of Object.entries(registry)) {
212
+ const config = value && typeof value === "object" && !Array.isArray(value)
213
+ ? value
214
+ : { enabled: Boolean(value) };
215
+ const { enabled: _ignoredEnabled, ...restConfig } = config;
216
+ const normalizedKey = (0, utils_js_1.normalizeFeatureName)(key);
217
+ const existing = await this.findOneBy("key", normalizedKey, ...args).catch(() => undefined);
218
+ const model = existing
219
+ ? Object.assign(existing, {
220
+ enabled: (0, utils_js_1.isFeatureFlagEnabled)(value),
221
+ description: restConfig.description ?? existing.description,
222
+ scope: restConfig.scope ?? existing.scope,
223
+ metadata: restConfig.metadata ?? existing.metadata,
224
+ config: {
225
+ ...restConfig,
226
+ enabled: (0, utils_js_1.isFeatureFlagEnabled)(value),
227
+ },
228
+ })
229
+ : new FeatureFlag_model_js_1.FeatureFlag({
230
+ key: normalizedKey,
231
+ enabled: (0, utils_js_1.isFeatureFlagEnabled)(value),
232
+ description: restConfig.description,
233
+ scope: restConfig.scope,
234
+ metadata: restConfig.metadata,
235
+ config: {
236
+ ...restConfig,
237
+ enabled: (0, utils_js_1.isFeatureFlagEnabled)(value),
238
+ },
239
+ });
240
+ results.push(existing ? await this.update(model, ...args) : await this.create(model, ...args));
241
+ }
242
+ this.cachedRegistry = await this.refreshCachedRegistry({
243
+ ...options,
244
+ source: options.source ?? environment_js_1.FeatureFlagEnvironment,
245
+ }, ...args);
246
+ return results;
247
+ }
248
+ };
249
+ exports.FeatureFlagService = FeatureFlagService;
250
+ __decorate([
251
+ (0, core_1.repository)(FeatureFlagAccess_model_js_1.FeatureFlagAccess),
252
+ __metadata("design:type", Object)
253
+ ], FeatureFlagService.prototype, "accessRepository", void 0);
254
+ exports.FeatureFlagService = FeatureFlagService = __decorate([
255
+ (0, core_1.service)(FeatureFlag_model_js_1.FeatureFlag),
256
+ __metadata("design:paramtypes", [])
257
+ ], FeatureFlagService);
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZUZsYWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mZWF0dXJlLWZsYWdzL3NlcnZpY2VzL0ZlYXR1cmVGbGFnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDRCQUF1QjtBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsK0NBQTBDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUseUNBQW9DO0FBQzFELE9BQU8sRUFDTCxtQkFBbUIsR0FHcEIsOEJBQW1CO0FBVXBCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLG9CQUFvQixHQUNyQixzQkFBaUI7QUFDbEIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDJCQUEyQixFQUFFLHNCQUFpQjtBQVE1RSxJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLFlBQXlCO0lBTS9EO1FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTmIsV0FBTSxHQUFzQixJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO0lBTWpELENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUNkLEdBQUcsSUFBVztRQUVkLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxDQUFDLENBQTBDLElBQUksRUFBRSxDQUFDO1FBQ3ZFLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQWlCLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixDQUFDLENBQUMsSUFBSSxtQkFBbUIsRUFBRTtZQUMzQixDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVU7Z0JBQ25DLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3BCLE1BQU0sWUFBWSxHQUFHO1lBQ25CLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLElBQUksc0JBQXNCO1NBQzlELENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlFLE1BQU0sZUFBZSxHQUE2QjtZQUNoRCxHQUFHLE1BQU07WUFDVCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsWUFBWTtTQUNiLENBQUM7UUFDRixPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFTyxhQUFhLENBQUMsUUFBNkI7UUFDakQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzNELEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ04sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUN6RCxDQUFDLENBQUUsRUFBRSxHQUFJLEtBQTJCLEVBQXdCO29CQUM1RCxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ1osT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBeUIsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxLQUFLLENBQUMscUJBQXFCLENBQ2pDLFVBQWtDLEVBQUUsRUFDcEMsR0FBRyxJQUFXO1FBRWQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN6QyxHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxzQkFBc0I7U0FDakQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUM7WUFDSCxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNwRSxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFpQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTztZQUMxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztZQUN2QixDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1osQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkIsQ0FBQztJQUVPLDJCQUEyQixDQUNqQyxLQUE2QjtRQUU3QixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsVUFBVSxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDbEQsV0FBVyxFQUFFLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDM0QsVUFBVSxFQUFFLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7U0FDekQsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0IsQ0FDMUIsS0FBNkI7UUFFN0IsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBb0IsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUNqRSwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQy9DLENBQUM7UUFDRixTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FDdkIsU0FBUyxDQUFDLElBQUksQ0FBb0IsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUNoRCwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQzdDLENBQ0YsQ0FBQztRQUNGLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3pDLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUN2QixTQUFTLENBQUMsSUFBSSxDQUFvQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUMvRCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FDdkIsU0FBUyxDQUFDLElBQUksQ0FBb0IsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUNoRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM1QyxDQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQ25CLEtBQWtCLEVBQ2xCLEdBQUcsSUFBVztRQUVkLEtBQUssQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFUSxLQUFLLENBQUMsTUFBTSxDQUNuQixLQUFrQixFQUNsQixHQUFHLElBQVc7UUFFZCxLQUFLLENBQUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxLQUFLLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVEsS0FBSyxDQUFDLFNBQVMsQ0FDdEIsR0FBc0IsRUFDdEIsS0FBVSxFQUNWLEdBQUcsSUFBVztRQUVkLE1BQU0sZUFBZSxHQUNuQixHQUFHLEtBQUssS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFDeEMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVRLEtBQUssQ0FBQyxPQUFPLENBQ3BCLElBQVcsRUFDWCxHQUFHLElBQVc7UUFFZCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFXO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixNQUFNLEVBQUU7YUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBYyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEQsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsS0FBNkIsRUFDN0IsR0FBRyxJQUFXO1FBRWQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDdEUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQ3RDLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQ2pDLEdBQUcsSUFBSSxDQUNSLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUNuQyxHQUFHLElBQUksQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FDdkIsS0FBd0QsRUFDeEQsR0FBRyxJQUFXO1FBRWQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUNqRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUNyQixLQUE2QixFQUM3QixHQUFHLElBQVc7UUFFZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7YUFDN0MsTUFBTSxFQUFFO2FBQ1IsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLGFBQWEsQ0FDckIsc0JBQXNCLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FDakksQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUNyQixLQUE2QixFQUM3QixHQUFHLElBQVc7UUFFZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRTthQUM5QixNQUFNLEVBQUU7YUFDUixLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsNkJBQTZCLENBQ2pDLE9BQWlDLEVBQ2pDLEdBQUcsSUFBVztRQUVkLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUN6QztZQUNFLEdBQUcsT0FBTztZQUNWLE9BQU8sRUFBRSxJQUFJO1NBQ2QsRUFDRCxHQUFHLElBQUksQ0FDUixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV4QyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFjLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQ25FLFNBQVMsQ0FBQyxJQUFJLENBQWMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUNuQyxXQUFXLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQ3RDLENBQ0YsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDaEYsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7WUFDekMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEVBQXlCLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixHQUFXLEVBQ1gsT0FBaUMsRUFDakMsR0FBRyxJQUFXO1FBRWQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUUsT0FBTywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sMEJBQTBCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLFVBQWtDLEVBQUUsRUFDcEMsR0FBRyxJQUFXO1FBRWQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN0QyxHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxzQkFBc0I7U0FDakQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sTUFBTSxHQUNWLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDekQsQ0FBQyxDQUFFLEtBQTJCO2dCQUM5QixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDM0QsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUNuQyxLQUFLLEVBQ0wsYUFBYSxFQUNiLEdBQUcsSUFBSSxDQUNSLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLFFBQVE7Z0JBQ3BCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDdEIsT0FBTyxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQztvQkFDcEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVc7b0JBQzNELEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLO29CQUN6QyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUTtvQkFDbEQsTUFBTSxFQUFFO3dCQUNOLEdBQUcsVUFBVTt3QkFDYixPQUFPLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDO3FCQUNyQztpQkFDRixDQUFDO2dCQUNKLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQztvQkFDZCxHQUFHLEVBQUUsYUFBYTtvQkFDbEIsT0FBTyxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQztvQkFDcEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO29CQUNuQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7b0JBQ3ZCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtvQkFDN0IsTUFBTSxFQUFFO3dCQUNOLEdBQUcsVUFBVTt3QkFDYixPQUFPLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDO3FCQUNyQztpQkFDRixDQUFDLENBQUM7WUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FDcEQ7WUFDRSxHQUFHLE9BQU87WUFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxzQkFBc0I7U0FDakQsRUFDRCxHQUFHLElBQUksQ0FDUixDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUE7QUF0VVc7SUFEVCxVQUFVLENBQUMsaUJBQWlCLENBQUM7OzREQUN1QjtBQUoxQyxrQkFBa0I7SUFEOUIsT0FBTyxDQUFDLFdBQVcsQ0FBQzs7R0FDUixrQkFBa0IsQ0EwVTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBNb2RlbFNlcnZpY2UsXG4gIFJlcG9zaXRvcnksXG4gIHJlcG9zaXRvcnksXG4gIHNlcnZpY2UsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBSZXBvIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ0Vudmlyb25tZW50IH0gZnJvbSBcIi4uL2Vudmlyb25tZW50XCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ0FjY2VzcyB9IGZyb20gXCIuLi9tb2RlbHMvRmVhdHVyZUZsYWdBY2Nlc3MubW9kZWxcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnIH0gZnJvbSBcIi4uL21vZGVscy9GZWF0dXJlRmxhZy5tb2RlbFwiO1xuaW1wb3J0IHtcbiAgRW52aXJvbm1lRmxhZ1JlYWRlcixcbiAgRmVhdHVyZUZsYWdSZWFkZXIsXG4gIEZlYXR1cmVGbGFnUmVhZGVyTGlrZSxcbn0gZnJvbSBcIi4uL3JlYWRlcnNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRmVhdHVyZUZsYWdBY2Nlc3NJbnB1dCxcbiAgRmVhdHVyZUZsYWdBY2Nlc3NRdWVyeSxcbiAgRmVhdHVyZUZsYWdBY2Nlc3NTdWJqZWN0LFxuICBGZWF0dXJlRmxhZ0NvbmZpZyxcbiAgRmVhdHVyZUZsYWdSZWFkZXJDb25maWcsXG4gIEZlYXR1cmVGbGFnUmVhZGVySW5wdXQsXG4gIEZlYXR1cmVGbGFnUmVnaXN0cnksXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgaXNGZWF0dXJlRmxhZ0VuYWJsZWQsXG4gIGlzRmVhdHVyZUZsYWdFbmFibGVkQnlOYW1lLFxuICBub3JtYWxpemVGZWF0dXJlTmFtZSxcbn0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVGZWF0dXJlU3ViamVjdEtleSwgbm9ybWFsaXplRmVhdHVyZVN1YmplY3RUeXBlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdTZXJ2aWNlQ29uZmlnIGV4dGVuZHMgRmVhdHVyZUZsYWdSZWFkZXJDb25maWcge1xuICByZWFkZXI/OiBGZWF0dXJlRmxhZ1JlYWRlckxpa2U7XG4gIHJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5PEZlYXR1cmVGbGFnLCBhbnk+O1xufVxuXG5Ac2VydmljZShGZWF0dXJlRmxhZylcbmV4cG9ydCBjbGFzcyBGZWF0dXJlRmxhZ1NlcnZpY2UgZXh0ZW5kcyBNb2RlbFNlcnZpY2U8RmVhdHVyZUZsYWc+IHtcbiAgcHJpdmF0ZSByZWFkZXI6IEZlYXR1cmVGbGFnUmVhZGVyID0gbmV3IEVudmlyb25tZUZsYWdSZWFkZXIoKTtcbiAgcHJpdmF0ZSBjYWNoZWRSZWdpc3RyeTogRmVhdHVyZUZsYWdSZWdpc3RyeSA9IHt9O1xuICBAcmVwb3NpdG9yeShGZWF0dXJlRmxhZ0FjY2VzcylcbiAgcHJvdGVjdGVkIGFjY2Vzc1JlcG9zaXRvcnkhOiBSZXBvPEZlYXR1cmVGbGFnQWNjZXNzPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihGZWF0dXJlRmxhZyk7XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXplKFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8eyBjb25maWc6IEZlYXR1cmVGbGFnU2VydmljZUNvbmZpZzsgY2xpZW50OiBGZWF0dXJlRmxhZ1JlYWRlciB9PiB7XG4gICAgY29uc3QgY29uZmlnID0gKGFyZ3NbMF0gYXMgRmVhdHVyZUZsYWdTZXJ2aWNlQ29uZmlnIHwgdW5kZWZpbmVkKSA/PyB7fTtcbiAgICBpZiAoY29uZmlnLnJlcG9zaXRvcnkpIHtcbiAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSBjb25maWcucmVwb3NpdG9yeSBhcyBhbnk7XG4gICAgfVxuICAgIHRoaXMucmVhZGVyID0gIWNvbmZpZy5yZWFkZXJcbiAgICAgID8gbmV3IEVudmlyb25tZUZsYWdSZWFkZXIoKVxuICAgICAgOiB0eXBlb2YgY29uZmlnLnJlYWRlciA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgID8gbmV3IGNvbmZpZy5yZWFkZXIoKVxuICAgICAgICA6IGNvbmZpZy5yZWFkZXI7XG4gICAgY29uc3QgcmVhZGVyQ29uZmlnID0ge1xuICAgICAgLi4uKGNvbmZpZy5yZWFkZXJDb25maWcgPz8ge30pLFxuICAgICAgc291cmNlOiBjb25maWcucmVhZGVyQ29uZmlnPy5zb3VyY2UgPz8gRmVhdHVyZUZsYWdFbnZpcm9ubWVudCxcbiAgICB9O1xuICAgIHRoaXMuY2FjaGVkUmVnaXN0cnkgPSBhd2FpdCB0aGlzLnJlZnJlc2hDYWNoZWRSZWdpc3RyeShyZWFkZXJDb25maWcsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGVmZmVjdGl2ZUNvbmZpZzogRmVhdHVyZUZsYWdTZXJ2aWNlQ29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgcmVhZGVyOiB0aGlzLnJlYWRlcixcbiAgICAgIHJlYWRlckNvbmZpZyxcbiAgICB9O1xuICAgIHJldHVybiB7IGNvbmZpZzogZWZmZWN0aXZlQ29uZmlnLCBjbGllbnQ6IHRoaXMucmVhZGVyIH07XG4gIH1cblxuICBwcml2YXRlIGNsb25lUmVnaXN0cnkocmVnaXN0cnk6IEZlYXR1cmVGbGFnUmVnaXN0cnkpOiBGZWF0dXJlRmxhZ1JlZ2lzdHJ5IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVnaXN0cnkpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGFjY1trZXldID1cbiAgICAgICAgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gKHsgLi4uKHZhbHVlIGFzIEZlYXR1cmVGbGFnQ29uZmlnKSB9IGFzIEZlYXR1cmVGbGFnQ29uZmlnKVxuICAgICAgICAgIDogdmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIEZlYXR1cmVGbGFnUmVnaXN0cnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoQ2FjaGVkUmVnaXN0cnkoXG4gICAgb3B0aW9uczogRmVhdHVyZUZsYWdSZWFkZXJJbnB1dCA9IHt9LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RmVhdHVyZUZsYWdSZWdpc3RyeT4ge1xuICAgIGNvbnN0IGVudlJlZ2lzdHJ5ID0gYXdhaXQgdGhpcy5yZWFkZXIucmVhZCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSA/PyBGZWF0dXJlRmxhZ0Vudmlyb25tZW50LFxuICAgIH0pO1xuICAgIGxldCBwZXJzaXN0ZWQ6IEZlYXR1cmVGbGFnW10gPSBbXTtcbiAgICB0cnkge1xuICAgICAgcGVyc2lzdGVkID0gYXdhaXQgdGhpcy5yZXBvLnNlbGVjdCgpLmV4ZWN1dGUoLi4uYXJncyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBwZXJzaXN0ZWQgPSBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuY2xvbmVSZWdpc3RyeShlbnZSZWdpc3RyeSk7XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIHBlcnNpc3RlZCkge1xuICAgICAgcmVnaXN0cnlbZmxhZy5rZXldID0gZmxhZy5lbmFibGVkID8gKGZsYWcuY29uZmlnID8/IHRydWUpIDogZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiByZWdpc3RyeTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2FjaGVkRmxhZyhmbGFnOiBGZWF0dXJlRmxhZyk6IHZvaWQge1xuICAgIHRoaXMuY2FjaGVkUmVnaXN0cnlbZmxhZy5rZXldID0gZmxhZy5lbmFibGVkXG4gICAgICA/IChmbGFnLmNvbmZpZyA/PyB0cnVlKVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWNjZXNzUmVwb3NpdG9yeSgpOiBSZXBvPEZlYXR1cmVGbGFnQWNjZXNzPiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzUmVwb3NpdG9yeSA/PyBSZXBvc2l0b3J5LmZvck1vZGVsKEZlYXR1cmVGbGFnQWNjZXNzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzZXJ0SW5pdGlhbGl6ZWQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnJlYWRlcjtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplRmVhdHVyZUFjY2Vzc0lucHV0KFxuICAgIGlucHV0OiBGZWF0dXJlRmxhZ0FjY2Vzc0lucHV0XG4gICk6IEZlYXR1cmVGbGFnQWNjZXNzSW5wdXQge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5pbnB1dCxcbiAgICAgIGZlYXR1cmVLZXk6IG5vcm1hbGl6ZUZlYXR1cmVOYW1lKGlucHV0LmZlYXR1cmVLZXkpLFxuICAgICAgc3ViamVjdFR5cGU6IG5vcm1hbGl6ZUZlYXR1cmVTdWJqZWN0VHlwZShpbnB1dC5zdWJqZWN0VHlwZSksXG4gICAgICBzdWJqZWN0S2V5OiBub3JtYWxpemVGZWF0dXJlU3ViamVjdEtleShpbnB1dC5zdWJqZWN0S2V5KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFjY2Vzc0NvbmRpdGlvbihcbiAgICBxdWVyeTogRmVhdHVyZUZsYWdBY2Nlc3NRdWVyeVxuICApOiBDb25kaXRpb248RmVhdHVyZUZsYWdBY2Nlc3M+IHtcbiAgICBsZXQgY29uZGl0aW9uID0gQ29uZGl0aW9uLmF0dHI8RmVhdHVyZUZsYWdBY2Nlc3M+KFwic3ViamVjdFR5cGVcIikuZXEoXG4gICAgICBub3JtYWxpemVGZWF0dXJlU3ViamVjdFR5cGUocXVlcnkuc3ViamVjdFR5cGUpXG4gICAgKTtcbiAgICBjb25kaXRpb24gPSBjb25kaXRpb24uYW5kKFxuICAgICAgQ29uZGl0aW9uLmF0dHI8RmVhdHVyZUZsYWdBY2Nlc3M+KFwic3ViamVjdEtleVwiKS5lcShcbiAgICAgICAgbm9ybWFsaXplRmVhdHVyZVN1YmplY3RLZXkocXVlcnkuc3ViamVjdEtleSlcbiAgICAgIClcbiAgICApO1xuICAgIGlmICh0eXBlb2YgcXVlcnkuZW5hYmxlZCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uLmFuZChcbiAgICAgICAgQ29uZGl0aW9uLmF0dHI8RmVhdHVyZUZsYWdBY2Nlc3M+KFwiZW5hYmxlZFwiKS5lcShxdWVyeS5lbmFibGVkKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHF1ZXJ5LmZlYXR1cmVLZXlzICYmIHF1ZXJ5LmZlYXR1cmVLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5hbmQoXG4gICAgICAgIENvbmRpdGlvbi5hdHRyPEZlYXR1cmVGbGFnQWNjZXNzPihcImZlYXR1cmVLZXlcIikuaW4oXG4gICAgICAgICAgcXVlcnkuZmVhdHVyZUtleXMubWFwKG5vcm1hbGl6ZUZlYXR1cmVOYW1lKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9uO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlKFxuICAgIG1vZGVsOiBGZWF0dXJlRmxhZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEZlYXR1cmVGbGFnPiB7XG4gICAgbW9kZWwua2V5ID0gbm9ybWFsaXplRmVhdHVyZU5hbWUobW9kZWwua2V5KTtcbiAgICBtb2RlbC5lbmFibGVkID8/PSB0cnVlO1xuICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBzdXBlci5jcmVhdGUobW9kZWwsIC4uLmFyZ3MpO1xuICAgIHRoaXMuc2V0Q2FjaGVkRmxhZyhjcmVhdGVkKTtcbiAgICByZXR1cm4gY3JlYXRlZDtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZShcbiAgICBtb2RlbDogRmVhdHVyZUZsYWcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxGZWF0dXJlRmxhZz4ge1xuICAgIG1vZGVsLmtleSA9IG5vcm1hbGl6ZUZlYXR1cmVOYW1lKG1vZGVsLmtleSk7XG4gICAgbW9kZWwuZW5hYmxlZCA/Pz0gdHJ1ZTtcbiAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgc3VwZXIudXBkYXRlKG1vZGVsLCAuLi5hcmdzKTtcbiAgICB0aGlzLnNldENhY2hlZEZsYWcodXBkYXRlZCk7XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBmaW5kT25lQnkoXG4gICAga2V5OiBrZXlvZiBGZWF0dXJlRmxhZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RmVhdHVyZUZsYWc+IHtcbiAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPVxuICAgICAga2V5ID09PSBcImtleVwiICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IG5vcm1hbGl6ZUZlYXR1cmVOYW1lKHZhbHVlKVxuICAgICAgICA6IHZhbHVlO1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZE9uZUJ5KGtleSwgbm9ybWFsaXplZFZhbHVlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHJlYWRBbGwoXG4gICAga2V5czogYW55W10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxGZWF0dXJlRmxhZ1tdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXBvLnJlYWRBbGwoa2V5cywgLi4uYXJncyk7XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIHJlc3VsdCkgdGhpcy5zZXRDYWNoZWRGbGFnKGZsYWcpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBsaXN0RW5hYmxlZCguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8RmVhdHVyZUZsYWdbXT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG9cbiAgICAgIC5zZWxlY3QoKVxuICAgICAgLndoZXJlKENvbmRpdGlvbi5hdHRyPEZlYXR1cmVGbGFnPihcImVuYWJsZWRcIikuZXEodHJ1ZSkpXG4gICAgICAuZXhlY3V0ZSguLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGdyYW50RmVhdHVyZUFjY2VzcyhcbiAgICBpbnB1dDogRmVhdHVyZUZsYWdBY2Nlc3NJbnB1dCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEZlYXR1cmVGbGFnQWNjZXNzPiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplRmVhdHVyZUFjY2Vzc0lucHV0KGlucHV0KTtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuZmluZEZlYXR1cmVBY2Nlc3Mobm9ybWFsaXplZCwgLi4uYXJncykuY2F0Y2goXG4gICAgICAoKSA9PiB1bmRlZmluZWRcbiAgICApO1xuICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEFjY2Vzc1JlcG9zaXRvcnkoKS5jcmVhdGUoXG4gICAgICAgIG5ldyBGZWF0dXJlRmxhZ0FjY2Vzcyhub3JtYWxpemVkKSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzUmVwb3NpdG9yeSgpLnVwZGF0ZShcbiAgICAgIE9iamVjdC5hc3NpZ24oZXhpc3RpbmcsIG5vcm1hbGl6ZWQpLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyByZXZva2VGZWF0dXJlQWNjZXNzKFxuICAgIGlucHV0OiBGZWF0dXJlRmxhZ0FjY2Vzc1N1YmplY3QgJiB7IGZlYXR1cmVLZXk6IHN0cmluZyB9LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RmVhdHVyZUZsYWdBY2Nlc3MgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMuZmluZEZlYXR1cmVBY2Nlc3MoaW5wdXQsIC4uLmFyZ3MpLmNhdGNoKFxuICAgICAgKCkgPT4gdW5kZWZpbmVkXG4gICAgKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmdldEFjY2Vzc1JlcG9zaXRvcnkoKS5kZWxldGUoZXhpc3RpbmcuaWQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgZmluZEZlYXR1cmVBY2Nlc3MoXG4gICAgcXVlcnk6IEZlYXR1cmVGbGFnQWNjZXNzUXVlcnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxGZWF0dXJlRmxhZ0FjY2Vzcz4ge1xuICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuYnVpbGRBY2Nlc3NDb25kaXRpb24ocXVlcnkpO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmdldEFjY2Vzc1JlcG9zaXRvcnkoKVxuICAgICAgLnNlbGVjdCgpXG4gICAgICAud2hlcmUoY29uZGl0aW9uKVxuICAgICAgLmV4ZWN1dGUoLi4uYXJncyk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSByZXN1bHRzWzBdO1xuICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgRmVhdHVyZSBhY2Nlc3MgZm9yICR7bm9ybWFsaXplRmVhdHVyZVN1YmplY3RUeXBlKHF1ZXJ5LnN1YmplY3RUeXBlKX06JHtub3JtYWxpemVGZWF0dXJlU3ViamVjdEtleShxdWVyeS5zdWJqZWN0S2V5KX0gbm90IGZvdW5kYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nO1xuICB9XG5cbiAgYXN5bmMgbGlzdEZlYXR1cmVBY2Nlc3MoXG4gICAgcXVlcnk6IEZlYXR1cmVGbGFnQWNjZXNzUXVlcnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxGZWF0dXJlRmxhZ0FjY2Vzc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzUmVwb3NpdG9yeSgpXG4gICAgICAuc2VsZWN0KClcbiAgICAgIC53aGVyZSh0aGlzLmJ1aWxkQWNjZXNzQ29uZGl0aW9uKHF1ZXJ5KSlcbiAgICAgIC5leGVjdXRlKC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZUZlYXR1cmVGbGFnc0ZvclN1YmplY3QoXG4gICAgc3ViamVjdDogRmVhdHVyZUZsYWdBY2Nlc3NTdWJqZWN0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RmVhdHVyZUZsYWdSZWdpc3RyeT4ge1xuICAgIHRoaXMuYXNzZXJ0SW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBhY2Nlc3MgPSBhd2FpdCB0aGlzLmxpc3RGZWF0dXJlQWNjZXNzKFxuICAgICAge1xuICAgICAgICAuLi5zdWJqZWN0LFxuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGNvbnN0IGZlYXR1cmVLZXlzID0gWy4uLm5ldyBTZXQoYWNjZXNzLm1hcCgoaXRlbSkgPT4gaXRlbS5mZWF0dXJlS2V5KSldO1xuICAgIGlmIChmZWF0dXJlS2V5cy5sZW5ndGggPT09IDApIHJldHVybiB7fTtcblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IENvbmRpdGlvbi5hdHRyPEZlYXR1cmVGbGFnPihcImVuYWJsZWRcIikuZXEodHJ1ZSkuYW5kKFxuICAgICAgQ29uZGl0aW9uLmF0dHI8RmVhdHVyZUZsYWc+KFwia2V5XCIpLmluKFxuICAgICAgICBmZWF0dXJlS2V5cy5tYXAobm9ybWFsaXplRmVhdHVyZU5hbWUpXG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IGVuYWJsZWRGbGFncyA9IGF3YWl0IHRoaXMucmVwby5zZWxlY3QoKS53aGVyZShjb25kaXRpb24pLmV4ZWN1dGUoLi4uYXJncyk7XG4gICAgcmV0dXJuIGVuYWJsZWRGbGFncy5yZWR1Y2UoKHJlZ2lzdHJ5LCBmbGFnKSA9PiB7XG4gICAgICByZWdpc3RyeVtmbGFnLmtleV0gPSBmbGFnLmNvbmZpZyA/PyB0cnVlO1xuICAgICAgcmV0dXJuIHJlZ2lzdHJ5O1xuICAgIH0sIHt9IGFzIEZlYXR1cmVGbGFnUmVnaXN0cnkpO1xuICB9XG5cbiAgYXN5bmMgaXNFbmFibGVkRm9yU3ViamVjdChcbiAgICBrZXk6IHN0cmluZyxcbiAgICBzdWJqZWN0OiBGZWF0dXJlRmxhZ0FjY2Vzc1N1YmplY3QsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCB0aGlzLnJlc29sdmVGZWF0dXJlRmxhZ3NGb3JTdWJqZWN0KHN1YmplY3QsIC4uLmFyZ3MpO1xuICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZEJ5TmFtZShyZWdpc3RyeSwga2V5KTtcbiAgfVxuXG4gIGlzRW5hYmxlZChrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYXNzZXJ0SW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gbm9ybWFsaXplRmVhdHVyZU5hbWUoa2V5KTtcbiAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWRCeU5hbWUodGhpcy5jYWNoZWRSZWdpc3RyeSwgbm9ybWFsaXplZEtleSk7XG4gIH1cblxuICBhc3luYyByZXNvbHZlRmVhdHVyZUZsYWdzKCk6IFByb21pc2U8RmVhdHVyZUZsYWdSZWdpc3RyeT4ge1xuICAgIHRoaXMuYXNzZXJ0SW5pdGlhbGl6ZWQoKTtcbiAgICByZXR1cm4gdGhpcy5jbG9uZVJlZ2lzdHJ5KHRoaXMuY2FjaGVkUmVnaXN0cnkpO1xuICB9XG5cbiAgYXN5bmMgc3luY0Zyb21FbnZpcm9ubWVudChcbiAgICBvcHRpb25zOiBGZWF0dXJlRmxhZ1JlYWRlcklucHV0ID0ge30sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxGZWF0dXJlRmxhZ1tdPiB7XG4gICAgdGhpcy5hc3NlcnRJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgdGhpcy5yZWFkZXIucmVhZCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSA/PyBGZWF0dXJlRmxhZ0Vudmlyb25tZW50LFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3VsdHM6IEZlYXR1cmVGbGFnW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZWdpc3RyeSkpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9XG4gICAgICAgIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/ICh2YWx1ZSBhcyBGZWF0dXJlRmxhZ0NvbmZpZylcbiAgICAgICAgICA6IHsgZW5hYmxlZDogQm9vbGVhbih2YWx1ZSkgfTtcbiAgICAgIGNvbnN0IHsgZW5hYmxlZDogX2lnbm9yZWRFbmFibGVkLCAuLi5yZXN0Q29uZmlnIH0gPSBjb25maWc7XG4gICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gbm9ybWFsaXplRmVhdHVyZU5hbWUoa2V5KTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5maW5kT25lQnkoXG4gICAgICAgIFwia2V5XCIsXG4gICAgICAgIG5vcm1hbGl6ZWRLZXksXG4gICAgICAgIC4uLmFyZ3NcbiAgICAgICkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IG1vZGVsID0gZXhpc3RpbmdcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKGV4aXN0aW5nLCB7XG4gICAgICAgICAgICBlbmFibGVkOiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCh2YWx1ZSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdENvbmZpZy5kZXNjcmlwdGlvbiA/PyBleGlzdGluZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHNjb3BlOiByZXN0Q29uZmlnLnNjb3BlID8/IGV4aXN0aW5nLnNjb3BlLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3RDb25maWcubWV0YWRhdGEgPz8gZXhpc3RpbmcubWV0YWRhdGEsXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgLi4ucmVzdENvbmZpZyxcbiAgICAgICAgICAgICAgZW5hYmxlZDogaXNGZWF0dXJlRmxhZ0VuYWJsZWQodmFsdWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICA6IG5ldyBGZWF0dXJlRmxhZyh7XG4gICAgICAgICAgICBrZXk6IG5vcm1hbGl6ZWRLZXksXG4gICAgICAgICAgICBlbmFibGVkOiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCh2YWx1ZSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdENvbmZpZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHNjb3BlOiByZXN0Q29uZmlnLnNjb3BlLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3RDb25maWcubWV0YWRhdGEsXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgLi4ucmVzdENvbmZpZyxcbiAgICAgICAgICAgICAgZW5hYmxlZDogaXNGZWF0dXJlRmxhZ0VuYWJsZWQodmFsdWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgIHJlc3VsdHMucHVzaChleGlzdGluZyA/IGF3YWl0IHRoaXMudXBkYXRlKG1vZGVsLCAuLi5hcmdzKSA6IGF3YWl0IHRoaXMuY3JlYXRlKG1vZGVsLCAuLi5hcmdzKSk7XG4gICAgfVxuICAgIHRoaXMuY2FjaGVkUmVnaXN0cnkgPSBhd2FpdCB0aGlzLnJlZnJlc2hDYWNoZWRSZWdpc3RyeShcbiAgICAgIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSA/PyBGZWF0dXJlRmxhZ0Vudmlyb25tZW50LFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG59XG4iXX0=
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZUZsYWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZlYXR1cmVGbGFnLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFN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LCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuaW1wb3J0IHsgQ29uZGl0aW9uLCBNb2RlbFNlcnZpY2UsIFJlcG9zaXRvcnksIHJlcG9zaXRvcnksIHNlcnZpY2UsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ0Vudmlyb25tZW50IH0gZnJvbSBcIi4vLi4vZW52aXJvbm1lbnQuanNcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnQWNjZXNzIH0gZnJvbSBcIi4vLi4vbW9kZWxzL0ZlYXR1cmVGbGFnQWNjZXNzLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZyB9IGZyb20gXCIuLy4uL21vZGVscy9GZWF0dXJlRmxhZy5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgRW52aXJvbm1lRmxhZ1JlYWRlciwgfSBmcm9tIFwiLi8uLi9yZWFkZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBpc0ZlYXR1cmVGbGFnRW5hYmxlZCwgaXNGZWF0dXJlRmxhZ0VuYWJsZWRCeU5hbWUsIG5vcm1hbGl6ZUZlYXR1cmVOYW1lLCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVGZWF0dXJlU3ViamVjdEtleSwgbm9ybWFsaXplRmVhdHVyZVN1YmplY3RUeXBlIH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmxldCBGZWF0dXJlRmxhZ1NlcnZpY2UgPSBjbGFzcyBGZWF0dXJlRmxhZ1NlcnZpY2UgZXh0ZW5kcyBNb2RlbFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihGZWF0dXJlRmxhZyk7XG4gICAgICAgIHRoaXMucmVhZGVyID0gbmV3IEVudmlyb25tZUZsYWdSZWFkZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZWRSZWdpc3RyeSA9IHt9O1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXJnc1swXSA/PyB7fTtcbiAgICAgICAgaWYgKGNvbmZpZy5yZXBvc2l0b3J5KSB7XG4gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gY29uZmlnLnJlcG9zaXRvcnk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWFkZXIgPSAhY29uZmlnLnJlYWRlclxuICAgICAgICAgICAgPyBuZXcgRW52aXJvbm1lRmxhZ1JlYWRlcigpXG4gICAgICAgICAgICA6IHR5cGVvZiBjb25maWcucmVhZGVyID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICA/IG5ldyBjb25maWcucmVhZGVyKClcbiAgICAgICAgICAgICAgICA6IGNvbmZpZy5yZWFkZXI7XG4gICAgICAgIGNvbnN0IHJlYWRlckNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLihjb25maWcucmVhZGVyQ29uZmlnID8/IHt9KSxcbiAgICAgICAgICAgIHNvdXJjZTogY29uZmlnLnJlYWRlckNvbmZpZz8uc291cmNlID8/IEZlYXR1cmVGbGFnRW52aXJvbm1lbnQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2FjaGVkUmVnaXN0cnkgPSBhd2FpdCB0aGlzLnJlZnJlc2hDYWNoZWRSZWdpc3RyeShyZWFkZXJDb25maWcsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBlZmZlY3RpdmVDb25maWcgPSB7XG4gICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICByZWFkZXI6IHRoaXMucmVhZGVyLFxuICAgICAgICAgICAgcmVhZGVyQ29uZmlnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBjb25maWc6IGVmZmVjdGl2ZUNvbmZpZywgY2xpZW50OiB0aGlzLnJlYWRlciB9O1xuICAgIH1cbiAgICBjbG9uZVJlZ2lzdHJ5KHJlZ2lzdHJ5KSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhyZWdpc3RyeSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgYWNjW2tleV0gPVxuICAgICAgICAgICAgICAgIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyB7IC4uLnZhbHVlIH1cbiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVmcmVzaENhY2hlZFJlZ2lzdHJ5KG9wdGlvbnMgPSB7fSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCBlbnZSZWdpc3RyeSA9IGF3YWl0IHRoaXMucmVhZGVyLnJlYWQoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHNvdXJjZTogb3B0aW9ucy5zb3VyY2UgPz8gRmVhdHVyZUZsYWdFbnZpcm9ubWVudCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBwZXJzaXN0ZWQgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBlcnNpc3RlZCA9IGF3YWl0IHRoaXMucmVwby5zZWxlY3QoKS5leGVjdXRlKC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIHBlcnNpc3RlZCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5jbG9uZVJlZ2lzdHJ5KGVudlJlZ2lzdHJ5KTtcbiAgICAgICAgZm9yIChjb25zdCBmbGFnIG9mIHBlcnNpc3RlZCkge1xuICAgICAgICAgICAgcmVnaXN0cnlbZmxhZy5rZXldID0gZmxhZy5lbmFibGVkID8gKGZsYWcuY29uZmlnID8/IHRydWUpIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5O1xuICAgIH1cbiAgICBzZXRDYWNoZWRGbGFnKGZsYWcpIHtcbiAgICAgICAgdGhpcy5jYWNoZWRSZWdpc3RyeVtmbGFnLmtleV0gPSBmbGFnLmVuYWJsZWRcbiAgICAgICAgICAgID8gKGZsYWcuY29uZmlnID8/IHRydWUpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cbiAgICBnZXRBY2Nlc3NSZXBvc2l0b3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2Nlc3NSZXBvc2l0b3J5ID8/IFJlcG9zaXRvcnkuZm9yTW9kZWwoRmVhdHVyZUZsYWdBY2Nlc3MpO1xuICAgIH1cbiAgICBhc3NlcnRJbml0aWFsaXplZCgpIHtcbiAgICAgICAgdm9pZCB0aGlzLnJlYWRlcjtcbiAgICB9XG4gICAgbm9ybWFsaXplRmVhdHVyZUFjY2Vzc0lucHV0KGlucHV0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgIGZlYXR1cmVLZXk6IG5vcm1hbGl6ZUZlYXR1cmVOYW1lKGlucHV0LmZlYXR1cmVLZXkpLFxuICAgICAgICAgICAgc3ViamVjdFR5cGU6IG5vcm1hbGl6ZUZlYXR1cmVTdWJqZWN0VHlwZShpbnB1dC5zdWJqZWN0VHlwZSksXG4gICAgICAgICAgICBzdWJqZWN0S2V5OiBub3JtYWxpemVGZWF0dXJlU3ViamVjdEtleShpbnB1dC5zdWJqZWN0S2V5KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYnVpbGRBY2Nlc3NDb25kaXRpb24ocXVlcnkpIHtcbiAgICAgICAgbGV0IGNvbmRpdGlvbiA9IENvbmRpdGlvbi5hdHRyKFwic3ViamVjdFR5cGVcIikuZXEobm9ybWFsaXplRmVhdHVyZVN1YmplY3RUeXBlKHF1ZXJ5LnN1YmplY3RUeXBlKSk7XG4gICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5hbmQoQ29uZGl0aW9uLmF0dHIoXCJzdWJqZWN0S2V5XCIpLmVxKG5vcm1hbGl6ZUZlYXR1cmVTdWJqZWN0S2V5KHF1ZXJ5LnN1YmplY3RLZXkpKSk7XG4gICAgICAgIGlmICh0eXBlb2YgcXVlcnkuZW5hYmxlZCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uLmFuZChDb25kaXRpb24uYXR0cihcImVuYWJsZWRcIikuZXEocXVlcnkuZW5hYmxlZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChxdWVyeS5mZWF0dXJlS2V5cyAmJiBxdWVyeS5mZWF0dXJlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25kaXRpb24gPSBjb25kaXRpb24uYW5kKENvbmRpdGlvbi5hdHRyKFwiZmVhdHVyZUtleVwiKS5pbihxdWVyeS5mZWF0dXJlS2V5cy5tYXAobm9ybWFsaXplRmVhdHVyZU5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlKG1vZGVsLCAuLi5hcmdzKSB7XG4gICAgICAgIG1vZGVsLmtleSA9IG5vcm1hbGl6ZUZlYXR1cmVOYW1lKG1vZGVsLmtleSk7XG4gICAgICAgIG1vZGVsLmVuYWJsZWQgPz89IHRydWU7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBzdXBlci5jcmVhdGUobW9kZWwsIC4uLmFyZ3MpO1xuICAgICAgICB0aGlzLnNldENhY2hlZEZsYWcoY3JlYXRlZCk7XG4gICAgICAgIHJldHVybiBjcmVhdGVkO1xuICAgIH1cbiAgICBhc3luYyB1cGRhdGUobW9kZWwsIC4uLmFyZ3MpIHtcbiAgICAgICAgbW9kZWwua2V5ID0gbm9ybWFsaXplRmVhdHVyZU5hbWUobW9kZWwua2V5KTtcbiAgICAgICAgbW9kZWwuZW5hYmxlZCA/Pz0gdHJ1ZTtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IHN1cGVyLnVwZGF0ZShtb2RlbCwgLi4uYXJncyk7XG4gICAgICAgIHRoaXMuc2V0Q2FjaGVkRmxhZyh1cGRhdGVkKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfVxuICAgIGFzeW5jIGZpbmRPbmVCeShrZXksIHZhbHVlLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IGtleSA9PT0gXCJrZXlcIiAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gbm9ybWFsaXplRmVhdHVyZU5hbWUodmFsdWUpXG4gICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVCeShrZXksIG5vcm1hbGl6ZWRWYWx1ZSwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIHJlYWRBbGwoa2V5cywgLi4uYXJncykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcG8ucmVhZEFsbChrZXlzLCAuLi5hcmdzKTtcbiAgICAgICAgZm9yIChjb25zdCBmbGFnIG9mIHJlc3VsdClcbiAgICAgICAgICAgIHRoaXMuc2V0Q2FjaGVkRmxhZyhmbGFnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgYXN5bmMgbGlzdEVuYWJsZWQoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXBvXG4gICAgICAgICAgICAuc2VsZWN0KClcbiAgICAgICAgICAgIC53aGVyZShDb25kaXRpb24uYXR0cihcImVuYWJsZWRcIikuZXEodHJ1ZSkpXG4gICAgICAgICAgICAuZXhlY3V0ZSguLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgZ3JhbnRGZWF0dXJlQWNjZXNzKGlucHV0LCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZUZlYXR1cmVBY2Nlc3NJbnB1dChpbnB1dCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5maW5kRmVhdHVyZUFjY2Vzcyhub3JtYWxpemVkLCAuLi5hcmdzKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBY2Nlc3NSZXBvc2l0b3J5KCkuY3JlYXRlKG5ldyBGZWF0dXJlRmxhZ0FjY2Vzcyhub3JtYWxpemVkKSwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzUmVwb3NpdG9yeSgpLnVwZGF0ZShPYmplY3QuYXNzaWduKGV4aXN0aW5nLCBub3JtYWxpemVkKSwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIHJldm9rZUZlYXR1cmVBY2Nlc3MoaW5wdXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLmZpbmRGZWF0dXJlQWNjZXNzKGlucHV0LCAuLi5hcmdzKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICBpZiAoIWV4aXN0aW5nKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzUmVwb3NpdG9yeSgpLmRlbGV0ZShleGlzdGluZy5pZCwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIGZpbmRGZWF0dXJlQWNjZXNzKHF1ZXJ5LCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuYnVpbGRBY2Nlc3NDb25kaXRpb24ocXVlcnkpO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5nZXRBY2Nlc3NSZXBvc2l0b3J5KClcbiAgICAgICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAgICAgLndoZXJlKGNvbmRpdGlvbilcbiAgICAgICAgICAgIC5leGVjdXRlKC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHJlc3VsdHNbMF07XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBGZWF0dXJlIGFjY2VzcyBmb3IgJHtub3JtYWxpemVGZWF0dXJlU3ViamVjdFR5cGUocXVlcnkuc3ViamVjdFR5cGUpfToke25vcm1hbGl6ZUZlYXR1cmVTdWJqZWN0S2V5KHF1ZXJ5LnN1YmplY3RLZXkpfSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RGZWF0dXJlQWNjZXNzKHF1ZXJ5LCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjY2Vzc1JlcG9zaXRvcnkoKVxuICAgICAgICAgICAgLnNlbGVjdCgpXG4gICAgICAgICAgICAud2hlcmUodGhpcy5idWlsZEFjY2Vzc0NvbmRpdGlvbihxdWVyeSkpXG4gICAgICAgICAgICAuZXhlY3V0ZSguLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZUZlYXR1cmVGbGFnc0ZvclN1YmplY3Qoc3ViamVjdCwgLi4uYXJncykge1xuICAgICAgICB0aGlzLmFzc2VydEluaXRpYWxpemVkKCk7XG4gICAgICAgIGNvbnN0IGFjY2VzcyA9IGF3YWl0IHRoaXMubGlzdEZlYXR1cmVBY2Nlc3Moe1xuICAgICAgICAgICAgLi4uc3ViamVjdCxcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBmZWF0dXJlS2V5cyA9IFsuLi5uZXcgU2V0KGFjY2Vzcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmVhdHVyZUtleSkpXTtcbiAgICAgICAgaWYgKGZlYXR1cmVLZXlzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gQ29uZGl0aW9uLmF0dHIoXCJlbmFibGVkXCIpLmVxKHRydWUpLmFuZChDb25kaXRpb24uYXR0cihcImtleVwiKS5pbihmZWF0dXJlS2V5cy5tYXAobm9ybWFsaXplRmVhdHVyZU5hbWUpKSk7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRGbGFncyA9IGF3YWl0IHRoaXMucmVwby5zZWxlY3QoKS53aGVyZShjb25kaXRpb24pLmV4ZWN1dGUoLi4uYXJncyk7XG4gICAgICAgIHJldHVybiBlbmFibGVkRmxhZ3MucmVkdWNlKChyZWdpc3RyeSwgZmxhZykgPT4ge1xuICAgICAgICAgICAgcmVnaXN0cnlbZmxhZy5rZXldID0gZmxhZy5jb25maWcgPz8gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiByZWdpc3RyeTtcbiAgICAgICAgfSwge30pO1xuICAgIH1cbiAgICBhc3luYyBpc0VuYWJsZWRGb3JTdWJqZWN0KGtleSwgc3ViamVjdCwgLi4uYXJncykge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHRoaXMucmVzb2x2ZUZlYXR1cmVGbGFnc0ZvclN1YmplY3Qoc3ViamVjdCwgLi4uYXJncyk7XG4gICAgICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZEJ5TmFtZShyZWdpc3RyeSwga2V5KTtcbiAgICB9XG4gICAgaXNFbmFibGVkKGtleSkge1xuICAgICAgICB0aGlzLmFzc2VydEluaXRpYWxpemVkKCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBub3JtYWxpemVGZWF0dXJlTmFtZShrZXkpO1xuICAgICAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWRCeU5hbWUodGhpcy5jYWNoZWRSZWdpc3RyeSwgbm9ybWFsaXplZEtleSk7XG4gICAgfVxuICAgIGFzeW5jIHJlc29sdmVGZWF0dXJlRmxhZ3MoKSB7XG4gICAgICAgIHRoaXMuYXNzZXJ0SW5pdGlhbGl6ZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmVSZWdpc3RyeSh0aGlzLmNhY2hlZFJlZ2lzdHJ5KTtcbiAgICB9XG4gICAgYXN5bmMgc3luY0Zyb21FbnZpcm9ubWVudChvcHRpb25zID0ge30sIC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5hc3NlcnRJbml0aWFsaXplZCgpO1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHRoaXMucmVhZGVyLnJlYWQoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHNvdXJjZTogb3B0aW9ucy5zb3VyY2UgPz8gRmVhdHVyZUZsYWdFbnZpcm9ubWVudCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVnaXN0cnkpKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgIDogeyBlbmFibGVkOiBCb29sZWFuKHZhbHVlKSB9O1xuICAgICAgICAgICAgY29uc3QgeyBlbmFibGVkOiBfaWdub3JlZEVuYWJsZWQsIC4uLnJlc3RDb25maWcgfSA9IGNvbmZpZztcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBub3JtYWxpemVGZWF0dXJlTmFtZShrZXkpO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLmZpbmRPbmVCeShcImtleVwiLCBub3JtYWxpemVkS2V5LCAuLi5hcmdzKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBleGlzdGluZ1xuICAgICAgICAgICAgICAgID8gT2JqZWN0LmFzc2lnbihleGlzdGluZywge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByZXN0Q29uZmlnLmRlc2NyaXB0aW9uID8/IGV4aXN0aW5nLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzY29wZTogcmVzdENvbmZpZy5zY29wZSA/PyBleGlzdGluZy5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3RDb25maWcubWV0YWRhdGEgPz8gZXhpc3RpbmcubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGlzRmVhdHVyZUZsYWdFbmFibGVkKHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogbmV3IEZlYXR1cmVGbGFnKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBub3JtYWxpemVkS2V5LFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByZXN0Q29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzY29wZTogcmVzdENvbmZpZy5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IHJlc3RDb25maWcubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGlzRmVhdHVyZUZsYWdFbmFibGVkKHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChleGlzdGluZyA/IGF3YWl0IHRoaXMudXBkYXRlKG1vZGVsLCAuLi5hcmdzKSA6IGF3YWl0IHRoaXMuY3JlYXRlKG1vZGVsLCAuLi5hcmdzKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWNoZWRSZWdpc3RyeSA9IGF3YWl0IHRoaXMucmVmcmVzaENhY2hlZFJlZ2lzdHJ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBzb3VyY2U6IG9wdGlvbnMuc291cmNlID8/IEZlYXR1cmVGbGFnRW52aXJvbm1lbnQsXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcmVwb3NpdG9yeShGZWF0dXJlRmxhZ0FjY2VzcyksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEZlYXR1cmVGbGFnU2VydmljZS5wcm90b3R5cGUsIFwiYWNjZXNzUmVwb3NpdG9yeVwiLCB2b2lkIDApO1xuRmVhdHVyZUZsYWdTZXJ2aWNlID0gX19kZWNvcmF0ZShbXG4gICAgc2VydmljZShGZWF0dXJlRmxhZyksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtdKVxuXSwgRmVhdHVyZUZsYWdTZXJ2aWNlKTtcbmV4cG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUm1WaGRIVnlaVVpzWVdjdWMyVnlkbWxqWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OW1aV0YwZFhKbExXWnNZV2R6TDNObGNuWnBZMlZ6TDBabFlYUjFjbVZHYkdGbkxuTmxjblpwWTJVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJRVUVzVDBGQlR5eEZRVU5NTEZOQlFWTXNSVUZEVkN4WlFVRlpMRVZCUTFvc1ZVRkJWU3hGUVVOV0xGVkJRVlVzUlVGRFZpeFBRVUZQTEVkQlExSXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVVY0UWl4UFFVRlBMRVZCUVVVc1lVRkJZU3hGUVVGRkxFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkRlRVFzVDBGQlR5eEZRVUZGTEhOQ1FVRnpRaXhGUVVGRkxEUkNRVUYxUWp0QlFVTjRSQ3hQUVVGUExFVkJRVVVzYVVKQlFXbENMRVZCUVVVc0swTkJRVEJETzBGQlEzUkZMRTlCUVU4c1JVRkJSU3hYUVVGWExFVkJRVVVzZVVOQlFXOURPMEZCUXpGRUxFOUJRVThzUlVGRFRDeHRRa0ZCYlVJc1IwRkhjRUlzT0VKQlFXMUNPMEZCVlhCQ0xFOUJRVThzUlVGRFRDeHZRa0ZCYjBJc1JVRkRjRUlzTUVKQlFUQkNMRVZCUXpGQ0xHOUNRVUZ2UWl4SFFVTnlRaXh6UWtGQmFVSTdRVUZEYkVJc1QwRkJUeXhGUVVGRkxEQkNRVUV3UWl4RlFVRkZMREpDUVVFeVFpeEZRVUZGTEhOQ1FVRnBRanRCUVZFMVJTeEpRVUZOTEd0Q1FVRnJRaXhIUVVGNFFpeE5RVUZOTEd0Q1FVRnRRaXhUUVVGUkxGbEJRWGxDTzBsQlRTOUVPMUZCUTBVc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlRtSXNWMEZCVFN4SFFVRnpRaXhKUVVGSkxHMUNRVUZ0UWl4RlFVRkZMRU5CUVVNN1VVRkRkRVFzYlVKQlFXTXNSMEZCZDBJc1JVRkJSU3hEUVVGRE8wbEJUV3BFTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVOa0xFZEJRVWNzU1VGQlZ6dFJRVVZrTEUxQlFVMHNUVUZCVFN4SFFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVEJETEVsQlFVa3NSVUZCUlN4RFFVRkRPMUZCUTNaRkxFbEJRVWtzVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NUVUZCVFN4RFFVRkRMRlZCUVdsQ0xFTkJRVU03VVVGRE9VTXNRMEZCUXp0UlFVTkVMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFR0WlFVTXhRaXhEUVVGRExFTkJRVU1zU1VGQlNTeHRRa0ZCYlVJc1JVRkJSVHRaUVVNelFpeERRVUZETEVOQlFVTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1RVRkJUU3hMUVVGTExGVkJRVlU3WjBKQlEyNURMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVTdaMEpCUTNKQ0xFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNCQ0xFMUJRVTBzV1VGQldTeEhRVUZITzFsQlEyNUNMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTTVRaXhOUVVGTkxFVkJRVVVzVFVGQlRTeERRVUZETEZsQlFWa3NSVUZCUlN4TlFVRk5MRWxCUVVrc2MwSkJRWE5DTzFOQlF6bEVMRU5CUVVNN1VVRkRSaXhKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRemxGTEUxQlFVMHNaVUZCWlN4SFFVRTJRanRaUVVOb1JDeEhRVUZITEUxQlFVMDdXVUZEVkN4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTA3V1VGRGJrSXNXVUZCV1R0VFFVTmlMRU5CUVVNN1VVRkRSaXhQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZGTEdWQlFXVXNSVUZCUlN4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBsQlF6RkVMRU5CUVVNN1NVRkZUeXhoUVVGaExFTkJRVU1zVVVGQk5rSTdVVUZEYWtRc1QwRkJUeXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRek5FTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNN1owSkJRMDRzUzBGQlN5eEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRPMjlDUVVONlJDeERRVUZETEVOQlFVVXNSVUZCUlN4SFFVRkpMRXRCUVRKQ0xFVkJRWGRDTzI5Q1FVTTFSQ3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzFsQlExb3NUMEZCVHl4SFFVRkhMRU5CUVVNN1VVRkRZaXhEUVVGRExFVkJRVVVzUlVGQmVVSXNRMEZCUXl4RFFVRkRPMGxCUTJoRExFTkJRVU03U1VGRlR5eExRVUZMTEVOQlFVTXNjVUpCUVhGQ0xFTkJRMnBETEZWQlFXdERMRVZCUVVVc1JVRkRjRU1zUjBGQlJ5eEpRVUZYTzFGQlJXUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTjZReXhIUVVGSExFOUJRVTg3V1VGRFZpeE5RVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3h6UWtGQmMwSTdVMEZEYWtRc1EwRkJReXhEUVVGRE8xRkJRMGdzU1VGQlNTeFRRVUZUTEVkQlFXdENMRVZCUVVVc1EwRkJRenRSUVVOc1F5eEpRVUZKTEVOQlFVTTdXVUZEU0N4VFFVRlRMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzaEVMRU5CUVVNN1VVRkJReXhOUVVGTkxFTkJRVU03V1VGRFVDeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJwQ0xFTkJRVU03VVVGRlJDeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEycEVMRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzVTBGQlV5eEZRVUZGTEVOQlFVTTdXVUZETjBJc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTndSU3hEUVVGRE8xRkJRMFFzVDBGQlR5eFJRVUZSTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWUExHRkJRV0VzUTBGQlF5eEpRVUZwUWp0UlFVTnlReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVU14UXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXp0WlFVTjJRaXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzBsQlExb3NRMEZCUXp0SlFVVlBMRzFDUVVGdFFqdFJRVU42UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNTVUZCU1N4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1NVRkRla1VzUTBGQlF6dEpRVVZQTEdsQ1FVRnBRanRSUVVOMlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVVZQTERKQ1FVRXlRaXhEUVVOcVF5eExRVUUyUWp0UlFVVTNRaXhQUVVGUE8xbEJRMHdzUjBGQlJ5eExRVUZMTzFsQlExSXNWVUZCVlN4RlFVRkZMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNN1dVRkRiRVFzVjBGQlZ5eEZRVUZGTERKQ1FVRXlRaXhEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTTdXVUZETTBRc1ZVRkJWU3hGUVVGRkxEQkNRVUV3UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU03VTBGRGVrUXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZUeXh2UWtGQmIwSXNRMEZETVVJc1MwRkJOa0k3VVVGRk4wSXNTVUZCU1N4VFFVRlRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQmIwSXNZVUZCWVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVOcVJTd3lRa0ZCTWtJc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlF5OURMRU5CUVVNN1VVRkRSaXhUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZEZGtJc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQmIwSXNXVUZCV1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVOb1JDd3dRa0ZCTUVJc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlF6ZERMRU5CUTBZc1EwRkJRenRSUVVOR0xFbEJRVWtzVDBGQlR5eExRVUZMTEVOQlFVTXNUMEZCVHl4TFFVRkxMRmRCUVZjc1JVRkJSU3hEUVVGRE8xbEJRM3BETEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVOMlFpeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRnZRaXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVNdlJDeERRVUZETzFGQlEwb3NRMEZCUXp0UlFVTkVMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmNzU1VGQlNTeExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU4wUkN4VFFVRlRMRWRCUVVjc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGRGRrSXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJiMElzV1VGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVTm9SQ3hMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVU0xUXl4RFFVTkdMRU5CUVVNN1VVRkRTaXhEUVVGRE8xRkJRMFFzVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWUkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlEyNUNMRXRCUVd0Q0xFVkJRMnhDTEVkQlFVY3NTVUZCVnp0UlFVVmtMRXRCUVVzc1EwRkJReXhIUVVGSExFZEJRVWNzYjBKQlFXOUNMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6VkRMRXRCUVVzc1EwRkJReXhQUVVGUExFdEJRVXNzU1VGQlNTeERRVUZETzFGQlEzWkNMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU51UkN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlF6VkNMRTlCUVU4c1QwRkJUeXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdTVUZGVVN4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVOdVFpeExRVUZyUWl4RlFVTnNRaXhIUVVGSExFbEJRVmM3VVVGRlpDeExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNMVF5eExRVUZMTEVOQlFVTXNUMEZCVHl4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOMlFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4TlFVRk5MRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRia1FzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVNMVFpeFBRVUZQTEU5QlFVOHNRMEZCUXp0SlFVTnFRaXhEUVVGRE8wbEJSVkVzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZEZEVJc1IwRkJjMElzUlVGRGRFSXNTMEZCVlN4RlFVTldMRWRCUVVjc1NVRkJWenRSUVVWa0xFMUJRVTBzWlVGQlpTeEhRVU51UWl4SFFVRkhMRXRCUVVzc1MwRkJTeXhKUVVGSkxFOUJRVThzUzBGQlN5eExRVUZMTEZGQlFWRTdXVUZEZUVNc1EwRkJReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVNM1FpeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTFvc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1pVRkJaU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWUkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlEzQkNMRWxCUVZjc1JVRkRXQ3hIUVVGSExFbEJRVmM3VVVGRlpDeE5RVUZOTEUxQlFVMHNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1JFTEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1RVRkJUVHRaUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRjRVFzVDBGQlR5eE5RVUZOTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4SlFVRlhPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVazdZVUZEWWl4TlFVRk5MRVZCUVVVN1lVRkRVaXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCWXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdZVUZEZEVRc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEZEVJc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eHJRa0ZCYTBJc1EwRkRkRUlzUzBGQk5rSXNSVUZETjBJc1IwRkJSeXhKUVVGWE8xRkJSV1FzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMREpDUVVFeVFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUXpORUxFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGRGRFVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVOb1FpeERRVUZETzFGQlEwWXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRMlFzVDBGQlR5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlEzUkRMRWxCUVVrc2FVSkJRV2xDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUTJwRExFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTTdVVUZEU2l4RFFVRkRPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRM1JETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hGUVVGRkxGVkJRVlVzUTBGQlF5eEZRVU51UXl4SFFVRkhMRWxCUVVrc1EwRkRVaXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZFTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzUTBGRGRrSXNTMEZCZDBRc1JVRkRlRVFzUjBGQlJ5eEpRVUZYTzFGQlJXUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVTnFSU3hIUVVGSExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlEyaENMRU5CUVVNN1VVRkRSaXhKUVVGSkxFTkJRVU1zVVVGQlVUdFpRVUZGTEU5QlFVOHNVMEZCVXl4RFFVRkRPMUZCUTJoRExFOUJRVThzU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU5xUlN4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVTnlRaXhMUVVFMlFpeEZRVU0zUWl4SFFVRkhMRWxCUVZjN1VVRkZaQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEYmtRc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVU3WVVGRE4wTXNUVUZCVFN4RlFVRkZPMkZCUTFJc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF6dGhRVU5vUWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU53UWl4TlFVRk5MRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzFsQlEyUXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYzBKQlFYTkNMREpDUVVFeVFpeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3d3UWtGQk1FSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVGRExGbEJRVmtzUTBGRGFra3NRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkRSQ3hQUVVGUExGRkJRVkVzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVTnlRaXhMUVVFMlFpeEZRVU0zUWl4SFFVRkhMRWxCUVZjN1VVRkZaQ3hQUVVGUExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSVHRoUVVNNVFpeE5RVUZOTEVWQlFVVTdZVUZEVWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yRkJRM1pETEU5QlFVOHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRM1JDTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc05rSkJRVFpDTEVOQlEycERMRTlCUVdsRExFVkJRMnBETEVkQlFVY3NTVUZCVnp0UlFVVmtMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4RFFVRkRPMUZCUTNwQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVU42UXp0WlFVTkZMRWRCUVVjc1QwRkJUenRaUVVOV0xFOUJRVThzUlVGQlJTeEpRVUZKTzFOQlEyUXNSVUZEUkN4SFFVRkhMRWxCUVVrc1EwRkRVaXhEUVVGRE8xRkJRMFlzVFVGQlRTeFhRVUZYTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRlRVVzU1VGQlNTeFhRVUZYTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNN1dVRkJSU3hQUVVGUExFVkJRVVVzUTBGQlF6dFJRVVY0UXl4TlFVRk5MRk5CUVZNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZqTEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlEyNUZMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRV01zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVTnVReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFTkJRM1JETEVOQlEwWXNRMEZCUXp0UlFVVkdMRTFCUVUwc1dVRkJXU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFFWXNUMEZCVHl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpWRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTTdXVUZEZWtNc1QwRkJUeXhSUVVGUkxFTkJRVU03VVVGRGJFSXNRMEZCUXl4RlFVRkZMRVZCUVhsQ0xFTkJRVU1zUTBGQlF6dEpRVU5vUXl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4RFFVTjJRaXhIUVVGWExFVkJRMWdzVDBGQmFVTXNSVUZEYWtNc1IwRkJSeXhKUVVGWE8xRkJSV1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc05rSkJRVFpDTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE5VVXNUMEZCVHl3d1FrRkJNRUlzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRia1FzUTBGQlF6dEpRVVZFTEZOQlFWTXNRMEZCUXl4SFFVRlhPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hEUVVGRE8xRkJRM3BDTEUxQlFVMHNZVUZCWVN4SFFVRkhMRzlDUVVGdlFpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJoRUxFOUJRVThzTUVKQlFUQkNMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVTjRSU3hEUVVGRE8wbEJSVVFzUzBGQlN5eERRVUZETEcxQ1FVRnRRanRSUVVOMlFpeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzUTBGQlF6dFJRVU42UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMGxCUTJwRUxFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFTkJRM1pDTEZWQlFXdERMRVZCUVVVc1JVRkRjRU1zUjBGQlJ5eEpRVUZYTzFGQlJXUXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtJc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVOMFF5eEhRVUZITEU5QlFVODdXVUZEVml4TlFVRk5MRVZCUVVVc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeHpRa0ZCYzBJN1UwRkRha1FzUTBGQlF5eERRVUZETzFGQlEwZ3NUVUZCVFN4UFFVRlBMRWRCUVd0Q0xFVkJRVVVzUTBGQlF6dFJRVU5zUXl4TFFVRkxMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVOV0xFdEJRVXNzU1VGQlNTeFBRVUZQTEV0QlFVc3NTMEZCU3l4UlFVRlJMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXp0blFrRkRla1FzUTBGQlF5eERRVUZGTEV0QlFUSkNPMmRDUVVNNVFpeERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZEYkVNc1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeGxRVUZsTEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUVVVc1IwRkJSeXhOUVVGTkxFTkJRVU03V1VGRE0wUXNUVUZCVFN4aFFVRmhMRWRCUVVjc2IwSkJRVzlDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRhRVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVOdVF5eExRVUZMTEVWQlEwd3NZVUZCWVN4RlFVTmlMRWRCUVVjc1NVRkJTU3hEUVVOU0xFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJRM3BDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRkZCUVZFN1owSkJRM0JDTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJUdHZRa0ZEZEVJc1QwRkJUeXhGUVVGRkxHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJRenR2UWtGRGNFTXNWMEZCVnl4RlFVRkZMRlZCUVZVc1EwRkJReXhYUVVGWExFbEJRVWtzVVVGQlVTeERRVUZETEZkQlFWYzdiMEpCUXpORUxFdEJRVXNzUlVGQlJTeFZRVUZWTEVOQlFVTXNTMEZCU3l4SlFVRkpMRkZCUVZFc1EwRkJReXhMUVVGTE8yOUNRVU42UXl4UlFVRlJMRVZCUVVVc1ZVRkJWU3hEUVVGRExGRkJRVkVzU1VGQlNTeFJRVUZSTEVOQlFVTXNVVUZCVVR0dlFrRkRiRVFzVFVGQlRTeEZRVUZGTzNkQ1FVTk9MRWRCUVVjc1ZVRkJWVHQzUWtGRFlpeFBRVUZQTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETzNGQ1FVTnlRenRwUWtGRFJpeERRVUZETzJkQ1FVTktMRU5CUVVNc1EwRkJReXhKUVVGSkxGZEJRVmNzUTBGQlF6dHZRa0ZEWkN4SFFVRkhMRVZCUVVVc1lVRkJZVHR2UWtGRGJFSXNUMEZCVHl4RlFVRkZMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXp0dlFrRkRjRU1zVjBGQlZ5eEZRVUZGTEZWQlFWVXNRMEZCUXl4WFFVRlhPMjlDUVVOdVF5eExRVUZMTEVWQlFVVXNWVUZCVlN4RFFVRkRMRXRCUVVzN2IwSkJRM1pDTEZGQlFWRXNSVUZCUlN4VlFVRlZMRU5CUVVNc1VVRkJVVHR2UWtGRE4wSXNUVUZCVFN4RlFVRkZPM2RDUVVOT0xFZEJRVWNzVlVGQlZUdDNRa0ZEWWl4UFFVRlBMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRPM0ZDUVVOeVF6dHBRa0ZEUml4RFFVRkRMRU5CUVVNN1dVRkRVQ3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnFSeXhEUVVGRE8xRkJRMFFzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZEY0VRN1dVRkRSU3hIUVVGSExFOUJRVTg3V1VGRFZpeE5RVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3h6UWtGQmMwSTdVMEZEYWtRc1JVRkRSQ3hIUVVGSExFbEJRVWtzUTBGRFVpeERRVUZETzFGQlEwWXNUMEZCVHl4UFFVRlBMRU5CUVVNN1NVRkRha0lzUTBGQlF6dERRVU5HTEVOQlFVRTdRVUYwVlZjN1NVRkVWQ3hWUVVGVkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN096UkVRVU4xUWp0QlFVb3hReXhyUWtGQmEwSTdTVUZFT1VJc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF6czdSMEZEVWl4clFrRkJhMElzUTBFd1ZUbENJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRjYmlBZ1EyOXVaR2wwYVc5dUxGeHVJQ0JOYjJSbGJGTmxjblpwWTJVc1hHNGdJRkpsY0c5emFYUnZjbmtzWEc0Z0lISmxjRzl6YVhSdmNua3NYRzRnSUhObGNuWnBZMlVzWEc1OUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUhSNWNHVWdleUJTWlhCdklIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2V5Qk9iM1JHYjNWdVpFVnljbTl5SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1lpMWtaV052Y21GMGIzSnpYQ0k3WEc1cGJYQnZjblFnZXlCR1pXRjBkWEpsUm14aFowVnVkbWx5YjI1dFpXNTBJSDBnWm5KdmJTQmNJaTR1TDJWdWRtbHliMjV0Wlc1MFhDSTdYRzVwYlhCdmNuUWdleUJHWldGMGRYSmxSbXhoWjBGalkyVnpjeUI5SUdaeWIyMGdYQ0l1TGk5dGIyUmxiSE12Um1WaGRIVnlaVVpzWVdkQlkyTmxjM011Ylc5a1pXeGNJanRjYm1sdGNHOXlkQ0I3SUVabFlYUjFjbVZHYkdGbklIMGdabkp2YlNCY0lpNHVMMjF2WkdWc2N5OUdaV0YwZFhKbFJteGhaeTV0YjJSbGJGd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1JXNTJhWEp2Ym0xbFJteGhaMUpsWVdSbGNpeGNiaUFnUm1WaGRIVnlaVVpzWVdkU1pXRmtaWElzWEc0Z0lFWmxZWFIxY21WR2JHRm5VbVZoWkdWeVRHbHJaU3hjYm4wZ1puSnZiU0JjSWk0dUwzSmxZV1JsY25OY0lqdGNibWx0Y0c5eWRDQjBlWEJsSUh0Y2JpQWdSbVZoZEhWeVpVWnNZV2RCWTJObGMzTkpibkIxZEN4Y2JpQWdSbVZoZEhWeVpVWnNZV2RCWTJObGMzTlJkV1Z5ZVN4Y2JpQWdSbVZoZEhWeVpVWnNZV2RCWTJObGMzTlRkV0pxWldOMExGeHVJQ0JHWldGMGRYSmxSbXhoWjBOdmJtWnBaeXhjYmlBZ1JtVmhkSFZ5WlVac1lXZFNaV0ZrWlhKRGIyNW1hV2NzWEc0Z0lFWmxZWFIxY21WR2JHRm5VbVZoWkdWeVNXNXdkWFFzWEc0Z0lFWmxZWFIxY21WR2JHRm5VbVZuYVhOMGNua3NYRzU5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUh0Y2JpQWdhWE5HWldGMGRYSmxSbXhoWjBWdVlXSnNaV1FzWEc0Z0lHbHpSbVZoZEhWeVpVWnNZV2RGYm1GaWJHVmtRbmxPWVcxbExGeHVJQ0J1YjNKdFlXeHBlbVZHWldGMGRYSmxUbUZ0WlN4Y2JuMGdabkp2YlNCY0lpNHVMM1YwYVd4elhDSTdYRzVwYlhCdmNuUWdleUJ1YjNKdFlXeHBlbVZHWldGMGRYSmxVM1ZpYW1WamRFdGxlU3dnYm05eWJXRnNhWHBsUm1WaGRIVnlaVk4xWW1wbFkzUlVlWEJsSUgwZ1puSnZiU0JjSWk0dUwzVjBhV3h6WENJN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdSbVZoZEhWeVpVWnNZV2RUWlhKMmFXTmxRMjl1Wm1sbklHVjRkR1Z1WkhNZ1JtVmhkSFZ5WlVac1lXZFNaV0ZrWlhKRGIyNW1hV2NnZTF4dUlDQnlaV0ZrWlhJL09pQkdaV0YwZFhKbFJteGhaMUpsWVdSbGNreHBhMlU3WEc0Z0lISmxjRzl6YVhSdmNuay9PaUJTWlhCdmMybDBiM0o1UEVabFlYUjFjbVZHYkdGbkxDQmhibmsrTzF4dWZWeHVYRzVBYzJWeWRtbGpaU2hHWldGMGRYSmxSbXhoWnlsY2JtVjRjRzl5ZENCamJHRnpjeUJHWldGMGRYSmxSbXhoWjFObGNuWnBZMlVnWlhoMFpXNWtjeUJOYjJSbGJGTmxjblpwWTJVOFJtVmhkSFZ5WlVac1lXYytJSHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtaWEk2SUVabFlYUjFjbVZHYkdGblVtVmhaR1Z5SUQwZ2JtVjNJRVZ1ZG1seWIyNXRaVVpzWVdkU1pXRmtaWElvS1R0Y2JpQWdjSEpwZG1GMFpTQmpZV05vWldSU1pXZHBjM1J5ZVRvZ1JtVmhkSFZ5WlVac1lXZFNaV2RwYzNSeWVTQTlJSHQ5TzF4dUlDQkFjbVZ3YjNOcGRHOXllU2hHWldGMGRYSmxSbXhoWjBGalkyVnpjeWxjYmlBZ2NISnZkR1ZqZEdWa0lHRmpZMlZ6YzFKbGNHOXphWFJ2Y25raE9pQlNaWEJ2UEVabFlYUjFjbVZHYkdGblFXTmpaWE56UGp0Y2JseHVJQ0JqYjI1emRISjFZM1J2Y2lncElIdGNiaUFnSUNCemRYQmxjaWhHWldGMGRYSmxSbXhoWnlrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCcGJtbDBhV0ZzYVhwbEtGeHVJQ0FnSUM0dUxtRnlaM002SUdGdWVWdGRYRzRnSUNrNklGQnliMjFwYzJVOGV5QmpiMjVtYVdjNklFWmxZWFIxY21WR2JHRm5VMlZ5ZG1salpVTnZibVpwWnpzZ1kyeHBaVzUwT2lCR1pXRjBkWEpsUm14aFoxSmxZV1JsY2lCOVBpQjdYRzRnSUNBZ1kyOXVjM1FnWTI5dVptbG5JRDBnS0dGeVozTmJNRjBnWVhNZ1JtVmhkSFZ5WlVac1lXZFRaWEoyYVdObFEyOXVabWxuSUh3Z2RXNWtaV1pwYm1Wa0tTQS9QeUI3ZlR0Y2JpQWdJQ0JwWmlBb1kyOXVabWxuTG5KbGNHOXphWFJ2Y25rcElIdGNiaUFnSUNBZ0lIUm9hWE11WDNKbGNHOXphWFJ2Y25rZ1BTQmpiMjVtYVdjdWNtVndiM05wZEc5eWVTQmhjeUJoYm5rN1hHNGdJQ0FnZlZ4dUlDQWdJSFJvYVhNdWNtVmhaR1Z5SUQwZ0lXTnZibVpwWnk1eVpXRmtaWEpjYmlBZ0lDQWdJRDhnYm1WM0lFVnVkbWx5YjI1dFpVWnNZV2RTWldGa1pYSW9LVnh1SUNBZ0lDQWdPaUIwZVhCbGIyWWdZMjl1Wm1sbkxuSmxZV1JsY2lBOVBUMGdYQ0ptZFc1amRHbHZibHdpWEc0Z0lDQWdJQ0FnSUQ4Z2JtVjNJR052Ym1acFp5NXlaV0ZrWlhJb0tWeHVJQ0FnSUNBZ0lDQTZJR052Ym1acFp5NXlaV0ZrWlhJN1hHNGdJQ0FnWTI5dWMzUWdjbVZoWkdWeVEyOXVabWxuSUQwZ2UxeHVJQ0FnSUNBZ0xpNHVLR052Ym1acFp5NXlaV0ZrWlhKRGIyNW1hV2NnUHo4Z2UzMHBMRnh1SUNBZ0lDQWdjMjkxY21ObE9pQmpiMjVtYVdjdWNtVmhaR1Z5UTI5dVptbG5QeTV6YjNWeVkyVWdQejhnUm1WaGRIVnlaVVpzWVdkRmJuWnBjbTl1YldWdWRDeGNiaUFnSUNCOU8xeHVJQ0FnSUhSb2FYTXVZMkZqYUdWa1VtVm5hWE4wY25rZ1BTQmhkMkZwZENCMGFHbHpMbkpsWm5KbGMyaERZV05vWldSU1pXZHBjM1J5ZVNoeVpXRmtaWEpEYjI1bWFXY3NJQzR1TG1GeVozTXBPMXh1SUNBZ0lHTnZibk4wSUdWbVptVmpkR2wyWlVOdmJtWnBaem9nUm1WaGRIVnlaVVpzWVdkVFpYSjJhV05sUTI5dVptbG5JRDBnZTF4dUlDQWdJQ0FnTGk0dVkyOXVabWxuTEZ4dUlDQWdJQ0FnY21WaFpHVnlPaUIwYUdsekxuSmxZV1JsY2l4Y2JpQWdJQ0FnSUhKbFlXUmxja052Ym1acFp5eGNiaUFnSUNCOU8xeHVJQ0FnSUhKbGRIVnliaUI3SUdOdmJtWnBaem9nWldabVpXTjBhWFpsUTI5dVptbG5MQ0JqYkdsbGJuUTZJSFJvYVhNdWNtVmhaR1Z5SUgwN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHTnNiMjVsVW1WbmFYTjBjbmtvY21WbmFYTjBjbms2SUVabFlYUjFjbVZHYkdGblVtVm5hWE4wY25rcE9pQkdaV0YwZFhKbFJteGhaMUpsWjJsemRISjVJSHRjYmlBZ0lDQnlaWFIxY200Z1QySnFaV04wTG1WdWRISnBaWE1vY21WbmFYTjBjbmtwTG5KbFpIVmpaU2dvWVdOakxDQmJhMlY1TENCMllXeDFaVjBwSUQwK0lIdGNiaUFnSUNBZ0lHRmpZMXRyWlhsZElEMWNiaUFnSUNBZ0lDQWdkbUZzZFdVZ0ppWWdkSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUNGQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtWeHVJQ0FnSUNBZ0lDQWdJRDhnS0hzZ0xpNHVLSFpoYkhWbElHRnpJRVpsWVhSMWNtVkdiR0ZuUTI5dVptbG5LU0I5SUdGeklFWmxZWFIxY21WR2JHRm5RMjl1Wm1sbktWeHVJQ0FnSUNBZ0lDQWdJRG9nZG1Gc2RXVTdYRzRnSUNBZ0lDQnlaWFIxY200Z1lXTmpPMXh1SUNBZ0lIMHNJSHQ5SUdGeklFWmxZWFIxY21WR2JHRm5VbVZuYVhOMGNua3BPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JoYzNsdVl5QnlaV1p5WlhOb1EyRmphR1ZrVW1WbmFYTjBjbmtvWEc0Z0lDQWdiM0IwYVc5dWN6b2dSbVZoZEhWeVpVWnNZV2RTWldGa1pYSkpibkIxZENBOUlIdDlMRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThSbVZoZEhWeVpVWnNZV2RTWldkcGMzUnllVDRnZTF4dUlDQWdJR052Ym5OMElHVnVkbEpsWjJsemRISjVJRDBnWVhkaGFYUWdkR2hwY3k1eVpXRmtaWEl1Y21WaFpDaDdYRzRnSUNBZ0lDQXVMaTV2Y0hScGIyNXpMRnh1SUNBZ0lDQWdjMjkxY21ObE9pQnZjSFJwYjI1ekxuTnZkWEpqWlNBL1B5QkdaV0YwZFhKbFJteGhaMFZ1ZG1seWIyNXRaVzUwTEZ4dUlDQWdJSDBwTzF4dUlDQWdJR3hsZENCd1pYSnphWE4wWldRNklFWmxZWFIxY21WR2JHRm5XMTBnUFNCYlhUdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdjR1Z5YzJsemRHVmtJRDBnWVhkaGFYUWdkR2hwY3k1eVpYQnZMbk5sYkdWamRDZ3BMbVY0WldOMWRHVW9MaTR1WVhKbmN5azdYRzRnSUNBZ2ZTQmpZWFJqYUNCN1hHNGdJQ0FnSUNCd1pYSnphWE4wWldRZ1BTQmJYVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCeVpXZHBjM1J5ZVNBOUlIUm9hWE11WTJ4dmJtVlNaV2RwYzNSeWVTaGxiblpTWldkcGMzUnllU2s3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JtYkdGbklHOW1JSEJsY25OcGMzUmxaQ2tnZTF4dUlDQWdJQ0FnY21WbmFYTjBjbmxiWm14aFp5NXJaWGxkSUQwZ1pteGhaeTVsYm1GaWJHVmtJRDhnS0dac1lXY3VZMjl1Wm1sbklEOC9JSFJ5ZFdVcElEb2dabUZzYzJVN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaV2RwYzNSeWVUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdjMlYwUTJGamFHVmtSbXhoWnlobWJHRm5PaUJHWldGMGRYSmxSbXhoWnlrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdVkyRmphR1ZrVW1WbmFYTjBjbmxiWm14aFp5NXJaWGxkSUQwZ1pteGhaeTVsYm1GaWJHVmtYRzRnSUNBZ0lDQS9JQ2htYkdGbkxtTnZibVpwWnlBL1B5QjBjblZsS1Z4dUlDQWdJQ0FnT2lCbVlXeHpaVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWjJWMFFXTmpaWE56VW1Wd2IzTnBkRzl5ZVNncE9pQlNaWEJ2UEVabFlYUjFjbVZHYkdGblFXTmpaWE56UGlCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXTmpaWE56VW1Wd2IzTnBkRzl5ZVNBL1B5QlNaWEJ2YzJsMGIzSjVMbVp2Y2sxdlpHVnNLRVpsWVhSMWNtVkdiR0ZuUVdOalpYTnpLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhOelpYSjBTVzVwZEdsaGJHbDZaV1FvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkbTlwWkNCMGFHbHpMbkpsWVdSbGNqdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdibTl5YldGc2FYcGxSbVZoZEhWeVpVRmpZMlZ6YzBsdWNIVjBLRnh1SUNBZ0lHbHVjSFYwT2lCR1pXRjBkWEpsUm14aFowRmpZMlZ6YzBsdWNIVjBYRzRnSUNrNklFWmxZWFIxY21WR2JHRm5RV05qWlhOelNXNXdkWFFnZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQXVMaTVwYm5CMWRDeGNiaUFnSUNBZ0lHWmxZWFIxY21WTFpYazZJRzV2Y20xaGJHbDZaVVpsWVhSMWNtVk9ZVzFsS0dsdWNIVjBMbVpsWVhSMWNtVkxaWGtwTEZ4dUlDQWdJQ0FnYzNWaWFtVmpkRlI1Y0dVNklHNXZjbTFoYkdsNlpVWmxZWFIxY21WVGRXSnFaV04wVkhsd1pTaHBibkIxZEM1emRXSnFaV04wVkhsd1pTa3NYRzRnSUNBZ0lDQnpkV0pxWldOMFMyVjVPaUJ1YjNKdFlXeHBlbVZHWldGMGRYSmxVM1ZpYW1WamRFdGxlU2hwYm5CMWRDNXpkV0pxWldOMFMyVjVLU3hjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JpZFdsc1pFRmpZMlZ6YzBOdmJtUnBkR2x2YmloY2JpQWdJQ0J4ZFdWeWVUb2dSbVZoZEhWeVpVWnNZV2RCWTJObGMzTlJkV1Z5ZVZ4dUlDQXBPaUJEYjI1a2FYUnBiMjQ4Um1WaGRIVnlaVVpzWVdkQlkyTmxjM00rSUh0Y2JpQWdJQ0JzWlhRZ1kyOXVaR2wwYVc5dUlEMGdRMjl1WkdsMGFXOXVMbUYwZEhJOFJtVmhkSFZ5WlVac1lXZEJZMk5sYzNNK0tGd2ljM1ZpYW1WamRGUjVjR1ZjSWlrdVpYRW9YRzRnSUNBZ0lDQnViM0p0WVd4cGVtVkdaV0YwZFhKbFUzVmlhbVZqZEZSNWNHVW9jWFZsY25rdWMzVmlhbVZqZEZSNWNHVXBYRzRnSUNBZ0tUdGNiaUFnSUNCamIyNWthWFJwYjI0Z1BTQmpiMjVrYVhScGIyNHVZVzVrS0Z4dUlDQWdJQ0FnUTI5dVpHbDBhVzl1TG1GMGRISThSbVZoZEhWeVpVWnNZV2RCWTJObGMzTStLRndpYzNWaWFtVmpkRXRsZVZ3aUtTNWxjU2hjYmlBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsUm1WaGRIVnlaVk4xWW1wbFkzUkxaWGtvY1hWbGNua3VjM1ZpYW1WamRFdGxlU2xjYmlBZ0lDQWdJQ2xjYmlBZ0lDQXBPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdjWFZsY25rdVpXNWhZbXhsWkNBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlrZ2UxeHVJQ0FnSUNBZ1kyOXVaR2wwYVc5dUlEMGdZMjl1WkdsMGFXOXVMbUZ1WkNoY2JpQWdJQ0FnSUNBZ1EyOXVaR2wwYVc5dUxtRjBkSEk4Um1WaGRIVnlaVVpzWVdkQlkyTmxjM00rS0Z3aVpXNWhZbXhsWkZ3aUtTNWxjU2h4ZFdWeWVTNWxibUZpYkdWa0tWeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIRjFaWEo1TG1abFlYUjFjbVZMWlhseklDWW1JSEYxWlhKNUxtWmxZWFIxY21WTFpYbHpMbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0FnSUdOdmJtUnBkR2x2YmlBOUlHTnZibVJwZEdsdmJpNWhibVFvWEc0Z0lDQWdJQ0FnSUVOdmJtUnBkR2x2Ymk1aGRIUnlQRVpsWVhSMWNtVkdiR0ZuUVdOalpYTnpQaWhjSW1abFlYUjFjbVZMWlhsY0lpa3VhVzRvWEc0Z0lDQWdJQ0FnSUNBZ2NYVmxjbmt1Wm1WaGRIVnlaVXRsZVhNdWJXRndLRzV2Y20xaGJHbDZaVVpsWVhSMWNtVk9ZVzFsS1Z4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl1WkdsMGFXOXVPMXh1SUNCOVhHNWNiaUFnYjNabGNuSnBaR1VnWVhONWJtTWdZM0psWVhSbEtGeHVJQ0FnSUcxdlpHVnNPaUJHWldGMGRYSmxSbXhoWnl4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJoYm5sYlhWeHVJQ0FwT2lCUWNtOXRhWE5sUEVabFlYUjFjbVZHYkdGblBpQjdYRzRnSUNBZ2JXOWtaV3d1YTJWNUlEMGdibTl5YldGc2FYcGxSbVZoZEhWeVpVNWhiV1VvYlc5a1pXd3VhMlY1S1R0Y2JpQWdJQ0J0YjJSbGJDNWxibUZpYkdWa0lEOC9QU0IwY25WbE8xeHVJQ0FnSUdOdmJuTjBJR055WldGMFpXUWdQU0JoZDJGcGRDQnpkWEJsY2k1amNtVmhkR1VvYlc5a1pXd3NJQzR1TG1GeVozTXBPMXh1SUNBZ0lIUm9hWE11YzJWMFEyRmphR1ZrUm14aFp5aGpjbVZoZEdWa0tUdGNiaUFnSUNCeVpYUjFjbTRnWTNKbFlYUmxaRHRjYmlBZ2ZWeHVYRzRnSUc5MlpYSnlhV1JsSUdGemVXNWpJSFZ3WkdGMFpTaGNiaUFnSUNCdGIyUmxiRG9nUm1WaGRIVnlaVVpzWVdjc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4R1pXRjBkWEpsUm14aFp6NGdlMXh1SUNBZ0lHMXZaR1ZzTG10bGVTQTlJRzV2Y20xaGJHbDZaVVpsWVhSMWNtVk9ZVzFsS0cxdlpHVnNMbXRsZVNrN1hHNGdJQ0FnYlc5a1pXd3VaVzVoWW14bFpDQS9QejBnZEhKMVpUdGNiaUFnSUNCamIyNXpkQ0IxY0dSaGRHVmtJRDBnWVhkaGFYUWdjM1Z3WlhJdWRYQmtZWFJsS0cxdlpHVnNMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQjBhR2x6TG5ObGRFTmhZMmhsWkVac1lXY29kWEJrWVhSbFpDazdYRzRnSUNBZ2NtVjBkWEp1SUhWd1pHRjBaV1E3WEc0Z0lIMWNibHh1SUNCdmRtVnljbWxrWlNCaGMzbHVZeUJtYVc1a1QyNWxRbmtvWEc0Z0lDQWdhMlY1T2lCclpYbHZaaUJHWldGMGRYSmxSbXhoWnl4Y2JpQWdJQ0IyWVd4MVpUb2dZVzU1TEZ4dUlDQWdJQzR1TG1GeVozTTZJR0Z1ZVZ0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4Um1WaGRIVnlaVVpzWVdjK0lIdGNiaUFnSUNCamIyNXpkQ0J1YjNKdFlXeHBlbVZrVm1Gc2RXVWdQVnh1SUNBZ0lDQWdhMlY1SUQwOVBTQmNJbXRsZVZ3aUlDWW1JSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0p6ZEhKcGJtZGNJbHh1SUNBZ0lDQWdJQ0EvSUc1dmNtMWhiR2w2WlVabFlYUjFjbVZPWVcxbEtIWmhiSFZsS1Z4dUlDQWdJQ0FnSUNBNklIWmhiSFZsTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5KbGNHOHVabWx1WkU5dVpVSjVLR3RsZVN3Z2JtOXliV0ZzYVhwbFpGWmhiSFZsTENBdUxpNWhjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lHOTJaWEp5YVdSbElHRnplVzVqSUhKbFlXUkJiR3dvWEc0Z0lDQWdhMlY1Y3pvZ1lXNTVXMTBzWEc0Z0lDQWdMaTR1WVhKbmN6b2dZVzU1VzExY2JpQWdLVG9nVUhKdmJXbHpaVHhHWldGMGRYSmxSbXhoWjF0ZFBpQjdYRzRnSUNBZ1kyOXVjM1FnY21WemRXeDBJRDBnWVhkaGFYUWdkR2hwY3k1eVpYQnZMbkpsWVdSQmJHd29hMlY1Y3l3Z0xpNHVZWEpuY3lrN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbWJHRm5JRzltSUhKbGMzVnNkQ2tnZEdocGN5NXpaWFJEWVdOb1pXUkdiR0ZuS0dac1lXY3BPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJzYVhOMFJXNWhZbXhsWkNndUxpNWhjbWR6T2lCaGJubGJYU2s2SUZCeWIyMXBjMlU4Um1WaGRIVnlaVVpzWVdkYlhUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbkpsY0c5Y2JpQWdJQ0FnSUM1elpXeGxZM1FvS1Z4dUlDQWdJQ0FnTG5kb1pYSmxLRU52Ym1ScGRHbHZiaTVoZEhSeVBFWmxZWFIxY21WR2JHRm5QaWhjSW1WdVlXSnNaV1JjSWlrdVpYRW9kSEoxWlNrcFhHNGdJQ0FnSUNBdVpYaGxZM1YwWlNndUxpNWhjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdkeVlXNTBSbVZoZEhWeVpVRmpZMlZ6Y3loY2JpQWdJQ0JwYm5CMWREb2dSbVZoZEhWeVpVWnNZV2RCWTJObGMzTkpibkIxZEN4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJoYm5sYlhWeHVJQ0FwT2lCUWNtOXRhWE5sUEVabFlYUjFjbVZHYkdGblFXTmpaWE56UGlCN1hHNGdJQ0FnWTI5dWMzUWdibTl5YldGc2FYcGxaQ0E5SUhSb2FYTXVibTl5YldGc2FYcGxSbVZoZEhWeVpVRmpZMlZ6YzBsdWNIVjBLR2x1Y0hWMEtUdGNiaUFnSUNCamIyNXpkQ0JsZUdsemRHbHVaeUE5SUdGM1lXbDBJSFJvYVhNdVptbHVaRVpsWVhSMWNtVkJZMk5sYzNNb2JtOXliV0ZzYVhwbFpDd2dMaTR1WVhKbmN5a3VZMkYwWTJnb1hHNGdJQ0FnSUNBb0tTQTlQaUIxYm1SbFptbHVaV1JjYmlBZ0lDQXBPMXh1SUNBZ0lHbG1JQ2doWlhocGMzUnBibWNwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtZGxkRUZqWTJWemMxSmxjRzl6YVhSdmNua29LUzVqY21WaGRHVW9YRzRnSUNBZ0lDQWdJRzVsZHlCR1pXRjBkWEpsUm14aFowRmpZMlZ6Y3lodWIzSnRZV3hwZW1Wa0tTeGNiaUFnSUNBZ0lDQWdMaTR1WVhKbmMxeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVoyVjBRV05qWlhOelVtVndiM05wZEc5eWVTZ3BMblZ3WkdGMFpTaGNiaUFnSUNBZ0lFOWlhbVZqZEM1aGMzTnBaMjRvWlhocGMzUnBibWNzSUc1dmNtMWhiR2w2WldRcExGeHVJQ0FnSUNBZ0xpNHVZWEpuYzF4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJ5WlhadmEyVkdaV0YwZFhKbFFXTmpaWE56S0Z4dUlDQWdJR2x1Y0hWME9pQkdaV0YwZFhKbFJteGhaMEZqWTJWemMxTjFZbXBsWTNRZ0ppQjdJR1psWVhSMWNtVkxaWGs2SUhOMGNtbHVaeUI5TEZ4dUlDQWdJQzR1TG1GeVozTTZJR0Z1ZVZ0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4Um1WaGRIVnlaVVpzWVdkQlkyTmxjM01nZkNCMWJtUmxabWx1WldRK0lIdGNiaUFnSUNCamIyNXpkQ0JsZUdsemRHbHVaeUE5SUdGM1lXbDBJSFJvYVhNdVptbHVaRVpsWVhSMWNtVkJZMk5sYzNNb2FXNXdkWFFzSUM0dUxtRnlaM01wTG1OaGRHTm9LRnh1SUNBZ0lDQWdLQ2tnUFQ0Z2RXNWtaV1pwYm1Wa1hHNGdJQ0FnS1R0Y2JpQWdJQ0JwWmlBb0lXVjRhWE4wYVc1bktTQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtZGxkRUZqWTJWemMxSmxjRzl6YVhSdmNua29LUzVrWld4bGRHVW9aWGhwYzNScGJtY3VhV1FzSUM0dUxtRnlaM01wTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nWm1sdVpFWmxZWFIxY21WQlkyTmxjM01vWEc0Z0lDQWdjWFZsY25rNklFWmxZWFIxY21WR2JHRm5RV05qWlhOelVYVmxjbmtzWEc0Z0lDQWdMaTR1WVhKbmN6b2dZVzU1VzExY2JpQWdLVG9nVUhKdmJXbHpaVHhHWldGMGRYSmxSbXhoWjBGalkyVnpjejRnZTF4dUlDQWdJR052Ym5OMElHTnZibVJwZEdsdmJpQTlJSFJvYVhNdVluVnBiR1JCWTJObGMzTkRiMjVrYVhScGIyNG9jWFZsY25rcE8xeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2RITWdQU0JoZDJGcGRDQjBhR2x6TG1kbGRFRmpZMlZ6YzFKbGNHOXphWFJ2Y25rb0tWeHVJQ0FnSUNBZ0xuTmxiR1ZqZENncFhHNGdJQ0FnSUNBdWQyaGxjbVVvWTI5dVpHbDBhVzl1S1Z4dUlDQWdJQ0FnTG1WNFpXTjFkR1VvTGk0dVlYSm5jeWs3WEc0Z0lDQWdZMjl1YzNRZ1pYaHBjM1JwYm1jZ1BTQnlaWE4xYkhSeld6QmRPMXh1SUNBZ0lHbG1JQ2doWlhocGMzUnBibWNwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCT2IzUkdiM1Z1WkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnUm1WaGRIVnlaU0JoWTJObGMzTWdabTl5SUNSN2JtOXliV0ZzYVhwbFJtVmhkSFZ5WlZOMVltcGxZM1JVZVhCbEtIRjFaWEo1TG5OMVltcGxZM1JVZVhCbEtYMDZKSHR1YjNKdFlXeHBlbVZHWldGMGRYSmxVM1ZpYW1WamRFdGxlU2h4ZFdWeWVTNXpkV0pxWldOMFMyVjVLWDBnYm05MElHWnZkVzVrWUZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHVjRhWE4wYVc1bk8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2JHbHpkRVpsWVhSMWNtVkJZMk5sYzNNb1hHNGdJQ0FnY1hWbGNuazZJRVpsWVhSMWNtVkdiR0ZuUVdOalpYTnpVWFZsY25rc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4R1pXRjBkWEpsUm14aFowRmpZMlZ6YzF0ZFBpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaMlYwUVdOalpYTnpVbVZ3YjNOcGRHOXllU2dwWEc0Z0lDQWdJQ0F1YzJWc1pXTjBLQ2xjYmlBZ0lDQWdJQzUzYUdWeVpTaDBhR2x6TG1KMWFXeGtRV05qWlhOelEyOXVaR2wwYVc5dUtIRjFaWEo1S1NsY2JpQWdJQ0FnSUM1bGVHVmpkWFJsS0M0dUxtRnlaM01wTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nY21WemIyeDJaVVpsWVhSMWNtVkdiR0ZuYzBadmNsTjFZbXBsWTNRb1hHNGdJQ0FnYzNWaWFtVmpkRG9nUm1WaGRIVnlaVVpzWVdkQlkyTmxjM05UZFdKcVpXTjBMRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThSbVZoZEhWeVpVWnNZV2RTWldkcGMzUnllVDRnZTF4dUlDQWdJSFJvYVhNdVlYTnpaWEowU1c1cGRHbGhiR2w2WldRb0tUdGNiaUFnSUNCamIyNXpkQ0JoWTJObGMzTWdQU0JoZDJGcGRDQjBhR2x6TG14cGMzUkdaV0YwZFhKbFFXTmpaWE56S0Z4dUlDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNBdUxpNXpkV0pxWldOMExGeHVJQ0FnSUNBZ0lDQmxibUZpYkdWa09pQjBjblZsTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUM0dUxtRnlaM05jYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUdabFlYUjFjbVZMWlhseklEMGdXeTR1TG01bGR5QlRaWFFvWVdOalpYTnpMbTFoY0Nnb2FYUmxiU2tnUFQ0Z2FYUmxiUzVtWldGMGRYSmxTMlY1S1NsZE8xeHVJQ0FnSUdsbUlDaG1aV0YwZFhKbFMyVjVjeTVzWlc1bmRHZ2dQVDA5SURBcElISmxkSFZ5YmlCN2ZUdGNibHh1SUNBZ0lHTnZibk4wSUdOdmJtUnBkR2x2YmlBOUlFTnZibVJwZEdsdmJpNWhkSFJ5UEVabFlYUjFjbVZHYkdGblBpaGNJbVZ1WVdKc1pXUmNJaWt1WlhFb2RISjFaU2t1WVc1a0tGeHVJQ0FnSUNBZ1EyOXVaR2wwYVc5dUxtRjBkSEk4Um1WaGRIVnlaVVpzWVdjK0tGd2lhMlY1WENJcExtbHVLRnh1SUNBZ0lDQWdJQ0JtWldGMGRYSmxTMlY1Y3k1dFlYQW9ibTl5YldGc2FYcGxSbVZoZEhWeVpVNWhiV1VwWEc0Z0lDQWdJQ0FwWEc0Z0lDQWdLVHRjYmx4dUlDQWdJR052Ym5OMElHVnVZV0pzWldSR2JHRm5jeUE5SUdGM1lXbDBJSFJvYVhNdWNtVndieTV6Wld4bFkzUW9LUzUzYUdWeVpTaGpiMjVrYVhScGIyNHBMbVY0WldOMWRHVW9MaTR1WVhKbmN5azdYRzRnSUNBZ2NtVjBkWEp1SUdWdVlXSnNaV1JHYkdGbmN5NXlaV1IxWTJVb0tISmxaMmx6ZEhKNUxDQm1iR0ZuS1NBOVBpQjdYRzRnSUNBZ0lDQnlaV2RwYzNSeWVWdG1iR0ZuTG10bGVWMGdQU0JtYkdGbkxtTnZibVpwWnlBL1B5QjBjblZsTzF4dUlDQWdJQ0FnY21WMGRYSnVJSEpsWjJsemRISjVPMXh1SUNBZ0lIMHNJSHQ5SUdGeklFWmxZWFIxY21WR2JHRm5VbVZuYVhOMGNua3BPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdhWE5GYm1GaWJHVmtSbTl5VTNWaWFtVmpkQ2hjYmlBZ0lDQnJaWGs2SUhOMGNtbHVaeXhjYmlBZ0lDQnpkV0pxWldOME9pQkdaV0YwZFhKbFJteGhaMEZqWTJWemMxTjFZbXBsWTNRc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4aWIyOXNaV0Z1UGlCN1hHNGdJQ0FnWTI5dWMzUWdjbVZuYVhOMGNua2dQU0JoZDJGcGRDQjBhR2x6TG5KbGMyOXNkbVZHWldGMGRYSmxSbXhoWjNOR2IzSlRkV0pxWldOMEtITjFZbXBsWTNRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUhKbGRIVnliaUJwYzBabFlYUjFjbVZHYkdGblJXNWhZbXhsWkVKNVRtRnRaU2h5WldkcGMzUnllU3dnYTJWNUtUdGNiaUFnZlZ4dVhHNGdJR2x6Ulc1aFlteGxaQ2hyWlhrNklITjBjbWx1WnlrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUhSb2FYTXVZWE56WlhKMFNXNXBkR2xoYkdsNlpXUW9LVHRjYmlBZ0lDQmpiMjV6ZENCdWIzSnRZV3hwZW1Wa1MyVjVJRDBnYm05eWJXRnNhWHBsUm1WaGRIVnlaVTVoYldVb2EyVjVLVHRjYmlBZ0lDQnlaWFIxY200Z2FYTkdaV0YwZFhKbFJteGhaMFZ1WVdKc1pXUkNlVTVoYldVb2RHaHBjeTVqWVdOb1pXUlNaV2RwYzNSeWVTd2dibTl5YldGc2FYcGxaRXRsZVNrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCeVpYTnZiSFpsUm1WaGRIVnlaVVpzWVdkektDazZJRkJ5YjIxcGMyVThSbVZoZEhWeVpVWnNZV2RTWldkcGMzUnllVDRnZTF4dUlDQWdJSFJvYVhNdVlYTnpaWEowU1c1cGRHbGhiR2w2WldRb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiRzl1WlZKbFoybHpkSEo1S0hSb2FYTXVZMkZqYUdWa1VtVm5hWE4wY25rcE8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2MzbHVZMFp5YjIxRmJuWnBjbTl1YldWdWRDaGNiaUFnSUNCdmNIUnBiMjV6T2lCR1pXRjBkWEpsUm14aFoxSmxZV1JsY2tsdWNIVjBJRDBnZTMwc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4R1pXRjBkWEpsUm14aFoxdGRQaUI3WEc0Z0lDQWdkR2hwY3k1aGMzTmxjblJKYm1sMGFXRnNhWHBsWkNncE8xeHVJQ0FnSUdOdmJuTjBJSEpsWjJsemRISjVJRDBnWVhkaGFYUWdkR2hwY3k1eVpXRmtaWEl1Y21WaFpDaDdYRzRnSUNBZ0lDQXVMaTV2Y0hScGIyNXpMRnh1SUNBZ0lDQWdjMjkxY21ObE9pQnZjSFJwYjI1ekxuTnZkWEpqWlNBL1B5QkdaV0YwZFhKbFJteGhaMFZ1ZG1seWIyNXRaVzUwTEZ4dUlDQWdJSDBwTzF4dUlDQWdJR052Ym5OMElISmxjM1ZzZEhNNklFWmxZWFIxY21WR2JHRm5XMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElGdHJaWGtzSUhaaGJIVmxYU0J2WmlCUFltcGxZM1F1Wlc1MGNtbGxjeWh5WldkcGMzUnllU2twSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR052Ym1acFp5QTlYRzRnSUNBZ0lDQWdJSFpoYkhWbElDWW1JSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0p2WW1wbFkzUmNJaUFtSmlBaFFYSnlZWGt1YVhOQmNuSmhlU2gyWVd4MVpTbGNiaUFnSUNBZ0lDQWdJQ0EvSUNoMllXeDFaU0JoY3lCR1pXRjBkWEpsUm14aFowTnZibVpwWnlsY2JpQWdJQ0FnSUNBZ0lDQTZJSHNnWlc1aFlteGxaRG9nUW05dmJHVmhiaWgyWVd4MVpTa2dmVHRjYmlBZ0lDQWdJR052Ym5OMElIc2daVzVoWW14bFpEb2dYMmxuYm05eVpXUkZibUZpYkdWa0xDQXVMaTV5WlhOMFEyOXVabWxuSUgwZ1BTQmpiMjVtYVdjN1hHNGdJQ0FnSUNCamIyNXpkQ0J1YjNKdFlXeHBlbVZrUzJWNUlEMGdibTl5YldGc2FYcGxSbVZoZEhWeVpVNWhiV1VvYTJWNUtUdGNiaUFnSUNBZ0lHTnZibk4wSUdWNGFYTjBhVzVuSUQwZ1lYZGhhWFFnZEdocGN5NW1hVzVrVDI1bFFua29YRzRnSUNBZ0lDQWdJRndpYTJWNVhDSXNYRzRnSUNBZ0lDQWdJRzV2Y20xaGJHbDZaV1JMWlhrc1hHNGdJQ0FnSUNBZ0lDNHVMbUZ5WjNOY2JpQWdJQ0FnSUNrdVkyRjBZMmdvS0NrZ1BUNGdkVzVrWldacGJtVmtLVHRjYmlBZ0lDQWdJR052Ym5OMElHMXZaR1ZzSUQwZ1pYaHBjM1JwYm1kY2JpQWdJQ0FnSUNBZ1B5QlBZbXBsWTNRdVlYTnphV2R1S0dWNGFYTjBhVzVuTENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsYm1GaWJHVmtPaUJwYzBabFlYUjFjbVZHYkdGblJXNWhZbXhsWkNoMllXeDFaU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaWE5qY21sd2RHbHZiam9nY21WemRFTnZibVpwWnk1a1pYTmpjbWx3ZEdsdmJpQS9QeUJsZUdsemRHbHVaeTVrWlhOamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5qYjNCbE9pQnlaWE4wUTI5dVptbG5Mbk5qYjNCbElEOC9JR1Y0YVhOMGFXNW5Mbk5qYjNCbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYldWMFlXUmhkR0U2SUhKbGMzUkRiMjVtYVdjdWJXVjBZV1JoZEdFZ1B6OGdaWGhwYzNScGJtY3ViV1YwWVdSaGRHRXNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNW1hV2M2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTGk0dWNtVnpkRU52Ym1acFp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1pXNWhZbXhsWkRvZ2FYTkdaV0YwZFhKbFJteGhaMFZ1WVdKc1pXUW9kbUZzZFdVcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lDQWdJQ0E2SUc1bGR5QkdaV0YwZFhKbFJteGhaeWg3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnJaWGs2SUc1dmNtMWhiR2w2WldSTFpYa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJtRmliR1ZrT2lCcGMwWmxZWFIxY21WR2JHRm5SVzVoWW14bFpDaDJZV3gxWlNrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ2NtVnpkRU52Ym1acFp5NWtaWE5qY21sd2RHbHZiaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsT2lCeVpYTjBRMjl1Wm1sbkxuTmpiM0JsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiV1YwWVdSaGRHRTZJSEpsYzNSRGIyNW1hV2N1YldWMFlXUmhkR0VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjVtYVdjNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xpNHVjbVZ6ZEVOdmJtWnBaeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdaVzVoWW14bFpEb2dhWE5HWldGMGRYSmxSbXhoWjBWdVlXSnNaV1FvZG1Gc2RXVXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUhKbGMzVnNkSE11Y0hWemFDaGxlR2x6ZEdsdVp5QS9JR0YzWVdsMElIUm9hWE11ZFhCa1lYUmxLRzF2WkdWc0xDQXVMaTVoY21kektTQTZJR0YzWVdsMElIUm9hWE11WTNKbFlYUmxLRzF2WkdWc0xDQXVMaTVoY21kektTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVZMkZqYUdWa1VtVm5hWE4wY25rZ1BTQmhkMkZwZENCMGFHbHpMbkpsWm5KbGMyaERZV05vWldSU1pXZHBjM1J5ZVNoY2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0xpNHViM0IwYVc5dWN5eGNiaUFnSUNBZ0lDQWdjMjkxY21ObE9pQnZjSFJwYjI1ekxuTnZkWEpqWlNBL1B5QkdaV0YwZFhKbFJteGhaMFZ1ZG1seWIyNXRaVzUwTEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUM0dUxtRnlaM05jYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFJ6TzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmVhdHVyZS1mbGFncy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWdNYXRjaE1vZGUgPSBcImFueVwiIHwgXCJhbGxcIjtcbmV4cG9ydCB0eXBlIEZlYXR1cmVGbGFnQWNjZXNzU3ViamVjdFR5cGUgPVxuICB8IFwidXNlclwiXG4gIHwgXCJhY2NvdW50XCJcbiAgfCBcIm5hbWVzcGFjZVwiXG4gIHwgXCJtb2RlbFwiXG4gIHwgXCJyb3V0ZVwiXG4gIHwgXCJ1aVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnUnVsZSB7XG4gIGZlYXR1cmVzOiBzdHJpbmdbXTtcbiAgbWF0Y2g/OiBGZWF0dXJlRmxhZ01hdGNoTW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbmZpZyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgc2NvcGU/OiBzdHJpbmc7XG4gIHRhcmdldHM/OiBzdHJpbmdbXTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWdWYWx1ZSA9IGJvb2xlYW4gfCBGZWF0dXJlRmxhZ0NvbmZpZztcblxuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWdSZWdpc3RyeSA9IFJlY29yZDxzdHJpbmcsIEZlYXR1cmVGbGFnVmFsdWU+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnRW52aXJvbm1lbnRTaGFwZSB7XG4gIGZlYXR1cmVGbGFnPzogRmVhdHVyZUZsYWdSZWdpc3RyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0FjY2Vzc1N1YmplY3Qge1xuICBzdWJqZWN0VHlwZTogRmVhdHVyZUZsYWdBY2Nlc3NTdWJqZWN0VHlwZTtcbiAgc3ViamVjdEtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnQWNjZXNzSW5wdXQgZXh0ZW5kcyBGZWF0dXJlRmxhZ0FjY2Vzc1N1YmplY3Qge1xuICBmZWF0dXJlS2V5OiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnQWNjZXNzUXVlcnkgZXh0ZW5kcyBGZWF0dXJlRmxhZ0FjY2Vzc1N1YmplY3Qge1xuICBmZWF0dXJlS2V5cz86IHN0cmluZ1tdO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ1JlYWRlcklucHV0IHtcbiAgc291cmNlPzogRmVhdHVyZUZsYWdFbnZpcm9ubWVudFNoYXBlIHwgdW5rbm93bjtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ1JlYWRlckNvbmZpZyB7XG4gIHJlYWRlckNvbmZpZz86IEZlYXR1cmVGbGFnUmVhZGVySW5wdXQ7XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLGsvREFBay9EIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZabVZoZEhWeVpTMW1iR0ZuY3k5MGVYQmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUhSNWNHVWdSbVZoZEhWeVpVWnNZV2ROWVhSamFFMXZaR1VnUFNCY0ltRnVlVndpSUh3Z1hDSmhiR3hjSWp0Y2JtVjRjRzl5ZENCMGVYQmxJRVpsWVhSMWNtVkdiR0ZuUVdOalpYTnpVM1ZpYW1WamRGUjVjR1VnUFZ4dUlDQjhJRndpZFhObGNsd2lYRzRnSUh3Z1hDSmhZMk52ZFc1MFhDSmNiaUFnZkNCY0ltNWhiV1Z6Y0dGalpWd2lYRzRnSUh3Z1hDSnRiMlJsYkZ3aVhHNGdJSHdnWENKeWIzVjBaVndpWEc0Z0lId2dYQ0oxYVZ3aU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRVpsWVhSMWNtVkdiR0ZuVW5Wc1pTQjdYRzRnSUdabFlYUjFjbVZ6T2lCemRISnBibWRiWFR0Y2JpQWdiV0YwWTJnL09pQkdaV0YwZFhKbFJteGhaMDFoZEdOb1RXOWtaVHRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkdaV0YwZFhKbFJteGhaME52Ym1acFp5QjdYRzRnSUdWdVlXSnNaV1EvT2lCaWIyOXNaV0Z1TzF4dUlDQmtaWE5qY21sd2RHbHZiajg2SUhOMGNtbHVaenRjYmlBZ2JXVjBZV1JoZEdFL09pQlNaV052Y21ROGMzUnlhVzVuTENCMWJtdHViM2R1UGp0Y2JpQWdjMk52Y0dVL09pQnpkSEpwYm1jN1hHNGdJSFJoY21kbGRITS9PaUJ6ZEhKcGJtZGJYVHRjYmlBZ1cydGxlVG9nYzNSeWFXNW5YVG9nZFc1cmJtOTNianRjYm4xY2JseHVaWGh3YjNKMElIUjVjR1VnUm1WaGRIVnlaVVpzWVdkV1lXeDFaU0E5SUdKdmIyeGxZVzRnZkNCR1pXRjBkWEpsUm14aFowTnZibVpwWnp0Y2JseHVaWGh3YjNKMElIUjVjR1VnUm1WaGRIVnlaVVpzWVdkU1pXZHBjM1J5ZVNBOUlGSmxZMjl5WkR4emRISnBibWNzSUVabFlYUjFjbVZHYkdGblZtRnNkV1UrTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFWmxZWFIxY21WR2JHRm5SVzUyYVhKdmJtMWxiblJUYUdGd1pTQjdYRzRnSUdabFlYUjFjbVZHYkdGblB6b2dSbVZoZEhWeVpVWnNZV2RTWldkcGMzUnllVHRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkdaV0YwZFhKbFJteGhaMEZqWTJWemMxTjFZbXBsWTNRZ2UxeHVJQ0J6ZFdKcVpXTjBWSGx3WlRvZ1JtVmhkSFZ5WlVac1lXZEJZMk5sYzNOVGRXSnFaV04wVkhsd1pUdGNiaUFnYzNWaWFtVmpkRXRsZVRvZ2MzUnlhVzVuTzF4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRVpsWVhSMWNtVkdiR0ZuUVdOalpYTnpTVzV3ZFhRZ1pYaDBaVzVrY3lCR1pXRjBkWEpsUm14aFowRmpZMlZ6YzFOMVltcGxZM1FnZTF4dUlDQm1aV0YwZFhKbFMyVjVPaUJ6ZEhKcGJtYzdYRzRnSUdWdVlXSnNaV1EvT2lCaWIyOXNaV0Z1TzF4dUlDQnRaWFJoWkdGMFlUODZJRkpsWTI5eVpEeHpkSEpwYm1jc0lIVnVhMjV2ZDI0K08xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVabFlYUjFjbVZHYkdGblFXTmpaWE56VVhWbGNua2daWGgwWlc1a2N5QkdaV0YwZFhKbFJteGhaMEZqWTJWemMxTjFZbXBsWTNRZ2UxeHVJQ0JtWldGMGRYSmxTMlY1Y3o4NklITjBjbWx1WjF0ZE8xeHVJQ0JsYm1GaWJHVmtQem9nWW05dmJHVmhianRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkdaV0YwZFhKbFJteGhaMUpsWVdSbGNrbHVjSFYwSUh0Y2JpQWdjMjkxY21ObFB6b2dSbVZoZEhWeVpVWnNZV2RGYm5acGNtOXViV1Z1ZEZOb1lYQmxJSHdnZFc1cmJtOTNianRjYmlBZ1cydGxlVG9nYzNSeWFXNW5YVG9nZFc1cmJtOTNianRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkdaV0YwZFhKbFJteGhaMUpsWVdSbGNrTnZibVpwWnlCN1hHNGdJSEpsWVdSbGNrTnZibVpwWno4NklFWmxZWFIxY21WR2JHRm5VbVZoWkdWeVNXNXdkWFE3WEc1OVhHNGlYWDA9Il19