@decaf-ts/integrations 0.3.6 → 0.3.7

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 (878) hide show
  1. package/dist/integrations.cjs +1649 -2
  2. package/dist/integrations.js +1885 -2
  3. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  4. package/lib/cjs/blob/azure/index.cjs +2 -2
  5. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  6. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  11. package/lib/cjs/blob/core/index.cjs +2 -2
  12. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  13. package/lib/cjs/blob/gcp/index.cjs +2 -2
  14. package/lib/cjs/blob/index.cjs +2 -2
  15. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  16. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  17. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  18. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  19. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  20. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  21. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  22. package/lib/cjs/blob/local/index.cjs +2 -2
  23. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/memory/index.cjs +2 -2
  25. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  26. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  27. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  28. package/lib/cjs/blob/s3/index.cjs +2 -2
  29. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  30. package/lib/cjs/docker/index.cjs +2 -2
  31. package/lib/cjs/graph/constants.cjs +2 -2
  32. package/lib/cjs/graph/decorators.cjs +2 -2
  33. package/lib/cjs/graph/errors/GraphCycleError.cjs +2 -2
  34. package/lib/cjs/graph/errors/GraphExecutionError.cjs +2 -2
  35. package/lib/cjs/graph/errors/GraphInputError.cjs +2 -2
  36. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs +2 -2
  37. package/lib/cjs/graph/errors/GraphPinningError.cjs +2 -2
  38. package/lib/cjs/graph/errors/GraphPortError.cjs +2 -2
  39. package/lib/cjs/graph/errors/GraphStoreError.cjs +2 -2
  40. package/lib/cjs/graph/errors/GraphTopologyError.cjs +2 -2
  41. package/lib/cjs/graph/errors/index.cjs +2 -2
  42. package/lib/cjs/graph/events/GraphExecutionEvent.cjs +2 -2
  43. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs +2 -2
  44. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs +2 -2
  45. package/lib/cjs/graph/events/GraphExecutionObserver.cjs +2 -2
  46. package/lib/cjs/graph/events/index.cjs +2 -2
  47. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +2 -2
  48. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +2 -2
  49. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +2 -2
  50. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs +2 -2
  51. package/lib/cjs/graph/execution/GraphExecutionResult.cjs +2 -2
  52. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs +2 -2
  53. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +2 -2
  54. package/lib/cjs/graph/execution/index.cjs +2 -2
  55. package/lib/cjs/graph/index.cjs +2 -2
  56. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +2 -2
  57. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +2 -2
  58. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +2 -2
  59. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs +2 -2
  60. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs +2 -2
  61. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs +2 -2
  62. package/lib/cjs/graph/loops/index.cjs +2 -2
  63. package/lib/cjs/graph/nodes/agent.cjs +2 -2
  64. package/lib/cjs/graph/nodes/base.cjs +35 -0
  65. package/lib/cjs/graph/nodes/category-styles.cjs +2 -2
  66. package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
  67. package/lib/cjs/graph/nodes/index.cjs +3 -2
  68. package/lib/cjs/graph/nodes/triggers.cjs +2 -2
  69. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +2 -2
  70. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +2 -2
  71. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +2 -2
  72. package/lib/cjs/graph/pinning/GraphPinningService.cjs +2 -2
  73. package/lib/cjs/graph/pinning/index.cjs +2 -2
  74. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +2 -2
  75. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +2 -2
  76. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +2 -2
  77. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +2 -2
  78. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +2 -2
  79. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +2 -2
  80. package/lib/cjs/graph/planning/GraphTopology.cjs +2 -2
  81. package/lib/cjs/graph/planning/index.cjs +2 -2
  82. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +2 -2
  83. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +2 -2
  84. package/lib/cjs/graph/registry/index.cjs +2 -2
  85. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  86. package/lib/cjs/graph/snapshots/index.cjs +2 -2
  87. package/lib/cjs/graph/store/GraphCachedValue.cjs +2 -2
  88. package/lib/cjs/graph/store/GraphValueKey.cjs +2 -2
  89. package/lib/cjs/graph/store/GraphValueStore.cjs +2 -2
  90. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +2 -2
  91. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  92. package/lib/cjs/graph/store/index.cjs +2 -2
  93. package/lib/cjs/graph/types.cjs +2 -2
  94. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +2 -2
  95. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +2 -2
  96. package/lib/cjs/graph/validation/GraphValueValidator.cjs +2 -2
  97. package/lib/cjs/graph/validation/index.cjs +2 -2
  98. package/lib/cjs/index.cjs +6 -5
  99. package/lib/cjs/keycloak/index.cjs +2 -2
  100. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  101. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  102. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  103. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  104. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  105. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  106. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  107. package/lib/cjs/keycloak/services/index.cjs +2 -2
  108. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  109. package/lib/cjs/keycloak/types.cjs +2 -2
  110. package/lib/cjs/kibana/helpers.cjs +2 -2
  111. package/lib/cjs/kibana/index.cjs +2 -2
  112. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  113. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  114. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  115. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  116. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  117. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  118. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  119. package/lib/cjs/kibana/services/index.cjs +2 -2
  120. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  121. package/lib/cjs/kibana/types.cjs +2 -2
  122. package/lib/cjs/namespaces/index.cjs +26 -0
  123. package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
  124. package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
  125. package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
  126. package/lib/cjs/namespaces/models/group.model.cjs +74 -0
  127. package/lib/cjs/namespaces/models/index.cjs +39 -0
  128. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
  129. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
  130. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
  131. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
  132. package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
  133. package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
  134. package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
  135. package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
  136. package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
  137. package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
  138. package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
  139. package/lib/cjs/namespaces/models/role.model.cjs +84 -0
  140. package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
  141. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
  142. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
  143. package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
  144. package/lib/cjs/namespaces/models/user.model.cjs +75 -0
  145. package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
  146. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
  147. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
  148. package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
  149. package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
  150. package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
  151. package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
  152. package/lib/cjs/namespaces/services/group.service.cjs +30 -0
  153. package/lib/cjs/namespaces/services/index.cjs +42 -0
  154. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
  155. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
  156. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
  157. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
  158. package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
  159. package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
  160. package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
  161. package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
  162. package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
  163. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
  164. package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
  165. package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
  166. package/lib/cjs/namespaces/services/role.service.cjs +45 -0
  167. package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
  168. package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
  169. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
  170. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
  171. package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
  172. package/lib/cjs/namespaces/services/user.service.cjs +32 -0
  173. package/lib/cjs/namespaces/types.cjs +67 -0
  174. package/lib/cjs/namespaces/utils.cjs +161 -0
  175. package/lib/cjs/nest/authService.cjs +2 -2
  176. package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
  177. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
  178. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
  179. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
  180. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
  181. package/lib/cjs/nest/graph/index.cjs +28 -0
  182. package/lib/cjs/nest/index.cjs +3 -2
  183. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  184. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  185. package/lib/cjs/nest/logging.cjs +2 -2
  186. package/lib/cjs/nest/types.cjs +2 -2
  187. package/lib/cjs/nest/utils.cjs +2 -2
  188. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  189. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  190. package/lib/cjs/secrets/aws/index.cjs +2 -2
  191. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  192. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  193. package/lib/cjs/secrets/azure/index.cjs +2 -2
  194. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  195. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  196. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  197. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  198. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  199. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  200. package/lib/cjs/secrets/core/index.cjs +2 -2
  201. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  202. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  203. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  204. package/lib/cjs/secrets/index.cjs +2 -2
  205. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  206. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  207. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  208. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  209. package/lib/cjs/secrets/model/index.cjs +2 -2
  210. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  211. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  212. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  213. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  214. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  215. package/lib/cjs/secrets/vault/index.cjs +2 -2
  216. package/lib/cjs/shared/runtime.cjs +2 -2
  217. package/lib/cjs/utils.cjs +2 -2
  218. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  219. package/lib/esm/blob/azure/index.js +1 -1
  220. package/lib/esm/blob/core/BlobErrors.js +1 -1
  221. package/lib/esm/blob/core/BlobKey.js +1 -1
  222. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  223. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  224. package/lib/esm/blob/core/BlobTypes.js +1 -1
  225. package/lib/esm/blob/core/BlobValue.js +1 -1
  226. package/lib/esm/blob/core/index.js +1 -1
  227. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  228. package/lib/esm/blob/gcp/index.js +1 -1
  229. package/lib/esm/blob/index.js +1 -1
  230. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  231. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  232. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  233. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  234. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  235. package/lib/esm/blob/ipfs/index.js +1 -1
  236. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  237. package/lib/esm/blob/local/index.js +1 -1
  238. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  239. package/lib/esm/blob/memory/index.js +1 -1
  240. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  241. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  242. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  243. package/lib/esm/blob/s3/index.js +1 -1
  244. package/lib/esm/docker/DockerComposeService.js +1 -1
  245. package/lib/esm/docker/index.js +1 -1
  246. package/lib/esm/graph/constants.js +1 -1
  247. package/lib/esm/graph/decorators.js +1 -1
  248. package/lib/esm/graph/errors/GraphCycleError.js +1 -1
  249. package/lib/esm/graph/errors/GraphExecutionError.js +1 -1
  250. package/lib/esm/graph/errors/GraphInputError.js +1 -1
  251. package/lib/esm/graph/errors/GraphLoopLimitError.js +1 -1
  252. package/lib/esm/graph/errors/GraphPinningError.js +1 -1
  253. package/lib/esm/graph/errors/GraphPortError.js +1 -1
  254. package/lib/esm/graph/errors/GraphStoreError.js +1 -1
  255. package/lib/esm/graph/errors/GraphTopologyError.js +1 -1
  256. package/lib/esm/graph/errors/index.js +1 -1
  257. package/lib/esm/graph/events/GraphExecutionEvent.js +1 -1
  258. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +1 -1
  259. package/lib/esm/graph/events/GraphExecutionEventFactory.js +1 -1
  260. package/lib/esm/graph/events/GraphExecutionObserver.js +1 -1
  261. package/lib/esm/graph/events/index.js +1 -1
  262. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +1 -1
  263. package/lib/esm/graph/execution/GraphExecutionContext.js +1 -1
  264. package/lib/esm/graph/execution/GraphExecutionEngine.js +1 -1
  265. package/lib/esm/graph/execution/GraphExecutionFrame.js +1 -1
  266. package/lib/esm/graph/execution/GraphExecutionResult.js +1 -1
  267. package/lib/esm/graph/execution/GraphNodeExecutor.js +1 -1
  268. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +1 -1
  269. package/lib/esm/graph/execution/index.js +1 -1
  270. package/lib/esm/graph/index.js +1 -1
  271. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +1 -1
  272. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +1 -1
  273. package/lib/esm/graph/loops/GraphConditionEvaluator.js +1 -1
  274. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +1 -1
  275. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +1 -1
  276. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +1 -1
  277. package/lib/esm/graph/loops/index.js +1 -1
  278. package/lib/esm/graph/nodes/agent.js +1 -1
  279. package/lib/esm/graph/nodes/base.js +30 -0
  280. package/lib/esm/graph/nodes/category-styles.js +1 -1
  281. package/lib/esm/graph/nodes/flow-control.js +31 -3
  282. package/lib/esm/graph/nodes/index.js +2 -1
  283. package/lib/esm/graph/nodes/triggers.js +1 -1
  284. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +1 -1
  285. package/lib/esm/graph/pinning/GraphPinningMetadata.js +1 -1
  286. package/lib/esm/graph/pinning/GraphPinningPolicy.js +1 -1
  287. package/lib/esm/graph/pinning/GraphPinningService.js +1 -1
  288. package/lib/esm/graph/pinning/index.js +1 -1
  289. package/lib/esm/graph/planning/GraphExecutionPlan.js +1 -1
  290. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +1 -1
  291. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +1 -1
  292. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +1 -1
  293. package/lib/esm/graph/planning/GraphExecutionPlanner.js +1 -1
  294. package/lib/esm/graph/planning/GraphRelationResolver.js +1 -1
  295. package/lib/esm/graph/planning/GraphTopology.js +1 -1
  296. package/lib/esm/graph/planning/index.js +1 -1
  297. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +1 -1
  298. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +1 -1
  299. package/lib/esm/graph/registry/index.js +1 -1
  300. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  301. package/lib/esm/graph/snapshots/index.js +1 -1
  302. package/lib/esm/graph/store/GraphCachedValue.js +1 -1
  303. package/lib/esm/graph/store/GraphValueKey.js +1 -1
  304. package/lib/esm/graph/store/GraphValueStore.js +1 -1
  305. package/lib/esm/graph/store/GraphValueStoreAdapter.js +1 -1
  306. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +1 -1
  307. package/lib/esm/graph/store/index.js +1 -1
  308. package/lib/esm/graph/types.js +1 -1
  309. package/lib/esm/graph/validation/GraphDefinitionValidator.js +1 -1
  310. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +1 -1
  311. package/lib/esm/graph/validation/GraphValueValidator.js +1 -1
  312. package/lib/esm/graph/validation/index.js +1 -1
  313. package/lib/esm/index.js +5 -4
  314. package/lib/esm/keycloak/index.js +1 -1
  315. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  316. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  317. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  318. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  319. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  320. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  321. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  322. package/lib/esm/keycloak/services/index.js +1 -1
  323. package/lib/esm/keycloak/services/runtime.js +1 -1
  324. package/lib/esm/keycloak/types.js +1 -1
  325. package/lib/esm/kibana/helpers.js +1 -1
  326. package/lib/esm/kibana/index.js +1 -1
  327. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  328. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  329. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  330. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  331. package/lib/esm/kibana/services/KibanaService.js +1 -1
  332. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  333. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  334. package/lib/esm/kibana/services/index.js +1 -1
  335. package/lib/esm/kibana/services/runtime.js +1 -1
  336. package/lib/esm/kibana/types.js +1 -1
  337. package/lib/esm/namespaces/index.js +9 -0
  338. package/lib/esm/namespaces/models/authorization-model.js +7 -0
  339. package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
  340. package/lib/esm/namespaces/models/group-membership.model.js +57 -0
  341. package/lib/esm/namespaces/models/group.model.js +65 -0
  342. package/lib/esm/namespaces/models/index.js +22 -0
  343. package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
  344. package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
  345. package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
  346. package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
  347. package/lib/esm/namespaces/models/org-unit.model.js +93 -0
  348. package/lib/esm/namespaces/models/permission.model.js +55 -0
  349. package/lib/esm/namespaces/models/principal.model.js +68 -0
  350. package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
  351. package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
  352. package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
  353. package/lib/esm/namespaces/models/role-permission.model.js +46 -0
  354. package/lib/esm/namespaces/models/role.model.js +75 -0
  355. package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
  356. package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
  357. package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
  358. package/lib/esm/namespaces/models/tenant.model.js +79 -0
  359. package/lib/esm/namespaces/models/user.model.js +66 -0
  360. package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
  361. package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
  362. package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
  363. package/lib/esm/namespaces/services/authz.service.js +71 -0
  364. package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
  365. package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
  366. package/lib/esm/namespaces/services/group-membership.service.js +37 -0
  367. package/lib/esm/namespaces/services/group.service.js +25 -0
  368. package/lib/esm/namespaces/services/index.js +25 -0
  369. package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
  370. package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
  371. package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
  372. package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
  373. package/lib/esm/namespaces/services/org-unit.service.js +150 -0
  374. package/lib/esm/namespaces/services/permission.service.js +24 -0
  375. package/lib/esm/namespaces/services/principal.service.js +30 -0
  376. package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
  377. package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
  378. package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
  379. package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
  380. package/lib/esm/namespaces/services/role-permission.service.js +46 -0
  381. package/lib/esm/namespaces/services/role.service.js +40 -0
  382. package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
  383. package/lib/esm/namespaces/services/system-management.service.js +92 -0
  384. package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
  385. package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
  386. package/lib/esm/namespaces/services/tenant.service.js +31 -0
  387. package/lib/esm/namespaces/services/user.service.js +27 -0
  388. package/lib/esm/namespaces/types.js +71 -0
  389. package/lib/esm/namespaces/utils.js +143 -0
  390. package/lib/esm/nest/authService.js +1 -1
  391. package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
  392. package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
  393. package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
  394. package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
  395. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
  396. package/lib/esm/nest/graph/index.js +11 -0
  397. package/lib/esm/nest/index.js +2 -1
  398. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  399. package/lib/esm/nest/keycloakModule.js +1 -1
  400. package/lib/esm/nest/logging.js +1 -1
  401. package/lib/esm/nest/types.js +1 -1
  402. package/lib/esm/nest/utils.js +1 -1
  403. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  404. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  405. package/lib/esm/secrets/aws/index.js +1 -1
  406. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  407. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  408. package/lib/esm/secrets/azure/index.js +1 -1
  409. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  410. package/lib/esm/secrets/core/SecretName.js +1 -1
  411. package/lib/esm/secrets/core/SecretReference.js +1 -1
  412. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  413. package/lib/esm/secrets/core/SecretService.js +1 -1
  414. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  415. package/lib/esm/secrets/core/index.js +1 -1
  416. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  417. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  418. package/lib/esm/secrets/gcp/index.js +1 -1
  419. package/lib/esm/secrets/index.js +1 -1
  420. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  421. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  422. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  423. package/lib/esm/secrets/model/Secret.js +1 -1
  424. package/lib/esm/secrets/model/index.js +1 -1
  425. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  426. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  427. package/lib/esm/secrets/onepassword/index.js +1 -1
  428. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  429. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  430. package/lib/esm/secrets/vault/index.js +1 -1
  431. package/lib/esm/shared/runtime.js +1 -1
  432. package/lib/esm/utils.js +1 -1
  433. package/lib/types/graph/nodes/base.d.cts +28 -0
  434. package/lib/types/graph/nodes/base.d.mts +28 -0
  435. package/lib/types/graph/nodes/flow-control.d.cts +9 -1
  436. package/lib/types/graph/nodes/flow-control.d.mts +9 -1
  437. package/lib/types/graph/nodes/index.d.cts +1 -0
  438. package/lib/types/graph/nodes/index.d.mts +1 -0
  439. package/lib/types/graph/types.d.cts +15 -1
  440. package/lib/types/graph/types.d.mts +15 -1
  441. package/lib/types/index.d.cts +3 -2
  442. package/lib/types/index.d.mts +3 -2
  443. package/lib/types/namespaces/index.d.cts +8 -0
  444. package/lib/types/namespaces/index.d.mts +8 -0
  445. package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
  446. package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
  447. package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
  448. package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
  449. package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
  450. package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
  451. package/lib/types/namespaces/models/group.model.d.cts +15 -0
  452. package/lib/types/namespaces/models/group.model.d.mts +15 -0
  453. package/lib/types/namespaces/models/index.d.cts +21 -0
  454. package/lib/types/namespaces/models/index.d.mts +21 -0
  455. package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
  456. package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
  457. package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
  458. package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
  459. package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
  460. package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
  461. package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
  462. package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
  463. package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
  464. package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
  465. package/lib/types/namespaces/models/permission.model.d.cts +11 -0
  466. package/lib/types/namespaces/models/permission.model.d.mts +11 -0
  467. package/lib/types/namespaces/models/principal.model.d.cts +16 -0
  468. package/lib/types/namespaces/models/principal.model.d.mts +16 -0
  469. package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
  470. package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
  471. package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
  472. package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
  473. package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
  474. package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
  475. package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
  476. package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
  477. package/lib/types/namespaces/models/role.model.d.cts +17 -0
  478. package/lib/types/namespaces/models/role.model.d.mts +17 -0
  479. package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
  480. package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
  481. package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
  482. package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
  483. package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
  484. package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
  485. package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
  486. package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
  487. package/lib/types/namespaces/models/user.model.d.cts +14 -0
  488. package/lib/types/namespaces/models/user.model.d.mts +14 -0
  489. package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
  490. package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
  491. package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
  492. package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
  493. package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
  494. package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
  495. package/lib/types/namespaces/services/authz.service.d.cts +10 -0
  496. package/lib/types/namespaces/services/authz.service.d.mts +10 -0
  497. package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
  498. package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
  499. package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
  500. package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
  501. package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
  502. package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
  503. package/lib/types/namespaces/services/group.service.d.cts +9 -0
  504. package/lib/types/namespaces/services/group.service.d.mts +9 -0
  505. package/lib/types/namespaces/services/index.d.cts +24 -0
  506. package/lib/types/namespaces/services/index.d.mts +24 -0
  507. package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
  508. package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
  509. package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
  510. package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
  511. package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
  512. package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
  513. package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
  514. package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
  515. package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
  516. package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
  517. package/lib/types/namespaces/services/permission.service.d.cts +10 -0
  518. package/lib/types/namespaces/services/permission.service.d.mts +10 -0
  519. package/lib/types/namespaces/services/principal.service.d.cts +11 -0
  520. package/lib/types/namespaces/services/principal.service.d.mts +11 -0
  521. package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
  522. package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
  523. package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
  524. package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
  525. package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
  526. package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
  527. package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
  528. package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
  529. package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
  530. package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
  531. package/lib/types/namespaces/services/role.service.d.cts +12 -0
  532. package/lib/types/namespaces/services/role.service.d.mts +12 -0
  533. package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
  534. package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
  535. package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
  536. package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
  537. package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
  538. package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
  539. package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
  540. package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
  541. package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
  542. package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
  543. package/lib/types/namespaces/services/user.service.d.cts +11 -0
  544. package/lib/types/namespaces/services/user.service.d.mts +11 -0
  545. package/lib/types/namespaces/types.d.cts +230 -0
  546. package/lib/types/namespaces/types.d.mts +230 -0
  547. package/lib/types/namespaces/utils.d.cts +68 -0
  548. package/lib/types/namespaces/utils.d.mts +68 -0
  549. package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
  550. package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
  551. package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
  552. package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
  553. package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
  554. package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
  555. package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
  556. package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
  557. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
  558. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
  559. package/lib/types/nest/graph/index.d.cts +10 -0
  560. package/lib/types/nest/graph/index.d.mts +10 -0
  561. package/lib/types/nest/index.d.cts +1 -0
  562. package/lib/types/nest/index.d.mts +1 -0
  563. package/package.json +16 -5
  564. package/sql/001_constraints.sql +11 -0
  565. package/sql/002_rls.sql +20 -0
  566. package/sql/003_indexes.sql +2 -0
  567. package/dist/integrations.cjs.map +0 -1
  568. package/dist/integrations.js.map +0 -1
  569. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  570. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  571. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  572. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  573. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  574. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  575. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  576. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  577. package/lib/cjs/blob/core/index.cjs.map +0 -1
  578. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  579. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  580. package/lib/cjs/blob/index.cjs.map +0 -1
  581. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
  582. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
  583. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
  584. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
  585. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
  586. package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
  587. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  588. package/lib/cjs/blob/local/index.cjs.map +0 -1
  589. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  590. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  591. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  592. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  593. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  594. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  595. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  596. package/lib/cjs/docker/index.cjs.map +0 -1
  597. package/lib/cjs/graph/constants.cjs.map +0 -1
  598. package/lib/cjs/graph/decorators.cjs.map +0 -1
  599. package/lib/cjs/graph/errors/GraphCycleError.cjs.map +0 -1
  600. package/lib/cjs/graph/errors/GraphExecutionError.cjs.map +0 -1
  601. package/lib/cjs/graph/errors/GraphInputError.cjs.map +0 -1
  602. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs.map +0 -1
  603. package/lib/cjs/graph/errors/GraphPinningError.cjs.map +0 -1
  604. package/lib/cjs/graph/errors/GraphPortError.cjs.map +0 -1
  605. package/lib/cjs/graph/errors/GraphStoreError.cjs.map +0 -1
  606. package/lib/cjs/graph/errors/GraphTopologyError.cjs.map +0 -1
  607. package/lib/cjs/graph/errors/index.cjs.map +0 -1
  608. package/lib/cjs/graph/events/GraphExecutionEvent.cjs.map +0 -1
  609. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs.map +0 -1
  610. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs.map +0 -1
  611. package/lib/cjs/graph/events/GraphExecutionObserver.cjs.map +0 -1
  612. package/lib/cjs/graph/events/index.cjs.map +0 -1
  613. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs.map +0 -1
  614. package/lib/cjs/graph/execution/GraphExecutionContext.cjs.map +0 -1
  615. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs.map +0 -1
  616. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs.map +0 -1
  617. package/lib/cjs/graph/execution/GraphExecutionResult.cjs.map +0 -1
  618. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs.map +0 -1
  619. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs.map +0 -1
  620. package/lib/cjs/graph/execution/index.cjs.map +0 -1
  621. package/lib/cjs/graph/index.cjs.map +0 -1
  622. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs.map +0 -1
  623. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  624. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs.map +0 -1
  625. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs.map +0 -1
  626. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  627. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  628. package/lib/cjs/graph/loops/index.cjs.map +0 -1
  629. package/lib/cjs/graph/nodes/agent.cjs.map +0 -1
  630. package/lib/cjs/graph/nodes/category-styles.cjs.map +0 -1
  631. package/lib/cjs/graph/nodes/flow-control.cjs.map +0 -1
  632. package/lib/cjs/graph/nodes/index.cjs.map +0 -1
  633. package/lib/cjs/graph/nodes/triggers.cjs.map +0 -1
  634. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
  635. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs.map +0 -1
  636. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs.map +0 -1
  637. package/lib/cjs/graph/pinning/GraphPinningService.cjs.map +0 -1
  638. package/lib/cjs/graph/pinning/index.cjs.map +0 -1
  639. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs.map +0 -1
  640. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs.map +0 -1
  641. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs.map +0 -1
  642. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs.map +0 -1
  643. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs.map +0 -1
  644. package/lib/cjs/graph/planning/GraphRelationResolver.cjs.map +0 -1
  645. package/lib/cjs/graph/planning/GraphTopology.cjs.map +0 -1
  646. package/lib/cjs/graph/planning/index.cjs.map +0 -1
  647. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
  648. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs.map +0 -1
  649. package/lib/cjs/graph/registry/index.cjs.map +0 -1
  650. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
  651. package/lib/cjs/graph/snapshots/index.cjs.map +0 -1
  652. package/lib/cjs/graph/store/GraphCachedValue.cjs.map +0 -1
  653. package/lib/cjs/graph/store/GraphValueKey.cjs.map +0 -1
  654. package/lib/cjs/graph/store/GraphValueStore.cjs.map +0 -1
  655. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs.map +0 -1
  656. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
  657. package/lib/cjs/graph/store/index.cjs.map +0 -1
  658. package/lib/cjs/graph/types.cjs.map +0 -1
  659. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs.map +0 -1
  660. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs.map +0 -1
  661. package/lib/cjs/graph/validation/GraphValueValidator.cjs.map +0 -1
  662. package/lib/cjs/graph/validation/index.cjs.map +0 -1
  663. package/lib/cjs/index.cjs.map +0 -1
  664. package/lib/cjs/keycloak/index.cjs.map +0 -1
  665. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  666. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  667. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  668. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  669. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  670. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  671. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  672. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  673. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  674. package/lib/cjs/keycloak/types.cjs.map +0 -1
  675. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  676. package/lib/cjs/kibana/index.cjs.map +0 -1
  677. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  678. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  679. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  680. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  681. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  682. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  683. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  684. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  685. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  686. package/lib/cjs/kibana/types.cjs.map +0 -1
  687. package/lib/cjs/nest/authService.cjs.map +0 -1
  688. package/lib/cjs/nest/index.cjs.map +0 -1
  689. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  690. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  691. package/lib/cjs/nest/logging.cjs.map +0 -1
  692. package/lib/cjs/nest/types.cjs.map +0 -1
  693. package/lib/cjs/nest/utils.cjs.map +0 -1
  694. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  695. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  696. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  697. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  698. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  699. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  700. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  701. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  702. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  703. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  704. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  705. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  706. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  707. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  708. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  709. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  710. package/lib/cjs/secrets/index.cjs.map +0 -1
  711. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  712. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  713. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  714. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  715. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  716. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  717. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  718. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  719. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  720. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  721. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  722. package/lib/cjs/shared/runtime.cjs.map +0 -1
  723. package/lib/cjs/utils.cjs.map +0 -1
  724. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  725. package/lib/esm/blob/azure/index.js.map +0 -1
  726. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  727. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  728. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  729. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  730. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  731. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  732. package/lib/esm/blob/core/index.js.map +0 -1
  733. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  734. package/lib/esm/blob/gcp/index.js.map +0 -1
  735. package/lib/esm/blob/index.js.map +0 -1
  736. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
  737. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
  738. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
  739. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
  740. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
  741. package/lib/esm/blob/ipfs/index.js.map +0 -1
  742. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  743. package/lib/esm/blob/local/index.js.map +0 -1
  744. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  745. package/lib/esm/blob/memory/index.js.map +0 -1
  746. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  747. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  748. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  749. package/lib/esm/blob/s3/index.js.map +0 -1
  750. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  751. package/lib/esm/docker/index.js.map +0 -1
  752. package/lib/esm/graph/constants.js.map +0 -1
  753. package/lib/esm/graph/decorators.js.map +0 -1
  754. package/lib/esm/graph/errors/GraphCycleError.js.map +0 -1
  755. package/lib/esm/graph/errors/GraphExecutionError.js.map +0 -1
  756. package/lib/esm/graph/errors/GraphInputError.js.map +0 -1
  757. package/lib/esm/graph/errors/GraphLoopLimitError.js.map +0 -1
  758. package/lib/esm/graph/errors/GraphPinningError.js.map +0 -1
  759. package/lib/esm/graph/errors/GraphPortError.js.map +0 -1
  760. package/lib/esm/graph/errors/GraphStoreError.js.map +0 -1
  761. package/lib/esm/graph/errors/GraphTopologyError.js.map +0 -1
  762. package/lib/esm/graph/errors/index.js.map +0 -1
  763. package/lib/esm/graph/events/GraphExecutionEvent.js.map +0 -1
  764. package/lib/esm/graph/events/GraphExecutionEventEmitter.js.map +0 -1
  765. package/lib/esm/graph/events/GraphExecutionEventFactory.js.map +0 -1
  766. package/lib/esm/graph/events/GraphExecutionObserver.js.map +0 -1
  767. package/lib/esm/graph/events/index.js.map +0 -1
  768. package/lib/esm/graph/execution/CodeSandboxEvaluator.js.map +0 -1
  769. package/lib/esm/graph/execution/GraphExecutionContext.js.map +0 -1
  770. package/lib/esm/graph/execution/GraphExecutionEngine.js.map +0 -1
  771. package/lib/esm/graph/execution/GraphExecutionFrame.js.map +0 -1
  772. package/lib/esm/graph/execution/GraphExecutionResult.js.map +0 -1
  773. package/lib/esm/graph/execution/GraphNodeExecutor.js.map +0 -1
  774. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js.map +0 -1
  775. package/lib/esm/graph/execution/index.js.map +0 -1
  776. package/lib/esm/graph/index.js.map +0 -1
  777. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js.map +0 -1
  778. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js.map +0 -1
  779. package/lib/esm/graph/loops/GraphConditionEvaluator.js.map +0 -1
  780. package/lib/esm/graph/loops/GraphLoopExecutionContext.js.map +0 -1
  781. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js.map +0 -1
  782. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js.map +0 -1
  783. package/lib/esm/graph/loops/index.js.map +0 -1
  784. package/lib/esm/graph/nodes/agent.js.map +0 -1
  785. package/lib/esm/graph/nodes/category-styles.js.map +0 -1
  786. package/lib/esm/graph/nodes/flow-control.js.map +0 -1
  787. package/lib/esm/graph/nodes/index.js.map +0 -1
  788. package/lib/esm/graph/nodes/triggers.js.map +0 -1
  789. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js.map +0 -1
  790. package/lib/esm/graph/pinning/GraphPinningMetadata.js.map +0 -1
  791. package/lib/esm/graph/pinning/GraphPinningPolicy.js.map +0 -1
  792. package/lib/esm/graph/pinning/GraphPinningService.js.map +0 -1
  793. package/lib/esm/graph/pinning/index.js.map +0 -1
  794. package/lib/esm/graph/planning/GraphExecutionPlan.js.map +0 -1
  795. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js.map +0 -1
  796. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js.map +0 -1
  797. package/lib/esm/graph/planning/GraphExecutionPlanNode.js.map +0 -1
  798. package/lib/esm/graph/planning/GraphExecutionPlanner.js.map +0 -1
  799. package/lib/esm/graph/planning/GraphRelationResolver.js.map +0 -1
  800. package/lib/esm/graph/planning/GraphTopology.js.map +0 -1
  801. package/lib/esm/graph/planning/index.js.map +0 -1
  802. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js.map +0 -1
  803. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js.map +0 -1
  804. package/lib/esm/graph/registry/index.js.map +0 -1
  805. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
  806. package/lib/esm/graph/snapshots/index.js.map +0 -1
  807. package/lib/esm/graph/store/GraphCachedValue.js.map +0 -1
  808. package/lib/esm/graph/store/GraphValueKey.js.map +0 -1
  809. package/lib/esm/graph/store/GraphValueStore.js.map +0 -1
  810. package/lib/esm/graph/store/GraphValueStoreAdapter.js.map +0 -1
  811. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
  812. package/lib/esm/graph/store/index.js.map +0 -1
  813. package/lib/esm/graph/types.js.map +0 -1
  814. package/lib/esm/graph/validation/GraphDefinitionValidator.js.map +0 -1
  815. package/lib/esm/graph/validation/GraphPortSchemaResolver.js.map +0 -1
  816. package/lib/esm/graph/validation/GraphValueValidator.js.map +0 -1
  817. package/lib/esm/graph/validation/index.js.map +0 -1
  818. package/lib/esm/index.js.map +0 -1
  819. package/lib/esm/keycloak/index.js.map +0 -1
  820. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  821. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  822. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  823. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  824. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  825. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  826. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  827. package/lib/esm/keycloak/services/index.js.map +0 -1
  828. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  829. package/lib/esm/keycloak/types.js.map +0 -1
  830. package/lib/esm/kibana/helpers.js.map +0 -1
  831. package/lib/esm/kibana/index.js.map +0 -1
  832. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  833. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  834. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  835. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  836. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  837. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  838. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  839. package/lib/esm/kibana/services/index.js.map +0 -1
  840. package/lib/esm/kibana/services/runtime.js.map +0 -1
  841. package/lib/esm/kibana/types.js.map +0 -1
  842. package/lib/esm/nest/authService.js.map +0 -1
  843. package/lib/esm/nest/index.js.map +0 -1
  844. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  845. package/lib/esm/nest/keycloakModule.js.map +0 -1
  846. package/lib/esm/nest/logging.js.map +0 -1
  847. package/lib/esm/nest/types.js.map +0 -1
  848. package/lib/esm/nest/utils.js.map +0 -1
  849. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  850. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  851. package/lib/esm/secrets/aws/index.js.map +0 -1
  852. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  853. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  854. package/lib/esm/secrets/azure/index.js.map +0 -1
  855. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  856. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  857. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  858. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  859. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  860. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  861. package/lib/esm/secrets/core/index.js.map +0 -1
  862. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  863. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  864. package/lib/esm/secrets/gcp/index.js.map +0 -1
  865. package/lib/esm/secrets/index.js.map +0 -1
  866. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  867. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  868. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  869. package/lib/esm/secrets/model/Secret.js.map +0 -1
  870. package/lib/esm/secrets/model/index.js.map +0 -1
  871. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  872. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  873. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  874. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  875. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  876. package/lib/esm/secrets/vault/index.js.map +0 -1
  877. package/lib/esm/shared/runtime.js.map +0 -1
  878. package/lib/esm/utils.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EffectivePermissionService = 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 utils_js_1 = require("./../utils.cjs");
19
+ const types_js_1 = require("./../types.cjs");
20
+ const effective_permission_model_1 = require("../models/effective-permission.model");
21
+ const role_assignment_service_1 = require("./role-assignment.service");
22
+ const role_permission_service_1 = require("./role-permission.service");
23
+ const permission_service_1 = require("./permission.service");
24
+ const group_membership_service_1 = require("./group-membership.service");
25
+ const principal_service_1 = require("./principal.service");
26
+ const org_unit_closure_service_1 = require("./org-unit-closure.service");
27
+ const inheritance_block_service_1 = require("./inheritance-block.service");
28
+ class EffectivePermissionService extends utils_js_1.BaseModelService {
29
+ constructor() {
30
+ super(effective_permission_model_1.EffectivePermission);
31
+ }
32
+ async listForPrincipal(tenantId, principalId, ...args) {
33
+ return (await this.listAll(...args)).filter((permission) => (0, utils_js_1.sameTenant)(permission.tenant, tenantId) && (0, utils_js_1.relationMatch)(permission.principal, principalId));
34
+ }
35
+ async listForScope(tenantId, scopeKind, scopeId, ...args) {
36
+ return (await this.listAll(...args)).filter((permission) => (0, utils_js_1.sameTenant)(permission.tenant, tenantId) && permission.scopeKind === scopeKind && permission.scopeId === scopeId);
37
+ }
38
+ async hasPermission(tenantId, principalId, permissionKey, scopeKind, scopeId, at, ...args) {
39
+ return (await this.listForPrincipal(tenantId, principalId, ...args)).some((permission) => permission.permissionKey === permissionKey &&
40
+ permission.scopeKind === scopeKind &&
41
+ permission.scopeId === scopeId &&
42
+ (!permission.startsAt || !at || permission.startsAt <= at) &&
43
+ (!permission.expiresAt || !at || permission.expiresAt >= at));
44
+ }
45
+ async deleteForPrincipal(tenantId, principalId, ...args) {
46
+ for (const row of await this.listForPrincipal(tenantId, principalId, ...args)) {
47
+ await this.deleteById(row.id, ...args);
48
+ }
49
+ }
50
+ async deleteForTenant(tenantId, ...args) {
51
+ for (const row of (await this.listAll(...args)).filter((permission) => (0, utils_js_1.sameTenant)(permission.tenant, tenantId))) {
52
+ await this.deleteById(row.id, ...args);
53
+ }
54
+ }
55
+ async rebuildForPrincipal(tenantId, principalId, ...args) {
56
+ await this.deleteForPrincipal(tenantId, principalId, ...args);
57
+ const roleAssignmentService = new role_assignment_service_1.RoleAssignmentService();
58
+ const rolePermissionService = new role_permission_service_1.RolePermissionService();
59
+ const permissionService = new permission_service_1.PermissionService();
60
+ const groupMembershipService = new group_membership_service_1.GroupMembershipService();
61
+ const principalService = new principal_service_1.PrincipalService();
62
+ const orgUnitClosureService = new org_unit_closure_service_1.OrgUnitClosureService();
63
+ const inheritanceBlockService = new inheritance_block_service_1.InheritanceBlockService();
64
+ const materialized = [];
65
+ const sourceAssignments = await roleAssignmentService.listPrincipalAssignments(tenantId, principalId, ...args);
66
+ const groupMemberships = await groupMembershipService.listPrincipalGroups(principalId, ...args);
67
+ const groupAssignments = (await Promise.all(groupMemberships.map(async (membership) => {
68
+ const groupPrincipal = await principalService.getGroupPrincipal((0, utils_js_1.relationId)(membership.tenant), (0, utils_js_1.relationId)(membership.group), ...args);
69
+ return roleAssignmentService.listPrincipalAssignments(tenantId, groupPrincipal.id, ...args);
70
+ }))).flat();
71
+ const assignments = [...sourceAssignments, ...groupAssignments];
72
+ for (const assignment of assignments) {
73
+ const rolePermissions = await rolePermissionService.listRolePermissions((0, utils_js_1.relationId)(assignment.role), ...args);
74
+ const permissions = await Promise.all(rolePermissions.map(async (rolePermission) => permissionService.findOneBy("id", (0, utils_js_1.relationId)(rolePermission.permission), ...args)));
75
+ for (const permission of permissions) {
76
+ if (!permission)
77
+ continue;
78
+ const scopeKind = assignment.scopeKind;
79
+ const scopeId = assignment.scopeId;
80
+ const scopes = [];
81
+ if (scopeKind === types_js_1.ScopeKind.Tenant) {
82
+ scopes.push({ scopeKind, scopeId: tenantId });
83
+ }
84
+ else if (scopeKind === types_js_1.ScopeKind.Resource) {
85
+ scopes.push({ scopeKind, scopeId });
86
+ }
87
+ else if (scopeKind === types_js_1.ScopeKind.OrgUnit && !assignment.inheritDown) {
88
+ scopes.push({ scopeKind, scopeId });
89
+ }
90
+ else if (scopeKind === types_js_1.ScopeKind.OrgUnit && assignment.inheritDown) {
91
+ const descendants = await orgUnitClosureService.listDescendants(tenantId, scopeId, ...args);
92
+ scopes.push(...descendants.map((row) => ({ scopeKind, scopeId: (0, utils_js_1.relationId)(row.descendant) })));
93
+ }
94
+ for (const scoped of scopes) {
95
+ if (scopeKind === types_js_1.ScopeKind.OrgUnit &&
96
+ assignment.inheritDown &&
97
+ scoped.scopeId !== scopeId &&
98
+ (await inheritanceBlockService.categoryBlockedForAncestor(tenantId, scoped.scopeId, scopeId, permission.category, ...args))) {
99
+ continue;
100
+ }
101
+ materialized.push({
102
+ id: "",
103
+ tenantId,
104
+ principalId,
105
+ permissionKey: permission.key,
106
+ scopeKind: scoped.scopeKind,
107
+ scopeId: scoped.scopeId,
108
+ sourceKind: "role_assignment",
109
+ sourceId: assignment.id,
110
+ startsAt: assignment.startsAt,
111
+ expiresAt: assignment.expiresAt,
112
+ });
113
+ }
114
+ }
115
+ }
116
+ const created = await Promise.all(materialized.map((permission) => this.create({
117
+ tenant: permission.tenantId,
118
+ principal: permission.principalId,
119
+ permissionKey: permission.permissionKey,
120
+ scopeKind: permission.scopeKind,
121
+ scopeId: permission.scopeId,
122
+ sourceKind: permission.sourceKind,
123
+ sourceId: permission.sourceId,
124
+ startsAt: permission.startsAt,
125
+ expiresAt: permission.expiresAt,
126
+ }, ...args)));
127
+ return created;
128
+ }
129
+ async rebuildForTenant(tenantId, ...args) {
130
+ const principals = (await new principal_service_1.PrincipalService().listAll(...args)).filter((principal) => (0, utils_js_1.sameTenant)(principal.tenant, tenantId));
131
+ for (const principal of principals) {
132
+ await this.rebuildForPrincipal(tenantId, principal.id, ...args);
133
+ }
134
+ }
135
+ }
136
+ exports.EffectivePermissionService = EffectivePermissionService;
137
+ __decorate([
138
+ (0, utils_js_1.transactional)(),
139
+ __metadata("design:type", Function),
140
+ __metadata("design:paramtypes", [String, String, Object]),
141
+ __metadata("design:returntype", Promise)
142
+ ], EffectivePermissionService.prototype, "rebuildForPrincipal", null);
143
+ __decorate([
144
+ (0, utils_js_1.transactional)(),
145
+ __metadata("design:type", Function),
146
+ __metadata("design:paramtypes", [String, Object]),
147
+ __metadata("design:returntype", Promise)
148
+ ], EffectivePermissionService.prototype, "rebuildForTenant", null);
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxzQkFBaUI7QUFDbEcsT0FBTyxFQUErQixTQUFTLEVBQUUsc0JBQWlCO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBcUM7SUFDbkY7UUFDRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBRSxHQUFHLElBQVc7UUFDMUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN6QyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFB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RSxFQUFFLENBQzlCLElBQUksQ0FBQyxNQUFNLENBQ1Q7WUFDRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDM0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ2pDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYTtZQUN2QyxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDL0IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNqQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztTQUNoQyxFQUNELEdBQUcsSUFBSSxDQUNSLENBQ0YsQ0FDRixDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsR0FBRyxJQUFXO1FBQ3JELE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakksS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExR087SUFETCxhQUFhLEVBQUU7Ozs7cUVBa0dmO0FBR0s7SUFETCxhQUFhLEVBQUU7Ozs7a0VBTWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoLCBzYW1lVGVuYW50LCB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBFZmZlY3RpdmVQZXJtaXNzaW9uU25hcHNob3QsIFNjb3BlS2luZCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgRWZmZWN0aXZlUGVybWlzc2lvbiB9IGZyb20gXCIuLi9tb2RlbHMvZWZmZWN0aXZlLXBlcm1pc3Npb24ubW9kZWxcIjtcbmltcG9ydCB7IFJvbGVBc3NpZ25tZW50U2VydmljZSB9IGZyb20gXCIuL3JvbGUtYXNzaWdubWVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9yb2xlLXBlcm1pc3Npb24uc2VydmljZVwiO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgfSBmcm9tIFwiLi9ncm91cC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuaW1wb3J0IHsgT3JnVW5pdENsb3N1cmVTZXJ2aWNlIH0gZnJvbSBcIi4vb3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBJbmhlcml0YW5jZUJsb2NrU2VydmljZSB9IGZyb20gXCIuL2luaGVyaXRhbmNlLWJsb2NrLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxFZmZlY3RpdmVQZXJtaXNzaW9uPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEVmZmVjdGl2ZVBlcm1pc3Npb24pO1xuICB9XG5cbiAgYXN5bmMgbGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8RWZmZWN0aXZlUGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChwZXJtaXNzaW9uKSA9PiBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChwZXJtaXNzaW9uLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JTY29wZShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHNjb3BlS2luZDogU2NvcGVLaW5kLFxuICAgIHNjb3BlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocGVybWlzc2lvbikgPT4gc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiYgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGhhc1Blcm1pc3Npb24oXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25LZXk6IHN0cmluZyxcbiAgICBzY29wZUtpbmQ6IFNjb3BlS2luZCxcbiAgICBzY29wZUlkOiBzdHJpbmcsXG4gICAgYXQ/OiBEYXRlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykpLnNvbWUoXG4gICAgICAocGVybWlzc2lvbikgPT5cbiAgICAgICAgcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5ID09PSBwZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiZcbiAgICAgICAgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkICYmXG4gICAgICAgICghcGVybWlzc2lvbi5zdGFydHNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5zdGFydHNBdCA8PSBhdCkgJiZcbiAgICAgICAgKCFwZXJtaXNzaW9uLmV4cGlyZXNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5leHBpcmVzQXQgPj0gYXQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvclByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3Qgcm93IG9mIGF3YWl0IHRoaXMubGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQocm93LmlkLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVGb3JUZW5hbnQodGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8RWZmZWN0aXZlUGVybWlzc2lvbltdPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcblxuICAgIGNvbnN0IHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgICBjb25zdCByb2xlUGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUm9sZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgY29uc3QgcGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUGVybWlzc2lvblNlcnZpY2UoKTtcbiAgICBjb25zdCBncm91cE1lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgICBjb25zdCBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgICBjb25zdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgPSBuZXcgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UoKTtcblxuICAgIGNvbnN0IG1hdGVyaWFsaXplZDogRWZmZWN0aXZlUGVybWlzc2lvblNuYXBzaG90W10gPSBbXTtcbiAgICBjb25zdCBzb3VyY2VBc3NpZ25tZW50cyA9IGF3YWl0IHJvbGVBc3NpZ25tZW50U2VydmljZS5saXN0UHJpbmNpcGFsQXNzaWdubWVudHModGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBncm91cE1lbWJlcnNoaXBzID0gYXdhaXQgZ3JvdXBNZW1iZXJzaGlwU2VydmljZS5saXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBncm91cEFzc2lnbm1lbnRzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGdyb3VwTWVtYmVyc2hpcHMubWFwKGFzeW5jIChtZW1iZXJzaGlwKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBQcmluY2lwYWwgPSBhd2FpdCBwcmluY2lwYWxTZXJ2aWNlLmdldEdyb3VwUHJpbmNpcGFsKHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpLCByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApLCAuLi5hcmdzKTtcbiAgICAgICAgICByZXR1cm4gcm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyh0ZW5hbnRJZCwgZ3JvdXBQcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuZmxhdCgpO1xuXG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbLi4uc291cmNlQXNzaWdubWVudHMsIC4uLmdyb3VwQXNzaWdubWVudHNdO1xuICAgIGZvciAoY29uc3QgYXNzaWdubWVudCBvZiBhc3NpZ25tZW50cykge1xuICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25zID0gYXdhaXQgcm9sZVBlcm1pc3Npb25TZXJ2aWNlLmxpc3RSb2xlUGVybWlzc2lvbnMocmVsYXRpb25JZChhc3NpZ25tZW50LnJvbGUpLCAuLi5hcmdzKTtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHJvbGVQZXJtaXNzaW9ucy5tYXAoYXN5bmMgKHJvbGVQZXJtaXNzaW9uKSA9PlxuICAgICAgICAgIHBlcm1pc3Npb25TZXJ2aWNlLmZpbmRPbmVCeShcImlkXCIsIHJlbGF0aW9uSWQocm9sZVBlcm1pc3Npb24ucGVybWlzc2lvbikgYXMgbmV2ZXIsIC4uLmFyZ3MpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSBjb250aW51ZTtcbiAgICAgICAgY29uc3Qgc2NvcGVLaW5kID0gYXNzaWdubWVudC5zY29wZUtpbmQ7XG4gICAgICAgIGNvbnN0IHNjb3BlSWQgPSBhc3NpZ25tZW50LnNjb3BlSWQ7XG4gICAgICAgIGNvbnN0IHNjb3BlczogQXJyYXk8eyBzY29wZUtpbmQ6IFNjb3BlS2luZDsgc2NvcGVJZDogc3RyaW5nIH0+ID0gW107XG4gICAgICAgIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5UZW5hbnQpIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZDogdGVuYW50SWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuUmVzb3VyY2UpIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmICFhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJiBhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBzY29wZUlkLCAuLi5hcmdzKTtcbiAgICAgICAgICBzY29wZXMucHVzaCguLi5kZXNjZW5kYW50cy5tYXAoKHJvdykgPT4gKHsgc2NvcGVLaW5kLCBzY29wZUlkOiByZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSB9KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBzY29wZWQgb2Ygc2NvcGVzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJlxuICAgICAgICAgICAgYXNzaWdubWVudC5pbmhlcml0RG93biAmJlxuICAgICAgICAgICAgc2NvcGVkLnNjb3BlSWQgIT09IHNjb3BlSWQgJiZcbiAgICAgICAgICAgIChhd2FpdCBpbmhlcml0YW5jZUJsb2NrU2VydmljZS5jYXRlZ29yeUJsb2NrZWRGb3JBbmNlc3RvcihcbiAgICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICAgIHNjb3BlZC5zY29wZUlkLFxuICAgICAgICAgICAgICBzY29wZUlkLFxuICAgICAgICAgICAgICBwZXJtaXNzaW9uLmNhdGVnb3J5LFxuICAgICAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICAgICApKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hdGVyaWFsaXplZC5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBcIlwiLFxuICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICBwcmluY2lwYWxJZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ua2V5LFxuICAgICAgICAgICAgc2NvcGVLaW5kOiBzY29wZWQuc2NvcGVLaW5kLFxuICAgICAgICAgICAgc2NvcGVJZDogc2NvcGVkLnNjb3BlSWQsXG4gICAgICAgICAgICBzb3VyY2VLaW5kOiBcInJvbGVfYXNzaWdubWVudFwiLFxuICAgICAgICAgICAgc291cmNlSWQ6IGFzc2lnbm1lbnQuaWQsXG4gICAgICAgICAgICBzdGFydHNBdDogYXNzaWdubWVudC5zdGFydHNBdCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogYXNzaWdubWVudC5leHBpcmVzQXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXRlcmlhbGl6ZWQubWFwKChwZXJtaXNzaW9uKSA9PlxuICAgICAgICB0aGlzLmNyZWF0ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZW5hbnQ6IHBlcm1pc3Npb24udGVuYW50SWQsXG4gICAgICAgICAgICBwcmluY2lwYWw6IHBlcm1pc3Npb24ucHJpbmNpcGFsSWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLnBlcm1pc3Npb25LZXksXG4gICAgICAgICAgICBzY29wZUtpbmQ6IHBlcm1pc3Npb24uc2NvcGVLaW5kLFxuICAgICAgICAgICAgc2NvcGVJZDogcGVybWlzc2lvbi5zY29wZUlkLFxuICAgICAgICAgICAgc291cmNlS2luZDogcGVybWlzc2lvbi5zb3VyY2VLaW5kLFxuICAgICAgICAgICAgc291cmNlSWQ6IHBlcm1pc3Npb24uc291cmNlSWQsXG4gICAgICAgICAgICBzdGFydHNBdDogcGVybWlzc2lvbi5zdGFydHNBdCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogcGVybWlzc2lvbi5leHBpcmVzQXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5hcmdzXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVkO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyByZWJ1aWxkRm9yVGVuYW50KHRlbmFudElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJpbmNpcGFscyA9IChhd2FpdCBuZXcgUHJpbmNpcGFsU2VydmljZSgpLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocHJpbmNpcGFsKSA9PiBzYW1lVGVuYW50KHByaW5jaXBhbC50ZW5hbnQsIHRlbmFudElkKSk7XG4gICAgZm9yIChjb25zdCBwcmluY2lwYWwgb2YgcHJpbmNpcGFscykge1xuICAgICAgYXdhaXQgdGhpcy5yZWJ1aWxkRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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dEUsVUFBVSxDQUFDO0lBQ1AsSUFBQSx3QkFBYSxHQUFFO0lBQ2YsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7SUFDbkMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7Q0FDM0MsRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUsOGtqQkFBOGtqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG5pbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoLCBzYW1lVGVuYW50LCB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFNjb3BlS2luZCB9IGZyb20gXCIuLy4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBFZmZlY3RpdmVQZXJtaXNzaW9uIH0gZnJvbSBcIi4uL21vZGVscy9lZmZlY3RpdmUtcGVybWlzc2lvbi5tb2RlbFwiO1xuaW1wb3J0IHsgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IFJvbGVQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL3JvbGUtcGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL3Blcm1pc3Npb24uc2VydmljZVwiO1xuaW1wb3J0IHsgR3JvdXBNZW1iZXJzaGlwU2VydmljZSB9IGZyb20gXCIuL2dyb3VwLW1lbWJlcnNoaXAuc2VydmljZVwiO1xuaW1wb3J0IHsgUHJpbmNpcGFsU2VydmljZSB9IGZyb20gXCIuL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC1jbG9zdXJlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4vaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZVwiO1xuZXhwb3J0IGNsYXNzIEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKEVmZmVjdGl2ZVBlcm1pc3Npb24pO1xuICAgIH1cbiAgICBhc3luYyBsaXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChwZXJtaXNzaW9uLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdEZvclNjb3BlKHRlbmFudElkLCBzY29wZUtpbmQsIHNjb3BlSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocGVybWlzc2lvbikgPT4gc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiYgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkKTtcbiAgICB9XG4gICAgYXN5bmMgaGFzUGVybWlzc2lvbih0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIHBlcm1pc3Npb25LZXksIHNjb3BlS2luZCwgc2NvcGVJZCwgYXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSkuc29tZSgocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5ID09PSBwZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgICAgICBwZXJtaXNzaW9uLnNjb3BlS2luZCA9PT0gc2NvcGVLaW5kICYmXG4gICAgICAgICAgICBwZXJtaXNzaW9uLnNjb3BlSWQgPT09IHNjb3BlSWQgJiZcbiAgICAgICAgICAgICghcGVybWlzc2lvbi5zdGFydHNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5zdGFydHNBdCA8PSBhdCkgJiZcbiAgICAgICAgICAgICghcGVybWlzc2lvbi5leHBpcmVzQXQgfHwgIWF0IHx8IHBlcm1pc3Npb24uZXhwaXJlc0F0ID49IGF0KSk7XG4gICAgfVxuICAgIGFzeW5jIGRlbGV0ZUZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgYXdhaXQgdGhpcy5saXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGRlbGV0ZUZvclRlbmFudCh0ZW5hbnRJZCwgLi4uYXJncykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChyb3cuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlYnVpbGRGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFJvbGVQZXJtaXNzaW9uU2VydmljZSgpO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uU2VydmljZSA9IG5ldyBQZXJtaXNzaW9uU2VydmljZSgpO1xuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IG9yZ1VuaXRDbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgPSBuZXcgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWxpemVkID0gW107XG4gICAgICAgIGNvbnN0IHNvdXJjZUFzc2lnbm1lbnRzID0gYXdhaXQgcm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmxpc3RQcmluY2lwYWxBc3NpZ25tZW50cyh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBzID0gYXdhaXQgZ3JvdXBNZW1iZXJzaGlwU2VydmljZS5saXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICAgICAgY29uc3QgZ3JvdXBBc3NpZ25tZW50cyA9IChhd2FpdCBQcm9taXNlLmFsbChncm91cE1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBQcmluY2lwYWwgPSBhd2FpdCBwcmluY2lwYWxTZXJ2aWNlLmdldEdyb3VwUHJpbmNpcGFsKHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpLCByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIHJldHVybiByb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKHRlbmFudElkLCBncm91cFByaW5jaXBhbC5pZCwgLi4uYXJncyk7XG4gICAgICAgIH0pKSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBhc3NpZ25tZW50cyA9IFsuLi5zb3VyY2VBc3NpZ25tZW50cywgLi4uZ3JvdXBBc3NpZ25tZW50c107XG4gICAgICAgIGZvciAoY29uc3QgYXNzaWdubWVudCBvZiBhc3NpZ25tZW50cykge1xuICAgICAgICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25zID0gYXdhaXQgcm9sZVBlcm1pc3Npb25TZXJ2aWNlLmxpc3RSb2xlUGVybWlzc2lvbnMocmVsYXRpb25JZChhc3NpZ25tZW50LnJvbGUpLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgUHJvbWlzZS5hbGwocm9sZVBlcm1pc3Npb25zLm1hcChhc3luYyAocm9sZVBlcm1pc3Npb24pID0+IHBlcm1pc3Npb25TZXJ2aWNlLmZpbmRPbmVCeShcImlkXCIsIHJlbGF0aW9uSWQocm9sZVBlcm1pc3Npb24ucGVybWlzc2lvbiksIC4uLmFyZ3MpKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXBlcm1pc3Npb24pXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlS2luZCA9IGFzc2lnbm1lbnQuc2NvcGVLaW5kO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlSWQgPSBhc3NpZ25tZW50LnNjb3BlSWQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVzID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLlRlbmFudCkge1xuICAgICAgICAgICAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZDogdGVuYW50SWQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLlJlc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmICFhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmIGFzc2lnbm1lbnQuaW5oZXJpdERvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBzY29wZUlkLCAuLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGVzLnB1c2goLi4uZGVzY2VuZGFudHMubWFwKChyb3cpID0+ICh7IHNjb3BlS2luZCwgc2NvcGVJZDogcmVsYXRpb25JZChyb3cuZGVzY2VuZGFudCkgfSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzY29wZWQgb2Ygc2NvcGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LmluaGVyaXREb3duICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzY29wZWQuc2NvcGVJZCAhPT0gc2NvcGVJZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGF3YWl0IGluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlLmNhdGVnb3J5QmxvY2tlZEZvckFuY2VzdG9yKHRlbmFudElkLCBzY29wZWQuc2NvcGVJZCwgc2NvcGVJZCwgcGVybWlzc2lvbi5jYXRlZ29yeSwgLi4uYXJncykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlS2luZDogc2NvcGVkLnNjb3BlS2luZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlSWQ6IHNjb3BlZC5zY29wZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlS2luZDogXCJyb2xlX2Fzc2lnbm1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUlkOiBhc3NpZ25tZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRzQXQ6IGFzc2lnbm1lbnQuc3RhcnRzQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzQXQ6IGFzc2lnbm1lbnQuZXhwaXJlc0F0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IFByb21pc2UuYWxsKG1hdGVyaWFsaXplZC5tYXAoKHBlcm1pc3Npb24pID0+IHRoaXMuY3JlYXRlKHtcbiAgICAgICAgICAgIHRlbmFudDogcGVybWlzc2lvbi50ZW5hbnRJZCxcbiAgICAgICAgICAgIHByaW5jaXBhbDogcGVybWlzc2lvbi5wcmluY2lwYWxJZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ucGVybWlzc2lvbktleSxcbiAgICAgICAgICAgIHNjb3BlS2luZDogcGVybWlzc2lvbi5zY29wZUtpbmQsXG4gICAgICAgICAgICBzY29wZUlkOiBwZXJtaXNzaW9uLnNjb3BlSWQsXG4gICAgICAgICAgICBzb3VyY2VLaW5kOiBwZXJtaXNzaW9uLnNvdXJjZUtpbmQsXG4gICAgICAgICAgICBzb3VyY2VJZDogcGVybWlzc2lvbi5zb3VyY2VJZCxcbiAgICAgICAgICAgIHN0YXJ0c0F0OiBwZXJtaXNzaW9uLnN0YXJ0c0F0LFxuICAgICAgICAgICAgZXhwaXJlc0F0OiBwZXJtaXNzaW9uLmV4cGlyZXNBdCxcbiAgICAgICAgfSwgLi4uYXJncykpKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgfVxuICAgIGFzeW5jIHJlYnVpbGRGb3JUZW5hbnQodGVuYW50SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFscyA9IChhd2FpdCBuZXcgUHJpbmNpcGFsU2VydmljZSgpLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocHJpbmNpcGFsKSA9PiBzYW1lVGVuYW50KHByaW5jaXBhbC50ZW5hbnQsIHRlbmFudElkKSk7XG4gICAgICAgIGZvciAoY29uc3QgcHJpbmNpcGFsIG9mIHByaW5jaXBhbHMpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsLmlkLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbl9fZGVjb3JhdGUoW1xuICAgIHRyYW5zYWN0aW9uYWwoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nLCBTdHJpbmcsIE9iamVjdF0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cmV0dXJudHlwZVwiLCBQcm9taXNlKVxuXSwgRWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UucHJvdG90eXBlLCBcInJlYnVpbGRGb3JQcmluY2lwYWxcIiwgbnVsbCk7XG5fX2RlY29yYXRlKFtcbiAgICB0cmFuc2FjdGlvbmFsKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEZ1bmN0aW9uKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgW1N0cmluZywgT2JqZWN0XSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5wcm90b3R5cGUsIFwicmVidWlsZEZvclRlbmFudFwiLCBudWxsKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpXWm1aV04wYVhabExYQmxjbTFwYzNOcGIyNHVjMlZ5ZG1salpTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTl1WVcxbGMzQmhZMlZ6TDNObGNuWnBZMlZ6TDJWbVptVmpkR2wyWlMxd1pYSnRhWE56YVc5dUxuTmxjblpwWTJVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJRVUVzVDBGQlR5eEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxGVkJRVlVzUlVGQlJTeGhRVUZoTEVWQlFVVXNWVUZCVlN4RlFVRkZMR0ZCUVdFc1JVRkJSU3h6UWtGQmFVSTdRVUZEYkVjc1QwRkJUeXhGUVVFclFpeFRRVUZUTEVWQlFVVXNjMEpCUVdsQ08wRkJRMnhGTEU5QlFVOHNSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeE5RVUZOTEhORFFVRnpReXhEUVVGRE8wRkJRek5GTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeE5RVUZOTERKQ1FVRXlRaXhEUVVGRE8wRkJRMnhGTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeE5RVUZOTERKQ1FVRXlRaXhEUVVGRE8wRkJRMnhGTEU5QlFVOHNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeE5RVUZOTEhOQ1FVRnpRaXhEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZCUlN4elFrRkJjMElzUlVGQlJTeE5RVUZOTERSQ1FVRTBRaXhEUVVGRE8wRkJRM0JGTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlJTeE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM1pFTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeE5RVUZOTERSQ1FVRTBRaXhEUVVGRE8wRkJRMjVGTEU5QlFVOHNSVUZCUlN4MVFrRkJkVUlzUlVGQlJTeE5RVUZOTERaQ1FVRTJRaXhEUVVGRE8wRkJSWFJGTEUxQlFVMHNUMEZCVHl3d1FrRkJNa0lzVTBGQlVTeG5Ra0ZCY1VNN1NVRkRia1k3VVVGRFJTeExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dEpRVU0zUWl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRkZCUVdkQ0xFVkJRVVVzVjBGQmJVSXNSVUZCUlN4SFFVRkhMRWxCUVZjN1VVRkRNVVVzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVTjZReXhEUVVGRExGVkJRVlVzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NZVUZCWVN4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlF6VkhMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzUzBGQlN5eERRVUZETEZsQlFWa3NRMEZEYUVJc1VVRkJaMElzUlVGRGFFSXNVMEZCYjBJc1JVRkRjRUlzVDBGQlpTeEZRVU5tTEVkQlFVY3NTVUZCVnp0UlFVVmtMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGRGVrTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eFRRVUZUTEV0QlFVc3NVMEZCVXl4SlFVRkpMRlZCUVZVc1EwRkJReXhQUVVGUExFdEJRVXNzVDBGQlR5eERRVU5vU1N4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eGhRVUZoTEVOQlEycENMRkZCUVdkQ0xFVkJRMmhDTEZkQlFXMUNMRVZCUTI1Q0xHRkJRWEZDTEVWQlEzSkNMRk5CUVc5Q0xFVkJRM0JDTEU5QlFXVXNSVUZEWml4RlFVRlRMRVZCUTFRc1IwRkJSeXhKUVVGWE8xRkJSV1FzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFWRXNSVUZCUlN4WFFVRlhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZEZGtVc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVU5pTEZWQlFWVXNRMEZCUXl4aFFVRmhMRXRCUVVzc1lVRkJZVHRaUVVNeFF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4TFFVRkxMRk5CUVZNN1dVRkRiRU1zVlVGQlZTeERRVUZETEU5QlFVOHNTMEZCU3l4UFFVRlBPMWxCUXpsQ0xFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxGVkJRVlVzUTBGQlF5eFJRVUZSTEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUXpGRUxFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hKUVVGSkxGVkJRVlVzUTBGQlF5eFRRVUZUTEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUXk5RUxFTkJRVU03U1VGRFNpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR3RDUVVGclFpeERRVUZETEZGQlFXZENMRVZCUVVVc1YwRkJiVUlzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZETlVVc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eFJRVUZSTEVWQlFVVXNWMEZCVnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU01UlN4TlFVRk5MRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM3BETEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eFJRVUZuUWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVOd1JDeExRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVOb1NDeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNwRExFTkJRVU03U1VGRFNDeERRVUZETzBsQlIwc3NRVUZCVGl4TFFVRkxMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNVVUZCWjBJc1JVRkJSU3hYUVVGdFFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTTNSU3hOUVVGTkxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhSUVVGUkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZPVVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxHbENRVUZwUWl4RlFVRkZMRU5CUVVNN1VVRkRiRVFzVFVGQlRTeHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxITkNRVUZ6UWl4RlFVRkZMRU5CUVVNN1VVRkROVVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRhRVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1VVRkRNVVFzVFVGQlRTeDFRa0ZCZFVJc1IwRkJSeXhKUVVGSkxIVkNRVUYxUWl4RlFVRkZMRU5CUVVNN1VVRkZPVVFzVFVGQlRTeFpRVUZaTEVkQlFXdERMRVZCUVVVc1EwRkJRenRSUVVOMlJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSExFMUJRVTBzY1VKQlFYRkNMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF5OUhMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NUVUZCVFN4elFrRkJjMElzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhYUVVGWExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTm9SeXhOUVVGTkxHZENRVUZuUWl4SFFVRkhMRU5CUTNaQ0xFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZEWml4blFrRkJaMElzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRlZCUVZVc1JVRkJSU3hGUVVGRk8xbEJRM2hETEUxQlFVMHNZMEZCWXl4SFFVRkhMRTFCUVUwc1owSkJRV2RDTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVlVGQlZTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRGRFa3NUMEZCVHl4eFFrRkJjVUlzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhSUVVGUkxFVkJRVVVzWTBGQll5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRemxHTEVOQlFVTXNRMEZCUXl4RFFVTklMRU5CUTBZc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVVZVTEUxQlFVMHNWMEZCVnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhwUWtGQmFVSXNSVUZCUlN4SFFVRkhMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZEYUVVc1MwRkJTeXhOUVVGTkxGVkJRVlVzU1VGQlNTeFhRVUZYTEVWQlFVVXNRMEZCUXp0WlFVTnlReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNNVJ5eE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRMjVETEdWQlFXVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxHTkJRV01zUlVGQlJTeEZRVUZGTEVOQlF6TkRMR2xDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1ZVRkJWU3hEUVVGRExHTkJRV01zUTBGQlF5eFZRVUZWTEVOQlFWVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVNelJpeERRVU5HTEVOQlFVTTdXVUZEUml4TFFVRkxMRTFCUVUwc1ZVRkJWU3hKUVVGSkxGZEJRVmNzUlVGQlJTeERRVUZETzJkQ1FVTnlReXhKUVVGSkxFTkJRVU1zVlVGQlZUdHZRa0ZCUlN4VFFVRlRPMmRDUVVNeFFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1UwRkJVeXhEUVVGRE8yZENRVU4yUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETzJkQ1FVTnVReXhOUVVGTkxFMUJRVTBzUjBGQmNVUXNSVUZCUlN4RFFVRkRPMmRDUVVOd1JTeEpRVUZKTEZOQlFWTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03YjBKQlEyNURMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZCVHl4RlFVRkZMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEyaEVMRU5CUVVNN2NVSkJRVTBzU1VGQlNTeFRRVUZUTEV0QlFVc3NVMEZCVXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8yOUNRVU0xUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRM1JETEVOQlFVTTdjVUpCUVUwc1NVRkJTU3hUUVVGVExFdEJRVXNzVTBGQlV5eERRVUZETEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dHZRa0ZEZEVVc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU4wUXl4RFFVRkRPM0ZDUVVGTkxFbEJRVWtzVTBGQlV5eExRVUZMTEZOQlFWTXNRMEZCUXl4UFFVRlBMRWxCUVVrc1ZVRkJWU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzI5Q1FVTnlSU3hOUVVGTkxGZEJRVmNzUjBGQlJ5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRExHVkJRV1VzUTBGQlF5eFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03YjBKQlF6VkdMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNVMEZCVXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEycEhMRU5CUVVNN1owSkJSVVFzUzBGQlN5eE5RVUZOTEUxQlFVMHNTVUZCU1N4TlFVRk5MRVZCUVVVc1EwRkJRenR2UWtGRE5VSXNTVUZEUlN4VFFVRlRMRXRCUVVzc1UwRkJVeXhEUVVGRExFOUJRVTg3ZDBKQlF5OUNMRlZCUVZVc1EwRkJReXhYUVVGWE8zZENRVU4wUWl4TlFVRk5MRU5CUVVNc1QwRkJUeXhMUVVGTExFOUJRVTg3ZDBKQlF6RkNMRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNRMEZCUXl3d1FrRkJNRUlzUTBGRGRrUXNVVUZCVVN4RlFVTlNMRTFCUVUwc1EwRkJReXhQUVVGUExFVkJRMlFzVDBGQlR5eEZRVU5RTEZWQlFWVXNRMEZCUXl4UlFVRlJMRVZCUTI1Q0xFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTXNSVUZEUml4RFFVRkRPM2RDUVVORUxGTkJRVk03YjBKQlExZ3NRMEZCUXp0dlFrRkRSQ3haUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTm9RaXhGUVVGRkxFVkJRVVVzUlVGQlJUdDNRa0ZEVGl4UlFVRlJPM2RDUVVOU0xGZEJRVmM3ZDBKQlExZ3NZVUZCWVN4RlFVRkZMRlZCUVZVc1EwRkJReXhIUVVGSE8zZENRVU0zUWl4VFFVRlRMRVZCUVVVc1RVRkJUU3hEUVVGRExGTkJRVk03ZDBKQlF6TkNMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zVDBGQlR6dDNRa0ZEZGtJc1ZVRkJWU3hGUVVGRkxHbENRVUZwUWp0M1FrRkROMElzVVVGQlVTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RlFVRkZPM2RDUVVOMlFpeFJRVUZSTEVWQlFVVXNWVUZCVlN4RFFVRkRMRkZCUVZFN2QwSkJRemRDTEZOQlFWTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1UwRkJVenR4UWtGRGFFTXNRMEZCUXl4RFFVRkRPMmRDUVVOTUxFTkJRVU03V1VGRFNDeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVVkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZETDBJc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUXpsQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlExUTdXVUZEUlN4TlFVRk5MRVZCUVVVc1ZVRkJWU3hEUVVGRExGRkJRVkU3V1VGRE0wSXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhYUVVGWE8xbEJRMnBETEdGQlFXRXNSVUZCUlN4VlFVRlZMRU5CUVVNc1lVRkJZVHRaUVVOMlF5eFRRVUZUTEVWQlFVVXNWVUZCVlN4RFFVRkRMRk5CUVZNN1dVRkRMMElzVDBGQlR5eEZRVUZGTEZWQlFWVXNRMEZCUXl4UFFVRlBPMWxCUXpOQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNWVUZCVlR0WlFVTnFReXhSUVVGUkxFVkJRVVVzVlVGQlZTeERRVUZETEZGQlFWRTdXVUZETjBJc1VVRkJVU3hGUVVGRkxGVkJRVlVzUTBGQlF5eFJRVUZSTzFsQlF6ZENMRk5CUVZNc1JVRkJSU3hWUVVGVkxFTkJRVU1zVTBGQlV6dFRRVU5vUXl4RlFVTkVMRWRCUVVjc1NVRkJTU3hEUVVOU0xFTkJRMFlzUTBGRFJpeERRVUZETzFGQlEwWXNUMEZCVHl4UFFVRlBMRU5CUVVNN1NVRkRha0lzUTBGQlF6dEpRVWRMTEVGQlFVNHNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFXZENMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRM0pFTEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxHZENRVUZuUWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtrc1MwRkJTeXhOUVVGTkxGTkJRVk1zU1VGQlNTeFZRVUZWTEVWQlFVVXNRMEZCUXp0WlFVTnVReXhOUVVGTkxFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhSUVVGUkxFVkJRVVVzVTBGQlV5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMnhGTEVOQlFVTTdTVUZEU0N4RFFVRkRPME5CUTBZN1FVRXhSMDg3U1VGRVRDeGhRVUZoTEVWQlFVVTdPenM3Y1VWQmEwZG1PMEZCUjBzN1NVRkVUQ3hoUVVGaExFVkJRVVU3T3pzN2EwVkJUV1lpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCQ1lYTmxUVzlrWld4VFpYSjJhV05sTENCeVpXeGhkR2x2Ymtsa0xDQnlaV3hoZEdsdmJrMWhkR05vTENCellXMWxWR1Z1WVc1MExDQjBjbUZ1YzJGamRHbHZibUZzSUgwZ1puSnZiU0JjSWk0dUwzVjBhV3h6WENJN1hHNXBiWEJ2Y25RZ2V5QkZabVpsWTNScGRtVlFaWEp0YVhOemFXOXVVMjVoY0hOb2IzUXNJRk5qYjNCbFMybHVaQ0I5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1JXWm1aV04wYVhabFVHVnliV2x6YzJsdmJpQjlJR1p5YjIwZ1hDSXVMaTl0YjJSbGJITXZaV1ptWldOMGFYWmxMWEJsY20xcGMzTnBiMjR1Ylc5a1pXeGNJanRjYm1sdGNHOXlkQ0I3SUZKdmJHVkJjM05wWjI1dFpXNTBVMlZ5ZG1salpTQjlJR1p5YjIwZ1hDSXVMM0p2YkdVdFlYTnphV2R1YldWdWRDNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJTYjJ4bFVHVnliV2x6YzJsdmJsTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXliMnhsTFhCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVhVzF3YjNKMElIc2dVR1Z5YldsemMybHZibE5sY25acFkyVWdmU0JtY205dElGd2lMaTl3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lFZHliM1Z3VFdWdFltVnljMmhwY0ZObGNuWnBZMlVnZlNCbWNtOXRJRndpTGk5bmNtOTFjQzF0WlcxaVpYSnphR2x3TG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lGQnlhVzVqYVhCaGJGTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXdjbWx1WTJsd1lXd3VjMlZ5ZG1salpWd2lPMXh1YVcxd2IzSjBJSHNnVDNKblZXNXBkRU5zYjNOMWNtVlRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZiM0puTFhWdWFYUXRZMnh2YzNWeVpTNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJKYm1obGNtbDBZVzVqWlVKc2IyTnJVMlZ5ZG1salpTQjlJR1p5YjIwZ1hDSXVMMmx1YUdWeWFYUmhibU5sTFdKc2IyTnJMbk5sY25acFkyVmNJanRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRVZtWm1WamRHbDJaVkJsY20xcGMzTnBiMjVUWlhKMmFXTmxJR1Y0ZEdWdVpITWdRbUZ6WlUxdlpHVnNVMlZ5ZG1salpUeEZabVpsWTNScGRtVlFaWEp0YVhOemFXOXVQaUI3WEc0Z0lHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJSE4xY0dWeUtFVm1abVZqZEdsMlpWQmxjbTFwYzNOcGIyNHBPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdiR2x6ZEVadmNsQnlhVzVqYVhCaGJDaDBaVzVoYm5SSlpEb2djM1J5YVc1bkxDQndjbWx1WTJsd1lXeEpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThSV1ptWldOMGFYWmxVR1Z5YldsemMybHZibHRkUGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hoZDJGcGRDQjBhR2x6TG14cGMzUkJiR3dvTGk0dVlYSm5jeWtwTG1acGJIUmxjaWhjYmlBZ0lDQWdJQ2h3WlhKdGFYTnphVzl1S1NBOVBpQnpZVzFsVkdWdVlXNTBLSEJsY20xcGMzTnBiMjR1ZEdWdVlXNTBMQ0IwWlc1aGJuUkpaQ2tnSmlZZ2NtVnNZWFJwYjI1TllYUmphQ2h3WlhKdGFYTnphVzl1TG5CeWFXNWphWEJoYkN3Z2NISnBibU5wY0dGc1NXUXBYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHeHBjM1JHYjNKVFkyOXdaU2hjYmlBZ0lDQjBaVzVoYm5SSlpEb2djM1J5YVc1bkxGeHVJQ0FnSUhOamIzQmxTMmx1WkRvZ1UyTnZjR1ZMYVc1a0xGeHVJQ0FnSUhOamIzQmxTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQXVMaTVoY21kek9pQmhibmxiWFZ4dUlDQXBPaUJRY205dGFYTmxQRVZtWm1WamRHbDJaVkJsY20xcGMzTnBiMjViWFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUFvWVhkaGFYUWdkR2hwY3k1c2FYTjBRV3hzS0M0dUxtRnlaM01wS1M1bWFXeDBaWElvWEc0Z0lDQWdJQ0FvY0dWeWJXbHpjMmx2YmlrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2h3WlhKdGFYTnphVzl1TG5SbGJtRnVkQ3dnZEdWdVlXNTBTV1FwSUNZbUlIQmxjbTFwYzNOcGIyNHVjMk52Y0dWTGFXNWtJRDA5UFNCelkyOXdaVXRwYm1RZ0ppWWdjR1Z5YldsemMybHZiaTV6WTI5d1pVbGtJRDA5UFNCelkyOXdaVWxrWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJR2hoYzFCbGNtMXBjM05wYjI0b1hHNGdJQ0FnZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQndjbWx1WTJsd1lXeEpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lIQmxjbTFwYzNOcGIyNUxaWGs2SUhOMGNtbHVaeXhjYmlBZ0lDQnpZMjl3WlV0cGJtUTZJRk5qYjNCbFMybHVaQ3hjYmlBZ0lDQnpZMjl3WlVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnWVhRL09pQkVZWFJsTEZ4dUlDQWdJQzR1TG1GeVozTTZJR0Z1ZVZ0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4WW05dmJHVmhiajRnZTF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFJtOXlVSEpwYm1OcGNHRnNLSFJsYm1GdWRFbGtMQ0J3Y21sdVkybHdZV3hKWkN3Z0xpNHVZWEpuY3lrcExuTnZiV1VvWEc0Z0lDQWdJQ0FvY0dWeWJXbHpjMmx2YmlrZ1BUNWNiaUFnSUNBZ0lDQWdjR1Z5YldsemMybHZiaTV3WlhKdGFYTnphVzl1UzJWNUlEMDlQU0J3WlhKdGFYTnphVzl1UzJWNUlDWW1YRzRnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjR1YzJOdmNHVkxhVzVrSUQwOVBTQnpZMjl3WlV0cGJtUWdKaVpjYmlBZ0lDQWdJQ0FnY0dWeWJXbHpjMmx2Ymk1elkyOXdaVWxrSUQwOVBTQnpZMjl3WlVsa0lDWW1YRzRnSUNBZ0lDQWdJQ2doY0dWeWJXbHpjMmx2Ymk1emRHRnlkSE5CZENCOGZDQWhZWFFnZkh3Z2NHVnliV2x6YzJsdmJpNXpkR0Z5ZEhOQmRDQThQU0JoZENrZ0ppWmNiaUFnSUNBZ0lDQWdLQ0Z3WlhKdGFYTnphVzl1TG1WNGNHbHlaWE5CZENCOGZDQWhZWFFnZkh3Z2NHVnliV2x6YzJsdmJpNWxlSEJwY21WelFYUWdQajBnWVhRcFhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdSbGJHVjBaVVp2Y2xCeWFXNWphWEJoYkNoMFpXNWhiblJKWkRvZ2MzUnlhVzVuTENCd2NtbHVZMmx3WVd4SlpEb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnY205M0lHOW1JR0YzWVdsMElIUm9hWE11YkdsemRFWnZjbEJ5YVc1amFYQmhiQ2gwWlc1aGJuUkpaQ3dnY0hKcGJtTnBjR0ZzU1dRc0lDNHVMbUZ5WjNNcEtTQjdYRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbVJsYkdWMFpVSjVTV1FvY205M0xtbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QmtaV3hsZEdWR2IzSlVaVzVoYm5Rb2RHVnVZVzUwU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSEp2ZHlCdlppQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFFXeHNLQzR1TG1GeVozTXBLUzVtYVd4MFpYSW9LSEJsY20xcGMzTnBiMjRwSUQwK0lITmhiV1ZVWlc1aGJuUW9jR1Z5YldsemMybHZiaTUwWlc1aGJuUXNJSFJsYm1GdWRFbGtLU2twSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdVpHVnNaWFJsUW5sSlpDaHliM2N1YVdRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lFQjBjbUZ1YzJGamRHbHZibUZzS0NsY2JpQWdZWE41Ym1NZ2NtVmlkV2xzWkVadmNsQnlhVzVqYVhCaGJDaDBaVzVoYm5SSlpEb2djM1J5YVc1bkxDQndjbWx1WTJsd1lXeEpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThSV1ptWldOMGFYWmxVR1Z5YldsemMybHZibHRkUGlCN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1a1pXeGxkR1ZHYjNKUWNtbHVZMmx3WVd3b2RHVnVZVzUwU1dRc0lIQnlhVzVqYVhCaGJFbGtMQ0F1TGk1aGNtZHpLVHRjYmx4dUlDQWdJR052Ym5OMElISnZiR1ZCYzNOcFoyNXRaVzUwVTJWeWRtbGpaU0E5SUc1bGR5QlNiMnhsUVhOemFXZHViV1Z1ZEZObGNuWnBZMlVvS1R0Y2JpQWdJQ0JqYjI1emRDQnliMnhsVUdWeWJXbHpjMmx2YmxObGNuWnBZMlVnUFNCdVpYY2dVbTlzWlZCbGNtMXBjM05wYjI1VFpYSjJhV05sS0NrN1hHNGdJQ0FnWTI5dWMzUWdjR1Z5YldsemMybHZibE5sY25acFkyVWdQU0J1WlhjZ1VHVnliV2x6YzJsdmJsTmxjblpwWTJVb0tUdGNiaUFnSUNCamIyNXpkQ0JuY205MWNFMWxiV0psY25Ob2FYQlRaWEoyYVdObElEMGdibVYzSUVkeWIzVndUV1Z0WW1WeWMyaHBjRk5sY25acFkyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCd2NtbHVZMmx3WVd4VFpYSjJhV05sSUQwZ2JtVjNJRkJ5YVc1amFYQmhiRk5sY25acFkyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCdmNtZFZibWwwUTJ4dmMzVnlaVk5sY25acFkyVWdQU0J1WlhjZ1QzSm5WVzVwZEVOc2IzTjFjbVZUWlhKMmFXTmxLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2FXNW9aWEpwZEdGdVkyVkNiRzlqYTFObGNuWnBZMlVnUFNCdVpYY2dTVzVvWlhKcGRHRnVZMlZDYkc5amExTmxjblpwWTJVb0tUdGNibHh1SUNBZ0lHTnZibk4wSUcxaGRHVnlhV0ZzYVhwbFpEb2dSV1ptWldOMGFYWmxVR1Z5YldsemMybHZibE51WVhCemFHOTBXMTBnUFNCYlhUdGNiaUFnSUNCamIyNXpkQ0J6YjNWeVkyVkJjM05wWjI1dFpXNTBjeUE5SUdGM1lXbDBJSEp2YkdWQmMzTnBaMjV0Wlc1MFUyVnlkbWxqWlM1c2FYTjBVSEpwYm1OcGNHRnNRWE56YVdkdWJXVnVkSE1vZEdWdVlXNTBTV1FzSUhCeWFXNWphWEJoYkVsa0xDQXVMaTVoY21kektUdGNiaUFnSUNCamIyNXpkQ0JuY205MWNFMWxiV0psY25Ob2FYQnpJRDBnWVhkaGFYUWdaM0p2ZFhCTlpXMWlaWEp6YUdsd1UyVnlkbWxqWlM1c2FYTjBVSEpwYm1OcGNHRnNSM0p2ZFhCektIQnlhVzVqYVhCaGJFbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQmpiMjV6ZENCbmNtOTFjRUZ6YzJsbmJtMWxiblJ6SUQwZ0tGeHVJQ0FnSUNBZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b1hHNGdJQ0FnSUNBZ0lHZHliM1Z3VFdWdFltVnljMmhwY0hNdWJXRndLR0Z6ZVc1aklDaHRaVzFpWlhKemFHbHdLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1ozSnZkWEJRY21sdVkybHdZV3dnUFNCaGQyRnBkQ0J3Y21sdVkybHdZV3hUWlhKMmFXTmxMbWRsZEVkeWIzVndVSEpwYm1OcGNHRnNLSEpsYkdGMGFXOXVTV1FvYldWdFltVnljMmhwY0M1MFpXNWhiblFwTENCeVpXeGhkR2x2Ymtsa0tHMWxiV0psY25Ob2FYQXVaM0p2ZFhBcExDQXVMaTVoY21kektUdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbTlzWlVGemMybG5ibTFsYm5SVFpYSjJhV05sTG14cGMzUlFjbWx1WTJsd1lXeEJjM05wWjI1dFpXNTBjeWgwWlc1aGJuUkpaQ3dnWjNKdmRYQlFjbWx1WTJsd1lXd3VhV1FzSUM0dUxtRnlaM01wTzF4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrdVpteGhkQ2dwTzF4dVhHNGdJQ0FnWTI5dWMzUWdZWE56YVdkdWJXVnVkSE1nUFNCYkxpNHVjMjkxY21ObFFYTnphV2R1YldWdWRITXNJQzR1TG1keWIzVndRWE56YVdkdWJXVnVkSE5kTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWVhOemFXZHViV1Z1ZENCdlppQmhjM05wWjI1dFpXNTBjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjbTlzWlZCbGNtMXBjM05wYjI1eklEMGdZWGRoYVhRZ2NtOXNaVkJsY20xcGMzTnBiMjVUWlhKMmFXTmxMbXhwYzNSU2IyeGxVR1Z5YldsemMybHZibk1vY21Wc1lYUnBiMjVKWkNoaGMzTnBaMjV0Wlc1MExuSnZiR1VwTENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEJsY20xcGMzTnBiMjV6SUQwZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b1hHNGdJQ0FnSUNBZ0lISnZiR1ZRWlhKdGFYTnphVzl1Y3k1dFlYQW9ZWE41Ym1NZ0tISnZiR1ZRWlhKdGFYTnphVzl1S1NBOVBseHVJQ0FnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjVUWlhKMmFXTmxMbVpwYm1SUGJtVkNlU2hjSW1sa1hDSXNJSEpsYkdGMGFXOXVTV1FvY205c1pWQmxjbTFwYzNOcGIyNHVjR1Z5YldsemMybHZiaWtnWVhNZ2JtVjJaWElzSUM0dUxtRnlaM01wWEc0Z0lDQWdJQ0FnSUNsY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElIQmxjbTFwYzNOcGIyNGdiMllnY0dWeWJXbHpjMmx2Ym5NcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGd1pYSnRhWE56YVc5dUtTQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyTnZjR1ZMYVc1a0lEMGdZWE56YVdkdWJXVnVkQzV6WTI5d1pVdHBibVE3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5qYjNCbFNXUWdQU0JoYzNOcFoyNXRaVzUwTG5OamIzQmxTV1E3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5qYjNCbGN6b2dRWEp5WVhrOGV5QnpZMjl3WlV0cGJtUTZJRk5qYjNCbFMybHVaRHNnYzJOdmNHVkpaRG9nYzNSeWFXNW5JSDArSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJR2xtSUNoelkyOXdaVXRwYm1RZ1BUMDlJRk5qYjNCbFMybHVaQzVVWlc1aGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCelkyOXdaWE11Y0hWemFDaDdJSE5qYjNCbFMybHVaQ3dnYzJOdmNHVkpaRG9nZEdWdVlXNTBTV1FnZlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jMk52Y0dWTGFXNWtJRDA5UFNCVFkyOXdaVXRwYm1RdVVtVnpiM1Z5WTJVcElIdGNiaUFnSUNBZ0lDQWdJQ0J6WTI5d1pYTXVjSFZ6YUNoN0lITmpiM0JsUzJsdVpDd2djMk52Y0dWSlpDQjlLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoelkyOXdaVXRwYm1RZ1BUMDlJRk5qYjNCbFMybHVaQzVQY21kVmJtbDBJQ1ltSUNGaGMzTnBaMjV0Wlc1MExtbHVhR1Z5YVhSRWIzZHVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2MyTnZjR1Z6TG5CMWMyZ29leUJ6WTI5d1pVdHBibVFzSUhOamIzQmxTV1FnZlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jMk52Y0dWTGFXNWtJRDA5UFNCVFkyOXdaVXRwYm1RdVQzSm5WVzVwZENBbUppQmhjM05wWjI1dFpXNTBMbWx1YUdWeWFYUkViM2R1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pHVnpZMlZ1WkdGdWRITWdQU0JoZDJGcGRDQnZjbWRWYm1sMFEyeHZjM1Z5WlZObGNuWnBZMlV1YkdsemRFUmxjMk5sYm1SaGJuUnpLSFJsYm1GdWRFbGtMQ0J6WTI5d1pVbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQWdJQ0FnSUNCelkyOXdaWE11Y0hWemFDZ3VMaTVrWlhOalpXNWtZVzUwY3k1dFlYQW9LSEp2ZHlrZ1BUNGdLSHNnYzJOdmNHVkxhVzVrTENCelkyOXdaVWxrT2lCeVpXeGhkR2x2Ymtsa0tISnZkeTVrWlhOalpXNWtZVzUwS1NCOUtTa3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnpZMjl3WldRZ2IyWWdjMk52Y0dWektTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzJOdmNHVkxhVzVrSUQwOVBTQlRZMjl3WlV0cGJtUXVUM0puVlc1cGRDQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ1lYTnphV2R1YldWdWRDNXBibWhsY21sMFJHOTNiaUFtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWa0xuTmpiM0JsU1dRZ0lUMDlJSE5qYjNCbFNXUWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDaGhkMkZwZENCcGJtaGxjbWwwWVc1alpVSnNiMk5yVTJWeWRtbGpaUzVqWVhSbFoyOXllVUpzYjJOclpXUkdiM0pCYm1ObGMzUnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkR1Z1WVc1MFNXUXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsWkM1elkyOXdaVWxrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J6WTI5d1pVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVMbU5oZEdWbmIzSjVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTVoY21kelhHNGdJQ0FnSUNBZ0lDQWdJQ0FwS1Z4dUlDQWdJQ0FnSUNBZ0lDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUcxaGRHVnlhV0ZzYVhwbFpDNXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xrT2lCY0lsd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHVnVZVzUwU1dRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y21sdVkybHdZV3hKWkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjVMWlhrNklIQmxjbTFwYzNOcGIyNHVhMlY1TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWTGFXNWtPaUJ6WTI5d1pXUXVjMk52Y0dWTGFXNWtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyTnZjR1ZKWkRvZ2MyTnZjR1ZrTG5OamIzQmxTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpiM1Z5WTJWTGFXNWtPaUJjSW5KdmJHVmZZWE56YVdkdWJXVnVkRndpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMjkxY21ObFNXUTZJR0Z6YzJsbmJtMWxiblF1YVdRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGeWRITkJkRG9nWVhOemFXZHViV1Z1ZEM1emRHRnlkSE5CZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Y0Y0dseVpYTkJkRG9nWVhOemFXZHViV1Z1ZEM1bGVIQnBjbVZ6UVhRc1hHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQmpjbVZoZEdWa0lEMGdZWGRoYVhRZ1VISnZiV2x6WlM1aGJHd29YRzRnSUNBZ0lDQnRZWFJsY21saGJHbDZaV1F1YldGd0tDaHdaWEp0YVhOemFXOXVLU0E5UGx4dUlDQWdJQ0FnSUNCMGFHbHpMbU55WldGMFpTaGNiaUFnSUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBaVzVoYm5RNklIQmxjbTFwYzNOcGIyNHVkR1Z1WVc1MFNXUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtbHVZMmx3WVd3NklIQmxjbTFwYzNOcGIyNHVjSEpwYm1OcGNHRnNTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVTMlY1T2lCd1pYSnRhWE56YVc5dUxuQmxjbTFwYzNOcGIyNUxaWGtzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpZMjl3WlV0cGJtUTZJSEJsY20xcGMzTnBiMjR1YzJOdmNHVkxhVzVrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWSlpEb2djR1Z5YldsemMybHZiaTV6WTI5d1pVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyOTFjbU5sUzJsdVpEb2djR1Z5YldsemMybHZiaTV6YjNWeVkyVkxhVzVrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMjkxY21ObFNXUTZJSEJsY20xcGMzTnBiMjR1YzI5MWNtTmxTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkR0Z5ZEhOQmREb2djR1Z5YldsemMybHZiaTV6ZEdGeWRITkJkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRjR2x5WlhOQmREb2djR1Z5YldsemMybHZiaTVsZUhCcGNtVnpRWFFzWEc0Z0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0lDQWdJQ2xjYmlBZ0lDQWdJQ2xjYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlCamNtVmhkR1ZrTzF4dUlDQjlYRzVjYmlBZ1FIUnlZVzV6WVdOMGFXOXVZV3dvS1Z4dUlDQmhjM2x1WXlCeVpXSjFhV3hrUm05eVZHVnVZVzUwS0hSbGJtRnVkRWxrT2lCemRISnBibWNzSUM0dUxtRnlaM002SUdGdWVWdGRLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnY0hKcGJtTnBjR0ZzY3lBOUlDaGhkMkZwZENCdVpYY2dVSEpwYm1OcGNHRnNVMlZ5ZG1salpTZ3BMbXhwYzNSQmJHd29MaTR1WVhKbmN5a3BMbVpwYkhSbGNpZ29jSEpwYm1OcGNHRnNLU0E5UGlCellXMWxWR1Z1WVc1MEtIQnlhVzVqYVhCaGJDNTBaVzVoYm5Rc0lIUmxibUZ1ZEVsa0tTazdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQndjbWx1WTJsd1lXd2diMllnY0hKcGJtTnBjR0ZzY3lrZ2UxeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXlaV0oxYVd4a1JtOXlVSEpwYm1OcGNHRnNLSFJsYm1GdWRFbGtMQ0J3Y21sdVkybHdZV3d1YVdRc0lDNHVMbUZ5WjNNcE8xeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlsMTkiXX0=
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupMembershipService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const group_membership_model_1 = require("../models/group-membership.model");
6
+ const principal_service_1 = require("./principal.service");
7
+ class GroupMembershipService extends utils_js_1.BaseModelService {
8
+ constructor() {
9
+ super(group_membership_model_1.GroupMembership);
10
+ }
11
+ async addPrincipalToGroup(tenantId, groupId, principalId, metadata, ...args) {
12
+ return this.create({
13
+ tenant: tenantId,
14
+ group: groupId,
15
+ principal: principalId,
16
+ metadata,
17
+ }, ...args);
18
+ }
19
+ async listGroupMembers(groupId, ...args) {
20
+ return (await this.listAll(...args)).filter((membership) => (0, utils_js_1.relationMatch)(membership.group, groupId));
21
+ }
22
+ async listPrincipalGroups(principalId, ...args) {
23
+ return (await this.listAll(...args)).filter((membership) => (0, utils_js_1.relationMatch)(membership.principal, principalId));
24
+ }
25
+ async removePrincipalFromGroup(membershipId, ...args) {
26
+ await this.deleteById(membershipId, ...args);
27
+ }
28
+ async resolveGroupPrincipalIdsForPrincipal(principalId, ...args) {
29
+ const principalService = new principal_service_1.PrincipalService();
30
+ const memberships = await this.listPrincipalGroups(principalId, ...args);
31
+ const principals = await Promise.all(memberships.map(async (membership) => {
32
+ const tenantId = (0, utils_js_1.relationId)(membership.tenant);
33
+ const groupId = (0, utils_js_1.relationId)(membership.group);
34
+ const principal = await principalService.getGroupPrincipal(tenantId, groupId, ...args);
35
+ return principal.id;
36
+ }));
37
+ return principals;
38
+ }
39
+ }
40
+ exports.GroupMembershipService = GroupMembershipService;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLHNCQUFpQjtBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGdCQUFpQztJQUMzRTtRQUNFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixRQUFnQixFQUNoQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsUUFBa0MsRUFDbEMsR0FBRyxJQUFXO1FBRWQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQjtZQUNFLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLFdBQVc7WUFDdEIsUUFBUTtTQUNULEVBQ0QsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNwRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFtQixFQUFFLEdBQUcsSUFBVztRQUMzRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxZQUFvQixFQUFFLEdBQUcsSUFBVztRQUNqRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFtQixFQUFFLEdBQUcsSUFBVztRQUM1RSxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2xDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ25DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN2RixPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbFNlcnZpY2UsIHJlbGF0aW9uSWQsIHJlbGF0aW9uTWF0Y2ggfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEdyb3VwTWVtYmVyc2hpcCB9IGZyb20gXCIuLi9tb2RlbHMvZ3JvdXAtbWVtYmVyc2hpcC5tb2RlbFwiO1xuaW1wb3J0IHsgUHJpbmNpcGFsU2VydmljZSB9IGZyb20gXCIuL3ByaW5jaXBhbC5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNoaXBTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxHcm91cE1lbWJlcnNoaXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR3JvdXBNZW1iZXJzaGlwKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFByaW5jaXBhbFRvR3JvdXAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBncm91cElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8R3JvdXBNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBncm91cDogZ3JvdXBJZCxcbiAgICAgICAgcHJpbmNpcGFsOiBwcmluY2lwYWxJZCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0R3JvdXBNZW1iZXJzKGdyb3VwSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwTWVtYmVyc2hpcFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLmdyb3VwLCBncm91cElkKSk7XG4gIH1cblxuICBhc3luYyBsaXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxHcm91cE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+IHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC5wcmluY2lwYWwsIHByaW5jaXBhbElkKSk7XG4gIH1cblxuICBhc3luYyByZW1vdmVQcmluY2lwYWxGcm9tR3JvdXAobWVtYmVyc2hpcElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKG1lbWJlcnNoaXBJZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyByZXNvbHZlR3JvdXBQcmluY2lwYWxJZHNGb3JQcmluY2lwYWwocHJpbmNpcGFsSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgY29uc3QgbWVtYmVyc2hpcHMgPSBhd2FpdCB0aGlzLmxpc3RQcmluY2lwYWxHcm91cHMocHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IHByaW5jaXBhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW5hbnRJZCA9IHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpO1xuICAgICAgICBjb25zdCBncm91cElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKTtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFsID0gYXdhaXQgcHJpbmNpcGFsU2VydmljZS5nZXRHcm91cFByaW5jaXBhbCh0ZW5hbnRJZCwgZ3JvdXBJZCwgLi4uYXJncyk7XG4gICAgICAgIHJldHVybiBwcmluY2lwYWwuaWQ7XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHByaW5jaXBhbHM7XG4gIH1cbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUE0RTtBQUM1RSw2RUFBbUU7QUFDbkUsMkRBQXVEO0FBQ3ZELE1BQWEsc0JBQXVCLFNBQVEsMkJBQWdCO0lBQ3hEO1FBQ0ksS0FBSyxDQUFDLHdDQUFlLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDdkUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2YsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLE9BQU87WUFDZCxTQUFTLEVBQUUsV0FBVztZQUN0QixRQUFRO1NBQ1gsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNuQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQWEsRUFBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJO1FBQzFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBYSxFQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBQ0QsS0FBSyxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxHQUFHLElBQUk7UUFDaEQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxLQUFLLENBQUMsb0NBQW9DLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSTtRQUMzRCxNQUFNLGdCQUFnQixHQUFHLElBQUksb0NBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBQSxxQkFBVSxFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHFCQUFVLEVBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKO0FBaENELHdEQWdDQztBQUNELDB5SkFBMHlKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25JZCwgcmVsYXRpb25NYXRjaCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBHcm91cE1lbWJlcnNoaXAgfSBmcm9tIFwiLi4vbW9kZWxzL2dyb3VwLW1lbWJlcnNoaXAubW9kZWxcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuZXhwb3J0IGNsYXNzIEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoR3JvdXBNZW1iZXJzaGlwKTtcbiAgICB9XG4gICAgYXN5bmMgYWRkUHJpbmNpcGFsVG9Hcm91cCh0ZW5hbnRJZCwgZ3JvdXBJZCwgcHJpbmNpcGFsSWQsIG1ldGFkYXRhLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgZ3JvdXA6IGdyb3VwSWQsXG4gICAgICAgICAgICBwcmluY2lwYWw6IHByaW5jaXBhbElkLFxuICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0R3JvdXBNZW1iZXJzKGdyb3VwSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLmdyb3VwLCBncm91cElkKSk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RQcmluY2lwYWxHcm91cHMocHJpbmNpcGFsSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT4gcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpKTtcbiAgICB9XG4gICAgYXN5bmMgcmVtb3ZlUHJpbmNpcGFsRnJvbUdyb3VwKG1lbWJlcnNoaXBJZCwgLi4uYXJncykge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQobWVtYmVyc2hpcElkLCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZUdyb3VwUHJpbmNpcGFsSWRzRm9yUHJpbmNpcGFsKHByaW5jaXBhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbFNlcnZpY2UgPSBuZXcgUHJpbmNpcGFsU2VydmljZSgpO1xuICAgICAgICBjb25zdCBtZW1iZXJzaGlwcyA9IGF3YWl0IHRoaXMubGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChtZW1iZXJzaGlwcy5tYXAoYXN5bmMgKG1lbWJlcnNoaXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlbmFudElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLnRlbmFudCk7XG4gICAgICAgICAgICBjb25zdCBncm91cElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKTtcbiAgICAgICAgICAgIGNvbnN0IHByaW5jaXBhbCA9IGF3YWl0IHByaW5jaXBhbFNlcnZpY2UuZ2V0R3JvdXBQcmluY2lwYWwodGVuYW50SWQsIGdyb3VwSWQsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgcmV0dXJuIHByaW5jaXBhbC5pZDtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gcHJpbmNpcGFscztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laM0p2ZFhBdGJXVnRZbVZ5YzJocGNDNXpaWEoyYVdObExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMjVoYldWemNHRmpaWE12YzJWeWRtbGpaWE12WjNKdmRYQXRiV1Z0WW1WeWMyaHBjQzV6WlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hWUVVGVkxFVkJRVVVzWVVGQllTeEZRVUZGTEhOQ1FVRnBRanRCUVVOMlJTeFBRVUZQTEVWQlFVVXNaVUZCWlN4RlFVRkZMRTFCUVUwc2EwTkJRV3RETEVOQlFVTTdRVUZEYmtVc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMRTFCUVUwc2NVSkJRWEZDTEVOQlFVTTdRVUZGZGtRc1RVRkJUU3hQUVVGUExITkNRVUYxUWl4VFFVRlJMR2RDUVVGcFF6dEpRVU16UlR0UlFVTkZMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dEpRVU42UWl4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4RFFVTjJRaXhSUVVGblFpeEZRVU5vUWl4UFFVRmxMRVZCUTJZc1YwRkJiVUlzUlVGRGJrSXNVVUZCYTBNc1JVRkRiRU1zUjBGQlJ5eEpRVUZYTzFGQlJXUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVOb1FqdFpRVU5GTEUxQlFVMHNSVUZCUlN4UlFVRlJPMWxCUTJoQ0xFdEJRVXNzUlVGQlJTeFBRVUZQTzFsQlEyUXNVMEZCVXl4RlFVRkZMRmRCUVZjN1dVRkRkRUlzVVVGQlVUdFRRVU5VTEVWQlEwUXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVDBGQlpTeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTndSQ3hQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFY3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4WFFVRnRRaXhGUVVGRkxFZEJRVWNzU1VGQlZ6dFJRVU16UkN4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRhRWdzUTBGQlF6dEpRVVZFTEV0QlFVc3NRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFpRVUZ2UWl4RlFVRkZMRWRCUVVjc1NVRkJWenRSUVVOcVJTeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETDBNc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eHZRMEZCYjBNc1EwRkJReXhYUVVGdFFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTTFSU3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0UlFVTm9SQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFhRVUZYTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVONlJTeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRMnhETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxGVkJRVlVzUlVGQlJTeEZRVUZGTzFsQlEyNURMRTFCUVUwc1VVRkJVU3hIUVVGSExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRMME1zVFVGQlRTeFBRVUZQTEVkQlFVY3NWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU0zUXl4TlFVRk5MRk5CUVZNc1IwRkJSeXhOUVVGTkxHZENRVUZuUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEZGQlFWRXNSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU4yUml4UFFVRlBMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGRFSXNRMEZCUXl4RFFVRkRMRU5CUTBnc1EwRkJRenRSUVVOR0xFOUJRVThzVlVGQlZTeERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUVKaGMyVk5iMlJsYkZObGNuWnBZMlVzSUhKbGJHRjBhVzl1U1dRc0lISmxiR0YwYVc5dVRXRjBZMmdnZlNCbWNtOXRJRndpTGk0dmRYUnBiSE5jSWp0Y2JtbHRjRzl5ZENCN0lFZHliM1Z3VFdWdFltVnljMmhwY0NCOUlHWnliMjBnWENJdUxpOXRiMlJsYkhNdlozSnZkWEF0YldWdFltVnljMmhwY0M1dGIyUmxiRndpTzF4dWFXMXdiM0owSUhzZ1VISnBibU5wY0dGc1UyVnlkbWxqWlNCOUlHWnliMjBnWENJdUwzQnlhVzVqYVhCaGJDNXpaWEoyYVdObFhDSTdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkhjbTkxY0UxbGJXSmxjbk5vYVhCVFpYSjJhV05sSUdWNGRHVnVaSE1nUW1GelpVMXZaR1ZzVTJWeWRtbGpaVHhIY205MWNFMWxiV0psY25Ob2FYQStJSHRjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb1IzSnZkWEJOWlcxaVpYSnphR2x3S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUdGa1pGQnlhVzVqYVhCaGJGUnZSM0p2ZFhBb1hHNGdJQ0FnZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXhjYmlBZ0lDQm5jbTkxY0Vsa09pQnpkSEpwYm1jc1hHNGdJQ0FnY0hKcGJtTnBjR0ZzU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J0WlhSaFpHRjBZVDg2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJSFZ1YTI1dmQyNCtMRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThSM0p2ZFhCTlpXMWlaWEp6YUdsd1BpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZM0psWVhSbEtGeHVJQ0FnSUNBZ2UxeHVJQ0FnSUNBZ0lDQjBaVzVoYm5RNklIUmxibUZ1ZEVsa0xGeHVJQ0FnSUNBZ0lDQm5jbTkxY0RvZ1ozSnZkWEJKWkN4Y2JpQWdJQ0FnSUNBZ2NISnBibU5wY0dGc09pQndjbWx1WTJsd1lXeEpaQ3hjYmlBZ0lDQWdJQ0FnYldWMFlXUmhkR0VzWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnTGk0dVlYSm5jMXh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnNhWE4wUjNKdmRYQk5aVzFpWlhKektHZHliM1Z3U1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEVkeWIzVndUV1Z0WW1WeWMyaHBjRnRkUGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hoZDJGcGRDQjBhR2x6TG14cGMzUkJiR3dvTGk0dVlYSm5jeWtwTG1acGJIUmxjaWdvYldWdFltVnljMmhwY0NrZ1BUNGdjbVZzWVhScGIyNU5ZWFJqYUNodFpXMWlaWEp6YUdsd0xtZHliM1Z3TENCbmNtOTFjRWxrS1NrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCc2FYTjBVSEpwYm1OcGNHRnNSM0p2ZFhCektIQnlhVzVqYVhCaGJFbGtPaUJ6ZEhKcGJtY3NJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeEhjbTkxY0UxbGJXSmxjbk5vYVhCYlhUNGdlMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXNhWE4wUVd4c0tDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tHMWxiV0psY25Ob2FYQXBJRDArSUhKbGJHRjBhVzl1VFdGMFkyZ29iV1Z0WW1WeWMyaHBjQzV3Y21sdVkybHdZV3dzSUhCeWFXNWphWEJoYkVsa0tTazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnlaVzF2ZG1WUWNtbHVZMmx3WVd4R2NtOXRSM0p2ZFhBb2JXVnRZbVZ5YzJocGNFbGtPaUJ6ZEhKcGJtY3NJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeDJiMmxrUGlCN1hHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1a1pXeGxkR1ZDZVVsa0tHMWxiV0psY25Ob2FYQkpaQ3dnTGk0dVlYSm5jeWs3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJ5WlhOdmJIWmxSM0p2ZFhCUWNtbHVZMmx3WVd4SlpITkdiM0pRY21sdVkybHdZV3dvY0hKcGJtTnBjR0ZzU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEhOMGNtbHVaMXRkUGlCN1hHNGdJQ0FnWTI5dWMzUWdjSEpwYm1OcGNHRnNVMlZ5ZG1salpTQTlJRzVsZHlCUWNtbHVZMmx3WVd4VFpYSjJhV05sS0NrN1hHNGdJQ0FnWTI5dWMzUWdiV1Z0WW1WeWMyaHBjSE1nUFNCaGQyRnBkQ0IwYUdsekxteHBjM1JRY21sdVkybHdZV3hIY205MWNITW9jSEpwYm1OcGNHRnNTV1FzSUM0dUxtRnlaM01wTzF4dUlDQWdJR052Ym5OMElIQnlhVzVqYVhCaGJITWdQU0JoZDJGcGRDQlFjbTl0YVhObExtRnNiQ2hjYmlBZ0lDQWdJRzFsYldKbGNuTm9hWEJ6TG0xaGNDaGhjM2x1WXlBb2JXVnRZbVZ5YzJocGNDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwWlc1aGJuUkpaQ0E5SUhKbGJHRjBhVzl1U1dRb2JXVnRZbVZ5YzJocGNDNTBaVzVoYm5RcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCbmNtOTFjRWxrSUQwZ2NtVnNZWFJwYjI1SlpDaHRaVzFpWlhKemFHbHdMbWR5YjNWd0tUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NISnBibU5wY0dGc0lEMGdZWGRoYVhRZ2NISnBibU5wY0dGc1UyVnlkbWxqWlM1blpYUkhjbTkxY0ZCeWFXNWphWEJoYkNoMFpXNWhiblJKWkN3Z1ozSnZkWEJKWkN3Z0xpNHVZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCd2NtbHVZMmx3WVd3dWFXUTdYRzRnSUNBZ0lDQjlLVnh1SUNBZ0lDazdYRzRnSUNBZ2NtVjBkWEp1SUhCeWFXNWphWEJoYkhNN1hHNGdJSDFjYm4xY2JpSmRmUT09Il19
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const group_model_1 = require("../models/group.model");
6
+ class GroupService extends utils_js_1.BaseModelService {
7
+ constructor() {
8
+ super(group_model_1.Group);
9
+ }
10
+ async createGroup(tenantId, name, orgUnitId, metadata, ...args) {
11
+ return this.create({
12
+ tenant: tenantId,
13
+ orgUnit: orgUnitId,
14
+ name,
15
+ metadata,
16
+ }, ...args);
17
+ }
18
+ async renameGroup(groupId, name, ...args) {
19
+ return this.updateOne(groupId, { name }, ...args);
20
+ }
21
+ async moveGroupToOrgUnit(groupId, orgUnitId, ...args) {
22
+ return this.updateOne(groupId, { orgUnit: orgUnitId }, ...args);
23
+ }
24
+ async listTenantGroups(tenantId, ...args) {
25
+ return (await this.listAll(...args)).filter((group) => (0, utils_js_1.sameTenant)(group.tenant, tenantId));
26
+ }
27
+ }
28
+ exports.GroupService = GroupService;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2dyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxzQkFBaUI7QUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQXVCO0lBQ3ZEO1FBQ0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsUUFBZ0IsRUFDaEIsSUFBWSxFQUNaLFNBQWtCLEVBQ2xCLFFBQWtDLEVBQ2xDLEdBQUcsSUFBVztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEI7WUFDRSxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJO1lBQ0osUUFBUTtTQUNULEVBQ0QsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQWUsRUFBRSxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQzdELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFNBQTZCLEVBQUUsR0FBRyxJQUFXO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsR0FBRyxJQUFXO1FBQ3JELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBzYW1lVGVuYW50IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvZ3JvdXAubW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8R3JvdXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR3JvdXApO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlR3JvdXAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkPzogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlbmFtZUdyb3VwKGdyb3VwSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8R3JvdXA+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUoZ3JvdXBJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbW92ZUdyb3VwVG9PcmdVbml0KGdyb3VwSWQ6IHN0cmluZywgb3JnVW5pdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShncm91cElkLCB7IG9yZ1VuaXQ6IG9yZ1VuaXRJZCB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRHcm91cHModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncm91cCkgPT4gc2FtZVRlbmFudChncm91cC50ZW5hbnQsIHRlbmFudElkKSk7XG4gIH1cbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdyb3VwLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQTZEO0FBQzdELHVEQUE4QztBQUM5QyxNQUFhLFlBQWEsU0FBUSwyQkFBZ0I7SUFDOUM7UUFDSSxLQUFLLENBQUMsbUJBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2YsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSTtZQUNKLFFBQVE7U0FDWCxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUk7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSTtRQUNoRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJO1FBQ3BDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBVSxFQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0NBQ0o7QUFyQkQsb0NBcUJDO0FBQ0QsazJGQUFrMkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCBzYW1lVGVuYW50IH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSBcIi4uL21vZGVscy9ncm91cC5tb2RlbFwiO1xuZXhwb3J0IGNsYXNzIEdyb3VwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihHcm91cCk7XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZUdyb3VwKHRlbmFudElkLCBuYW1lLCBvcmdVbml0SWQsIG1ldGFkYXRhLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVuYW1lR3JvdXAoZ3JvdXBJZCwgbmFtZSwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUoZ3JvdXBJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBtb3ZlR3JvdXBUb09yZ1VuaXQoZ3JvdXBJZCwgb3JnVW5pdElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShncm91cElkLCB7IG9yZ1VuaXQ6IG9yZ1VuaXRJZCB9LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdFRlbmFudEdyb3Vwcyh0ZW5hbnRJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncm91cCkgPT4gc2FtZVRlbmFudChncm91cC50ZW5hbnQsIHRlbmFudElkKSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjNKdmRYQXVjMlZ5ZG1salpTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTl1WVcxbGMzQmhZMlZ6TDNObGNuWnBZMlZ6TDJkeWIzVndMbk5sY25acFkyVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMRlZCUVZVc1JVRkJSU3h6UWtGQmFVSTdRVUZEZUVRc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeE5RVUZOTEhWQ1FVRjFRaXhEUVVGRE8wRkJSVGxETEUxQlFVMHNUMEZCVHl4WlFVRmhMRk5CUVZFc1owSkJRWFZDTzBsQlEzWkVPMUZCUTBVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRMllzVVVGQlowSXNSVUZEYUVJc1NVRkJXU3hGUVVOYUxGTkJRV3RDTEVWQlEyeENMRkZCUVd0RExFVkJRMnhETEVkQlFVY3NTVUZCVnp0UlFVVmtMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGRGFFSTdXVUZEUlN4TlFVRk5MRVZCUVVVc1VVRkJVVHRaUVVOb1FpeFBRVUZQTEVWQlFVVXNVMEZCVXp0WlFVTnNRaXhKUVVGSk8xbEJRMG9zVVVGQlVUdFRRVU5VTEVWQlEwUXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVdVc1JVRkJSU3hKUVVGWkxFVkJRVVVzUjBGQlJ5eEpRVUZYTzFGQlF6ZEVMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEzQkVMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1QwRkJaU3hGUVVGRkxGTkJRVFpDTEVWQlFVVXNSMEZCUnl4SlFVRlhPMUZCUTNKR0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSU3hQUVVGUExFVkJRVVVzVTBGQlV5eEZRVUZGTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1JTeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEZGQlFXZENMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRM0pFTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTTNSaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCQ1lYTmxUVzlrWld4VFpYSjJhV05sTENCellXMWxWR1Z1WVc1MElIMGdabkp2YlNCY0lpNHVMM1YwYVd4elhDSTdYRzVwYlhCdmNuUWdleUJIY205MWNDQjlJR1p5YjIwZ1hDSXVMaTl0YjJSbGJITXZaM0p2ZFhBdWJXOWtaV3hjSWp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVkeWIzVndVMlZ5ZG1salpTQmxlSFJsYm1SeklFSmhjMlZOYjJSbGJGTmxjblpwWTJVOFIzSnZkWEErSUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvS1NCN1hHNGdJQ0FnYzNWd1pYSW9SM0p2ZFhBcE8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ1kzSmxZWFJsUjNKdmRYQW9YRzRnSUNBZ2RHVnVZVzUwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J1WVcxbE9pQnpkSEpwYm1jc1hHNGdJQ0FnYjNKblZXNXBkRWxrUHpvZ2MzUnlhVzVuTEZ4dUlDQWdJRzFsZEdGa1lYUmhQem9nVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeEhjbTkxY0Q0Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnlaV0YwWlNoY2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ2RHVnVZVzUwT2lCMFpXNWhiblJKWkN4Y2JpQWdJQ0FnSUNBZ2IzSm5WVzVwZERvZ2IzSm5WVzVwZEVsa0xGeHVJQ0FnSUNBZ0lDQnVZVzFsTEZ4dUlDQWdJQ0FnSUNCdFpYUmhaR0YwWVN4Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBdUxpNWhjbWR6WEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJSEpsYm1GdFpVZHliM1Z3S0dkeWIzVndTV1E2SUhOMGNtbHVaeXdnYm1GdFpUb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOFIzSnZkWEErSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MWNHUmhkR1ZQYm1Vb1ozSnZkWEJKWkN3Z2V5QnVZVzFsSUgwc0lDNHVMbUZ5WjNNcE8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2JXOTJaVWR5YjNWd1ZHOVBjbWRWYm1sMEtHZHliM1Z3U1dRNklITjBjbWx1Wnl3Z2IzSm5WVzVwZEVsa09pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUXNJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeEhjbTkxY0Q0Z2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuVndaR0YwWlU5dVpTaG5jbTkxY0Vsa0xDQjdJRzl5WjFWdWFYUTZJRzl5WjFWdWFYUkpaQ0I5TENBdUxpNWhjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUd4cGMzUlVaVzVoYm5SSGNtOTFjSE1vZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXdnTGk0dVlYSm5jem9nWVc1NVcxMHBPaUJRY205dGFYTmxQRWR5YjNWd1cxMCtJSHRjYmlBZ0lDQnlaWFIxY200Z0tHRjNZV2wwSUhSb2FYTXViR2x6ZEVGc2JDZ3VMaTVoY21kektTa3VabWxzZEdWeUtDaG5jbTkxY0NrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2huY205MWNDNTBaVzVoYm5Rc0lIUmxibUZ1ZEVsa0tTazdYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./tenant-profile.service"), exports);
18
+ __exportStar(require("./org-unit-profile.service"), exports);
19
+ __exportStar(require("./org-unit-closure.service"), exports);
20
+ __exportStar(require("./inheritance-block.service"), exports);
21
+ __exportStar(require("./tenant.service"), exports);
22
+ __exportStar(require("./org-unit.service"), exports);
23
+ __exportStar(require("./user.service"), exports);
24
+ __exportStar(require("./principal.service"), exports);
25
+ __exportStar(require("./tenant-membership.service"), exports);
26
+ __exportStar(require("./org-unit-membership.service"), exports);
27
+ __exportStar(require("./group.service"), exports);
28
+ __exportStar(require("./group-membership.service"), exports);
29
+ __exportStar(require("./permission.service"), exports);
30
+ __exportStar(require("./role.service"), exports);
31
+ __exportStar(require("./role-permission.service"), exports);
32
+ __exportStar(require("./role-assignment.service"), exports);
33
+ __exportStar(require("./effective-permission.service"), exports);
34
+ __exportStar(require("./protected-resource.service"), exports);
35
+ __exportStar(require("./resource-grant.service"), exports);
36
+ __exportStar(require("./resource-lifecycle.service"), exports);
37
+ __exportStar(require("./storage-binding.service"), exports);
38
+ __exportStar(require("./bootstrap.service"), exports);
39
+ __exportStar(require("./system-management.service"), exports);
40
+ __exportStar(require("./authz.service"), exports);
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFtZXNwYWNlcy9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3RlbmFudC1wcm9maWxlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LXByb2ZpbGUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnLXVuaXQtY2xvc3VyZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmhlcml0YW5jZS1ibG9jay5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW5hbnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnLXVuaXQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlci5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVuYW50LW1lbWJlcnNoaXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3JnLXVuaXQtbWVtYmVyc2hpcC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ncm91cC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ncm91cC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Blcm1pc3Npb24uc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb2xlLXBlcm1pc3Npb24uc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3RlY3RlZC1yZXNvdXJjZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZS1ncmFudC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZS1saWZlY3ljbGUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmFnZS1iaW5kaW5nLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Jvb3RzdHJhcC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdXRoei5zZXJ2aWNlXCI7XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQXlDO0FBQ3pDLDZEQUEyQztBQUMzQyw2REFBMkM7QUFDM0MsOERBQTRDO0FBQzVDLG1EQUFpQztBQUNqQyxxREFBbUM7QUFDbkMsaURBQStCO0FBQy9CLHNEQUFvQztBQUNwQyw4REFBNEM7QUFDNUMsZ0VBQThDO0FBQzlDLGtEQUFnQztBQUNoQyw2REFBMkM7QUFDM0MsdURBQXFDO0FBQ3JDLGlEQUErQjtBQUMvQiw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLGlFQUErQztBQUMvQywrREFBNkM7QUFDN0MsMkRBQXlDO0FBQ3pDLCtEQUE2QztBQUM3Qyw0REFBMEM7QUFDMUMsc0RBQW9DO0FBQ3BDLDhEQUE0QztBQUM1QyxrREFBZ0M7QUFDaEMsczFFQUFzMUUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90ZW5hbnQtcHJvZmlsZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcmctdW5pdC1wcm9maWxlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LWNsb3N1cmUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVuYW50LnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXIuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJpbmNpcGFsLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlbmFudC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29yZy11bml0LW1lbWJlcnNoaXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3JvdXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGUtYXNzaWdubWVudC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lZmZlY3RpdmUtcGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm90ZWN0ZWQtcmVzb3VyY2Uuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtZ3JhbnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtbGlmZWN5Y2xlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JhZ2UtYmluZGluZy5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ib290c3RyYXAuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3lzdGVtLW1hbmFnZW1lbnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0aHouc2VydmljZVwiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1a1pYZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12Ym1GdFpYTndZV05sY3k5elpYSjJhV05sY3k5cGJtUmxlQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeGpRVUZqTERCQ1FVRXdRaXhEUVVGRE8wRkJRM3BETEdOQlFXTXNORUpCUVRSQ0xFTkJRVU03UVVGRE0wTXNZMEZCWXl3MFFrRkJORUlzUTBGQlF6dEJRVU16UXl4alFVRmpMRFpDUVVFMlFpeERRVUZETzBGQlF6VkRMR05CUVdNc2EwSkJRV3RDTEVOQlFVTTdRVUZEYWtNc1kwRkJZeXh2UWtGQmIwSXNRMEZCUXp0QlFVTnVReXhqUVVGakxHZENRVUZuUWl4RFFVRkRPMEZCUXk5Q0xHTkJRV01zY1VKQlFYRkNMRU5CUVVNN1FVRkRjRU1zWTBGQll5dzJRa0ZCTmtJc1EwRkJRenRCUVVNMVF5eGpRVUZqTEN0Q1FVRXJRaXhEUVVGRE8wRkJRemxETEdOQlFXTXNhVUpCUVdsQ0xFTkJRVU03UVVGRGFFTXNZMEZCWXl3MFFrRkJORUlzUTBGQlF6dEJRVU16UXl4alFVRmpMSE5DUVVGelFpeERRVUZETzBGQlEzSkRMR05CUVdNc1owSkJRV2RDTEVOQlFVTTdRVUZETDBJc1kwRkJZeXd5UWtGQk1rSXNRMEZCUXp0QlFVTXhReXhqUVVGakxESkNRVUV5UWl4RFFVRkRPMEZCUXpGRExHTkJRV01zWjBOQlFXZERMRU5CUVVNN1FVRkRMME1zWTBGQll5dzRRa0ZCT0VJc1EwRkJRenRCUVVNM1F5eGpRVUZqTERCQ1FVRXdRaXhEUVVGRE8wRkJRM3BETEdOQlFXTXNPRUpCUVRoQ0xFTkJRVU03UVVGRE4wTXNZMEZCWXl3eVFrRkJNa0lzUTBGQlF6dEJRVU14UXl4alFVRmpMSEZDUVVGeFFpeERRVUZETzBGQlEzQkRMR05CUVdNc05rSkJRVFpDTEVOQlFVTTdRVUZETlVNc1kwRkJZeXhwUWtGQmFVSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzUmxibUZ1ZEMxd2NtOW1hV3hsTG5ObGNuWnBZMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwyOXlaeTExYm1sMExYQnliMlpwYkdVdWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZiM0puTFhWdWFYUXRZMnh2YzNWeVpTNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTlwYm1obGNtbDBZVzVqWlMxaWJHOWpheTV6WlhKMmFXTmxYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5MFpXNWhiblF1YzJWeWRtbGpaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmIzSm5MWFZ1YVhRdWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZkWE5sY2k1elpYSjJhV05sWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOXdjbWx1WTJsd1lXd3VjMlZ5ZG1salpWd2lPMXh1Wlhod2IzSjBJQ29nWm5KdmJTQmNJaTR2ZEdWdVlXNTBMVzFsYldKbGNuTm9hWEF1YzJWeWRtbGpaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmIzSm5MWFZ1YVhRdGJXVnRZbVZ5YzJocGNDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTluY205MWNDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTluY205MWNDMXRaVzFpWlhKemFHbHdMbk5sY25acFkyVmNJanRjYm1WNGNHOXlkQ0FxSUdaeWIyMGdYQ0l1TDNCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZjbTlzWlM1elpYSjJhV05sWENJN1hHNWxlSEJ2Y25RZ0tpQm1jbTl0SUZ3aUxpOXliMnhsTFhCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVaWGh3YjNKMElDb2dabkp2YlNCY0lpNHZjbTlzWlMxaGMzTnBaMjV0Wlc1MExuTmxjblpwWTJWY0lqdGNibVY0Y0c5eWRDQXFJR1p5YjIwZ1hDSXVMMlZtWm1WamRHbDJaUzF3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwzQnliM1JsWTNSbFpDMXlaWE52ZFhKalpTNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl5WlhOdmRYSmpaUzFuY21GdWRDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl5WlhOdmRYSmpaUzFzYVdabFkzbGpiR1V1YzJWeWRtbGpaVndpTzF4dVpYaHdiM0owSUNvZ1puSnZiU0JjSWk0dmMzUnZjbUZuWlMxaWFXNWthVzVuTG5ObGNuWnBZMlZjSWp0Y2JtVjRjRzl5ZENBcUlHWnliMjBnWENJdUwySnZiM1J6ZEhKaGNDNXpaWEoyYVdObFhDSTdYRzVsZUhCdmNuUWdLaUJtY205dElGd2lMaTl6ZVhOMFpXMHRiV0Z1WVdkbGJXVnVkQzV6WlhKMmFXTmxYQ0k3WEc1bGVIQnZjblFnS2lCbWNtOXRJRndpTGk5aGRYUm9laTV6WlhKMmFXTmxYQ0k3WEc0aVhYMD0iXX0=
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InheritanceBlockService = void 0;
4
+ const utils_js_1 = require("./../utils.cjs");
5
+ const inheritance_block_model_1 = require("../models/inheritance-block.model");
6
+ class InheritanceBlockService extends utils_js_1.BaseModelService {
7
+ constructor() {
8
+ super(inheritance_block_model_1.InheritanceBlock);
9
+ }
10
+ async blockCategory(tenantId, orgUnitId, permissionCategory, blockedFromAncestorId, reason, ...args) {
11
+ return this.create({
12
+ tenant: tenantId,
13
+ orgUnit: orgUnitId,
14
+ blockedFromAncestor: blockedFromAncestorId,
15
+ permissionCategory,
16
+ reason,
17
+ }, ...args);
18
+ }
19
+ async unblockCategory(blockId, ...args) {
20
+ await this.deleteById(blockId, ...args);
21
+ }
22
+ async listForOrgUnit(tenantId, orgUnitId, ...args) {
23
+ return (await this.listAll(...args)).filter((block) => (0, utils_js_1.sameTenant)(block.tenant, tenantId) && (0, utils_js_1.relationMatch)(block.orgUnit, orgUnitId));
24
+ }
25
+ async categoryBlockedForAncestor(tenantId, orgUnitId, ancestorOrgUnitId, category, ...args) {
26
+ return (await this.listForOrgUnit(tenantId, orgUnitId, ...args)).some((block) => block.permissionCategory === category &&
27
+ (!block.blockedFromAncestor || (0, utils_js_1.relationMatch)(block.blockedFromAncestor, ancestorOrgUnitId)));
28
+ }
29
+ }
30
+ exports.InheritanceBlockService = InheritanceBlockService;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2luaGVyaXRhbmNlLWJsb2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFNLGFBQWEsRUFBRSxVQUFVLEVBQUUsc0JBQWlCO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBa0M7SUFDN0U7UUFDRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FDakIsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsa0JBQXNDLEVBQ3RDLHFCQUE4QixFQUM5QixNQUFlLEVBQ2YsR0FBRyxJQUFXO1FBRWQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQjtZQUNFLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLG1CQUFtQixFQUFFLHFCQUFxQjtZQUMxQyxrQkFBa0I7WUFDbEIsTUFBTTtTQUNQLEVBQ0QsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbkQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxHQUFHLElBQVc7UUFDdEUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN6QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQ3pGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUM5QixRQUFnQixFQUNoQixTQUFpQixFQUNqQixpQkFBeUIsRUFDekIsUUFBNEIsRUFDNUIsR0FBRyxJQUFXO1FBRWQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25FLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixLQUFLLENBQUMsa0JBQWtCLEtBQUssUUFBUTtZQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUM5RixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgaWQsIHJlbGF0aW9uTWF0Y2gsIHNhbWVUZW5hbnQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRlZ29yeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5oZXJpdGFuY2VCbG9jayB9IGZyb20gXCIuLi9tb2RlbHMvaW5oZXJpdGFuY2UtYmxvY2subW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxJbmhlcml0YW5jZUJsb2NrPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEluaGVyaXRhbmNlQmxvY2spO1xuICB9XG5cbiAgYXN5bmMgYmxvY2tDYXRlZ29yeShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25DYXRlZ29yeTogUGVybWlzc2lvbkNhdGVnb3J5LFxuICAgIGJsb2NrZWRGcm9tQW5jZXN0b3JJZD86IHN0cmluZyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxJbmhlcml0YW5jZUJsb2NrPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgIGJsb2NrZWRGcm9tQW5jZXN0b3I6IGJsb2NrZWRGcm9tQW5jZXN0b3JJZCxcbiAgICAgICAgcGVybWlzc2lvbkNhdGVnb3J5LFxuICAgICAgICByZWFzb24sXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmJsb2NrQ2F0ZWdvcnkoYmxvY2tJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChibG9ja0lkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JPcmdVbml0KHRlbmFudElkOiBzdHJpbmcsIG9yZ1VuaXRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8SW5oZXJpdGFuY2VCbG9ja1tdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChibG9jaykgPT4gc2FtZVRlbmFudChibG9jay50ZW5hbnQsIHRlbmFudElkKSAmJiByZWxhdGlvbk1hdGNoKGJsb2NrLm9yZ1VuaXQsIG9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBhbmNlc3Rvck9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGNhdGVnb3J5OiBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RGb3JPcmdVbml0KHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpKS5zb21lKFxuICAgICAgKGJsb2NrKSA9PlxuICAgICAgICBibG9jay5wZXJtaXNzaW9uQ2F0ZWdvcnkgPT09IGNhdGVnb3J5ICYmXG4gICAgICAgICghYmxvY2suYmxvY2tlZEZyb21BbmNlc3RvciB8fCByZWxhdGlvbk1hdGNoKGJsb2NrLmJsb2NrZWRGcm9tQW5jZXN0b3IsIGFuY2VzdG9yT3JnVW5pdElkKSlcbiAgICApO1xuICB9XG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5oZXJpdGFuY2UtYmxvY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluaGVyaXRhbmNlLWJsb2NrLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQTRFO0FBQzVFLCtFQUFxRTtBQUNyRSxNQUFhLHVCQUF3QixTQUFRLDJCQUFnQjtJQUN6RDtRQUNJLEtBQUssQ0FBQywwQ0FBZ0IsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSTtRQUMvRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDZixNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixtQkFBbUIsRUFBRSxxQkFBcUI7WUFDMUMsa0JBQWtCO1lBQ2xCLE1BQU07U0FDVCxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUNELEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNsQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUk7UUFDN0MsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFVLEVBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFBLHdCQUFhLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFJLENBQUM7SUFDRCxLQUFLLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJO1FBQ3RGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssUUFBUTtZQUNsSCxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLElBQUEsd0JBQWEsRUFBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztDQUNKO0FBdkJELDBEQXVCQztBQUNELDArSEFBMCtIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25NYXRjaCwgc2FtZVRlbmFudCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBJbmhlcml0YW5jZUJsb2NrIH0gZnJvbSBcIi4uL21vZGVscy9pbmhlcml0YW5jZS1ibG9jay5tb2RlbFwiO1xuZXhwb3J0IGNsYXNzIEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKEluaGVyaXRhbmNlQmxvY2spO1xuICAgIH1cbiAgICBhc3luYyBibG9ja0NhdGVnb3J5KHRlbmFudElkLCBvcmdVbml0SWQsIHBlcm1pc3Npb25DYXRlZ29yeSwgYmxvY2tlZEZyb21BbmNlc3RvcklkLCByZWFzb24sIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKHtcbiAgICAgICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgICAgICBibG9ja2VkRnJvbUFuY2VzdG9yOiBibG9ja2VkRnJvbUFuY2VzdG9ySWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgICAgICAgICByZWFzb24sXG4gICAgICAgIH0sIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyB1bmJsb2NrQ2F0ZWdvcnkoYmxvY2tJZCwgLi4uYXJncykge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQoYmxvY2tJZCwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RGb3JPcmdVbml0KHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigoYmxvY2spID0+IHNhbWVUZW5hbnQoYmxvY2sudGVuYW50LCB0ZW5hbnRJZCkgJiYgcmVsYXRpb25NYXRjaChibG9jay5vcmdVbml0LCBvcmdVbml0SWQpKTtcbiAgICB9XG4gICAgYXN5bmMgY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IodGVuYW50SWQsIG9yZ1VuaXRJZCwgYW5jZXN0b3JPcmdVbml0SWQsIGNhdGVnb3J5LCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0Rm9yT3JnVW5pdCh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKSkuc29tZSgoYmxvY2spID0+IGJsb2NrLnBlcm1pc3Npb25DYXRlZ29yeSA9PT0gY2F0ZWdvcnkgJiZcbiAgICAgICAgICAgICghYmxvY2suYmxvY2tlZEZyb21BbmNlc3RvciB8fCByZWxhdGlvbk1hdGNoKGJsb2NrLmJsb2NrZWRGcm9tQW5jZXN0b3IsIGFuY2VzdG9yT3JnVW5pdElkKSkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNW9aWEpwZEdGdVkyVXRZbXh2WTJzdWMyVnlkbWxqWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OXVZVzFsYzNCaFkyVnpMM05sY25acFkyVnpMMmx1YUdWeWFYUmhibU5sTFdKc2IyTnJMbk5sY25acFkyVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxHZENRVUZuUWl4RlFVRk5MR0ZCUVdFc1JVRkJSU3hWUVVGVkxFVkJRVVVzYzBKQlFXbENPMEZCUlRORkxFOUJRVThzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hOUVVGTkxHMURRVUZ0UXl4RFFVRkRPMEZCUlhKRkxFMUJRVTBzVDBGQlR5eDFRa0ZCZDBJc1UwRkJVU3huUWtGQmEwTTdTVUZETjBVN1VVRkRSU3hMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMR0ZCUVdFc1EwRkRha0lzVVVGQlowSXNSVUZEYUVJc1UwRkJhVUlzUlVGRGFrSXNhMEpCUVhORExFVkJRM1JETEhGQ1FVRTRRaXhGUVVNNVFpeE5RVUZsTEVWQlEyWXNSMEZCUnl4SlFVRlhPMUZCUldRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVU5vUWp0WlFVTkZMRTFCUVUwc1JVRkJSU3hSUVVGUk8xbEJRMmhDTEU5QlFVOHNSVUZCUlN4VFFVRlRPMWxCUTJ4Q0xHMUNRVUZ0UWl4RlFVRkZMSEZDUVVGeFFqdFpRVU14UXl4clFrRkJhMEk3V1VGRGJFSXNUVUZCVFR0VFFVTlFMRVZCUTBRc1IwRkJSeXhKUVVGSkxFTkJRMUlzUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFOUJRV1VzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEYmtRc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEU5QlFVOHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRekZETEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1kwRkJZeXhEUVVGRExGRkJRV2RDTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hIUVVGSExFbEJRVmM3VVVGRGRFVXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVONlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RFFVRkRMRWxCUVVrc1lVRkJZU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUTNwR0xFTkJRVU03U1VGRFNpeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMREJDUVVFd1FpeERRVU01UWl4UlFVRm5RaXhGUVVOb1FpeFRRVUZwUWl4RlFVTnFRaXhwUWtGQmVVSXNSVUZEZWtJc1VVRkJORUlzUlVGRE5VSXNSMEZCUnl4SlFVRlhPMUZCUldRc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUTI1RkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZEVWl4TFFVRkxMRU5CUVVNc2EwSkJRV3RDTEV0QlFVc3NVVUZCVVR0WlFVTnlReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEcxQ1FVRnRRaXhKUVVGSkxHRkJRV0VzUTBGQlF5eExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVNNVJpeERRVUZETzBsQlEwb3NRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUW1GelpVMXZaR1ZzVTJWeWRtbGpaU3dnYVdRc0lISmxiR0YwYVc5dVRXRjBZMmdzSUhOaGJXVlVaVzVoYm5RZ2ZTQm1jbTl0SUZ3aUxpNHZkWFJwYkhOY0lqdGNibWx0Y0c5eWRDQjdJRkJsY20xcGMzTnBiMjVEWVhSbFoyOXllU0I5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1NXNW9aWEpwZEdGdVkyVkNiRzlqYXlCOUlHWnliMjBnWENJdUxpOXRiMlJsYkhNdmFXNW9aWEpwZEdGdVkyVXRZbXh2WTJzdWJXOWtaV3hjSWp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVsdWFHVnlhWFJoYm1ObFFteHZZMnRUWlhKMmFXTmxJR1Y0ZEdWdVpITWdRbUZ6WlUxdlpHVnNVMlZ5ZG1salpUeEpibWhsY21sMFlXNWpaVUpzYjJOclBpQjdYRzRnSUdOdmJuTjBjblZqZEc5eUtDa2dlMXh1SUNBZ0lITjFjR1Z5S0VsdWFHVnlhWFJoYm1ObFFteHZZMnNwTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nWW14dlkydERZWFJsWjI5eWVTaGNiaUFnSUNCMFpXNWhiblJKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lIQmxjbTFwYzNOcGIyNURZWFJsWjI5eWVUb2dVR1Z5YldsemMybHZia05oZEdWbmIzSjVMRnh1SUNBZ0lHSnNiMk5yWldSR2NtOXRRVzVqWlhOMGIzSkpaRDg2SUhOMGNtbHVaeXhjYmlBZ0lDQnlaV0Z6YjI0L09pQnpkSEpwYm1jc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4SmJtaGxjbWwwWVc1alpVSnNiMk5yUGlCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkzSmxZWFJsS0Z4dUlDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNCMFpXNWhiblE2SUhSbGJtRnVkRWxrTEZ4dUlDQWdJQ0FnSUNCdmNtZFZibWwwT2lCdmNtZFZibWwwU1dRc1hHNGdJQ0FnSUNBZ0lHSnNiMk5yWldSR2NtOXRRVzVqWlhOMGIzSTZJR0pzYjJOclpXUkdjbTl0UVc1alpYTjBiM0pKWkN4Y2JpQWdJQ0FnSUNBZ2NHVnliV2x6YzJsdmJrTmhkR1ZuYjNKNUxGeHVJQ0FnSUNBZ0lDQnlaV0Z6YjI0c1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0xpNHVZWEpuYzF4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUIxYm1Kc2IyTnJRMkYwWldkdmNua29ZbXh2WTJ0SlpEb2djM1J5YVc1bkxDQXVMaTVoY21kek9pQmhibmxiWFNrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR0YzWVdsMElIUm9hWE11WkdWc1pYUmxRbmxKWkNoaWJHOWphMGxrTENBdUxpNWhjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUd4cGMzUkdiM0pQY21kVmJtbDBLSFJsYm1GdWRFbGtPaUJ6ZEhKcGJtY3NJRzl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThTVzVvWlhKcGRHRnVZMlZDYkc5amExdGRQaUI3WEc0Z0lDQWdjbVYwZFhKdUlDaGhkMkZwZENCMGFHbHpMbXhwYzNSQmJHd29MaTR1WVhKbmN5a3BMbVpwYkhSbGNpaGNiaUFnSUNBZ0lDaGliRzlqYXlrZ1BUNGdjMkZ0WlZSbGJtRnVkQ2hpYkc5amF5NTBaVzVoYm5Rc0lIUmxibUZ1ZEVsa0tTQW1KaUJ5Wld4aGRHbHZiazFoZEdOb0tHSnNiMk5yTG05eVoxVnVhWFFzSUc5eVoxVnVhWFJKWkNsY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nWTJGMFpXZHZjbmxDYkc5amEyVmtSbTl5UVc1alpYTjBiM0lvWEc0Z0lDQWdkR1Z1WVc1MFNXUTZJSE4wY21sdVp5eGNiaUFnSUNCdmNtZFZibWwwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0JoYm1ObGMzUnZjazl5WjFWdWFYUkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lHTmhkR1ZuYjNKNU9pQlFaWEp0YVhOemFXOXVRMkYwWldkdmNua3NYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeGliMjlzWldGdVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoaGQyRnBkQ0IwYUdsekxteHBjM1JHYjNKUGNtZFZibWwwS0hSbGJtRnVkRWxrTENCdmNtZFZibWwwU1dRc0lDNHVMbUZ5WjNNcEtTNXpiMjFsS0Z4dUlDQWdJQ0FnS0dKc2IyTnJLU0E5UGx4dUlDQWdJQ0FnSUNCaWJHOWpheTV3WlhKdGFYTnphVzl1UTJGMFpXZHZjbmtnUFQwOUlHTmhkR1ZuYjNKNUlDWW1YRzRnSUNBZ0lDQWdJQ2doWW14dlkyc3VZbXh2WTJ0bFpFWnliMjFCYm1ObGMzUnZjaUI4ZkNCeVpXeGhkR2x2YmsxaGRHTm9LR0pzYjJOckxtSnNiMk5yWldSR2NtOXRRVzVqWlhOMGIzSXNJR0Z1WTJWemRHOXlUM0puVlc1cGRFbGtLU2xjYmlBZ0lDQXBPMXh1SUNCOVhHNTlYRzRpWFgwPSJdfQ==