@decaf-ts/integrations 0.3.3 → 0.3.5

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 (643) hide show
  1. package/dist/integrations.cjs +48 -2
  2. package/dist/integrations.js +49 -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 +4 -0
  48. package/lib/cjs/graph/execution/GraphExecutionContext.cjs +2 -2
  49. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +4 -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 +95 -0
  54. package/lib/cjs/graph/execution/index.cjs +4 -2
  55. package/lib/cjs/graph/index.cjs +7 -2
  56. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +87 -0
  57. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs +2 -2
  58. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +25 -3
  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 +3 -2
  63. package/lib/cjs/graph/nodes/agent.cjs +110 -0
  64. package/lib/cjs/graph/nodes/category-styles.cjs +38 -0
  65. package/lib/cjs/graph/nodes/flow-control.cjs +436 -0
  66. package/lib/cjs/graph/nodes/index.cjs +34 -0
  67. package/lib/cjs/graph/nodes/triggers.cjs +250 -0
  68. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs +2 -2
  69. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs +2 -2
  70. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs +2 -2
  71. package/lib/cjs/graph/pinning/GraphPinningService.cjs +2 -2
  72. package/lib/cjs/graph/pinning/index.cjs +2 -2
  73. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs +2 -2
  74. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs +2 -2
  75. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs +2 -2
  76. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs +2 -2
  77. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs +2 -2
  78. package/lib/cjs/graph/planning/GraphRelationResolver.cjs +2 -2
  79. package/lib/cjs/graph/planning/GraphTopology.cjs +2 -2
  80. package/lib/cjs/graph/planning/index.cjs +2 -2
  81. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs +2 -2
  82. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs +2 -2
  83. package/lib/cjs/graph/registry/index.cjs +2 -2
  84. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  85. package/lib/cjs/graph/snapshots/index.cjs +2 -2
  86. package/lib/cjs/graph/store/GraphCachedValue.cjs +2 -2
  87. package/lib/cjs/graph/store/GraphValueKey.cjs +2 -2
  88. package/lib/cjs/graph/store/GraphValueStore.cjs +2 -2
  89. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs +2 -2
  90. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  91. package/lib/cjs/graph/store/index.cjs +2 -2
  92. package/lib/cjs/graph/types.cjs +2 -2
  93. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs +2 -2
  94. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs +2 -2
  95. package/lib/cjs/graph/validation/GraphValueValidator.cjs +2 -2
  96. package/lib/cjs/graph/validation/index.cjs +2 -2
  97. package/lib/cjs/index.cjs +5 -5
  98. package/lib/cjs/keycloak/index.cjs +2 -2
  99. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +5 -4
  100. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +5 -4
  101. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +5 -4
  102. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +8 -7
  103. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +5 -4
  104. package/lib/cjs/keycloak/services/KeycloakService.cjs +16 -13
  105. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +5 -4
  106. package/lib/cjs/keycloak/services/index.cjs +2 -2
  107. package/lib/cjs/keycloak/services/runtime.cjs +20 -0
  108. package/lib/cjs/keycloak/types.cjs +2 -2
  109. package/lib/cjs/kibana/helpers.cjs +2 -2
  110. package/lib/cjs/kibana/index.cjs +2 -2
  111. package/lib/cjs/kibana/services/KibanaAuthService.cjs +6 -5
  112. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +9 -8
  113. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +7 -6
  114. package/lib/cjs/kibana/services/KibanaRoleService.cjs +5 -4
  115. package/lib/cjs/kibana/services/KibanaService.cjs +13 -10
  116. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +5 -4
  117. package/lib/cjs/kibana/services/KibanaUserService.cjs +5 -4
  118. package/lib/cjs/kibana/services/index.cjs +2 -2
  119. package/lib/cjs/kibana/services/runtime.cjs +20 -0
  120. package/lib/cjs/kibana/types.cjs +2 -2
  121. package/lib/cjs/nest/authService.cjs +2 -2
  122. package/lib/cjs/nest/index.cjs +2 -2
  123. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  124. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  125. package/lib/cjs/nest/logging.cjs +2 -2
  126. package/lib/cjs/nest/types.cjs +2 -2
  127. package/lib/cjs/nest/utils.cjs +2 -2
  128. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  129. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  130. package/lib/cjs/secrets/aws/index.cjs +2 -2
  131. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  132. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  133. package/lib/cjs/secrets/azure/index.cjs +2 -2
  134. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  135. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  136. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  137. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  138. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  139. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  140. package/lib/cjs/secrets/core/index.cjs +2 -2
  141. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  142. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  143. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  144. package/lib/cjs/secrets/index.cjs +2 -2
  145. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  146. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  147. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  148. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  149. package/lib/cjs/secrets/model/index.cjs +2 -2
  150. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  151. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  152. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  153. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  154. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  155. package/lib/cjs/secrets/vault/index.cjs +2 -2
  156. package/lib/cjs/shared/runtime.cjs +2 -2
  157. package/lib/cjs/utils.cjs +2 -2
  158. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  159. package/lib/esm/blob/azure/index.js +1 -1
  160. package/lib/esm/blob/core/BlobErrors.js +1 -1
  161. package/lib/esm/blob/core/BlobKey.js +1 -1
  162. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  163. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  164. package/lib/esm/blob/core/BlobTypes.js +1 -1
  165. package/lib/esm/blob/core/BlobValue.js +1 -1
  166. package/lib/esm/blob/core/index.js +1 -1
  167. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  168. package/lib/esm/blob/gcp/index.js +1 -1
  169. package/lib/esm/blob/index.js +1 -1
  170. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  171. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  172. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  173. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  174. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  175. package/lib/esm/blob/ipfs/index.js +1 -1
  176. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  177. package/lib/esm/blob/local/index.js +1 -1
  178. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  179. package/lib/esm/blob/memory/index.js +1 -1
  180. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  181. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  182. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  183. package/lib/esm/blob/s3/index.js +1 -1
  184. package/lib/esm/docker/DockerComposeService.js +1 -1
  185. package/lib/esm/docker/index.js +1 -1
  186. package/lib/esm/graph/constants.js +1 -1
  187. package/lib/esm/graph/decorators.js +1 -1
  188. package/lib/esm/graph/errors/GraphCycleError.js +1 -1
  189. package/lib/esm/graph/errors/GraphExecutionError.js +1 -1
  190. package/lib/esm/graph/errors/GraphInputError.js +1 -1
  191. package/lib/esm/graph/errors/GraphLoopLimitError.js +1 -1
  192. package/lib/esm/graph/errors/GraphPinningError.js +1 -1
  193. package/lib/esm/graph/errors/GraphPortError.js +1 -1
  194. package/lib/esm/graph/errors/GraphStoreError.js +1 -1
  195. package/lib/esm/graph/errors/GraphTopologyError.js +1 -1
  196. package/lib/esm/graph/errors/index.js +1 -1
  197. package/lib/esm/graph/events/GraphExecutionEvent.js +1 -1
  198. package/lib/esm/graph/events/GraphExecutionEventEmitter.js +1 -1
  199. package/lib/esm/graph/events/GraphExecutionEventFactory.js +1 -1
  200. package/lib/esm/graph/events/GraphExecutionObserver.js +1 -1
  201. package/lib/esm/graph/events/index.js +1 -1
  202. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +18 -0
  203. package/lib/esm/graph/execution/GraphExecutionContext.js +1 -1
  204. package/lib/esm/graph/execution/GraphExecutionEngine.js +3 -1
  205. package/lib/esm/graph/execution/GraphExecutionFrame.js +1 -1
  206. package/lib/esm/graph/execution/GraphExecutionResult.js +1 -1
  207. package/lib/esm/graph/execution/GraphNodeExecutor.js +1 -1
  208. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +90 -0
  209. package/lib/esm/graph/execution/index.js +3 -1
  210. package/lib/esm/graph/index.js +6 -1
  211. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +82 -0
  212. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js +1 -1
  213. package/lib/esm/graph/loops/GraphConditionEvaluator.js +24 -2
  214. package/lib/esm/graph/loops/GraphLoopExecutionContext.js +1 -1
  215. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js +1 -1
  216. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js +1 -1
  217. package/lib/esm/graph/loops/index.js +2 -1
  218. package/lib/esm/graph/nodes/agent.js +101 -0
  219. package/lib/esm/graph/nodes/category-styles.js +34 -0
  220. package/lib/esm/graph/nodes/flow-control.js +427 -0
  221. package/lib/esm/graph/nodes/index.js +17 -0
  222. package/lib/esm/graph/nodes/triggers.js +241 -0
  223. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js +1 -1
  224. package/lib/esm/graph/pinning/GraphPinningMetadata.js +1 -1
  225. package/lib/esm/graph/pinning/GraphPinningPolicy.js +1 -1
  226. package/lib/esm/graph/pinning/GraphPinningService.js +1 -1
  227. package/lib/esm/graph/pinning/index.js +1 -1
  228. package/lib/esm/graph/planning/GraphExecutionPlan.js +1 -1
  229. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js +1 -1
  230. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js +1 -1
  231. package/lib/esm/graph/planning/GraphExecutionPlanNode.js +1 -1
  232. package/lib/esm/graph/planning/GraphExecutionPlanner.js +1 -1
  233. package/lib/esm/graph/planning/GraphRelationResolver.js +1 -1
  234. package/lib/esm/graph/planning/GraphTopology.js +1 -1
  235. package/lib/esm/graph/planning/index.js +1 -1
  236. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js +1 -1
  237. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js +1 -1
  238. package/lib/esm/graph/registry/index.js +1 -1
  239. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  240. package/lib/esm/graph/snapshots/index.js +1 -1
  241. package/lib/esm/graph/store/GraphCachedValue.js +1 -1
  242. package/lib/esm/graph/store/GraphValueKey.js +1 -1
  243. package/lib/esm/graph/store/GraphValueStore.js +1 -1
  244. package/lib/esm/graph/store/GraphValueStoreAdapter.js +1 -1
  245. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js +1 -1
  246. package/lib/esm/graph/store/index.js +1 -1
  247. package/lib/esm/graph/types.js +1 -1
  248. package/lib/esm/graph/validation/GraphDefinitionValidator.js +1 -1
  249. package/lib/esm/graph/validation/GraphPortSchemaResolver.js +1 -1
  250. package/lib/esm/graph/validation/GraphValueValidator.js +1 -1
  251. package/lib/esm/graph/validation/index.js +1 -1
  252. package/lib/esm/index.js +4 -4
  253. package/lib/esm/keycloak/index.js +1 -1
  254. package/lib/esm/keycloak/services/KeycloakAuthService.js +4 -3
  255. package/lib/esm/keycloak/services/KeycloakClientService.js +4 -3
  256. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +4 -3
  257. package/lib/esm/keycloak/services/KeycloakRealmService.js +4 -3
  258. package/lib/esm/keycloak/services/KeycloakRoleService.js +4 -3
  259. package/lib/esm/keycloak/services/KeycloakService.js +15 -12
  260. package/lib/esm/keycloak/services/KeycloakUserService.js +4 -3
  261. package/lib/esm/keycloak/services/index.js +1 -1
  262. package/lib/esm/keycloak/services/runtime.js +15 -0
  263. package/lib/esm/keycloak/types.js +1 -1
  264. package/lib/esm/kibana/helpers.js +1 -1
  265. package/lib/esm/kibana/index.js +1 -1
  266. package/lib/esm/kibana/services/KibanaAuthService.js +5 -4
  267. package/lib/esm/kibana/services/KibanaDashboardService.js +5 -4
  268. package/lib/esm/kibana/services/KibanaDataViewService.js +4 -3
  269. package/lib/esm/kibana/services/KibanaRoleService.js +4 -3
  270. package/lib/esm/kibana/services/KibanaService.js +12 -9
  271. package/lib/esm/kibana/services/KibanaSpaceService.js +4 -3
  272. package/lib/esm/kibana/services/KibanaUserService.js +4 -3
  273. package/lib/esm/kibana/services/index.js +1 -1
  274. package/lib/esm/kibana/services/runtime.js +15 -0
  275. package/lib/esm/kibana/types.js +1 -1
  276. package/lib/esm/nest/authService.js +1 -1
  277. package/lib/esm/nest/index.js +1 -1
  278. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  279. package/lib/esm/nest/keycloakModule.js +1 -1
  280. package/lib/esm/nest/logging.js +1 -1
  281. package/lib/esm/nest/types.js +1 -1
  282. package/lib/esm/nest/utils.js +1 -1
  283. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  284. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  285. package/lib/esm/secrets/aws/index.js +1 -1
  286. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  287. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  288. package/lib/esm/secrets/azure/index.js +1 -1
  289. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  290. package/lib/esm/secrets/core/SecretName.js +1 -1
  291. package/lib/esm/secrets/core/SecretReference.js +1 -1
  292. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  293. package/lib/esm/secrets/core/SecretService.js +1 -1
  294. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  295. package/lib/esm/secrets/core/index.js +1 -1
  296. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  297. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  298. package/lib/esm/secrets/gcp/index.js +1 -1
  299. package/lib/esm/secrets/index.js +1 -1
  300. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  301. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  302. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  303. package/lib/esm/secrets/model/Secret.js +1 -1
  304. package/lib/esm/secrets/model/index.js +1 -1
  305. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  306. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  307. package/lib/esm/secrets/onepassword/index.js +1 -1
  308. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  309. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  310. package/lib/esm/secrets/vault/index.js +1 -1
  311. package/lib/esm/shared/runtime.js +1 -1
  312. package/lib/esm/utils.js +1 -1
  313. package/lib/types/graph/execution/CodeSandboxEvaluator.d.cts +53 -0
  314. package/lib/types/graph/execution/CodeSandboxEvaluator.d.mts +53 -0
  315. package/lib/types/graph/execution/GraphExecutionEngine.d.cts +17 -0
  316. package/lib/types/graph/execution/GraphExecutionEngine.d.mts +17 -0
  317. package/lib/types/graph/execution/SwitchGraphNodeExecutor.d.cts +42 -0
  318. package/lib/types/graph/execution/SwitchGraphNodeExecutor.d.mts +42 -0
  319. package/lib/types/graph/execution/index.d.cts +2 -0
  320. package/lib/types/graph/execution/index.d.mts +2 -0
  321. package/lib/types/graph/index.d.cts +4 -0
  322. package/lib/types/graph/index.d.mts +4 -0
  323. package/lib/types/graph/loops/ConditionExpressionEvaluator.d.cts +36 -0
  324. package/lib/types/graph/loops/ConditionExpressionEvaluator.d.mts +36 -0
  325. package/lib/types/graph/loops/GraphConditionEvaluator.d.cts +20 -4
  326. package/lib/types/graph/loops/GraphConditionEvaluator.d.mts +20 -4
  327. package/lib/types/graph/loops/index.d.cts +1 -0
  328. package/lib/types/graph/loops/index.d.mts +1 -0
  329. package/lib/types/graph/nodes/agent.d.cts +44 -0
  330. package/lib/types/graph/nodes/agent.d.mts +44 -0
  331. package/lib/types/graph/nodes/category-styles.d.cts +8 -0
  332. package/lib/types/graph/nodes/category-styles.d.mts +8 -0
  333. package/lib/types/graph/nodes/flow-control.d.cts +104 -0
  334. package/lib/types/graph/nodes/flow-control.d.mts +104 -0
  335. package/lib/types/graph/nodes/index.d.cts +16 -0
  336. package/lib/types/graph/nodes/index.d.mts +16 -0
  337. package/lib/types/graph/nodes/triggers.d.cts +53 -0
  338. package/lib/types/graph/nodes/triggers.d.mts +53 -0
  339. package/lib/types/graph/types.d.cts +102 -0
  340. package/lib/types/graph/types.d.mts +102 -0
  341. package/lib/types/index.d.cts +2 -2
  342. package/lib/types/index.d.mts +2 -2
  343. package/lib/types/keycloak/services/KeycloakService.d.cts +1 -1
  344. package/lib/types/keycloak/services/KeycloakService.d.mts +1 -1
  345. package/lib/types/keycloak/services/runtime.d.cts +6 -0
  346. package/lib/types/keycloak/services/runtime.d.mts +6 -0
  347. package/lib/types/kibana/services/KibanaService.d.cts +1 -1
  348. package/lib/types/kibana/services/KibanaService.d.mts +1 -1
  349. package/lib/types/kibana/services/runtime.d.cts +6 -0
  350. package/lib/types/kibana/services/runtime.d.mts +6 -0
  351. package/package.json +1 -1
  352. package/dist/integrations.cjs.map +0 -1
  353. package/dist/integrations.js.map +0 -1
  354. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  355. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  356. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  357. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  358. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  359. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  360. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  361. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  362. package/lib/cjs/blob/core/index.cjs.map +0 -1
  363. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  364. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  365. package/lib/cjs/blob/index.cjs.map +0 -1
  366. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +0 -1
  367. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +0 -1
  368. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +0 -1
  369. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +0 -1
  370. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +0 -1
  371. package/lib/cjs/blob/ipfs/index.cjs.map +0 -1
  372. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  373. package/lib/cjs/blob/local/index.cjs.map +0 -1
  374. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  375. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  376. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  377. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  378. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  379. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  380. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  381. package/lib/cjs/docker/index.cjs.map +0 -1
  382. package/lib/cjs/graph/constants.cjs.map +0 -1
  383. package/lib/cjs/graph/decorators.cjs.map +0 -1
  384. package/lib/cjs/graph/errors/GraphCycleError.cjs.map +0 -1
  385. package/lib/cjs/graph/errors/GraphExecutionError.cjs.map +0 -1
  386. package/lib/cjs/graph/errors/GraphInputError.cjs.map +0 -1
  387. package/lib/cjs/graph/errors/GraphLoopLimitError.cjs.map +0 -1
  388. package/lib/cjs/graph/errors/GraphPinningError.cjs.map +0 -1
  389. package/lib/cjs/graph/errors/GraphPortError.cjs.map +0 -1
  390. package/lib/cjs/graph/errors/GraphStoreError.cjs.map +0 -1
  391. package/lib/cjs/graph/errors/GraphTopologyError.cjs.map +0 -1
  392. package/lib/cjs/graph/errors/index.cjs.map +0 -1
  393. package/lib/cjs/graph/events/GraphExecutionEvent.cjs.map +0 -1
  394. package/lib/cjs/graph/events/GraphExecutionEventEmitter.cjs.map +0 -1
  395. package/lib/cjs/graph/events/GraphExecutionEventFactory.cjs.map +0 -1
  396. package/lib/cjs/graph/events/GraphExecutionObserver.cjs.map +0 -1
  397. package/lib/cjs/graph/events/index.cjs.map +0 -1
  398. package/lib/cjs/graph/execution/GraphExecutionContext.cjs.map +0 -1
  399. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs.map +0 -1
  400. package/lib/cjs/graph/execution/GraphExecutionFrame.cjs.map +0 -1
  401. package/lib/cjs/graph/execution/GraphExecutionResult.cjs.map +0 -1
  402. package/lib/cjs/graph/execution/GraphNodeExecutor.cjs.map +0 -1
  403. package/lib/cjs/graph/execution/index.cjs.map +0 -1
  404. package/lib/cjs/graph/index.cjs.map +0 -1
  405. package/lib/cjs/graph/loops/ForeachGraphNodeExecutor.cjs.map +0 -1
  406. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs.map +0 -1
  407. package/lib/cjs/graph/loops/GraphLoopExecutionContext.cjs.map +0 -1
  408. package/lib/cjs/graph/loops/UntilGraphNodeExecutor.cjs.map +0 -1
  409. package/lib/cjs/graph/loops/WhileGraphNodeExecutor.cjs.map +0 -1
  410. package/lib/cjs/graph/loops/index.cjs.map +0 -1
  411. package/lib/cjs/graph/pinning/GraphPinningDependencyResolver.cjs.map +0 -1
  412. package/lib/cjs/graph/pinning/GraphPinningMetadata.cjs.map +0 -1
  413. package/lib/cjs/graph/pinning/GraphPinningPolicy.cjs.map +0 -1
  414. package/lib/cjs/graph/pinning/GraphPinningService.cjs.map +0 -1
  415. package/lib/cjs/graph/pinning/index.cjs.map +0 -1
  416. package/lib/cjs/graph/planning/GraphExecutionPlan.cjs.map +0 -1
  417. package/lib/cjs/graph/planning/GraphExecutionPlanEdge.cjs.map +0 -1
  418. package/lib/cjs/graph/planning/GraphExecutionPlanLayer.cjs.map +0 -1
  419. package/lib/cjs/graph/planning/GraphExecutionPlanNode.cjs.map +0 -1
  420. package/lib/cjs/graph/planning/GraphExecutionPlanner.cjs.map +0 -1
  421. package/lib/cjs/graph/planning/GraphRelationResolver.cjs.map +0 -1
  422. package/lib/cjs/graph/planning/GraphTopology.cjs.map +0 -1
  423. package/lib/cjs/graph/planning/index.cjs.map +0 -1
  424. package/lib/cjs/graph/registry/GraphNodeExecutorRegistry.cjs.map +0 -1
  425. package/lib/cjs/graph/registry/GraphNodeExecutorResolver.cjs.map +0 -1
  426. package/lib/cjs/graph/registry/index.cjs.map +0 -1
  427. package/lib/cjs/graph/snapshots/GraphExecutionSnapshotMapper.cjs.map +0 -1
  428. package/lib/cjs/graph/snapshots/index.cjs.map +0 -1
  429. package/lib/cjs/graph/store/GraphCachedValue.cjs.map +0 -1
  430. package/lib/cjs/graph/store/GraphValueKey.cjs.map +0 -1
  431. package/lib/cjs/graph/store/GraphValueStore.cjs.map +0 -1
  432. package/lib/cjs/graph/store/GraphValueStoreAdapter.cjs.map +0 -1
  433. package/lib/cjs/graph/store/InMemoryGraphValueStoreAdapter.cjs.map +0 -1
  434. package/lib/cjs/graph/store/index.cjs.map +0 -1
  435. package/lib/cjs/graph/types.cjs.map +0 -1
  436. package/lib/cjs/graph/validation/GraphDefinitionValidator.cjs.map +0 -1
  437. package/lib/cjs/graph/validation/GraphPortSchemaResolver.cjs.map +0 -1
  438. package/lib/cjs/graph/validation/GraphValueValidator.cjs.map +0 -1
  439. package/lib/cjs/graph/validation/index.cjs.map +0 -1
  440. package/lib/cjs/index.cjs.map +0 -1
  441. package/lib/cjs/keycloak/index.cjs.map +0 -1
  442. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  443. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  444. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  445. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  446. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  447. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  448. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  449. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  450. package/lib/cjs/keycloak/types.cjs.map +0 -1
  451. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  452. package/lib/cjs/kibana/index.cjs.map +0 -1
  453. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  454. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  455. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  456. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  457. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  458. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  459. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  460. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  461. package/lib/cjs/kibana/types.cjs.map +0 -1
  462. package/lib/cjs/nest/authService.cjs.map +0 -1
  463. package/lib/cjs/nest/index.cjs.map +0 -1
  464. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  465. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  466. package/lib/cjs/nest/logging.cjs.map +0 -1
  467. package/lib/cjs/nest/types.cjs.map +0 -1
  468. package/lib/cjs/nest/utils.cjs.map +0 -1
  469. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  470. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  471. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  472. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  473. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  474. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  475. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  476. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  477. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  478. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  479. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  480. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  481. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  482. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  483. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  484. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  485. package/lib/cjs/secrets/index.cjs.map +0 -1
  486. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  487. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  488. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  489. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  490. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  491. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  492. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  493. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  494. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  495. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  496. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  497. package/lib/cjs/shared/runtime.cjs.map +0 -1
  498. package/lib/cjs/utils.cjs.map +0 -1
  499. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  500. package/lib/esm/blob/azure/index.js.map +0 -1
  501. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  502. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  503. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  504. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  505. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  506. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  507. package/lib/esm/blob/core/index.js.map +0 -1
  508. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  509. package/lib/esm/blob/gcp/index.js.map +0 -1
  510. package/lib/esm/blob/index.js.map +0 -1
  511. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +0 -1
  512. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +0 -1
  513. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +0 -1
  514. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +0 -1
  515. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +0 -1
  516. package/lib/esm/blob/ipfs/index.js.map +0 -1
  517. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  518. package/lib/esm/blob/local/index.js.map +0 -1
  519. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  520. package/lib/esm/blob/memory/index.js.map +0 -1
  521. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  522. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  523. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  524. package/lib/esm/blob/s3/index.js.map +0 -1
  525. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  526. package/lib/esm/docker/index.js.map +0 -1
  527. package/lib/esm/graph/constants.js.map +0 -1
  528. package/lib/esm/graph/decorators.js.map +0 -1
  529. package/lib/esm/graph/errors/GraphCycleError.js.map +0 -1
  530. package/lib/esm/graph/errors/GraphExecutionError.js.map +0 -1
  531. package/lib/esm/graph/errors/GraphInputError.js.map +0 -1
  532. package/lib/esm/graph/errors/GraphLoopLimitError.js.map +0 -1
  533. package/lib/esm/graph/errors/GraphPinningError.js.map +0 -1
  534. package/lib/esm/graph/errors/GraphPortError.js.map +0 -1
  535. package/lib/esm/graph/errors/GraphStoreError.js.map +0 -1
  536. package/lib/esm/graph/errors/GraphTopologyError.js.map +0 -1
  537. package/lib/esm/graph/errors/index.js.map +0 -1
  538. package/lib/esm/graph/events/GraphExecutionEvent.js.map +0 -1
  539. package/lib/esm/graph/events/GraphExecutionEventEmitter.js.map +0 -1
  540. package/lib/esm/graph/events/GraphExecutionEventFactory.js.map +0 -1
  541. package/lib/esm/graph/events/GraphExecutionObserver.js.map +0 -1
  542. package/lib/esm/graph/events/index.js.map +0 -1
  543. package/lib/esm/graph/execution/GraphExecutionContext.js.map +0 -1
  544. package/lib/esm/graph/execution/GraphExecutionEngine.js.map +0 -1
  545. package/lib/esm/graph/execution/GraphExecutionFrame.js.map +0 -1
  546. package/lib/esm/graph/execution/GraphExecutionResult.js.map +0 -1
  547. package/lib/esm/graph/execution/GraphNodeExecutor.js.map +0 -1
  548. package/lib/esm/graph/execution/index.js.map +0 -1
  549. package/lib/esm/graph/index.js.map +0 -1
  550. package/lib/esm/graph/loops/ForeachGraphNodeExecutor.js.map +0 -1
  551. package/lib/esm/graph/loops/GraphConditionEvaluator.js.map +0 -1
  552. package/lib/esm/graph/loops/GraphLoopExecutionContext.js.map +0 -1
  553. package/lib/esm/graph/loops/UntilGraphNodeExecutor.js.map +0 -1
  554. package/lib/esm/graph/loops/WhileGraphNodeExecutor.js.map +0 -1
  555. package/lib/esm/graph/loops/index.js.map +0 -1
  556. package/lib/esm/graph/pinning/GraphPinningDependencyResolver.js.map +0 -1
  557. package/lib/esm/graph/pinning/GraphPinningMetadata.js.map +0 -1
  558. package/lib/esm/graph/pinning/GraphPinningPolicy.js.map +0 -1
  559. package/lib/esm/graph/pinning/GraphPinningService.js.map +0 -1
  560. package/lib/esm/graph/pinning/index.js.map +0 -1
  561. package/lib/esm/graph/planning/GraphExecutionPlan.js.map +0 -1
  562. package/lib/esm/graph/planning/GraphExecutionPlanEdge.js.map +0 -1
  563. package/lib/esm/graph/planning/GraphExecutionPlanLayer.js.map +0 -1
  564. package/lib/esm/graph/planning/GraphExecutionPlanNode.js.map +0 -1
  565. package/lib/esm/graph/planning/GraphExecutionPlanner.js.map +0 -1
  566. package/lib/esm/graph/planning/GraphRelationResolver.js.map +0 -1
  567. package/lib/esm/graph/planning/GraphTopology.js.map +0 -1
  568. package/lib/esm/graph/planning/index.js.map +0 -1
  569. package/lib/esm/graph/registry/GraphNodeExecutorRegistry.js.map +0 -1
  570. package/lib/esm/graph/registry/GraphNodeExecutorResolver.js.map +0 -1
  571. package/lib/esm/graph/registry/index.js.map +0 -1
  572. package/lib/esm/graph/snapshots/GraphExecutionSnapshotMapper.js.map +0 -1
  573. package/lib/esm/graph/snapshots/index.js.map +0 -1
  574. package/lib/esm/graph/store/GraphCachedValue.js.map +0 -1
  575. package/lib/esm/graph/store/GraphValueKey.js.map +0 -1
  576. package/lib/esm/graph/store/GraphValueStore.js.map +0 -1
  577. package/lib/esm/graph/store/GraphValueStoreAdapter.js.map +0 -1
  578. package/lib/esm/graph/store/InMemoryGraphValueStoreAdapter.js.map +0 -1
  579. package/lib/esm/graph/store/index.js.map +0 -1
  580. package/lib/esm/graph/types.js.map +0 -1
  581. package/lib/esm/graph/validation/GraphDefinitionValidator.js.map +0 -1
  582. package/lib/esm/graph/validation/GraphPortSchemaResolver.js.map +0 -1
  583. package/lib/esm/graph/validation/GraphValueValidator.js.map +0 -1
  584. package/lib/esm/graph/validation/index.js.map +0 -1
  585. package/lib/esm/index.js.map +0 -1
  586. package/lib/esm/keycloak/index.js.map +0 -1
  587. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  588. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  589. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  590. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  591. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  592. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  593. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  594. package/lib/esm/keycloak/services/index.js.map +0 -1
  595. package/lib/esm/keycloak/types.js.map +0 -1
  596. package/lib/esm/kibana/helpers.js.map +0 -1
  597. package/lib/esm/kibana/index.js.map +0 -1
  598. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  599. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  600. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  601. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  602. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  603. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  604. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  605. package/lib/esm/kibana/services/index.js.map +0 -1
  606. package/lib/esm/kibana/types.js.map +0 -1
  607. package/lib/esm/nest/authService.js.map +0 -1
  608. package/lib/esm/nest/index.js.map +0 -1
  609. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  610. package/lib/esm/nest/keycloakModule.js.map +0 -1
  611. package/lib/esm/nest/logging.js.map +0 -1
  612. package/lib/esm/nest/types.js.map +0 -1
  613. package/lib/esm/nest/utils.js.map +0 -1
  614. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  615. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  616. package/lib/esm/secrets/aws/index.js.map +0 -1
  617. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  618. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  619. package/lib/esm/secrets/azure/index.js.map +0 -1
  620. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  621. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  622. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  623. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  624. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  625. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  626. package/lib/esm/secrets/core/index.js.map +0 -1
  627. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  628. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  629. package/lib/esm/secrets/gcp/index.js.map +0 -1
  630. package/lib/esm/secrets/index.js.map +0 -1
  631. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  632. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  633. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  634. package/lib/esm/secrets/model/Secret.js.map +0 -1
  635. package/lib/esm/secrets/model/index.js.map +0 -1
  636. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  637. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  638. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  639. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  640. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  641. package/lib/esm/secrets/vault/index.js.map +0 -1
  642. package/lib/esm/shared/runtime.js.map +0 -1
  643. package/lib/esm/utils.js.map +0 -1
@@ -0,0 +1,436 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GRAPH_FLOW_CONTROL_NODES = exports.CodeFlowNode = exports.ReturnFlowNode = exports.HumanApprovalFlowNode = exports.ErrorBoundaryFlowNode = exports.DelayFlowNode = exports.MapFlowNode = exports.MergeFlowNode = exports.ParallelFlowNode = exports.SwitchFlowNode = exports.IfFlowNode = 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
+ /**
19
+ * @module integrations/graph/nodes/flow-control
20
+ * @summary Production flow-control node kind declarations (DECAF-32 §22.2.2).
21
+ * @description Canonical `@node`-decorated classes for the ten ALFRED-5
22
+ * flow-control kinds. These are graph-level macros: the engine's planner
23
+ * recognises them as ordinary executable nodes (§5.7) but they have no
24
+ * built-in executors — downstream projects (e.g. ALFRED) register custom
25
+ * executors or compile them into Mastra composition APIs (§22.2.2).
26
+ *
27
+ * The three loop kinds (`core.loop.foreach/while/until`) already have built-in
28
+ * executors (§5.9) and are NOT redeclared here.
29
+ */
30
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
31
+ const ui_decorators_1 = require("@decaf-ts/ui-decorators");
32
+ const graph_1 = require("@decaf-ts/ui-decorators/graph");
33
+ /**
34
+ * If — conditional branch. Evaluates a `ConditionExpression` (§22.3) and
35
+ * routes the input to the `then` or `else` output.
36
+ */
37
+ let IfFlowNode = class IfFlowNode extends decorator_validation_1.Model {
38
+ };
39
+ exports.IfFlowNode = IfFlowNode;
40
+ __decorate([
41
+ (0, decorator_validation_1.required)(),
42
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to evaluate" }),
43
+ (0, graph_1.input)({ handle: "value" }),
44
+ __metadata("design:type", Object)
45
+ ], IfFlowNode.prototype, "value", void 0);
46
+ __decorate([
47
+ (0, decorator_validation_1.required)(),
48
+ (0, ui_decorators_1.uielement)("input", { label: "Then", placeholder: "Output when condition is true" }),
49
+ (0, graph_1.output)({ handle: "then" }),
50
+ __metadata("design:type", Object)
51
+ ], IfFlowNode.prototype, "then", void 0);
52
+ __decorate([
53
+ (0, decorator_validation_1.required)(),
54
+ (0, ui_decorators_1.uielement)("input", { label: "Else", placeholder: "Output when condition is false" }),
55
+ (0, graph_1.output)({ handle: "else" }),
56
+ __metadata("design:type", Object)
57
+ ], IfFlowNode.prototype, "else", void 0);
58
+ exports.IfFlowNode = IfFlowNode = __decorate([
59
+ (0, graph_1.node)("core.flow.if", {
60
+ kind: "core.flow.if",
61
+ category: "Flow Control",
62
+ color: "#f59e0b",
63
+ icon: "ti-arrows-split-2",
64
+ width: 96,
65
+ height: 96,
66
+ labels: ["flow", "conditional", "branch"],
67
+ metadata: {
68
+ title: "If",
69
+ description: "Conditional branch. Evaluates the configured condition and routes the input to the matching output.",
70
+ condition: { op: "eq", left: { const: true }, right: { const: true } },
71
+ },
72
+ }),
73
+ (0, decorator_validation_1.model)()
74
+ ], IfFlowNode);
75
+ /**
76
+ * Switch — multi-branch. Routes the input to one of the case output ports
77
+ * or `default` based on matching conditions. Each case defines a
78
+ * {@link SwitchCaseCondition} (graphical or code mode) and a dedicated
79
+ * output port. Cases are stored in `metadata.switch.cases` and the
80
+ * renderer creates dynamic output ports from them (DECAF-32 §22.2.2).
81
+ *
82
+ * The node grows in height as cases are added. Each case gets its own
83
+ * output port on the right side, labeled with the case label.
84
+ */
85
+ let SwitchFlowNode = class SwitchFlowNode extends decorator_validation_1.Model {
86
+ };
87
+ exports.SwitchFlowNode = SwitchFlowNode;
88
+ __decorate([
89
+ (0, decorator_validation_1.required)(),
90
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to switch on" }),
91
+ (0, graph_1.input)({ handle: "value" }),
92
+ __metadata("design:type", Object)
93
+ ], SwitchFlowNode.prototype, "value", void 0);
94
+ __decorate([
95
+ (0, decorator_validation_1.required)(),
96
+ (0, ui_decorators_1.uielement)("input", { label: "Default", placeholder: "Default output when no case matches" }),
97
+ (0, graph_1.output)({ handle: "default" }),
98
+ __metadata("design:type", Object)
99
+ ], SwitchFlowNode.prototype, "default", void 0);
100
+ exports.SwitchFlowNode = SwitchFlowNode = __decorate([
101
+ (0, graph_1.node)("core.flow.switch", {
102
+ kind: "core.flow.switch",
103
+ category: "Flow Control",
104
+ color: "#f97316",
105
+ icon: "ti-arrows-shuffle",
106
+ width: 120,
107
+ height: 140,
108
+ labels: ["flow", "switch", "multi-branch"],
109
+ metadata: {
110
+ title: "Switch",
111
+ description: "Multi-branch switch. Routes the input to the first matching case output, or the default output.",
112
+ switch: {
113
+ cases: [],
114
+ defaultPort: "default",
115
+ },
116
+ },
117
+ }),
118
+ (0, decorator_validation_1.model)()
119
+ ], SwitchFlowNode);
120
+ /**
121
+ * Parallel — splits execution into concurrent branches.
122
+ */
123
+ let ParallelFlowNode = class ParallelFlowNode extends decorator_validation_1.Model {
124
+ };
125
+ exports.ParallelFlowNode = ParallelFlowNode;
126
+ __decorate([
127
+ (0, decorator_validation_1.required)(),
128
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to fan out" }),
129
+ (0, graph_1.input)({ handle: "value" }),
130
+ __metadata("design:type", Object)
131
+ ], ParallelFlowNode.prototype, "value", void 0);
132
+ __decorate([
133
+ (0, decorator_validation_1.required)(),
134
+ (0, ui_decorators_1.uielement)("input", { label: "Branches", placeholder: "Collected branch outputs" }),
135
+ (0, graph_1.output)({ handle: "branches" }),
136
+ __metadata("design:type", Array)
137
+ ], ParallelFlowNode.prototype, "branches", void 0);
138
+ exports.ParallelFlowNode = ParallelFlowNode = __decorate([
139
+ (0, graph_1.node)("core.flow.parallel", {
140
+ kind: "core.flow.parallel",
141
+ category: "Flow Control",
142
+ color: "#06b6d4",
143
+ icon: "ti-arrows-vertical",
144
+ width: 96,
145
+ height: 96,
146
+ labels: ["flow", "parallel", "concurrent"],
147
+ metadata: {
148
+ title: "Parallel",
149
+ description: "Splits execution into concurrent branches. All branches run in parallel and outputs are collected.",
150
+ branchCount: 2,
151
+ },
152
+ }),
153
+ (0, decorator_validation_1.model)()
154
+ ], ParallelFlowNode);
155
+ /**
156
+ * Merge — normalises branch/parallel outputs into a single output.
157
+ */
158
+ let MergeFlowNode = class MergeFlowNode extends decorator_validation_1.Model {
159
+ };
160
+ exports.MergeFlowNode = MergeFlowNode;
161
+ __decorate([
162
+ (0, decorator_validation_1.required)(),
163
+ (0, ui_decorators_1.uielement)("textarea", { label: "Branch outputs", placeholder: "Outputs to merge" }),
164
+ (0, graph_1.input)({ handle: "values" }),
165
+ __metadata("design:type", Array)
166
+ ], MergeFlowNode.prototype, "values", void 0);
167
+ __decorate([
168
+ (0, decorator_validation_1.required)(),
169
+ (0, ui_decorators_1.uielement)("input", { label: "Merged output", placeholder: "Merged result" }),
170
+ (0, graph_1.output)({ handle: "merged" }),
171
+ __metadata("design:type", Object)
172
+ ], MergeFlowNode.prototype, "merged", void 0);
173
+ exports.MergeFlowNode = MergeFlowNode = __decorate([
174
+ (0, graph_1.node)("core.flow.merge", {
175
+ kind: "core.flow.merge",
176
+ category: "Utility",
177
+ color: "#0d9488",
178
+ icon: "ti-arrows-merge",
179
+ width: 96,
180
+ height: 96,
181
+ labels: ["flow", "merge", "join"],
182
+ metadata: {
183
+ title: "Merge",
184
+ description: "Merges multiple branch outputs into a single normalised output object.",
185
+ strategy: "concat",
186
+ },
187
+ }),
188
+ (0, decorator_validation_1.model)()
189
+ ], MergeFlowNode);
190
+ /**
191
+ * Map — transforms the current input into a new output object.
192
+ */
193
+ let MapFlowNode = class MapFlowNode extends decorator_validation_1.Model {
194
+ };
195
+ exports.MapFlowNode = MapFlowNode;
196
+ __decorate([
197
+ (0, decorator_validation_1.required)(),
198
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to transform" }),
199
+ (0, graph_1.input)({ handle: "value" }),
200
+ __metadata("design:type", Object)
201
+ ], MapFlowNode.prototype, "value", void 0);
202
+ __decorate([
203
+ (0, decorator_validation_1.required)(),
204
+ (0, ui_decorators_1.uielement)("input", { label: "Transformed output", placeholder: "Mapped result" }),
205
+ (0, graph_1.output)({ handle: "result" }),
206
+ __metadata("design:type", Object)
207
+ ], MapFlowNode.prototype, "result", void 0);
208
+ exports.MapFlowNode = MapFlowNode = __decorate([
209
+ (0, graph_1.node)("core.flow.map", {
210
+ kind: "core.flow.map",
211
+ category: "Utility",
212
+ color: "#84cc16",
213
+ icon: "ti-arrows-right-left",
214
+ width: 96,
215
+ height: 96,
216
+ labels: ["flow", "map", "transform"],
217
+ metadata: {
218
+ title: "Map",
219
+ description: "Transforms the current input into a new output object using the configured mapper.",
220
+ mapper: {},
221
+ },
222
+ }),
223
+ (0, decorator_validation_1.model)()
224
+ ], MapFlowNode);
225
+ /**
226
+ * Delay — pauses execution for a configured duration.
227
+ */
228
+ let DelayFlowNode = class DelayFlowNode extends decorator_validation_1.Model {
229
+ };
230
+ exports.DelayFlowNode = DelayFlowNode;
231
+ __decorate([
232
+ (0, decorator_validation_1.required)(),
233
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to forward after delay" }),
234
+ (0, graph_1.input)({ handle: "value" }),
235
+ __metadata("design:type", Object)
236
+ ], DelayFlowNode.prototype, "value", void 0);
237
+ __decorate([
238
+ (0, decorator_validation_1.required)(),
239
+ (0, ui_decorators_1.uielement)("input", { label: "Output value", placeholder: "Forwarded value" }),
240
+ (0, graph_1.output)({ handle: "value" }),
241
+ __metadata("design:type", Object)
242
+ ], DelayFlowNode.prototype, "valueOut", void 0);
243
+ exports.DelayFlowNode = DelayFlowNode = __decorate([
244
+ (0, graph_1.node)("core.flow.delay", {
245
+ kind: "core.flow.delay",
246
+ category: "Utility",
247
+ color: "#a3a3a3",
248
+ icon: "ti-clock-hour-4",
249
+ width: 96,
250
+ height: 96,
251
+ labels: ["flow", "delay", "wait"],
252
+ metadata: {
253
+ title: "Delay",
254
+ description: "Pauses execution for the configured duration (in milliseconds), then forwards the input unchanged.",
255
+ durationMs: 1000,
256
+ },
257
+ }),
258
+ (0, decorator_validation_1.model)()
259
+ ], DelayFlowNode);
260
+ /**
261
+ * Error boundary — try/catch/finally workflow behaviour.
262
+ */
263
+ let ErrorBoundaryFlowNode = class ErrorBoundaryFlowNode extends decorator_validation_1.Model {
264
+ };
265
+ exports.ErrorBoundaryFlowNode = ErrorBoundaryFlowNode;
266
+ __decorate([
267
+ (0, decorator_validation_1.required)(),
268
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to guard" }),
269
+ (0, graph_1.input)({ handle: "value" }),
270
+ __metadata("design:type", Object)
271
+ ], ErrorBoundaryFlowNode.prototype, "value", void 0);
272
+ __decorate([
273
+ (0, decorator_validation_1.required)(),
274
+ (0, ui_decorators_1.uielement)("input", { label: "Result", placeholder: "Output on success" }),
275
+ (0, graph_1.output)({ handle: "result" }),
276
+ __metadata("design:type", Object)
277
+ ], ErrorBoundaryFlowNode.prototype, "result", void 0);
278
+ __decorate([
279
+ (0, decorator_validation_1.required)(),
280
+ (0, ui_decorators_1.uielement)("input", { label: "Error", placeholder: "Output on failure" }),
281
+ (0, graph_1.output)({ handle: "error" }),
282
+ __metadata("design:type", Object)
283
+ ], ErrorBoundaryFlowNode.prototype, "error", void 0);
284
+ exports.ErrorBoundaryFlowNode = ErrorBoundaryFlowNode = __decorate([
285
+ (0, graph_1.node)("core.flow.errorBoundary", {
286
+ kind: "core.flow.errorBoundary",
287
+ category: "Flow Control",
288
+ color: "#ef4444",
289
+ icon: "ti-shield-check",
290
+ width: 96,
291
+ height: 96,
292
+ labels: ["flow", "error", "try-catch"],
293
+ metadata: {
294
+ title: "Error boundary",
295
+ description: "Wraps the input in a try/catch/finally. Emits the result on success, or the error on failure.",
296
+ finally: false,
297
+ },
298
+ }),
299
+ (0, decorator_validation_1.model)()
300
+ ], ErrorBoundaryFlowNode);
301
+ /**
302
+ * Human approval — suspends execution until a human approves or rejects.
303
+ */
304
+ let HumanApprovalFlowNode = class HumanApprovalFlowNode extends decorator_validation_1.Model {
305
+ };
306
+ exports.HumanApprovalFlowNode = HumanApprovalFlowNode;
307
+ __decorate([
308
+ (0, decorator_validation_1.required)(),
309
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value pending approval" }),
310
+ (0, graph_1.input)({ handle: "value" }),
311
+ __metadata("design:type", Object)
312
+ ], HumanApprovalFlowNode.prototype, "value", void 0);
313
+ __decorate([
314
+ (0, decorator_validation_1.required)(),
315
+ (0, ui_decorators_1.uielement)("input", { label: "Approved", placeholder: "Output when approved" }),
316
+ (0, graph_1.output)({ handle: "approved" }),
317
+ __metadata("design:type", Object)
318
+ ], HumanApprovalFlowNode.prototype, "approved", void 0);
319
+ __decorate([
320
+ (0, decorator_validation_1.required)(),
321
+ (0, ui_decorators_1.uielement)("input", { label: "Rejected", placeholder: "Output when rejected" }),
322
+ (0, graph_1.output)({ handle: "rejected" }),
323
+ __metadata("design:type", Object)
324
+ ], HumanApprovalFlowNode.prototype, "rejected", void 0);
325
+ exports.HumanApprovalFlowNode = HumanApprovalFlowNode = __decorate([
326
+ (0, graph_1.node)("core.flow.humanApproval", {
327
+ kind: "core.flow.humanApproval",
328
+ category: "Flow Control",
329
+ color: "#d946ef",
330
+ icon: "ti-user-check",
331
+ width: 96,
332
+ height: 96,
333
+ labels: ["flow", "approval", "suspend"],
334
+ metadata: {
335
+ title: "Human approval",
336
+ description: "Suspends execution until a human approves or rejects. Emits the approved value or a rejection.",
337
+ approvers: [],
338
+ timeoutMs: 86400000,
339
+ },
340
+ }),
341
+ (0, decorator_validation_1.model)()
342
+ ], HumanApprovalFlowNode);
343
+ /**
344
+ * Return — defines and normalises the final workflow output.
345
+ */
346
+ let ReturnFlowNode = class ReturnFlowNode extends decorator_validation_1.Model {
347
+ };
348
+ exports.ReturnFlowNode = ReturnFlowNode;
349
+ __decorate([
350
+ (0, decorator_validation_1.required)(),
351
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input value", placeholder: "Value to normalise" }),
352
+ (0, graph_1.input)({ handle: "value" }),
353
+ __metadata("design:type", Object)
354
+ ], ReturnFlowNode.prototype, "value", void 0);
355
+ __decorate([
356
+ (0, decorator_validation_1.required)(),
357
+ (0, ui_decorators_1.uielement)("input", { label: "Returned output", placeholder: "Normalised output" }),
358
+ (0, graph_1.output)({ handle: "result" }),
359
+ __metadata("design:type", Object)
360
+ ], ReturnFlowNode.prototype, "result", void 0);
361
+ exports.ReturnFlowNode = ReturnFlowNode = __decorate([
362
+ (0, graph_1.node)("core.flow.return", {
363
+ kind: "core.flow.return",
364
+ category: "Utility",
365
+ color: "#22c55e",
366
+ icon: "ti-arrow-back-up",
367
+ width: 96,
368
+ height: 96,
369
+ labels: ["flow", "return", "output"],
370
+ metadata: {
371
+ title: "Return",
372
+ description: "Normalises the input into the final workflow output object.",
373
+ outputSchema: {},
374
+ },
375
+ }),
376
+ (0, decorator_validation_1.model)()
377
+ ], ReturnFlowNode);
378
+ /**
379
+ * Code — sandboxed JS/TS code execution (ALFRED-5 §7).
380
+ *
381
+ * The engine does not implement the sandbox directly (§22.4). A future
382
+ * executor may wrap the `CodeSandbox` contract (ALFRED-5 §7.17) as a
383
+ * pluggable executor. The placeholder syntax (`{{ $input }}`, `{{ $item }}`,
384
+ * `{{ $index }}`, `{{ $vars }}`, `{{ $node["Name"].output }}`) is Mastra-
385
+ * agnostic and lives in the downstream project's `modules/core` (ALFRED-6).
386
+ */
387
+ let CodeFlowNode = class CodeFlowNode extends decorator_validation_1.Model {
388
+ };
389
+ exports.CodeFlowNode = CodeFlowNode;
390
+ __decorate([
391
+ (0, decorator_validation_1.required)(),
392
+ (0, ui_decorators_1.uielement)("textarea", { label: "Input", placeholder: "Input object (accessible as $input)" }),
393
+ (0, graph_1.input)({ handle: "input" }),
394
+ __metadata("design:type", Object)
395
+ ], CodeFlowNode.prototype, "input", void 0);
396
+ __decorate([
397
+ (0, decorator_validation_1.required)(),
398
+ (0, ui_decorators_1.uielement)("input", { label: "Result", placeholder: "Code execution result" }),
399
+ (0, graph_1.output)({ handle: "result" }),
400
+ __metadata("design:type", Object)
401
+ ], CodeFlowNode.prototype, "result", void 0);
402
+ exports.CodeFlowNode = CodeFlowNode = __decorate([
403
+ (0, graph_1.node)("core.flow.code", {
404
+ kind: "core.flow.code",
405
+ category: "Utility",
406
+ color: "#7c3aed",
407
+ icon: "ti-code",
408
+ width: 96,
409
+ height: 96,
410
+ labels: ["flow", "code", "sandbox", "transform"],
411
+ metadata: {
412
+ title: "Code",
413
+ description: "Runs user-authored JS/TS in a restricted VM sandbox. Supports placeholder syntax for workflow data references.",
414
+ code: "",
415
+ language: "javascript",
416
+ },
417
+ }),
418
+ (0, decorator_validation_1.model)()
419
+ ], CodeFlowNode);
420
+ /**
421
+ * All built-in flow-control node constructors.
422
+ */
423
+ exports.GRAPH_FLOW_CONTROL_NODES = [
424
+ IfFlowNode,
425
+ SwitchFlowNode,
426
+ ParallelFlowNode,
427
+ MergeFlowNode,
428
+ MapFlowNode,
429
+ DelayFlowNode,
430
+ ErrorBoundaryFlowNode,
431
+ HumanApprovalFlowNode,
432
+ ReturnFlowNode,
433
+ CodeFlowNode,
434
+ ];
435
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dyYXBoL25vZGVzL2Zsb3ctY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVwRTs7O0dBR0c7QUFnQkksSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVyxTQUFRLEtBQUs7Q0FlcEMsQ0FBQTtBQVhDO0lBSEMsUUFBUSxFQUFFO0lBQ1YsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDakYsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDOzt5Q0FDWDtBQUtoQjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxDQUFDO0lBQ25GLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQzs7d0NBQ1o7QUFLZjtJQUhDLFFBQVEsRUFBRTtJQUNWLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDO0lBQ3BGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQzs7d0NBQ1o7QUFkSixVQUFVO0lBZnRCLElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDcEIsSUFBSSxFQUFF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O0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxVQUFVO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxZQUFZO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvZ3JhcGgvbm9kZXMvZmxvdy1jb250cm9sXG4gKiBAc3VtbWFyeSBQcm9kdWN0aW9uIGZsb3ctY29udHJvbCBub2RlIGtpbmQgZGVjbGFyYXRpb25zIChERUNBRi0zMiDCpzIyLjIuMikuXG4gKiBAZGVzY3JpcHRpb24gQ2Fub25pY2FsIGBAbm9kZWAtZGVjb3JhdGVkIGNsYXNzZXMgZm9yIHRoZSB0ZW4gQUxGUkVELTVcbiAqIGZsb3ctY29udHJvbCBraW5kcy4gVGhlc2UgYXJlIGdyYXBoLWxldmVsIG1hY3JvczogdGhlIGVuZ2luZSdzIHBsYW5uZXJcbiAqIHJlY29nbmlzZXMgdGhlbSBhcyBvcmRpbmFyeSBleGVjdXRhYmxlIG5vZGVzICjCpzUuNykgYnV0IHRoZXkgaGF2ZSBub1xuICogYnVpbHQtaW4gZXhlY3V0b3JzIOKAlCBkb3duc3RyZWFtIHByb2plY3RzIChlLmcuIEFMRlJFRCkgcmVnaXN0ZXIgY3VzdG9tXG4gKiBleGVjdXRvcnMgb3IgY29tcGlsZSB0aGVtIGludG8gTWFzdHJhIGNvbXBvc2l0aW9uIEFQSXMgKMKnMjIuMi4yKS5cbiAqXG4gKiBUaGUgdGhyZWUgbG9vcCBraW5kcyAoYGNvcmUubG9vcC5mb3JlYWNoL3doaWxlL3VudGlsYCkgYWxyZWFkeSBoYXZlIGJ1aWx0LWluXG4gKiBleGVjdXRvcnMgKMKnNS45KSBhbmQgYXJlIE5PVCByZWRlY2xhcmVkIGhlcmUuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB1aWVsZW1lbnQgfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGlucHV0LCBub2RlLCBvdXRwdXQgfSBmcm9tIFwiQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMvZ3JhcGhcIjtcblxuLyoqXG4gKiBJZiDigJQgY29uZGl0aW9uYWwgYnJhbmNoLiBFdmFsdWF0ZXMgYSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKMKnMjIuMykgYW5kXG4gKiByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBgdGhlbmAgb3IgYGVsc2VgIG91dHB1dC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuaWZcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5pZlwiLFxuICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgY29sb3I6IFwiI2Y1OWUwYlwiLFxuICBpY29uOiBcInRpLWFycm93cy1zcGxpdC0yXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiY29uZGl0aW9uYWxcIiwgXCJicmFuY2hcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiSWZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJDb25kaXRpb25hbCBicmFuY2guIEV2YWx1YXRlcyB0aGUgY29uZmlndXJlZCBjb25kaXRpb24gYW5kIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIG1hdGNoaW5nIG91dHB1dC5cIixcbiAgICBjb25kaXRpb246IHsgb3A6IFwiZXFcIiwgbGVmdDogeyBjb25zdDogdHJ1ZSB9LCByaWdodDogeyBjb25zdDogdHJ1ZSB9IH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBJZkZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBldmFsdWF0ZVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJUaGVuXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGNvbmRpdGlvbiBpcyB0cnVlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJ0aGVuXCIgfSlcbiAgdGhlbiE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiRWxzZVwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiBjb25kaXRpb24gaXMgZmFsc2VcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImVsc2VcIiB9KVxuICBlbHNlITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBTd2l0Y2gg4oCUIG11bHRpLWJyYW5jaC4gUm91dGVzIHRoZSBpbnB1dCB0byBvbmUgb2YgdGhlIGNhc2Ugb3V0cHV0IHBvcnRzXG4gKiBvciBgZGVmYXVsdGAgYmFzZWQgb24gbWF0Y2hpbmcgY29uZGl0aW9ucy4gRWFjaCBjYXNlIGRlZmluZXMgYVxuICoge0BsaW5rIFN3aXRjaENhc2VDb25kaXRpb259IChncmFwaGljYWwgb3IgY29kZSBtb2RlKSBhbmQgYSBkZWRpY2F0ZWRcbiAqIG91dHB1dCBwb3J0LiBDYXNlcyBhcmUgc3RvcmVkIGluIGBtZXRhZGF0YS5zd2l0Y2guY2FzZXNgIGFuZCB0aGVcbiAqIHJlbmRlcmVyIGNyZWF0ZXMgZHluYW1pYyBvdXRwdXQgcG9ydHMgZnJvbSB0aGVtIChERUNBRi0zMiDCpzIyLjIuMikuXG4gKlxuICogVGhlIG5vZGUgZ3Jvd3MgaW4gaGVpZ2h0IGFzIGNhc2VzIGFyZSBhZGRlZC4gRWFjaCBjYXNlIGdldHMgaXRzIG93blxuICogb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGUsIGxhYmVsZWQgd2l0aCB0aGUgY2FzZSBsYWJlbC5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuc3dpdGNoXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuc3dpdGNoXCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZjk3MzE2XCIsXG4gIGljb246IFwidGktYXJyb3dzLXNodWZmbGVcIixcbiAgd2lkdGg6IDEyMCxcbiAgaGVpZ2h0OiAxNDAsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcInN3aXRjaFwiLCBcIm11bHRpLWJyYW5jaFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJTd2l0Y2hcIixcbiAgICBkZXNjcmlwdGlvbjogXCJNdWx0aS1icmFuY2ggc3dpdGNoLiBSb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBmaXJzdCBtYXRjaGluZyBjYXNlIG91dHB1dCwgb3IgdGhlIGRlZmF1bHQgb3V0cHV0LlwiLFxuICAgIHN3aXRjaDoge1xuICAgICAgY2FzZXM6IFtdLFxuICAgICAgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBTd2l0Y2hGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gc3dpdGNoIG9uXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkRlZmF1bHRcIiwgcGxhY2Vob2xkZXI6IFwiRGVmYXVsdCBvdXRwdXQgd2hlbiBubyBjYXNlIG1hdGNoZXNcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImRlZmF1bHRcIiB9KVxuICBkZWZhdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBQYXJhbGxlbCDigJQgc3BsaXRzIGV4ZWN1dGlvbiBpbnRvIGNvbmN1cnJlbnQgYnJhbmNoZXMuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LnBhcmFsbGVsXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cucGFyYWxsZWxcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiMwNmI2ZDRcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3MtdmVydGljYWxcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJwYXJhbGxlbFwiLCBcImNvbmN1cnJlbnRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiUGFyYWxsZWxcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTcGxpdHMgZXhlY3V0aW9uIGludG8gY29uY3VycmVudCBicmFuY2hlcy4gQWxsIGJyYW5jaGVzIHJ1biBpbiBwYXJhbGxlbCBhbmQgb3V0cHV0cyBhcmUgY29sbGVjdGVkLlwiLFxuICAgIGJyYW5jaENvdW50OiAyLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUGFyYWxsZWxGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZmFuIG91dFwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJCcmFuY2hlc1wiLCBwbGFjZWhvbGRlcjogXCJDb2xsZWN0ZWQgYnJhbmNoIG91dHB1dHNcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcImJyYW5jaGVzXCIgfSlcbiAgYnJhbmNoZXMhOiB1bmtub3duW107XG59XG5cbi8qKlxuICogTWVyZ2Ug4oCUIG5vcm1hbGlzZXMgYnJhbmNoL3BhcmFsbGVsIG91dHB1dHMgaW50byBhIHNpbmdsZSBvdXRwdXQuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93Lm1lcmdlXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cubWVyZ2VcIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjMGQ5NDg4XCIsXG4gIGljb246IFwidGktYXJyb3dzLW1lcmdlXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwibWVyZ2VcIiwgXCJqb2luXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIk1lcmdlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiTWVyZ2VzIG11bHRpcGxlIGJyYW5jaCBvdXRwdXRzIGludG8gYSBzaW5nbGUgbm9ybWFsaXNlZCBvdXRwdXQgb2JqZWN0LlwiLFxuICAgIHN0cmF0ZWd5OiBcImNvbmNhdFwiLFxuICB9LFxufSlcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgTWVyZ2VGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiQnJhbmNoIG91dHB1dHNcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0cyB0byBtZXJnZVwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZXNcIiB9KVxuICB2YWx1ZXMhOiB1bmtub3duW107XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTWVyZ2VkIG91dHB1dFwiLCBwbGFjZWhvbGRlcjogXCJNZXJnZWQgcmVzdWx0XCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJtZXJnZWRcIiB9KVxuICBtZXJnZWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIE1hcCDigJQgdHJhbnNmb3JtcyB0aGUgY3VycmVudCBpbnB1dCBpbnRvIGEgbmV3IG91dHB1dCBvYmplY3QuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93Lm1hcFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93Lm1hcFwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM4NGNjMTZcIixcbiAgaWNvbjogXCJ0aS1hcnJvd3MtcmlnaHQtbGVmdFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcIm1hcFwiLCBcInRyYW5zZm9ybVwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJNYXBcIixcbiAgICBkZXNjcmlwdGlvbjogXCJUcmFuc2Zvcm1zIHRoZSBjdXJyZW50IGlucHV0IGludG8gYSBuZXcgb3V0cHV0IG9iamVjdCB1c2luZyB0aGUgY29uZmlndXJlZCBtYXBwZXIuXCIsXG4gICAgbWFwcGVyOiB7fSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE1hcEZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byB0cmFuc2Zvcm1cIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiVHJhbnNmb3JtZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk1hcHBlZCByZXN1bHRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG5cbi8qKlxuICogRGVsYXkg4oCUIHBhdXNlcyBleGVjdXRpb24gZm9yIGEgY29uZmlndXJlZCBkdXJhdGlvbi5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuZGVsYXlcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5kZWxheVwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiNhM2EzYTNcIixcbiAgaWNvbjogXCJ0aS1jbG9jay1ob3VyLTRcIixcbiAgd2lkdGg6IDk2LFxuICBoZWlnaHQ6IDk2LFxuICBsYWJlbHM6IFtcImZsb3dcIiwgXCJkZWxheVwiLCBcIndhaXRcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiRGVsYXlcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQYXVzZXMgZXhlY3V0aW9uIGZvciB0aGUgY29uZmlndXJlZCBkdXJhdGlvbiAoaW4gbWlsbGlzZWNvbmRzKSwgdGhlbiBmb3J3YXJkcyB0aGUgaW5wdXQgdW5jaGFuZ2VkLlwiLFxuICAgIGR1cmF0aW9uTXM6IDEwMDAsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBEZWxheUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBmb3J3YXJkIGFmdGVyIGRlbGF5XCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIk91dHB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJGb3J3YXJkZWQgdmFsdWVcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWVPdXQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEVycm9yIGJvdW5kYXJ5IOKAlCB0cnkvY2F0Y2gvZmluYWxseSB3b3JrZmxvdyBiZWhhdmlvdXIuXG4gKi9cbkBub2RlKFwiY29yZS5mbG93LmVycm9yQm91bmRhcnlcIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5lcnJvckJvdW5kYXJ5XCIsXG4gIGNhdGVnb3J5OiBcIkZsb3cgQ29udHJvbFwiLFxuICBjb2xvcjogXCIjZWY0NDQ0XCIsXG4gIGljb246IFwidGktc2hpZWxkLWNoZWNrXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiZXJyb3JcIiwgXCJ0cnktY2F0Y2hcIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiRXJyb3IgYm91bmRhcnlcIixcbiAgICBkZXNjcmlwdGlvbjogXCJXcmFwcyB0aGUgaW5wdXQgaW4gYSB0cnkvY2F0Y2gvZmluYWxseS4gRW1pdHMgdGhlIHJlc3VsdCBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3Igb24gZmFpbHVyZS5cIixcbiAgICBmaW5hbGx5OiBmYWxzZSxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnlGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZ3VhcmRcIiB9KVxuICBAaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KVxuICB2YWx1ZSE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmVzdWx0XCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCBvbiBzdWNjZXNzXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KVxuICByZXN1bHQhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkVycm9yXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCBvbiBmYWlsdXJlXCIgfSlcbiAgQG91dHB1dCh7IGhhbmRsZTogXCJlcnJvclwiIH0pXG4gIGVycm9yITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBIdW1hbiBhcHByb3ZhbCDigJQgc3VzcGVuZHMgZXhlY3V0aW9uIHVudGlsIGEgaHVtYW4gYXBwcm92ZXMgb3IgcmVqZWN0cy5cbiAqL1xuQG5vZGUoXCJjb3JlLmZsb3cuaHVtYW5BcHByb3ZhbFwiLCB7XG4gIGtpbmQ6IFwiY29yZS5mbG93Lmh1bWFuQXBwcm92YWxcIixcbiAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gIGNvbG9yOiBcIiNkOTQ2ZWZcIixcbiAgaWNvbjogXCJ0aS11c2VyLWNoZWNrXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiYXBwcm92YWxcIiwgXCJzdXNwZW5kXCJdLFxuICBtZXRhZGF0YToge1xuICAgIHRpdGxlOiBcIkh1bWFuIGFwcHJvdmFsXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3VzcGVuZHMgZXhlY3V0aW9uIHVudGlsIGEgaHVtYW4gYXBwcm92ZXMgb3IgcmVqZWN0cy4gRW1pdHMgdGhlIGFwcHJvdmVkIHZhbHVlIG9yIGEgcmVqZWN0aW9uLlwiLFxuICAgIGFwcHJvdmVyczogW10sXG4gICAgdGltZW91dE1zOiA4NjQwMDAwMCxcbiAgfSxcbn0pXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEh1bWFuQXBwcm92YWxGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgcGVuZGluZyBhcHByb3ZhbFwiIH0pXG4gIEBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pXG4gIHZhbHVlITogdW5rbm93bjtcblxuICBAcmVxdWlyZWQoKVxuICBAdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJBcHByb3ZlZFwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiBhcHByb3ZlZFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwiYXBwcm92ZWRcIiB9KVxuICBhcHByb3ZlZCE6IHVua25vd247XG5cbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmVqZWN0ZWRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gcmVqZWN0ZWRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlamVjdGVkXCIgfSlcbiAgcmVqZWN0ZWQhOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFJldHVybiDigJQgZGVmaW5lcyBhbmQgbm9ybWFsaXNlcyB0aGUgZmluYWwgd29ya2Zsb3cgb3V0cHV0LlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5yZXR1cm5cIiwge1xuICBraW5kOiBcImNvcmUuZmxvdy5yZXR1cm5cIixcbiAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICBjb2xvcjogXCIjMjJjNTVlXCIsXG4gIGljb246IFwidGktYXJyb3ctYmFjay11cFwiLFxuICB3aWR0aDogOTYsXG4gIGhlaWdodDogOTYsXG4gIGxhYmVsczogW1wiZmxvd1wiLCBcInJldHVyblwiLCBcIm91dHB1dFwiXSxcbiAgbWV0YWRhdGE6IHtcbiAgICB0aXRsZTogXCJSZXR1cm5cIixcbiAgICBkZXNjcmlwdGlvbjogXCJOb3JtYWxpc2VzIHRoZSBpbnB1dCBpbnRvIHRoZSBmaW5hbCB3b3JrZmxvdyBvdXRwdXQgb2JqZWN0LlwiLFxuICAgIG91dHB1dFNjaGVtYToge30sXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBSZXR1cm5GbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgQHJlcXVpcmVkKClcbiAgQHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gbm9ybWFsaXNlXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSlcbiAgdmFsdWUhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJldHVybmVkIG91dHB1dFwiLCBwbGFjZWhvbGRlcjogXCJOb3JtYWxpc2VkIG91dHB1dFwiIH0pXG4gIEBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSlcbiAgcmVzdWx0ITogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBDb2RlIOKAlCBzYW5kYm94ZWQgSlMvVFMgY29kZSBleGVjdXRpb24gKEFMRlJFRC01IMKnNykuXG4gKlxuICogVGhlIGVuZ2luZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIHNhbmRib3ggZGlyZWN0bHkgKMKnMjIuNCkuIEEgZnV0dXJlXG4gKiBleGVjdXRvciBtYXkgd3JhcCB0aGUgYENvZGVTYW5kYm94YCBjb250cmFjdCAoQUxGUkVELTUgwqc3LjE3KSBhcyBhXG4gKiBwbHVnZ2FibGUgZXhlY3V0b3IuIFRoZSBwbGFjZWhvbGRlciBzeW50YXggKGB7eyAkaW5wdXQgfX1gLCBge3sgJGl0ZW0gfX1gLFxuICogYHt7ICRpbmRleCB9fWAsIGB7eyAkdmFycyB9fWAsIGB7eyAkbm9kZVtcIk5hbWVcIl0ub3V0cHV0IH19YCkgaXMgTWFzdHJhLVxuICogYWdub3N0aWMgYW5kIGxpdmVzIGluIHRoZSBkb3duc3RyZWFtIHByb2plY3QncyBgbW9kdWxlcy9jb3JlYCAoQUxGUkVELTYpLlxuICovXG5Abm9kZShcImNvcmUuZmxvdy5jb2RlXCIsIHtcbiAga2luZDogXCJjb3JlLmZsb3cuY29kZVwiLFxuICBjYXRlZ29yeTogXCJVdGlsaXR5XCIsXG4gIGNvbG9yOiBcIiM3YzNhZWRcIixcbiAgaWNvbjogXCJ0aS1jb2RlXCIsXG4gIHdpZHRoOiA5NixcbiAgaGVpZ2h0OiA5NixcbiAgbGFiZWxzOiBbXCJmbG93XCIsIFwiY29kZVwiLCBcInNhbmRib3hcIiwgXCJ0cmFuc2Zvcm1cIl0sXG4gIG1ldGFkYXRhOiB7XG4gICAgdGl0bGU6IFwiQ29kZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJ1bnMgdXNlci1hdXRob3JlZCBKUy9UUyBpbiBhIHJlc3RyaWN0ZWQgVk0gc2FuZGJveC4gU3VwcG9ydHMgcGxhY2Vob2xkZXIgc3ludGF4IGZvciB3b3JrZmxvdyBkYXRhIHJlZmVyZW5jZXMuXCIsXG4gICAgY29kZTogXCJcIixcbiAgICBsYW5ndWFnZTogXCJqYXZhc2NyaXB0XCIsXG4gIH0sXG59KVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBDb2RlRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0XCIsIHBsYWNlaG9sZGVyOiBcIklucHV0IG9iamVjdCAoYWNjZXNzaWJsZSBhcyAkaW5wdXQpXCIgfSlcbiAgQGlucHV0KHsgaGFuZGxlOiBcImlucHV0XCIgfSlcbiAgaW5wdXQhOiB1bmtub3duO1xuXG4gIEByZXF1aXJlZCgpXG4gIEB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlc3VsdFwiLCBwbGFjZWhvbGRlcjogXCJDb2RlIGV4ZWN1dGlvbiByZXN1bHRcIiB9KVxuICBAb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pXG4gIHJlc3VsdCE6IHVua25vd247XG59XG5cbi8qKlxuICogQWxsIGJ1aWx0LWluIGZsb3ctY29udHJvbCBub2RlIGNvbnN0cnVjdG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdSQVBIX0ZMT1dfQ09OVFJPTF9OT0RFUyA9IFtcbiAgSWZGbG93Tm9kZSxcbiAgU3dpdGNoRmxvd05vZGUsXG4gIFBhcmFsbGVsRmxvd05vZGUsXG4gIE1lcmdlRmxvd05vZGUsXG4gIE1hcEZsb3dOb2RlLFxuICBEZWxheUZsb3dOb2RlLFxuICBFcnJvckJvdW5kYXJ5Rmxvd05vZGUsXG4gIEh1bWFuQXBwcm92YWxGbG93Tm9kZSxcbiAgUmV0dXJuRmxvd05vZGUsXG4gIENvZGVGbG93Tm9kZSxcbl0gYXMgY29uc3Q7XG4iXX0=
436
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmxvdy1jb250cm9sLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FB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QUU7SUFDVixJQUFBLHlCQUFTLEVBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztJQUM3RSxJQUFBLGNBQU0sRUFBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUM1QixVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztDQUNwQyxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0MsdUJBQUEsWUFBWSxHQUFHLFVBQVUsQ0FBQztJQUN0QixJQUFBLFlBQUksRUFBQyxnQkFBZ0IsRUFBRTtRQUNuQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQztRQUNoRCxRQUFRLEVBQUU7WUFDTixLQUFLLEVBQUUsTUFBTTtZQUNiLFdBQVcsRUFBRSxnSEFBZ0g7WUFDN0gsSUFBSSxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUUsWUFBWTtTQUN6QjtLQUNKLENBQUM7SUFDRixJQUFBLDRCQUFLLEdBQUU7Q0FDVixFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRWpCOztHQUVHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRztJQUNwQyxVQUFVO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsV0FBVztJQUNYLGFBQWE7SUFDYixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxZQUFZO0NBQ2YsQ0FBQztBQUNGLDh0ekJBQTh0ekIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9ub2Rlcy9mbG93LWNvbnRyb2xcbiAqIEBzdW1tYXJ5IFByb2R1Y3Rpb24gZmxvdy1jb250cm9sIG5vZGUga2luZCBkZWNsYXJhdGlvbnMgKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBDYW5vbmljYWwgYEBub2RlYC1kZWNvcmF0ZWQgY2xhc3NlcyBmb3IgdGhlIHRlbiBBTEZSRUQtNVxuICogZmxvdy1jb250cm9sIGtpbmRzLiBUaGVzZSBhcmUgZ3JhcGgtbGV2ZWwgbWFjcm9zOiB0aGUgZW5naW5lJ3MgcGxhbm5lclxuICogcmVjb2duaXNlcyB0aGVtIGFzIG9yZGluYXJ5IGV4ZWN1dGFibGUgbm9kZXMgKMKnNS43KSBidXQgdGhleSBoYXZlIG5vXG4gKiBidWlsdC1pbiBleGVjdXRvcnMg4oCUIGRvd25zdHJlYW0gcHJvamVjdHMgKGUuZy4gQUxGUkVEKSByZWdpc3RlciBjdXN0b21cbiAqIGV4ZWN1dG9ycyBvciBjb21waWxlIHRoZW0gaW50byBNYXN0cmEgY29tcG9zaXRpb24gQVBJcyAowqcyMi4yLjIpLlxuICpcbiAqIFRoZSB0aHJlZSBsb29wIGtpbmRzIChgY29yZS5sb29wLmZvcmVhY2gvd2hpbGUvdW50aWxgKSBhbHJlYWR5IGhhdmUgYnVpbHQtaW5cbiAqIGV4ZWN1dG9ycyAowqc1LjkpIGFuZCBhcmUgTk9UIHJlZGVjbGFyZWQgaGVyZS5cbiAqL1xuaW1wb3J0IHsgTW9kZWwsIG1vZGVsLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVpZWxlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgaW5wdXQsIG5vZGUsIG91dHB1dCB9IGZyb20gXCJAZGVjYWYtdHMvdWktZGVjb3JhdG9ycy9ncmFwaFwiO1xuLyoqXG4gKiBJZiDigJQgY29uZGl0aW9uYWwgYnJhbmNoLiBFdmFsdWF0ZXMgYSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKMKnMjIuMykgYW5kXG4gKiByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZSBgdGhlbmAgb3IgYGVsc2VgIG91dHB1dC5cbiAqL1xubGV0IElmRmxvd05vZGUgPSBjbGFzcyBJZkZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBldmFsdWF0ZVwiIH0pLFxuICAgIGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIElmRmxvd05vZGUucHJvdG90eXBlLCBcInZhbHVlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiVGhlblwiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXQgd2hlbiBjb25kaXRpb24gaXMgdHJ1ZVwiIH0pLFxuICAgIG91dHB1dCh7IGhhbmRsZTogXCJ0aGVuXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIElmRmxvd05vZGUucHJvdG90eXBlLCBcInRoZW5cIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJFbHNlXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIGNvbmRpdGlvbiBpcyBmYWxzZVwiIH0pLFxuICAgIG91dHB1dCh7IGhhbmRsZTogXCJlbHNlXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIElmRmxvd05vZGUucHJvdG90eXBlLCBcImVsc2VcIiwgdm9pZCAwKTtcbklmRmxvd05vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKFwiY29yZS5mbG93LmlmXCIsIHtcbiAgICAgICAga2luZDogXCJjb3JlLmZsb3cuaWZcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gICAgICAgIGNvbG9yOiBcIiNmNTllMGJcIixcbiAgICAgICAgaWNvbjogXCJ0aS1hcnJvd3Mtc3BsaXQtMlwiLFxuICAgICAgICB3aWR0aDogOTYsXG4gICAgICAgIGhlaWdodDogOTYsXG4gICAgICAgIGxhYmVsczogW1wiZmxvd1wiLCBcImNvbmRpdGlvbmFsXCIsIFwiYnJhbmNoXCJdLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6IFwiSWZcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbmRpdGlvbmFsIGJyYW5jaC4gRXZhbHVhdGVzIHRoZSBjb25maWd1cmVkIGNvbmRpdGlvbiBhbmQgcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgbWF0Y2hpbmcgb3V0cHV0LlwiLFxuICAgICAgICAgICAgY29uZGl0aW9uOiB7IG9wOiBcImVxXCIsIGxlZnQ6IHsgY29uc3Q6IHRydWUgfSwgcmlnaHQ6IHsgY29uc3Q6IHRydWUgfSB9LFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIElmRmxvd05vZGUpO1xuZXhwb3J0IHsgSWZGbG93Tm9kZSB9O1xuLyoqXG4gKiBTd2l0Y2gg4oCUIG11bHRpLWJyYW5jaC4gUm91dGVzIHRoZSBpbnB1dCB0byBvbmUgb2YgdGhlIGNhc2Ugb3V0cHV0IHBvcnRzXG4gKiBvciBgZGVmYXVsdGAgYmFzZWQgb24gbWF0Y2hpbmcgY29uZGl0aW9ucy4gRWFjaCBjYXNlIGRlZmluZXMgYVxuICoge0BsaW5rIFN3aXRjaENhc2VDb25kaXRpb259IChncmFwaGljYWwgb3IgY29kZSBtb2RlKSBhbmQgYSBkZWRpY2F0ZWRcbiAqIG91dHB1dCBwb3J0LiBDYXNlcyBhcmUgc3RvcmVkIGluIGBtZXRhZGF0YS5zd2l0Y2guY2FzZXNgIGFuZCB0aGVcbiAqIHJlbmRlcmVyIGNyZWF0ZXMgZHluYW1pYyBvdXRwdXQgcG9ydHMgZnJvbSB0aGVtIChERUNBRi0zMiDCpzIyLjIuMikuXG4gKlxuICogVGhlIG5vZGUgZ3Jvd3MgaW4gaGVpZ2h0IGFzIGNhc2VzIGFyZSBhZGRlZC4gRWFjaCBjYXNlIGdldHMgaXRzIG93blxuICogb3V0cHV0IHBvcnQgb24gdGhlIHJpZ2h0IHNpZGUsIGxhYmVsZWQgd2l0aCB0aGUgY2FzZSBsYWJlbC5cbiAqL1xubGV0IFN3aXRjaEZsb3dOb2RlID0gY2xhc3MgU3dpdGNoRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHRvIHN3aXRjaCBvblwiIH0pLFxuICAgIGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFN3aXRjaEZsb3dOb2RlLnByb3RvdHlwZSwgXCJ2YWx1ZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkRlZmF1bHRcIiwgcGxhY2Vob2xkZXI6IFwiRGVmYXVsdCBvdXRwdXQgd2hlbiBubyBjYXNlIG1hdGNoZXNcIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwiZGVmYXVsdFwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBTd2l0Y2hGbG93Tm9kZS5wcm90b3R5cGUsIFwiZGVmYXVsdFwiLCB2b2lkIDApO1xuU3dpdGNoRmxvd05vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKFwiY29yZS5mbG93LnN3aXRjaFwiLCB7XG4gICAgICAgIGtpbmQ6IFwiY29yZS5mbG93LnN3aXRjaFwiLFxuICAgICAgICBjYXRlZ29yeTogXCJGbG93IENvbnRyb2xcIixcbiAgICAgICAgY29sb3I6IFwiI2Y5NzMxNlwiLFxuICAgICAgICBpY29uOiBcInRpLWFycm93cy1zaHVmZmxlXCIsXG4gICAgICAgIHdpZHRoOiAxMjAsXG4gICAgICAgIGhlaWdodDogMTQwLFxuICAgICAgICBsYWJlbHM6IFtcImZsb3dcIiwgXCJzd2l0Y2hcIiwgXCJtdWx0aS1icmFuY2hcIl0sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogXCJTd2l0Y2hcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk11bHRpLWJyYW5jaCBzd2l0Y2guIFJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIGNhc2Ugb3V0cHV0LCBvciB0aGUgZGVmYXVsdCBvdXRwdXQuXCIsXG4gICAgICAgICAgICBzd2l0Y2g6IHtcbiAgICAgICAgICAgICAgICBjYXNlczogW10sXG4gICAgICAgICAgICAgICAgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBtb2RlbCgpXG5dLCBTd2l0Y2hGbG93Tm9kZSk7XG5leHBvcnQgeyBTd2l0Y2hGbG93Tm9kZSB9O1xuLyoqXG4gKiBQYXJhbGxlbCDigJQgc3BsaXRzIGV4ZWN1dGlvbiBpbnRvIGNvbmN1cnJlbnQgYnJhbmNoZXMuXG4gKi9cbmxldCBQYXJhbGxlbEZsb3dOb2RlID0gY2xhc3MgUGFyYWxsZWxGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZmFuIG91dFwiIH0pLFxuICAgIGlucHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFBhcmFsbGVsRmxvd05vZGUucHJvdG90eXBlLCBcInZhbHVlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQnJhbmNoZXNcIiwgcGxhY2Vob2xkZXI6IFwiQ29sbGVjdGVkIGJyYW5jaCBvdXRwdXRzXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcImJyYW5jaGVzXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgUGFyYWxsZWxGbG93Tm9kZS5wcm90b3R5cGUsIFwiYnJhbmNoZXNcIiwgdm9pZCAwKTtcblBhcmFsbGVsRmxvd05vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKFwiY29yZS5mbG93LnBhcmFsbGVsXCIsIHtcbiAgICAgICAga2luZDogXCJjb3JlLmZsb3cucGFyYWxsZWxcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gICAgICAgIGNvbG9yOiBcIiMwNmI2ZDRcIixcbiAgICAgICAgaWNvbjogXCJ0aS1hcnJvd3MtdmVydGljYWxcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcImZsb3dcIiwgXCJwYXJhbGxlbFwiLCBcImNvbmN1cnJlbnRcIl0sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogXCJQYXJhbGxlbFwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3BsaXRzIGV4ZWN1dGlvbiBpbnRvIGNvbmN1cnJlbnQgYnJhbmNoZXMuIEFsbCBicmFuY2hlcyBydW4gaW4gcGFyYWxsZWwgYW5kIG91dHB1dHMgYXJlIGNvbGxlY3RlZC5cIixcbiAgICAgICAgICAgIGJyYW5jaENvdW50OiAyLFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIFBhcmFsbGVsRmxvd05vZGUpO1xuZXhwb3J0IHsgUGFyYWxsZWxGbG93Tm9kZSB9O1xuLyoqXG4gKiBNZXJnZSDigJQgbm9ybWFsaXNlcyBicmFuY2gvcGFyYWxsZWwgb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG91dHB1dC5cbiAqL1xubGV0IE1lcmdlRmxvd05vZGUgPSBjbGFzcyBNZXJnZUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJCcmFuY2ggb3V0cHV0c1wiLCBwbGFjZWhvbGRlcjogXCJPdXRwdXRzIHRvIG1lcmdlXCIgfSksXG4gICAgaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVzXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEFycmF5KVxuXSwgTWVyZ2VGbG93Tm9kZS5wcm90b3R5cGUsIFwidmFsdWVzXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiTWVyZ2VkIG91dHB1dFwiLCBwbGFjZWhvbGRlcjogXCJNZXJnZWQgcmVzdWx0XCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcIm1lcmdlZFwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBNZXJnZUZsb3dOb2RlLnByb3RvdHlwZSwgXCJtZXJnZWRcIiwgdm9pZCAwKTtcbk1lcmdlRmxvd05vZGUgPSBfX2RlY29yYXRlKFtcbiAgICBub2RlKFwiY29yZS5mbG93Lm1lcmdlXCIsIHtcbiAgICAgICAga2luZDogXCJjb3JlLmZsb3cubWVyZ2VcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICAgICAgICBjb2xvcjogXCIjMGQ5NDg4XCIsXG4gICAgICAgIGljb246IFwidGktYXJyb3dzLW1lcmdlXCIsXG4gICAgICAgIHdpZHRoOiA5NixcbiAgICAgICAgaGVpZ2h0OiA5NixcbiAgICAgICAgbGFiZWxzOiBbXCJmbG93XCIsIFwibWVyZ2VcIiwgXCJqb2luXCJdLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6IFwiTWVyZ2VcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1lcmdlcyBtdWx0aXBsZSBicmFuY2ggb3V0cHV0cyBpbnRvIGEgc2luZ2xlIG5vcm1hbGlzZWQgb3V0cHV0IG9iamVjdC5cIixcbiAgICAgICAgICAgIHN0cmF0ZWd5OiBcImNvbmNhdFwiLFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIE1lcmdlRmxvd05vZGUpO1xuZXhwb3J0IHsgTWVyZ2VGbG93Tm9kZSB9O1xuLyoqXG4gKiBNYXAg4oCUIHRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0LlxuICovXG5sZXQgTWFwRmxvd05vZGUgPSBjbGFzcyBNYXBGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gdHJhbnNmb3JtXCIgfSksXG4gICAgaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgTWFwRmxvd05vZGUucHJvdG90eXBlLCBcInZhbHVlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiVHJhbnNmb3JtZWQgb3V0cHV0XCIsIHBsYWNlaG9sZGVyOiBcIk1hcHBlZCByZXN1bHRcIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIE1hcEZsb3dOb2RlLnByb3RvdHlwZSwgXCJyZXN1bHRcIiwgdm9pZCAwKTtcbk1hcEZsb3dOb2RlID0gX19kZWNvcmF0ZShbXG4gICAgbm9kZShcImNvcmUuZmxvdy5tYXBcIiwge1xuICAgICAgICBraW5kOiBcImNvcmUuZmxvdy5tYXBcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICAgICAgICBjb2xvcjogXCIjODRjYzE2XCIsXG4gICAgICAgIGljb246IFwidGktYXJyb3dzLXJpZ2h0LWxlZnRcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcImZsb3dcIiwgXCJtYXBcIiwgXCJ0cmFuc2Zvcm1cIl0sXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICB0aXRsZTogXCJNYXBcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRyYW5zZm9ybXMgdGhlIGN1cnJlbnQgaW5wdXQgaW50byBhIG5ldyBvdXRwdXQgb2JqZWN0IHVzaW5nIHRoZSBjb25maWd1cmVkIG1hcHBlci5cIixcbiAgICAgICAgICAgIG1hcHBlcjoge30sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgTWFwRmxvd05vZGUpO1xuZXhwb3J0IHsgTWFwRmxvd05vZGUgfTtcbi8qKlxuICogRGVsYXkg4oCUIHBhdXNlcyBleGVjdXRpb24gZm9yIGEgY29uZmlndXJlZCBkdXJhdGlvbi5cbiAqL1xubGV0IERlbGF5Rmxvd05vZGUgPSBjbGFzcyBEZWxheUZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBmb3J3YXJkIGFmdGVyIGRlbGF5XCIgfSksXG4gICAgaW5wdXQoeyBoYW5kbGU6IFwidmFsdWVcIiB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgRGVsYXlGbG93Tm9kZS5wcm90b3R5cGUsIFwidmFsdWVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJPdXRwdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiRm9yd2FyZGVkIHZhbHVlXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcInZhbHVlXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIERlbGF5Rmxvd05vZGUucHJvdG90eXBlLCBcInZhbHVlT3V0XCIsIHZvaWQgMCk7XG5EZWxheUZsb3dOb2RlID0gX19kZWNvcmF0ZShbXG4gICAgbm9kZShcImNvcmUuZmxvdy5kZWxheVwiLCB7XG4gICAgICAgIGtpbmQ6IFwiY29yZS5mbG93LmRlbGF5XCIsXG4gICAgICAgIGNhdGVnb3J5OiBcIlV0aWxpdHlcIixcbiAgICAgICAgY29sb3I6IFwiI2EzYTNhM1wiLFxuICAgICAgICBpY29uOiBcInRpLWNsb2NrLWhvdXItNFwiLFxuICAgICAgICB3aWR0aDogOTYsXG4gICAgICAgIGhlaWdodDogOTYsXG4gICAgICAgIGxhYmVsczogW1wiZmxvd1wiLCBcImRlbGF5XCIsIFwid2FpdFwiXSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBcIkRlbGF5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQYXVzZXMgZXhlY3V0aW9uIGZvciB0aGUgY29uZmlndXJlZCBkdXJhdGlvbiAoaW4gbWlsbGlzZWNvbmRzKSwgdGhlbiBmb3J3YXJkcyB0aGUgaW5wdXQgdW5jaGFuZ2VkLlwiLFxuICAgICAgICAgICAgZHVyYXRpb25NczogMTAwMCxcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBtb2RlbCgpXG5dLCBEZWxheUZsb3dOb2RlKTtcbmV4cG9ydCB7IERlbGF5Rmxvd05vZGUgfTtcbi8qKlxuICogRXJyb3IgYm91bmRhcnkg4oCUIHRyeS9jYXRjaC9maW5hbGx5IHdvcmtmbG93IGJlaGF2aW91ci5cbiAqL1xubGV0IEVycm9yQm91bmRhcnlGbG93Tm9kZSA9IGNsYXNzIEVycm9yQm91bmRhcnlGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXQgdmFsdWVcIiwgcGxhY2Vob2xkZXI6IFwiVmFsdWUgdG8gZ3VhcmRcIiB9KSxcbiAgICBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBFcnJvckJvdW5kYXJ5Rmxvd05vZGUucHJvdG90eXBlLCBcInZhbHVlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmVzdWx0XCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCBvbiBzdWNjZXNzXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcInJlc3VsdFwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBFcnJvckJvdW5kYXJ5Rmxvd05vZGUucHJvdG90eXBlLCBcInJlc3VsdFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIkVycm9yXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCBvbiBmYWlsdXJlXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcImVycm9yXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEVycm9yQm91bmRhcnlGbG93Tm9kZS5wcm90b3R5cGUsIFwiZXJyb3JcIiwgdm9pZCAwKTtcbkVycm9yQm91bmRhcnlGbG93Tm9kZSA9IF9fZGVjb3JhdGUoW1xuICAgIG5vZGUoXCJjb3JlLmZsb3cuZXJyb3JCb3VuZGFyeVwiLCB7XG4gICAgICAgIGtpbmQ6IFwiY29yZS5mbG93LmVycm9yQm91bmRhcnlcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gICAgICAgIGNvbG9yOiBcIiNlZjQ0NDRcIixcbiAgICAgICAgaWNvbjogXCJ0aS1zaGllbGQtY2hlY2tcIixcbiAgICAgICAgd2lkdGg6IDk2LFxuICAgICAgICBoZWlnaHQ6IDk2LFxuICAgICAgICBsYWJlbHM6IFtcImZsb3dcIiwgXCJlcnJvclwiLCBcInRyeS1jYXRjaFwiXSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yIGJvdW5kYXJ5XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJXcmFwcyB0aGUgaW5wdXQgaW4gYSB0cnkvY2F0Y2gvZmluYWxseS4gRW1pdHMgdGhlIHJlc3VsdCBvbiBzdWNjZXNzLCBvciB0aGUgZXJyb3Igb24gZmFpbHVyZS5cIixcbiAgICAgICAgICAgIGZpbmFsbHk6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIEVycm9yQm91bmRhcnlGbG93Tm9kZSk7XG5leHBvcnQgeyBFcnJvckJvdW5kYXJ5Rmxvd05vZGUgfTtcbi8qKlxuICogSHVtYW4gYXBwcm92YWwg4oCUIHN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuXG4gKi9cbmxldCBIdW1hbkFwcHJvdmFsRmxvd05vZGUgPSBjbGFzcyBIdW1hbkFwcHJvdmFsRmxvd05vZGUgZXh0ZW5kcyBNb2RlbCB7XG59O1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJ0ZXh0YXJlYVwiLCB7IGxhYmVsOiBcIklucHV0IHZhbHVlXCIsIHBsYWNlaG9sZGVyOiBcIlZhbHVlIHBlbmRpbmcgYXBwcm92YWxcIiB9KSxcbiAgICBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBIdW1hbkFwcHJvdmFsRmxvd05vZGUucHJvdG90eXBlLCBcInZhbHVlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiQXBwcm92ZWRcIiwgcGxhY2Vob2xkZXI6IFwiT3V0cHV0IHdoZW4gYXBwcm92ZWRcIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwiYXBwcm92ZWRcIiB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgSHVtYW5BcHByb3ZhbEZsb3dOb2RlLnByb3RvdHlwZSwgXCJhcHByb3ZlZFwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgcmVxdWlyZWQoKSxcbiAgICB1aWVsZW1lbnQoXCJpbnB1dFwiLCB7IGxhYmVsOiBcIlJlamVjdGVkXCIsIHBsYWNlaG9sZGVyOiBcIk91dHB1dCB3aGVuIHJlamVjdGVkXCIgfSksXG4gICAgb3V0cHV0KHsgaGFuZGxlOiBcInJlamVjdGVkXCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIEh1bWFuQXBwcm92YWxGbG93Tm9kZS5wcm90b3R5cGUsIFwicmVqZWN0ZWRcIiwgdm9pZCAwKTtcbkh1bWFuQXBwcm92YWxGbG93Tm9kZSA9IF9fZGVjb3JhdGUoW1xuICAgIG5vZGUoXCJjb3JlLmZsb3cuaHVtYW5BcHByb3ZhbFwiLCB7XG4gICAgICAgIGtpbmQ6IFwiY29yZS5mbG93Lmh1bWFuQXBwcm92YWxcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiRmxvdyBDb250cm9sXCIsXG4gICAgICAgIGNvbG9yOiBcIiNkOTQ2ZWZcIixcbiAgICAgICAgaWNvbjogXCJ0aS11c2VyLWNoZWNrXCIsXG4gICAgICAgIHdpZHRoOiA5NixcbiAgICAgICAgaGVpZ2h0OiA5NixcbiAgICAgICAgbGFiZWxzOiBbXCJmbG93XCIsIFwiYXBwcm92YWxcIiwgXCJzdXNwZW5kXCJdLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6IFwiSHVtYW4gYXBwcm92YWxcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN1c3BlbmRzIGV4ZWN1dGlvbiB1bnRpbCBhIGh1bWFuIGFwcHJvdmVzIG9yIHJlamVjdHMuIEVtaXRzIHRoZSBhcHByb3ZlZCB2YWx1ZSBvciBhIHJlamVjdGlvbi5cIixcbiAgICAgICAgICAgIGFwcHJvdmVyczogW10sXG4gICAgICAgICAgICB0aW1lb3V0TXM6IDg2NDAwMDAwLFxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIG1vZGVsKClcbl0sIEh1bWFuQXBwcm92YWxGbG93Tm9kZSk7XG5leHBvcnQgeyBIdW1hbkFwcHJvdmFsRmxvd05vZGUgfTtcbi8qKlxuICogUmV0dXJuIOKAlCBkZWZpbmVzIGFuZCBub3JtYWxpc2VzIHRoZSBmaW5hbCB3b3JrZmxvdyBvdXRwdXQuXG4gKi9cbmxldCBSZXR1cm5GbG93Tm9kZSA9IGNsYXNzIFJldHVybkZsb3dOb2RlIGV4dGVuZHMgTW9kZWwge1xufTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwidGV4dGFyZWFcIiwgeyBsYWJlbDogXCJJbnB1dCB2YWx1ZVwiLCBwbGFjZWhvbGRlcjogXCJWYWx1ZSB0byBub3JtYWxpc2VcIiB9KSxcbiAgICBpbnB1dCh7IGhhbmRsZTogXCJ2YWx1ZVwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBSZXR1cm5GbG93Tm9kZS5wcm90b3R5cGUsIFwidmFsdWVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW1xuICAgIHJlcXVpcmVkKCksXG4gICAgdWllbGVtZW50KFwiaW5wdXRcIiwgeyBsYWJlbDogXCJSZXR1cm5lZCBvdXRwdXRcIiwgcGxhY2Vob2xkZXI6IFwiTm9ybWFsaXNlZCBvdXRwdXRcIiB9KSxcbiAgICBvdXRwdXQoeyBoYW5kbGU6IFwicmVzdWx0XCIgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIE9iamVjdClcbl0sIFJldHVybkZsb3dOb2RlLnByb3RvdHlwZSwgXCJyZXN1bHRcIiwgdm9pZCAwKTtcblJldHVybkZsb3dOb2RlID0gX19kZWNvcmF0ZShbXG4gICAgbm9kZShcImNvcmUuZmxvdy5yZXR1cm5cIiwge1xuICAgICAgICBraW5kOiBcImNvcmUuZmxvdy5yZXR1cm5cIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICAgICAgICBjb2xvcjogXCIjMjJjNTVlXCIsXG4gICAgICAgIGljb246IFwidGktYXJyb3ctYmFjay11cFwiLFxuICAgICAgICB3aWR0aDogOTYsXG4gICAgICAgIGhlaWdodDogOTYsXG4gICAgICAgIGxhYmVsczogW1wiZmxvd1wiLCBcInJldHVyblwiLCBcIm91dHB1dFwiXSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBcIlJldHVyblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTm9ybWFsaXNlcyB0aGUgaW5wdXQgaW50byB0aGUgZmluYWwgd29ya2Zsb3cgb3V0cHV0IG9iamVjdC5cIixcbiAgICAgICAgICAgIG91dHB1dFNjaGVtYToge30sXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgUmV0dXJuRmxvd05vZGUpO1xuZXhwb3J0IHsgUmV0dXJuRmxvd05vZGUgfTtcbi8qKlxuICogQ29kZSDigJQgc2FuZGJveGVkIEpTL1RTIGNvZGUgZXhlY3V0aW9uIChBTEZSRUQtNSDCpzcpLlxuICpcbiAqIFRoZSBlbmdpbmUgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBzYW5kYm94IGRpcmVjdGx5ICjCpzIyLjQpLiBBIGZ1dHVyZVxuICogZXhlY3V0b3IgbWF5IHdyYXAgdGhlIGBDb2RlU2FuZGJveGAgY29udHJhY3QgKEFMRlJFRC01IMKnNy4xNykgYXMgYVxuICogcGx1Z2dhYmxlIGV4ZWN1dG9yLiBUaGUgcGxhY2Vob2xkZXIgc3ludGF4IChge3sgJGlucHV0IH19YCwgYHt7ICRpdGVtIH19YCxcbiAqIGB7eyAkaW5kZXggfX1gLCBge3sgJHZhcnMgfX1gLCBge3sgJG5vZGVbXCJOYW1lXCJdLm91dHB1dCB9fWApIGlzIE1hc3RyYS1cbiAqIGFnbm9zdGljIGFuZCBsaXZlcyBpbiB0aGUgZG93bnN0cmVhbSBwcm9qZWN0J3MgYG1vZHVsZXMvY29yZWAgKEFMRlJFRC02KS5cbiAqL1xubGV0IENvZGVGbG93Tm9kZSA9IGNsYXNzIENvZGVGbG93Tm9kZSBleHRlbmRzIE1vZGVsIHtcbn07XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcInRleHRhcmVhXCIsIHsgbGFiZWw6IFwiSW5wdXRcIiwgcGxhY2Vob2xkZXI6IFwiSW5wdXQgb2JqZWN0IChhY2Nlc3NpYmxlIGFzICRpbnB1dClcIiB9KSxcbiAgICBpbnB1dCh7IGhhbmRsZTogXCJpbnB1dFwiIH0pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBPYmplY3QpXG5dLCBDb2RlRmxvd05vZGUucHJvdG90eXBlLCBcImlucHV0XCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICByZXF1aXJlZCgpLFxuICAgIHVpZWxlbWVudChcImlucHV0XCIsIHsgbGFiZWw6IFwiUmVzdWx0XCIsIHBsYWNlaG9sZGVyOiBcIkNvZGUgZXhlY3V0aW9uIHJlc3VsdFwiIH0pLFxuICAgIG91dHB1dCh7IGhhbmRsZTogXCJyZXN1bHRcIiB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgQ29kZUZsb3dOb2RlLnByb3RvdHlwZSwgXCJyZXN1bHRcIiwgdm9pZCAwKTtcbkNvZGVGbG93Tm9kZSA9IF9fZGVjb3JhdGUoW1xuICAgIG5vZGUoXCJjb3JlLmZsb3cuY29kZVwiLCB7XG4gICAgICAgIGtpbmQ6IFwiY29yZS5mbG93LmNvZGVcIixcbiAgICAgICAgY2F0ZWdvcnk6IFwiVXRpbGl0eVwiLFxuICAgICAgICBjb2xvcjogXCIjN2MzYWVkXCIsXG4gICAgICAgIGljb246IFwidGktY29kZVwiLFxuICAgICAgICB3aWR0aDogOTYsXG4gICAgICAgIGhlaWdodDogOTYsXG4gICAgICAgIGxhYmVsczogW1wiZmxvd1wiLCBcImNvZGVcIiwgXCJzYW5kYm94XCIsIFwidHJhbnNmb3JtXCJdLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgdGl0bGU6IFwiQ29kZVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUnVucyB1c2VyLWF1dGhvcmVkIEpTL1RTIGluIGEgcmVzdHJpY3RlZCBWTSBzYW5kYm94LiBTdXBwb3J0cyBwbGFjZWhvbGRlciBzeW50YXggZm9yIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcy5cIixcbiAgICAgICAgICAgIGNvZGU6IFwiXCIsXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJqYXZhc2NyaXB0XCIsXG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgbW9kZWwoKVxuXSwgQ29kZUZsb3dOb2RlKTtcbmV4cG9ydCB7IENvZGVGbG93Tm9kZSB9O1xuLyoqXG4gKiBBbGwgYnVpbHQtaW4gZmxvdy1jb250cm9sIG5vZGUgY29uc3RydWN0b3JzLlxuICovXG5leHBvcnQgY29uc3QgR1JBUEhfRkxPV19DT05UUk9MX05PREVTID0gW1xuICAgIElmRmxvd05vZGUsXG4gICAgU3dpdGNoRmxvd05vZGUsXG4gICAgUGFyYWxsZWxGbG93Tm9kZSxcbiAgICBNZXJnZUZsb3dOb2RlLFxuICAgIE1hcEZsb3dOb2RlLFxuICAgIERlbGF5Rmxvd05vZGUsXG4gICAgRXJyb3JCb3VuZGFyeUZsb3dOb2RlLFxuICAgIEh1bWFuQXBwcm92YWxGbG93Tm9kZSxcbiAgICBSZXR1cm5GbG93Tm9kZSxcbiAgICBDb2RlRmxvd05vZGUsXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWm14dmR5MWpiMjUwY205c0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMMmR5WVhCb0wyNXZaR1Z6TDJac2IzY3RZMjl1ZEhKdmJDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZCUVRzN096czdPenM3T3pzN1IwRlhSenRCUVVOSUxFOUJRVThzUlVGQlJTeExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRkZCUVZFc1JVRkJSU3hOUVVGTkxHZERRVUZuUXl4RFFVRkRPMEZCUTNoRkxFOUJRVThzUlVGQlJTeFRRVUZUTEVWQlFVVXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVU53UkN4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN3clFrRkJLMElzUTBGQlF6dEJRVVZ3UlRzN08wZEJSMGM3UVVGblFra3NTVUZCVFN4VlFVRlZMRWRCUVdoQ0xFMUJRVTBzVlVGQlZ5eFRRVUZSTEV0QlFVczdRMEZsY0VNc1EwRkJRVHRCUVZoRE8wbEJTRU1zVVVGQlVTeEZRVUZGTzBsQlExWXNVMEZCVXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeGhRVUZoTEVWQlFVVXNWMEZCVnl4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdTVUZEYWtZc1MwRkJTeXhEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRPenQ1UTBGRFdEdEJRVXRvUWp0SlFVaERMRkZCUVZFc1JVRkJSVHRKUVVOV0xGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxGZEJRVmNzUlVGQlJTd3JRa0ZCSzBJc1JVRkJSU3hEUVVGRE8wbEJRMjVHTEUxQlFVMHNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF6czdkME5CUTFvN1FVRkxaanRKUVVoRExGRkJRVkVzUlVGQlJUdEpRVU5XTEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4blEwRkJaME1zUlVGQlJTeERRVUZETzBsQlEzQkdMRTFCUVUwc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXpzN2QwTkJRMW83UVVGa1NpeFZRVUZWTzBsQlpuUkNMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVU3VVVGRGNFSXNTVUZCU1N4RlFVRkZMR05CUVdNN1VVRkRjRUlzVVVGQlVTeEZRVUZGTEdOQlFXTTdVVUZEZUVJc1MwRkJTeXhGUVVGRkxGTkJRVk03VVVGRGFFSXNTVUZCU1N4RlFVRkZMRzFDUVVGdFFqdFJRVU42UWl4TFFVRkxMRVZCUVVVc1JVRkJSVHRSUVVOVUxFMUJRVTBzUlVGQlJTeEZRVUZGTzFGQlExWXNUVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxHRkJRV0VzUlVGQlJTeFJRVUZSTEVOQlFVTTdVVUZEZWtNc1VVRkJVU3hGUVVGRk8xbEJRMUlzUzBGQlN5eEZRVUZGTEVsQlFVazdXVUZEV0N4WFFVRlhMRVZCUVVVc2NVZEJRWEZITzFsQlEyeElMRk5CUVZNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJUdFRRVU4yUlR0TFFVTkdMRU5CUVVNN1NVRkRSQ3hMUVVGTExFVkJRVVU3UjBGRFN5eFZRVUZWTEVOQlpYUkNPenRCUVVWRU96czdPenM3T3pzN1IwRlRSenRCUVcxQ1NTeEpRVUZOTEdOQlFXTXNSMEZCY0VJc1RVRkJUU3hqUVVGbExGTkJRVkVzUzBGQlN6dERRVlY0UXl4RFFVRkJPMEZCVGtNN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNWVUZCVlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxHRkJRV0VzUlVGQlJTeFhRVUZYTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzUTBGQlF6dEpRVU5zUml4TFFVRkxMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTTdPelpEUVVOWU8wRkJTMmhDTzBsQlNFTXNVVUZCVVN4RlFVRkZPMGxCUTFZc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVc1YwRkJWeXhGUVVGRkxIRkRRVUZ4UXl4RlFVRkZMRU5CUVVNN1NVRkROVVlzVFVGQlRTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hEUVVGRE96c3JRMEZEV2p0QlFWUlFMR05CUVdNN1NVRnNRakZDTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUlVGQlJUdFJRVU40UWl4SlFVRkpMRVZCUVVVc2EwSkJRV3RDTzFGQlEzaENMRkZCUVZFc1JVRkJSU3hqUVVGak8xRkJRM2hDTEV0QlFVc3NSVUZCUlN4VFFVRlRPMUZCUTJoQ0xFbEJRVWtzUlVGQlJTeHRRa0ZCYlVJN1VVRkRla0lzUzBGQlN5eEZRVUZGTEVkQlFVYzdVVUZEVml4TlFVRk5MRVZCUVVVc1IwRkJSenRSUVVOWUxFMUJRVTBzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1kwRkJZeXhEUVVGRE8xRkJRekZETEZGQlFWRXNSVUZCUlR0WlFVTlNMRXRCUVVzc1JVRkJSU3hSUVVGUk8xbEJRMllzVjBGQlZ5eEZRVUZGTEdsSFFVRnBSenRaUVVNNVJ5eE5RVUZOTEVWQlFVVTdaMEpCUTA0c1MwRkJTeXhGUVVGRkxFVkJRVVU3WjBKQlExUXNWMEZCVnl4RlFVRkZMRk5CUVZNN1lVRkRka0k3VTBGRFJqdExRVU5HTEVOQlFVTTdTVUZEUkN4TFFVRkxMRVZCUVVVN1IwRkRTeXhqUVVGakxFTkJWVEZDT3p0QlFVVkVPenRIUVVWSE8wRkJaMEpKTEVsQlFVMHNaMEpCUVdkQ0xFZEJRWFJDTEUxQlFVMHNaMEpCUVdsQ0xGTkJRVkVzUzBGQlN6dERRVlV4UXl4RFFVRkJPMEZCVGtNN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNWVUZCVlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxHRkJRV0VzUlVGQlJTeFhRVUZYTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF6dEpRVU5vUml4TFFVRkxMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTTdPeXREUVVOWU8wRkJTMmhDTzBsQlNFTXNVVUZCVVN4RlFVRkZPMGxCUTFZc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4VlFVRlZMRVZCUVVVc1YwRkJWeXhGUVVGRkxEQkNRVUV3UWl4RlFVRkZMRU5CUVVNN1NVRkRiRVlzVFVGQlRTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRE96dHJSRUZEVmp0QlFWUldMR2RDUVVGblFqdEpRV1kxUWl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVTdVVUZETVVJc1NVRkJTU3hGUVVGRkxHOUNRVUZ2UWp0UlFVTXhRaXhSUVVGUkxFVkJRVVVzWTBGQll6dFJRVU40UWl4TFFVRkxMRVZCUVVVc1UwRkJVenRSUVVOb1FpeEpRVUZKTEVWQlFVVXNiMEpCUVc5Q08xRkJRekZDTEV0QlFVc3NSVUZCUlN4RlFVRkZPMUZCUTFRc1RVRkJUU3hGUVVGRkxFVkJRVVU3VVVGRFZpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1ZVRkJWU3hGUVVGRkxGbEJRVmtzUTBGQlF6dFJRVU14UXl4UlFVRlJMRVZCUVVVN1dVRkRVaXhMUVVGTExFVkJRVVVzVlVGQlZUdFpRVU5xUWl4WFFVRlhMRVZCUVVVc2IwZEJRVzlITzFsQlEycElMRmRCUVZjc1JVRkJSU3hEUVVGRE8xTkJRMlk3UzBGRFJpeERRVUZETzBsQlEwUXNTMEZCU3l4RlFVRkZPMGRCUTBzc1owSkJRV2RDTEVOQlZUVkNPenRCUVVWRU96dEhRVVZITzBGQlowSkpMRWxCUVUwc1lVRkJZU3hIUVVGdVFpeE5RVUZOTEdGQlFXTXNVMEZCVVN4TFFVRkxPME5CVlhaRExFTkJRVUU3UVVGT1F6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzVjBGQlZ5eEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxFTkJRVU03U1VGRGJrWXNTMEZCU3l4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxGRkJRVkVzUlVGQlJTeERRVUZET3pzMlEwRkRWRHRCUVV0dVFqdEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNaVUZCWlN4RlFVRkZMRmRCUVZjc1JVRkJSU3hsUVVGbExFVkJRVVVzUTBGQlF6dEpRVU0xUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVOQlFVTTdPelpEUVVOYU8wRkJWRTRzWVVGQllUdEpRV1o2UWl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdVVUZEZGtJc1NVRkJTU3hGUVVGRkxHbENRVUZwUWp0UlFVTjJRaXhSUVVGUkxFVkJRVVVzVTBGQlV6dFJRVU51UWl4TFFVRkxMRVZCUVVVc1UwRkJVenRSUVVOb1FpeEpRVUZKTEVWQlFVVXNhVUpCUVdsQ08xRkJRM1pDTEV0QlFVc3NSVUZCUlN4RlFVRkZPMUZCUTFRc1RVRkJUU3hGUVVGRkxFVkJRVVU3VVVGRFZpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF6dFJRVU5xUXl4UlFVRlJMRVZCUVVVN1dVRkRVaXhMUVVGTExFVkJRVVVzVDBGQlR6dFpRVU5rTEZkQlFWY3NSVUZCUlN4M1JVRkJkMFU3V1VGRGNrWXNVVUZCVVN4RlFVRkZMRkZCUVZFN1UwRkRia0k3UzBGRFJpeERRVUZETzBsQlEwUXNTMEZCU3l4RlFVRkZPMGRCUTBzc1lVRkJZU3hEUVZWNlFqczdRVUZGUkRzN1IwRkZSenRCUVdkQ1NTeEpRVUZOTEZkQlFWY3NSMEZCYWtJc1RVRkJUU3hYUVVGWkxGTkJRVkVzUzBGQlN6dERRVlZ5UXl4RFFVRkJPMEZCVGtNN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNWVUZCVlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxHRkJRV0VzUlVGQlJTeFhRVUZYTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzUTBGQlF6dEpRVU5zUml4TFFVRkxMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTTdPekJEUVVOWU8wRkJTMmhDTzBsQlNFTXNVVUZCVVN4RlFVRkZPMGxCUTFZc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEV0QlFVc3NSVUZCUlN4dlFrRkJiMElzUlVGQlJTeFhRVUZYTEVWQlFVVXNaVUZCWlN4RlFVRkZMRU5CUVVNN1NVRkRha1lzVFVGQlRTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSU3hEUVVGRE96c3lRMEZEV2p0QlFWUk9MRmRCUVZjN1NVRm1ka0lzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlR0UlFVTnlRaXhKUVVGSkxFVkJRVVVzWlVGQlpUdFJRVU55UWl4UlFVRlJMRVZCUVVVc1UwRkJVenRSUVVOdVFpeExRVUZMTEVWQlFVVXNVMEZCVXp0UlFVTm9RaXhKUVVGSkxFVkJRVVVzYzBKQlFYTkNPMUZCUXpWQ0xFdEJRVXNzUlVGQlJTeEZRVUZGTzFGQlExUXNUVUZCVFN4RlFVRkZMRVZCUVVVN1VVRkRWaXhOUVVGTkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRmRCUVZjc1EwRkJRenRSUVVOd1F5eFJRVUZSTEVWQlFVVTdXVUZEVWl4TFFVRkxMRVZCUVVVc1MwRkJTenRaUVVOYUxGZEJRVmNzUlVGQlJTeHZSa0ZCYjBZN1dVRkRha2NzVFVGQlRTeEZRVUZGTEVWQlFVVTdVMEZEV0R0TFFVTkdMRU5CUVVNN1NVRkRSQ3hMUVVGTExFVkJRVVU3UjBGRFN5eFhRVUZYTEVOQlZYWkNPenRCUVVWRU96dEhRVVZITzBGQlowSkpMRWxCUVUwc1lVRkJZU3hIUVVGdVFpeE5RVUZOTEdGQlFXTXNVMEZCVVN4TFFVRkxPME5CVlhaRExFTkJRVUU3UVVGT1F6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNZVUZCWVN4RlFVRkZMRmRCUVZjc1JVRkJSU3c0UWtGQk9FSXNSVUZCUlN4RFFVRkRPMGxCUXpWR0xFdEJRVXNzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJRenM3TkVOQlExZzdRVUZMYUVJN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxHTkJRV01zUlVGQlJTeFhRVUZYTEVWQlFVVXNhVUpCUVdsQ0xFVkJRVVVzUTBGQlF6dEpRVU0zUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTTdPeXREUVVOVU8wRkJWRklzWVVGQllUdEpRV1o2UWl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVTdVVUZEZGtJc1NVRkJTU3hGUVVGRkxHbENRVUZwUWp0UlFVTjJRaXhSUVVGUkxFVkJRVVVzVTBGQlV6dFJRVU51UWl4TFFVRkxMRVZCUVVVc1UwRkJVenRSUVVOb1FpeEpRVUZKTEVWQlFVVXNhVUpCUVdsQ08xRkJRM1pDTEV0QlFVc3NSVUZCUlN4RlFVRkZPMUZCUTFRc1RVRkJUU3hGUVVGRkxFVkJRVVU3VVVGRFZpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF6dFJRVU5xUXl4UlFVRlJMRVZCUVVVN1dVRkRVaXhMUVVGTExFVkJRVVVzVDBGQlR6dFpRVU5rTEZkQlFWY3NSVUZCUlN4dlIwRkJiMGM3V1VGRGFrZ3NWVUZCVlN4RlFVRkZMRWxCUVVrN1UwRkRha0k3UzBGRFJpeERRVUZETzBsQlEwUXNTMEZCU3l4RlFVRkZPMGRCUTBzc1lVRkJZU3hEUVZWNlFqczdRVUZGUkRzN1IwRkZSenRCUVdkQ1NTeEpRVUZOTEhGQ1FVRnhRaXhIUVVFelFpeE5RVUZOTEhGQ1FVRnpRaXhUUVVGUkxFdEJRVXM3UTBGbEwwTXNRMEZCUVR0QlFWaERPMGxCU0VNc1VVRkJVU3hGUVVGRk8wbEJRMVlzVTBGQlV5eERRVUZETEZWQlFWVXNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSU3hoUVVGaExFVkJRVVVzVjBGQlZ5eEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU03U1VGRE9VVXNTMEZCU3l4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeERRVUZET3p0dlJFRkRXRHRCUVV0b1FqdEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhQUVVGUExFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJSU3h0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMGxCUTNwRkxFMUJRVTBzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1EwRkJRenM3Y1VSQlExbzdRVUZMYWtJN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFhRVUZYTEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzUTBGQlF6dEpRVU40UlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTTdPMjlFUVVOYU8wRkJaRXdzY1VKQlFYRkNPMGxCWm1wRExFbEJRVWtzUTBGQlF5eDVRa0ZCZVVJc1JVRkJSVHRSUVVNdlFpeEpRVUZKTEVWQlFVVXNlVUpCUVhsQ08xRkJReTlDTEZGQlFWRXNSVUZCUlN4alFVRmpPMUZCUTNoQ0xFdEJRVXNzUlVGQlJTeFRRVUZUTzFGQlEyaENMRWxCUVVrc1JVRkJSU3hwUWtGQmFVSTdVVUZEZGtJc1MwRkJTeXhGUVVGRkxFVkJRVVU3VVVGRFZDeE5RVUZOTEVWQlFVVXNSVUZCUlR0UlFVTldMRTFCUVUwc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeFBRVUZQTEVWQlFVVXNWMEZCVnl4RFFVRkRPMUZCUTNSRExGRkJRVkVzUlVGQlJUdFpRVU5TTEV0QlFVc3NSVUZCUlN4blFrRkJaMEk3V1VGRGRrSXNWMEZCVnl4RlFVRkZMQ3RHUVVFclJqdFpRVU0xUnl4UFFVRlBMRVZCUVVVc1MwRkJTenRUUVVObU8wdEJRMFlzUTBGQlF6dEpRVU5FTEV0QlFVc3NSVUZCUlR0SFFVTkxMSEZDUVVGeFFpeERRV1ZxUXpzN1FVRkZSRHM3UjBGRlJ6dEJRV2xDU1N4SlFVRk5MSEZDUVVGeFFpeEhRVUV6UWl4TlFVRk5MSEZDUVVGelFpeFRRVUZSTEV0QlFVczdRMEZsTDBNc1EwRkJRVHRCUVZoRE8wbEJTRU1zVVVGQlVTeEZRVUZGTzBsQlExWXNVMEZCVXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeGhRVUZoTEVWQlFVVXNWMEZCVnl4RlFVRkZMSGRDUVVGM1FpeEZRVUZGTEVOQlFVTTdTVUZEZEVZc1MwRkJTeXhEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRPenR2UkVGRFdEdEJRVXRvUWp0SlFVaERMRkZCUVZFc1JVRkJSVHRKUVVOV0xGTkJRVk1zUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGZEJRVmNzUlVGQlJTeHpRa0ZCYzBJc1JVRkJSU3hEUVVGRE8wbEJRemxGTEUxQlFVMHNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hWUVVGVkxFVkJRVVVzUTBGQlF6czdkVVJCUTFvN1FVRkxia0k3U1VGSVF5eFJRVUZSTEVWQlFVVTdTVUZEVml4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEZWQlFWVXNSVUZCUlN4WFFVRlhMRVZCUVVVc2MwSkJRWE5DTEVWQlFVVXNRMEZCUXp0SlFVTTVSU3hOUVVGTkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RlFVRkZMRU5CUVVNN08zVkVRVU5hTzBGQlpGSXNjVUpCUVhGQ08wbEJhRUpxUXl4SlFVRkpMRU5CUVVNc2VVSkJRWGxDTEVWQlFVVTdVVUZETDBJc1NVRkJTU3hGUVVGRkxIbENRVUY1UWp0UlFVTXZRaXhSUVVGUkxFVkJRVVVzWTBGQll6dFJRVU40UWl4TFFVRkxMRVZCUVVVc1UwRkJVenRSUVVOb1FpeEpRVUZKTEVWQlFVVXNaVUZCWlR0UlFVTnlRaXhMUVVGTExFVkJRVVVzUlVGQlJUdFJRVU5VTEUxQlFVMHNSVUZCUlN4RlFVRkZPMUZCUTFZc1RVRkJUU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZWQlFWVXNSVUZCUlN4VFFVRlRMRU5CUVVNN1VVRkRka01zVVVGQlVTeEZRVUZGTzFsQlExSXNTMEZCU3l4RlFVRkZMR2RDUVVGblFqdFpRVU4yUWl4WFFVRlhMRVZCUVVVc1owZEJRV2RITzFsQlF6ZEhMRk5CUVZNc1JVRkJSU3hGUVVGRk8xbEJRMklzVTBGQlV5eEZRVUZGTEZGQlFWRTdVMEZEY0VJN1MwRkRSaXhEUVVGRE8wbEJRMFFzUzBGQlN5eEZRVUZGTzBkQlEwc3NjVUpCUVhGQ0xFTkJaV3BET3p0QlFVVkVPenRIUVVWSE8wRkJaMEpKTEVsQlFVMHNZMEZCWXl4SFFVRndRaXhOUVVGTkxHTkJRV1VzVTBGQlVTeExRVUZMTzBOQlZYaERMRU5CUVVFN1FVRk9RenRKUVVoRExGRkJRVkVzUlVGQlJUdEpRVU5XTEZOQlFWTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzWVVGQllTeEZRVUZGTEZkQlFWY3NSVUZCUlN4dlFrRkJiMElzUlVGQlJTeERRVUZETzBsQlEyeEdMRXRCUVVzc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeFBRVUZQTEVWQlFVVXNRMEZCUXpzN05rTkJRMWc3UVVGTGFFSTdTVUZJUXl4UlFVRlJMRVZCUVVVN1NVRkRWaXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEZkQlFWY3NSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeERRVUZETzBsQlEyeEdMRTFCUVUwc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVWQlFVVXNRMEZCUXpzN09FTkJRMW83UVVGVVRpeGpRVUZqTzBsQlpqRkNMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSVUZCUlR0UlFVTjRRaXhKUVVGSkxFVkJRVVVzYTBKQlFXdENPMUZCUTNoQ0xGRkJRVkVzUlVGQlJTeFRRVUZUTzFGQlEyNUNMRXRCUVVzc1JVRkJSU3hUUVVGVE8xRkJRMmhDTEVsQlFVa3NSVUZCUlN4clFrRkJhMEk3VVVGRGVFSXNTMEZCU3l4RlFVRkZMRVZCUVVVN1VVRkRWQ3hOUVVGTkxFVkJRVVVzUlVGQlJUdFJRVU5XTEUxQlFVMHNSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzVVVGQlVTeERRVUZETzFGQlEzQkRMRkZCUVZFc1JVRkJSVHRaUVVOU0xFdEJRVXNzUlVGQlJTeFJRVUZSTzFsQlEyWXNWMEZCVnl4RlFVRkZMRFpFUVVFMlJEdFpRVU14UlN4WlFVRlpMRVZCUVVVc1JVRkJSVHRUUVVOcVFqdExRVU5HTEVOQlFVTTdTVUZEUkN4TFFVRkxMRVZCUVVVN1IwRkRTeXhqUVVGakxFTkJWVEZDT3p0QlFVVkVPenM3T3pzN096dEhRVkZITzBGQmFVSkpMRWxCUVUwc1dVRkJXU3hIUVVGc1FpeE5RVUZOTEZsQlFXRXNVMEZCVVN4TFFVRkxPME5CVlhSRExFTkJRVUU3UVVGT1F6dEpRVWhETEZGQlFWRXNSVUZCUlR0SlFVTldMRk5CUVZNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmRCUVZjc1JVRkJSU3h4UTBGQmNVTXNSVUZCUlN4RFFVRkRPMGxCUXpkR0xFdEJRVXNzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJRenM3TWtOQlExZzdRVUZMYUVJN1NVRklReXhSUVVGUkxFVkJRVVU3U1VGRFZpeFRRVUZUTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxGRkJRVkVzUlVGQlJTeFhRVUZYTEVWQlFVVXNkVUpCUVhWQ0xFVkJRVVVzUTBGQlF6dEpRVU0zUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVOQlFVTTdPelJEUVVOYU8wRkJWRTRzV1VGQldUdEpRV2hDZUVJc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZPMUZCUTNSQ0xFbEJRVWtzUlVGQlJTeG5Ra0ZCWjBJN1VVRkRkRUlzVVVGQlVTeEZRVUZGTEZOQlFWTTdVVUZEYmtJc1MwRkJTeXhGUVVGRkxGTkJRVk03VVVGRGFFSXNTVUZCU1N4RlFVRkZMRk5CUVZNN1VVRkRaaXhMUVVGTExFVkJRVVVzUlVGQlJUdFJRVU5VTEUxQlFVMHNSVUZCUlN4RlFVRkZPMUZCUTFZc1RVRkJUU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1YwRkJWeXhEUVVGRE8xRkJRMmhFTEZGQlFWRXNSVUZCUlR0WlFVTlNMRXRCUVVzc1JVRkJSU3hOUVVGTk8xbEJRMklzVjBGQlZ5eEZRVUZGTEdkSVFVRm5TRHRaUVVNM1NDeEpRVUZKTEVWQlFVVXNSVUZCUlR0WlFVTlNMRkZCUVZFc1JVRkJSU3haUVVGWk8xTkJRM1pDTzB0QlEwWXNRMEZCUXp0SlFVTkVMRXRCUVVzc1JVRkJSVHRIUVVOTExGbEJRVmtzUTBGVmVFSTdPMEZCUlVRN08wZEJSVWM3UVVGRFNDeE5RVUZOTEVOQlFVTXNUVUZCVFN4M1FrRkJkMElzUjBGQlJ6dEpRVU4wUXl4VlFVRlZPMGxCUTFZc1kwRkJZenRKUVVOa0xHZENRVUZuUWp0SlFVTm9RaXhoUVVGaE8wbEJRMklzVjBGQlZ6dEpRVU5ZTEdGQlFXRTdTVUZEWWl4eFFrRkJjVUk3U1VGRGNrSXNjVUpCUVhGQ08wbEJRM0pDTEdOQlFXTTdTVUZEWkN4WlFVRlpPME5CUTBvc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUcxdlpIVnNaU0JwYm5SbFozSmhkR2x2Ym5NdlozSmhjR2d2Ym05a1pYTXZabXh2ZHkxamIyNTBjbTlzWEc0Z0tpQkFjM1Z0YldGeWVTQlFjbTlrZFdOMGFXOXVJR1pzYjNjdFkyOXVkSEp2YkNCdWIyUmxJR3RwYm1RZ1pHVmpiR0Z5WVhScGIyNXpJQ2hFUlVOQlJpMHpNaURDcHpJeUxqSXVNaWt1WEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTJGdWIyNXBZMkZzSUdCQWJtOWtaV0F0WkdWamIzSmhkR1ZrSUdOc1lYTnpaWE1nWm05eUlIUm9aU0IwWlc0Z1FVeEdVa1ZFTFRWY2JpQXFJR1pzYjNjdFkyOXVkSEp2YkNCcmFXNWtjeTRnVkdobGMyVWdZWEpsSUdkeVlYQm9MV3hsZG1Wc0lHMWhZM0p2Y3pvZ2RHaGxJR1Z1WjJsdVpTZHpJSEJzWVc1dVpYSmNiaUFxSUhKbFkyOW5ibWx6WlhNZ2RHaGxiU0JoY3lCdmNtUnBibUZ5ZVNCbGVHVmpkWFJoWW14bElHNXZaR1Z6SUNqQ3B6VXVOeWtnWW5WMElIUm9aWGtnYUdGMlpTQnViMXh1SUNvZ1luVnBiSFF0YVc0Z1pYaGxZM1YwYjNKeklPS0FsQ0JrYjNkdWMzUnlaV0Z0SUhCeWIycGxZM1J6SUNobExtY3VJRUZNUmxKRlJDa2djbVZuYVhOMFpYSWdZM1Z6ZEc5dFhHNGdLaUJsZUdWamRYUnZjbk1nYjNJZ1kyOXRjR2xzWlNCMGFHVnRJR2x1ZEc4Z1RXRnpkSEpoSUdOdmJYQnZjMmwwYVc5dUlFRlFTWE1nS01Lbk1qSXVNaTR5S1M1Y2JpQXFYRzRnS2lCVWFHVWdkR2h5WldVZ2JHOXZjQ0JyYVc1a2N5QW9ZR052Y21VdWJHOXZjQzVtYjNKbFlXTm9MM2RvYVd4bEwzVnVkR2xzWUNrZ1lXeHlaV0ZrZVNCb1lYWmxJR0oxYVd4MExXbHVYRzRnS2lCbGVHVmpkWFJ2Y25NZ0tNS25OUzQ1S1NCaGJtUWdZWEpsSUU1UFZDQnlaV1JsWTJ4aGNtVmtJR2hsY21VdVhHNGdLaTljYm1sdGNHOXlkQ0I3SUUxdlpHVnNMQ0J0YjJSbGJDd2djbVZ4ZFdseVpXUWdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMlJsWTI5eVlYUnZjaTEyWVd4cFpHRjBhVzl1WENJN1hHNXBiWEJ2Y25RZ2V5QjFhV1ZzWlcxbGJuUWdmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMM1ZwTFdSbFkyOXlZWFJ2Y25OY0lqdGNibWx0Y0c5eWRDQjdJR2x1Y0hWMExDQnViMlJsTENCdmRYUndkWFFnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDNWcExXUmxZMjl5WVhSdmNuTXZaM0poY0doY0lqdGNibHh1THlvcVhHNGdLaUJKWmlEaWdKUWdZMjl1WkdsMGFXOXVZV3dnWW5KaGJtTm9MaUJGZG1Gc2RXRjBaWE1nWVNCZ1EyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJtQWdLTUtuTWpJdU15a2dZVzVrWEc0Z0tpQnliM1YwWlhNZ2RHaGxJR2x1Y0hWMElIUnZJSFJvWlNCZ2RHaGxibUFnYjNJZ1lHVnNjMlZnSUc5MWRIQjFkQzVjYmlBcUwxeHVRRzV2WkdVb1hDSmpiM0psTG1ac2IzY3VhV1pjSWl3Z2UxeHVJQ0JyYVc1a09pQmNJbU52Y21VdVpteHZkeTVwWmx3aUxGeHVJQ0JqWVhSbFoyOXllVG9nWENKR2JHOTNJRU52Ym5SeWIyeGNJaXhjYmlBZ1kyOXNiM0k2SUZ3aUkyWTFPV1V3WWx3aUxGeHVJQ0JwWTI5dU9pQmNJblJwTFdGeWNtOTNjeTF6Y0d4cGRDMHlYQ0lzWEc0Z0lIZHBaSFJvT2lBNU5peGNiaUFnYUdWcFoyaDBPaUE1Tml4Y2JpQWdiR0ZpWld4ek9pQmJYQ0ptYkc5M1hDSXNJRndpWTI5dVpHbDBhVzl1WVd4Y0lpd2dYQ0ppY21GdVkyaGNJbDBzWEc0Z0lHMWxkR0ZrWVhSaE9pQjdYRzRnSUNBZ2RHbDBiR1U2SUZ3aVNXWmNJaXhjYmlBZ0lDQmtaWE5qY21sd2RHbHZiam9nWENKRGIyNWthWFJwYjI1aGJDQmljbUZ1WTJndUlFVjJZV3gxWVhSbGN5QjBhR1VnWTI5dVptbG5kWEpsWkNCamIyNWthWFJwYjI0Z1lXNWtJSEp2ZFhSbGN5QjBhR1VnYVc1d2RYUWdkRzhnZEdobElHMWhkR05vYVc1bklHOTFkSEIxZEM1Y0lpeGNiaUFnSUNCamIyNWthWFJwYjI0NklIc2diM0E2SUZ3aVpYRmNJaXdnYkdWbWREb2dleUJqYjI1emREb2dkSEoxWlNCOUxDQnlhV2RvZERvZ2V5QmpiMjV6ZERvZ2RISjFaU0I5SUgwc1hHNGdJSDBzWEc1OUtWeHVRRzF2WkdWc0tDbGNibVY0Y0c5eWRDQmpiR0Z6Y3lCSlprWnNiM2RPYjJSbElHVjRkR1Z1WkhNZ1RXOWtaV3dnZTF4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lkR1Y0ZEdGeVpXRmNJaXdnZXlCc1lXSmxiRG9nWENKSmJuQjFkQ0IyWVd4MVpWd2lMQ0J3YkdGalpXaHZiR1JsY2pvZ1hDSldZV3gxWlNCMGJ5QmxkbUZzZFdGMFpWd2lJSDBwWEc0Z0lFQnBibkIxZENoN0lHaGhibVJzWlRvZ1hDSjJZV3gxWlZ3aUlIMHBYRzRnSUhaaGJIVmxJVG9nZFc1cmJtOTNianRjYmx4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lhVzV3ZFhSY0lpd2dleUJzWVdKbGJEb2dYQ0pVYUdWdVhDSXNJSEJzWVdObGFHOXNaR1Z5T2lCY0lrOTFkSEIxZENCM2FHVnVJR052Ym1ScGRHbHZiaUJwY3lCMGNuVmxYQ0lnZlNsY2JpQWdRRzkxZEhCMWRDaDdJR2hoYm1Sc1pUb2dYQ0owYUdWdVhDSWdmU2xjYmlBZ2RHaGxiaUU2SUhWdWEyNXZkMjQ3WEc1Y2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ1FIVnBaV3hsYldWdWRDaGNJbWx1Y0hWMFhDSXNJSHNnYkdGaVpXdzZJRndpUld4elpWd2lMQ0J3YkdGalpXaHZiR1JsY2pvZ1hDSlBkWFJ3ZFhRZ2QyaGxiaUJqYjI1a2FYUnBiMjRnYVhNZ1ptRnNjMlZjSWlCOUtWeHVJQ0JBYjNWMGNIVjBLSHNnYUdGdVpHeGxPaUJjSW1Wc2MyVmNJaUI5S1Z4dUlDQmxiSE5sSVRvZ2RXNXJibTkzYmp0Y2JuMWNibHh1THlvcVhHNGdLaUJUZDJsMFkyZ2c0b0NVSUcxMWJIUnBMV0p5WVc1amFDNGdVbTkxZEdWeklIUm9aU0JwYm5CMWRDQjBieUJ2Ym1VZ2IyWWdkR2hsSUdOaGMyVWdiM1YwY0hWMElIQnZjblJ6WEc0Z0tpQnZjaUJnWkdWbVlYVnNkR0FnWW1GelpXUWdiMjRnYldGMFkyaHBibWNnWTI5dVpHbDBhVzl1Y3k0Z1JXRmphQ0JqWVhObElHUmxabWx1WlhNZ1lWeHVJQ29nZTBCc2FXNXJJRk4zYVhSamFFTmhjMlZEYjI1a2FYUnBiMjU5SUNobmNtRndhR2xqWVd3Z2IzSWdZMjlrWlNCdGIyUmxLU0JoYm1RZ1lTQmtaV1JwWTJGMFpXUmNiaUFxSUc5MWRIQjFkQ0J3YjNKMExpQkRZWE5sY3lCaGNtVWdjM1J2Y21Wa0lHbHVJR0J0WlhSaFpHRjBZUzV6ZDJsMFkyZ3VZMkZ6WlhOZ0lHRnVaQ0IwYUdWY2JpQXFJSEpsYm1SbGNtVnlJR055WldGMFpYTWdaSGx1WVcxcFl5QnZkWFJ3ZFhRZ2NHOXlkSE1nWm5KdmJTQjBhR1Z0SUNoRVJVTkJSaTB6TWlEQ3B6SXlMakl1TWlrdVhHNGdLbHh1SUNvZ1ZHaGxJRzV2WkdVZ1ozSnZkM01nYVc0Z2FHVnBaMmgwSUdGeklHTmhjMlZ6SUdGeVpTQmhaR1JsWkM0Z1JXRmphQ0JqWVhObElHZGxkSE1nYVhSeklHOTNibHh1SUNvZ2IzVjBjSFYwSUhCdmNuUWdiMjRnZEdobElISnBaMmgwSUhOcFpHVXNJR3hoWW1Wc1pXUWdkMmwwYUNCMGFHVWdZMkZ6WlNCc1lXSmxiQzVjYmlBcUwxeHVRRzV2WkdVb1hDSmpiM0psTG1ac2IzY3VjM2RwZEdOb1hDSXNJSHRjYmlBZ2EybHVaRG9nWENKamIzSmxMbVpzYjNjdWMzZHBkR05vWENJc1hHNGdJR05oZEdWbmIzSjVPaUJjSWtac2IzY2dRMjl1ZEhKdmJGd2lMRnh1SUNCamIyeHZjam9nWENJalpqazNNekUyWENJc1hHNGdJR2xqYjI0NklGd2lkR2t0WVhKeWIzZHpMWE5vZFdabWJHVmNJaXhjYmlBZ2QybGtkR2c2SURFeU1DeGNiaUFnYUdWcFoyaDBPaUF4TkRBc1hHNGdJR3hoWW1Wc2N6b2dXMXdpWm14dmQxd2lMQ0JjSW5OM2FYUmphRndpTENCY0ltMTFiSFJwTFdKeVlXNWphRndpWFN4Y2JpQWdiV1YwWVdSaGRHRTZJSHRjYmlBZ0lDQjBhWFJzWlRvZ1hDSlRkMmwwWTJoY0lpeGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2dYQ0pOZFd4MGFTMWljbUZ1WTJnZ2MzZHBkR05vTGlCU2IzVjBaWE1nZEdobElHbHVjSFYwSUhSdklIUm9aU0JtYVhKemRDQnRZWFJqYUdsdVp5QmpZWE5sSUc5MWRIQjFkQ3dnYjNJZ2RHaGxJR1JsWm1GMWJIUWdiM1YwY0hWMExsd2lMRnh1SUNBZ0lITjNhWFJqYURvZ2UxeHVJQ0FnSUNBZ1kyRnpaWE02SUZ0ZExGeHVJQ0FnSUNBZ1pHVm1ZWFZzZEZCdmNuUTZJRndpWkdWbVlYVnNkRndpTEZ4dUlDQWdJSDBzWEc0Z0lIMHNYRzU5S1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJUZDJsMFkyaEdiRzkzVG05a1pTQmxlSFJsYm1SeklFMXZaR1ZzSUh0Y2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ1FIVnBaV3hsYldWdWRDaGNJblJsZUhSaGNtVmhYQ0lzSUhzZ2JHRmlaV3c2SUZ3aVNXNXdkWFFnZG1Gc2RXVmNJaXdnY0d4aFkyVm9iMnhrWlhJNklGd2lWbUZzZFdVZ2RHOGdjM2RwZEdOb0lHOXVYQ0lnZlNsY2JpQWdRR2x1Y0hWMEtIc2dhR0Z1Wkd4bE9pQmNJblpoYkhWbFhDSWdmU2xjYmlBZ2RtRnNkV1VoT2lCMWJtdHViM2R1TzF4dVhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lFQjFhV1ZzWlcxbGJuUW9YQ0pwYm5CMWRGd2lMQ0I3SUd4aFltVnNPaUJjSWtSbFptRjFiSFJjSWl3Z2NHeGhZMlZvYjJ4a1pYSTZJRndpUkdWbVlYVnNkQ0J2ZFhSd2RYUWdkMmhsYmlCdWJ5QmpZWE5sSUcxaGRHTm9aWE5jSWlCOUtWeHVJQ0JBYjNWMGNIVjBLSHNnYUdGdVpHeGxPaUJjSW1SbFptRjFiSFJjSWlCOUtWeHVJQ0JrWldaaGRXeDBJVG9nZFc1cmJtOTNianRjYm4xY2JseHVMeW9xWEc0Z0tpQlFZWEpoYkd4bGJDRGlnSlFnYzNCc2FYUnpJR1Y0WldOMWRHbHZiaUJwYm5SdklHTnZibU4xY25KbGJuUWdZbkpoYm1Ob1pYTXVYRzRnS2k5Y2JrQnViMlJsS0Z3aVkyOXlaUzVtYkc5M0xuQmhjbUZzYkdWc1hDSXNJSHRjYmlBZ2EybHVaRG9nWENKamIzSmxMbVpzYjNjdWNHRnlZV3hzWld4Y0lpeGNiaUFnWTJGMFpXZHZjbms2SUZ3aVJteHZkeUJEYjI1MGNtOXNYQ0lzWEc0Z0lHTnZiRzl5T2lCY0lpTXdObUkyWkRSY0lpeGNiaUFnYVdOdmJqb2dYQ0owYVMxaGNuSnZkM010ZG1WeWRHbGpZV3hjSWl4Y2JpQWdkMmxrZEdnNklEazJMRnh1SUNCb1pXbG5hSFE2SURrMkxGeHVJQ0JzWVdKbGJITTZJRnRjSW1ac2IzZGNJaXdnWENKd1lYSmhiR3hsYkZ3aUxDQmNJbU52Ym1OMWNuSmxiblJjSWwwc1hHNGdJRzFsZEdGa1lYUmhPaUI3WEc0Z0lDQWdkR2wwYkdVNklGd2lVR0Z5WVd4c1pXeGNJaXhjYmlBZ0lDQmtaWE5qY21sd2RHbHZiam9nWENKVGNHeHBkSE1nWlhobFkzVjBhVzl1SUdsdWRHOGdZMjl1WTNWeWNtVnVkQ0JpY21GdVkyaGxjeTRnUVd4c0lHSnlZVzVqYUdWeklISjFiaUJwYmlCd1lYSmhiR3hsYkNCaGJtUWdiM1YwY0hWMGN5QmhjbVVnWTI5c2JHVmpkR1ZrTGx3aUxGeHVJQ0FnSUdKeVlXNWphRU52ZFc1ME9pQXlMRnh1SUNCOUxGeHVmU2xjYmtCdGIyUmxiQ2dwWEc1bGVIQnZjblFnWTJ4aGMzTWdVR0Z5WVd4c1pXeEdiRzkzVG05a1pTQmxlSFJsYm1SeklFMXZaR1ZzSUh0Y2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ1FIVnBaV3hsYldWdWRDaGNJblJsZUhSaGNtVmhYQ0lzSUhzZ2JHRmlaV3c2SUZ3aVNXNXdkWFFnZG1Gc2RXVmNJaXdnY0d4aFkyVm9iMnhrWlhJNklGd2lWbUZzZFdVZ2RHOGdabUZ1SUc5MWRGd2lJSDBwWEc0Z0lFQnBibkIxZENoN0lHaGhibVJzWlRvZ1hDSjJZV3gxWlZ3aUlIMHBYRzRnSUhaaGJIVmxJVG9nZFc1cmJtOTNianRjYmx4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lhVzV3ZFhSY0lpd2dleUJzWVdKbGJEb2dYQ0pDY21GdVkyaGxjMXdpTENCd2JHRmpaV2h2YkdSbGNqb2dYQ0pEYjJ4c1pXTjBaV1FnWW5KaGJtTm9JRzkxZEhCMWRITmNJaUI5S1Z4dUlDQkFiM1YwY0hWMEtIc2dhR0Z1Wkd4bE9pQmNJbUp5WVc1amFHVnpYQ0lnZlNsY2JpQWdZbkpoYm1Ob1pYTWhPaUIxYm10dWIzZHVXMTA3WEc1OVhHNWNiaThxS2x4dUlDb2dUV1Z5WjJVZzRvQ1VJRzV2Y20xaGJHbHpaWE1nWW5KaGJtTm9MM0JoY21Gc2JHVnNJRzkxZEhCMWRITWdhVzUwYnlCaElITnBibWRzWlNCdmRYUndkWFF1WEc0Z0tpOWNia0J1YjJSbEtGd2lZMjl5WlM1bWJHOTNMbTFsY21kbFhDSXNJSHRjYmlBZ2EybHVaRG9nWENKamIzSmxMbVpzYjNjdWJXVnlaMlZjSWl4Y2JpQWdZMkYwWldkdmNuazZJRndpVlhScGJHbDBlVndpTEZ4dUlDQmpiMnh2Y2pvZ1hDSWpNR1E1TkRnNFhDSXNYRzRnSUdsamIyNDZJRndpZEdrdFlYSnliM2R6TFcxbGNtZGxYQ0lzWEc0Z0lIZHBaSFJvT2lBNU5peGNiaUFnYUdWcFoyaDBPaUE1Tml4Y2JpQWdiR0ZpWld4ek9pQmJYQ0ptYkc5M1hDSXNJRndpYldWeVoyVmNJaXdnWENKcWIybHVYQ0pkTEZ4dUlDQnRaWFJoWkdGMFlUb2dlMXh1SUNBZ0lIUnBkR3hsT2lCY0lrMWxjbWRsWENJc1hHNGdJQ0FnWkdWelkzSnBjSFJwYjI0NklGd2lUV1Z5WjJWeklHMTFiSFJwY0d4bElHSnlZVzVqYUNCdmRYUndkWFJ6SUdsdWRHOGdZU0J6YVc1bmJHVWdibTl5YldGc2FYTmxaQ0J2ZFhSd2RYUWdiMkpxWldOMExsd2lMRnh1SUNBZ0lITjBjbUYwWldkNU9pQmNJbU52Ym1OaGRGd2lMRnh1SUNCOUxGeHVmU2xjYmtCdGIyUmxiQ2dwWEc1bGVIQnZjblFnWTJ4aGMzTWdUV1Z5WjJWR2JHOTNUbTlrWlNCbGVIUmxibVJ6SUUxdlpHVnNJSHRjYmlBZ1FISmxjWFZwY21Wa0tDbGNiaUFnUUhWcFpXeGxiV1Z1ZENoY0luUmxlSFJoY21WaFhDSXNJSHNnYkdGaVpXdzZJRndpUW5KaGJtTm9JRzkxZEhCMWRITmNJaXdnY0d4aFkyVm9iMnhrWlhJNklGd2lUM1YwY0hWMGN5QjBieUJ0WlhKblpWd2lJSDBwWEc0Z0lFQnBibkIxZENoN0lHaGhibVJzWlRvZ1hDSjJZV3gxWlhOY0lpQjlLVnh1SUNCMllXeDFaWE1oT2lCMWJtdHViM2R1VzEwN1hHNWNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdRSFZwWld4bGJXVnVkQ2hjSW1sdWNIVjBYQ0lzSUhzZ2JHRmlaV3c2SUZ3aVRXVnlaMlZrSUc5MWRIQjFkRndpTENCd2JHRmpaV2h2YkdSbGNqb2dYQ0pOWlhKblpXUWdjbVZ6ZFd4MFhDSWdmU2xjYmlBZ1FHOTFkSEIxZENoN0lHaGhibVJzWlRvZ1hDSnRaWEpuWldSY0lpQjlLVnh1SUNCdFpYSm5aV1FoT2lCMWJtdHViM2R1TzF4dWZWeHVYRzR2S2lwY2JpQXFJRTFoY0NEaWdKUWdkSEpoYm5ObWIzSnRjeUIwYUdVZ1kzVnljbVZ1ZENCcGJuQjFkQ0JwYm5SdklHRWdibVYzSUc5MWRIQjFkQ0J2WW1wbFkzUXVYRzRnS2k5Y2JrQnViMlJsS0Z3aVkyOXlaUzVtYkc5M0xtMWhjRndpTENCN1hHNGdJR3RwYm1RNklGd2lZMjl5WlM1bWJHOTNMbTFoY0Z3aUxGeHVJQ0JqWVhSbFoyOXllVG9nWENKVmRHbHNhWFI1WENJc1hHNGdJR052Ykc5eU9pQmNJaU00TkdOak1UWmNJaXhjYmlBZ2FXTnZiam9nWENKMGFTMWhjbkp2ZDNNdGNtbG5hSFF0YkdWbWRGd2lMRnh1SUNCM2FXUjBhRG9nT1RZc1hHNGdJR2hsYVdkb2REb2dPVFlzWEc0Z0lHeGhZbVZzY3pvZ1cxd2labXh2ZDF3aUxDQmNJbTFoY0Z3aUxDQmNJblJ5WVc1elptOXliVndpWFN4Y2JpQWdiV1YwWVdSaGRHRTZJSHRjYmlBZ0lDQjBhWFJzWlRvZ1hDSk5ZWEJjSWl4Y2JpQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ1hDSlVjbUZ1YzJadmNtMXpJSFJvWlNCamRYSnlaVzUwSUdsdWNIVjBJR2x1ZEc4Z1lTQnVaWGNnYjNWMGNIVjBJRzlpYW1WamRDQjFjMmx1WnlCMGFHVWdZMjl1Wm1sbmRYSmxaQ0J0WVhCd1pYSXVYQ0lzWEc0Z0lDQWdiV0Z3Y0dWeU9pQjdmU3hjYmlBZ2ZTeGNibjBwWEc1QWJXOWtaV3dvS1Z4dVpYaHdiM0owSUdOc1lYTnpJRTFoY0Vac2IzZE9iMlJsSUdWNGRHVnVaSE1nVFc5a1pXd2dlMXh1SUNCQWNtVnhkV2x5WldRb0tWeHVJQ0JBZFdsbGJHVnRaVzUwS0Z3aWRHVjRkR0Z5WldGY0lpd2dleUJzWVdKbGJEb2dYQ0pKYm5CMWRDQjJZV3gxWlZ3aUxDQndiR0ZqWldodmJHUmxjam9nWENKV1lXeDFaU0IwYnlCMGNtRnVjMlp2Y20xY0lpQjlLVnh1SUNCQWFXNXdkWFFvZXlCb1lXNWtiR1U2SUZ3aWRtRnNkV1ZjSWlCOUtWeHVJQ0IyWVd4MVpTRTZJSFZ1YTI1dmQyNDdYRzVjYmlBZ1FISmxjWFZwY21Wa0tDbGNiaUFnUUhWcFpXeGxiV1Z1ZENoY0ltbHVjSFYwWENJc0lIc2diR0ZpWld3NklGd2lWSEpoYm5ObWIzSnRaV1FnYjNWMGNIVjBYQ0lzSUhCc1lXTmxhRzlzWkdWeU9pQmNJazFoY0hCbFpDQnlaWE4xYkhSY0lpQjlLVnh1SUNCQWIzVjBjSFYwS0hzZ2FHRnVaR3hsT2lCY0luSmxjM1ZzZEZ3aUlIMHBYRzRnSUhKbGMzVnNkQ0U2SUhWdWEyNXZkMjQ3WEc1OVhHNWNiaThxS2x4dUlDb2dSR1ZzWVhrZzRvQ1VJSEJoZFhObGN5QmxlR1ZqZFhScGIyNGdabTl5SUdFZ1kyOXVabWxuZFhKbFpDQmtkWEpoZEdsdmJpNWNiaUFxTDF4dVFHNXZaR1VvWENKamIzSmxMbVpzYjNjdVpHVnNZWGxjSWl3Z2UxeHVJQ0JyYVc1a09pQmNJbU52Y21VdVpteHZkeTVrWld4aGVWd2lMRnh1SUNCallYUmxaMjl5ZVRvZ1hDSlZkR2xzYVhSNVhDSXNYRzRnSUdOdmJHOXlPaUJjSWlOaE0yRXpZVE5jSWl4Y2JpQWdhV052YmpvZ1hDSjBhUzFqYkc5amF5MW9iM1Z5TFRSY0lpeGNiaUFnZDJsa2RHZzZJRGsyTEZ4dUlDQm9aV2xuYUhRNklEazJMRnh1SUNCc1lXSmxiSE02SUZ0Y0ltWnNiM2RjSWl3Z1hDSmtaV3hoZVZ3aUxDQmNJbmRoYVhSY0lsMHNYRzRnSUcxbGRHRmtZWFJoT2lCN1hHNGdJQ0FnZEdsMGJHVTZJRndpUkdWc1lYbGNJaXhjYmlBZ0lDQmtaWE5qY21sd2RHbHZiam9nWENKUVlYVnpaWE1nWlhobFkzVjBhVzl1SUdadmNpQjBhR1VnWTI5dVptbG5kWEpsWkNCa2RYSmhkR2x2YmlBb2FXNGdiV2xzYkdselpXTnZibVJ6S1N3Z2RHaGxiaUJtYjNKM1lYSmtjeUIwYUdVZ2FXNXdkWFFnZFc1amFHRnVaMlZrTGx3aUxGeHVJQ0FnSUdSMWNtRjBhVzl1VFhNNklERXdNREFzWEc0Z0lIMHNYRzU5S1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJFWld4aGVVWnNiM2RPYjJSbElHVjRkR1Z1WkhNZ1RXOWtaV3dnZTF4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lkR1Y0ZEdGeVpXRmNJaXdnZXlCc1lXSmxiRG9nWENKSmJuQjFkQ0IyWVd4MVpWd2lMQ0J3YkdGalpXaHZiR1JsY2pvZ1hDSldZV3gxWlNCMGJ5Qm1iM0ozWVhKa0lHRm1kR1Z5SUdSbGJHRjVYQ0lnZlNsY2JpQWdRR2x1Y0hWMEtIc2dhR0Z1Wkd4bE9pQmNJblpoYkhWbFhDSWdmU2xjYmlBZ2RtRnNkV1VoT2lCMWJtdHViM2R1TzF4dVhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lFQjFhV1ZzWlcxbGJuUW9YQ0pwYm5CMWRGd2lMQ0I3SUd4aFltVnNPaUJjSWs5MWRIQjFkQ0IyWVd4MVpWd2lMQ0J3YkdGalpXaHZiR1JsY2pvZ1hDSkdiM0ozWVhKa1pXUWdkbUZzZFdWY0lpQjlLVnh1SUNCQWIzVjBjSFYwS0hzZ2FHRnVaR3hsT2lCY0luWmhiSFZsWENJZ2ZTbGNiaUFnZG1Gc2RXVlBkWFFoT2lCMWJtdHViM2R1TzF4dWZWeHVYRzR2S2lwY2JpQXFJRVZ5Y205eUlHSnZkVzVrWVhKNUlPS0FsQ0IwY25rdlkyRjBZMmd2Wm1sdVlXeHNlU0IzYjNKclpteHZkeUJpWldoaGRtbHZkWEl1WEc0Z0tpOWNia0J1YjJSbEtGd2lZMjl5WlM1bWJHOTNMbVZ5Y205eVFtOTFibVJoY25sY0lpd2dlMXh1SUNCcmFXNWtPaUJjSW1OdmNtVXVabXh2ZHk1bGNuSnZja0p2ZFc1a1lYSjVYQ0lzWEc0Z0lHTmhkR1ZuYjNKNU9pQmNJa1pzYjNjZ1EyOXVkSEp2YkZ3aUxGeHVJQ0JqYjJ4dmNqb2dYQ0lqWldZME5EUTBYQ0lzWEc0Z0lHbGpiMjQ2SUZ3aWRHa3RjMmhwWld4a0xXTm9aV05yWENJc1hHNGdJSGRwWkhSb09pQTVOaXhjYmlBZ2FHVnBaMmgwT2lBNU5peGNiaUFnYkdGaVpXeHpPaUJiWENKbWJHOTNYQ0lzSUZ3aVpYSnliM0pjSWl3Z1hDSjBjbmt0WTJGMFkyaGNJbDBzWEc0Z0lHMWxkR0ZrWVhSaE9pQjdYRzRnSUNBZ2RHbDBiR1U2SUZ3aVJYSnliM0lnWW05MWJtUmhjbmxjSWl4Y2JpQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ1hDSlhjbUZ3Y3lCMGFHVWdhVzV3ZFhRZ2FXNGdZU0IwY25rdlkyRjBZMmd2Wm1sdVlXeHNlUzRnUlcxcGRITWdkR2hsSUhKbGMzVnNkQ0J2YmlCemRXTmpaWE56TENCdmNpQjBhR1VnWlhKeWIzSWdiMjRnWm1GcGJIVnlaUzVjSWl4Y2JpQWdJQ0JtYVc1aGJHeDVPaUJtWVd4elpTeGNiaUFnZlN4Y2JuMHBYRzVBYlc5a1pXd29LVnh1Wlhod2IzSjBJR05zWVhOeklFVnljbTl5UW05MWJtUmhjbmxHYkc5M1RtOWtaU0JsZUhSbGJtUnpJRTF2WkdWc0lIdGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdRSFZwWld4bGJXVnVkQ2hjSW5SbGVIUmhjbVZoWENJc0lIc2diR0ZpWld3NklGd2lTVzV3ZFhRZ2RtRnNkV1ZjSWl3Z2NHeGhZMlZvYjJ4a1pYSTZJRndpVm1Gc2RXVWdkRzhnWjNWaGNtUmNJaUI5S1Z4dUlDQkFhVzV3ZFhRb2V5Qm9ZVzVrYkdVNklGd2lkbUZzZFdWY0lpQjlLVnh1SUNCMllXeDFaU0U2SUhWdWEyNXZkMjQ3WEc1Y2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ1FIVnBaV3hsYldWdWRDaGNJbWx1Y0hWMFhDSXNJSHNnYkdGaVpXdzZJRndpVW1WemRXeDBYQ0lzSUhCc1lXTmxhRzlzWkdWeU9pQmNJazkxZEhCMWRDQnZiaUJ6ZFdOalpYTnpYQ0lnZlNsY2JpQWdRRzkxZEhCMWRDaDdJR2hoYm1Sc1pUb2dYQ0p5WlhOMWJIUmNJaUI5S1Z4dUlDQnlaWE4xYkhRaE9pQjFibXR1YjNkdU8xeHVYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJRUIxYVdWc1pXMWxiblFvWENKcGJuQjFkRndpTENCN0lHeGhZbVZzT2lCY0lrVnljbTl5WENJc0lIQnNZV05sYUc5c1pHVnlPaUJjSWs5MWRIQjFkQ0J2YmlCbVlXbHNkWEpsWENJZ2ZTbGNiaUFnUUc5MWRIQjFkQ2g3SUdoaGJtUnNaVG9nWENKbGNuSnZjbHdpSUgwcFhHNGdJR1Z5Y205eUlUb2dkVzVyYm05M2JqdGNibjFjYmx4dUx5b3FYRzRnS2lCSWRXMWhiaUJoY0hCeWIzWmhiQ0RpZ0pRZ2MzVnpjR1Z1WkhNZ1pYaGxZM1YwYVc5dUlIVnVkR2xzSUdFZ2FIVnRZVzRnWVhCd2NtOTJaWE1nYjNJZ2NtVnFaV04wY3k1Y2JpQXFMMXh1UUc1dlpHVW9YQ0pqYjNKbExtWnNiM2N1YUhWdFlXNUJjSEJ5YjNaaGJGd2lMQ0I3WEc0Z0lHdHBibVE2SUZ3aVkyOXlaUzVtYkc5M0xtaDFiV0Z1UVhCd2NtOTJZV3hjSWl4Y2JpQWdZMkYwWldkdmNuazZJRndpUm14dmR5QkRiMjUwY205c1hDSXNYRzRnSUdOdmJHOXlPaUJjSWlOa09UUTJaV1pjSWl4Y2JpQWdhV052YmpvZ1hDSjBhUzExYzJWeUxXTm9aV05yWENJc1hHNGdJSGRwWkhSb09pQTVOaXhjYmlBZ2FHVnBaMmgwT2lBNU5peGNiaUFnYkdGaVpXeHpPaUJiWENKbWJHOTNYQ0lzSUZ3aVlYQndjbTkyWVd4Y0lpd2dYQ0p6ZFhOd1pXNWtYQ0pkTEZ4dUlDQnRaWFJoWkdGMFlUb2dlMXh1SUNBZ0lIUnBkR3hsT2lCY0lraDFiV0Z1SUdGd2NISnZkbUZzWENJc1hHNGdJQ0FnWkdWelkzSnBjSFJwYjI0NklGd2lVM1Z6Y0dWdVpITWdaWGhsWTNWMGFXOXVJSFZ1ZEdsc0lHRWdhSFZ0WVc0Z1lYQndjbTkyWlhNZ2IzSWdjbVZxWldOMGN5NGdSVzFwZEhNZ2RHaGxJR0Z3Y0hKdmRtVmtJSFpoYkhWbElHOXlJR0VnY21WcVpXTjBhVzl1TGx3aUxGeHVJQ0FnSUdGd2NISnZkbVZ5Y3pvZ1cxMHNYRzRnSUNBZ2RHbHRaVzkxZEUxek9pQTROalF3TURBd01DeGNiaUFnZlN4Y2JuMHBYRzVBYlc5a1pXd29LVnh1Wlhod2IzSjBJR05zWVhOeklFaDFiV0Z1UVhCd2NtOTJZV3hHYkc5M1RtOWtaU0JsZUhSbGJtUnpJRTF2WkdWc0lIdGNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdRSFZwWld4bGJXVnVkQ2hjSW5SbGVIUmhjbVZoWENJc0lIc2diR0ZpWld3NklGd2lTVzV3ZFhRZ2RtRnNkV1ZjSWl3Z2NHeGhZMlZvYjJ4a1pYSTZJRndpVm1Gc2RXVWdjR1Z1WkdsdVp5QmhjSEJ5YjNaaGJGd2lJSDBwWEc0Z0lFQnBibkIxZENoN0lHaGhibVJzWlRvZ1hDSjJZV3gxWlZ3aUlIMHBYRzRnSUhaaGJIVmxJVG9nZFc1cmJtOTNianRjYmx4dUlDQkFjbVZ4ZFdseVpXUW9LVnh1SUNCQWRXbGxiR1Z0Wlc1MEtGd2lhVzV3ZFhSY0lpd2dleUJzWVdKbGJEb2dYQ0pCY0hCeWIzWmxaRndpTENCd2JHRmpaV2h2YkdSbGNqb2dYQ0pQZFhSd2RYUWdkMmhsYmlCaGNIQnliM1psWkZ3aUlIMHBYRzRnSUVCdmRYUndkWFFvZXlCb1lXNWtiR1U2SUZ3aVlYQndjbTkyWldSY0lpQjlLVnh1SUNCaGNIQnliM1psWkNFNklIVnVhMjV2ZDI0N1hHNWNiaUFnUUhKbGNYVnBjbVZrS0NsY2JpQWdRSFZwWld4bGJXVnVkQ2hjSW1sdWNIVjBYQ0lzSUhzZ2JHRmlaV3c2SUZ3aVVtVnFaV04wWldSY0lpd2djR3hoWTJWb2IyeGtaWEk2SUZ3aVQzVjBjSFYwSUhkb1pXNGdjbVZxWldOMFpXUmNJaUI5S1Z4dUlDQkFiM1YwY0hWMEtIc2dhR0Z1Wkd4bE9pQmNJbkpsYW1WamRHVmtYQ0lnZlNsY2JpQWdjbVZxWldOMFpXUWhPaUIxYm10dWIzZHVPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxkSFZ5YmlEaWdKUWdaR1ZtYVc1bGN5QmhibVFnYm05eWJXRnNhWE5sY3lCMGFHVWdabWx1WVd3Z2QyOXlhMlpzYjNjZ2IzVjBjSFYwTGx4dUlDb3ZYRzVBYm05a1pTaGNJbU52Y21VdVpteHZkeTV5WlhSMWNtNWNJaXdnZTF4dUlDQnJhVzVrT2lCY0ltTnZjbVV1Wm14dmR5NXlaWFIxY201Y0lpeGNiaUFnWTJGMFpXZHZjbms2SUZ3aVZYUnBiR2wwZVZ3aUxGeHVJQ0JqYjJ4dmNqb2dYQ0lqTWpKak5UVmxYQ0lzWEc0Z0lHbGpiMjQ2SUZ3aWRHa3RZWEp5YjNjdFltRmpheTExY0Z3aUxGeHVJQ0IzYVdSMGFEb2dPVFlzWEc0Z0lHaGxhV2RvZERvZ09UWXNYRzRnSUd4aFltVnNjem9nVzF3aVpteHZkMXdpTENCY0luSmxkSFZ5Ymx3aUxDQmNJbTkxZEhCMWRGd2lYU3hjYmlBZ2JXVjBZV1JoZEdFNklIdGNiaUFnSUNCMGFYUnNaVG9nWENKU1pYUjFjbTVjSWl4Y2JpQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ1hDSk9iM0p0WVd4cGMyVnpJSFJvWlNCcGJuQjFkQ0JwYm5SdklIUm9aU0JtYVc1aGJDQjNiM0pyWm14dmR5QnZkWFJ3ZFhRZ2IySnFaV04wTGx3aUxGeHVJQ0FnSUc5MWRIQjFkRk5qYUdWdFlUb2dlMzBzWEc0Z0lIMHNYRzU5S1Z4dVFHMXZaR1ZzS0NsY2JtVjRjRzl5ZENCamJHRnpjeUJTWlhSMWNtNUdiRzkzVG05a1pTQmxlSFJsYm1SeklFMXZaR1ZzSUh0Y2JpQWdRSEpsY1hWcGNtVmtLQ2xjYmlBZ1FIVnBaV3hsYldWdWRDaGNJblJsZUhSaGNtVmhYQ0lzSUhzZ2JHRmlaV3c2SUZ3aVNXNXdkWFFnZG1Gc2RXVmNJaXdnY0d4aFkyVm9iMnhrWlhJNklGd2lWbUZzZFdVZ2RHOGdibTl5YldGc2FYTmxYQ0lnZlNsY2JpQWdRR2x1Y0hWMEtIc2dhR0Z1Wkd4bE9pQmNJblpoYkhWbFhDSWdmU2xjYmlBZ2RtRnNkV1VoT2lCMWJtdHViM2R1TzF4dVhHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lFQjFhV1ZzWlcxbGJuUW9YQ0pwYm5CMWRGd2lMQ0I3SUd4aFltVnNPaUJjSWxKbGRIVnlibVZrSUc5MWRIQjFkRndpTENCd2JHRmpaV2h2YkdSbGNqb2dYQ0pPYjNKdFlXeHBjMlZrSUc5MWRIQjFkRndpSUgwcFhHNGdJRUJ2ZFhSd2RYUW9leUJvWVc1a2JHVTZJRndpY21WemRXeDBYQ0lnZlNsY2JpQWdjbVZ6ZFd4MElUb2dkVzVyYm05M2JqdGNibjFjYmx4dUx5b3FYRzRnS2lCRGIyUmxJT0tBbENCellXNWtZbTk0WldRZ1NsTXZWRk1nWTI5a1pTQmxlR1ZqZFhScGIyNGdLRUZNUmxKRlJDMDFJTUtuTnlrdVhHNGdLbHh1SUNvZ1ZHaGxJR1Z1WjJsdVpTQmtiMlZ6SUc1dmRDQnBiWEJzWlcxbGJuUWdkR2hsSUhOaGJtUmliM2dnWkdseVpXTjBiSGtnS01Lbk1qSXVOQ2t1SUVFZ1puVjBkWEpsWEc0Z0tpQmxlR1ZqZFhSdmNpQnRZWGtnZDNKaGNDQjBhR1VnWUVOdlpHVlRZVzVrWW05NFlDQmpiMjUwY21GamRDQW9RVXhHVWtWRUxUVWd3cWMzTGpFM0tTQmhjeUJoWEc0Z0tpQndiSFZuWjJGaWJHVWdaWGhsWTNWMGIzSXVJRlJvWlNCd2JHRmpaV2h2YkdSbGNpQnplVzUwWVhnZ0tHQjdleUFrYVc1d2RYUWdmWDFnTENCZ2Uzc2dKR2wwWlcwZ2ZYMWdMRnh1SUNvZ1lIdDdJQ1JwYm1SbGVDQjlmV0FzSUdCN2V5QWtkbUZ5Y3lCOWZXQXNJR0I3ZXlBa2JtOWtaVnRjSWs1aGJXVmNJbDB1YjNWMGNIVjBJSDE5WUNrZ2FYTWdUV0Z6ZEhKaExWeHVJQ29nWVdkdWIzTjBhV01nWVc1a0lHeHBkbVZ6SUdsdUlIUm9aU0JrYjNkdWMzUnlaV0Z0SUhCeWIycGxZM1FuY3lCZ2JXOWtkV3hsY3k5amIzSmxZQ0FvUVV4R1VrVkVMVFlwTGx4dUlDb3ZYRzVBYm05a1pTaGNJbU52Y21VdVpteHZkeTVqYjJSbFhDSXNJSHRjYmlBZ2EybHVaRG9nWENKamIzSmxMbVpzYjNjdVkyOWtaVndpTEZ4dUlDQmpZWFJsWjI5eWVUb2dYQ0pWZEdsc2FYUjVYQ0lzWEc0Z0lHTnZiRzl5T2lCY0lpTTNZek5oWldSY0lpeGNiaUFnYVdOdmJqb2dYQ0owYVMxamIyUmxYQ0lzWEc0Z0lIZHBaSFJvT2lBNU5peGNiaUFnYUdWcFoyaDBPaUE1Tml4Y2JpQWdiR0ZpWld4ek9pQmJYQ0ptYkc5M1hDSXNJRndpWTI5a1pWd2lMQ0JjSW5OaGJtUmliM2hjSWl3Z1hDSjBjbUZ1YzJadmNtMWNJbDBzWEc0Z0lHMWxkR0ZrWVhSaE9pQjdYRzRnSUNBZ2RHbDBiR1U2SUZ3aVEyOWtaVndpTEZ4dUlDQWdJR1JsYzJOeWFYQjBhVzl1T2lCY0lsSjFibk1nZFhObGNpMWhkWFJvYjNKbFpDQktVeTlVVXlCcGJpQmhJSEpsYzNSeWFXTjBaV1FnVmswZ2MyRnVaR0p2ZUM0Z1UzVndjRzl5ZEhNZ2NHeGhZMlZvYjJ4a1pYSWdjM2x1ZEdGNElHWnZjaUIzYjNKclpteHZkeUJrWVhSaElISmxabVZ5Wlc1alpYTXVYQ0lzWEc0Z0lDQWdZMjlrWlRvZ1hDSmNJaXhjYmlBZ0lDQnNZVzVuZFdGblpUb2dYQ0pxWVhaaGMyTnlhWEIwWENJc1hHNGdJSDBzWEc1OUtWeHVRRzF2WkdWc0tDbGNibVY0Y0c5eWRDQmpiR0Z6Y3lCRGIyUmxSbXh2ZDA1dlpHVWdaWGgwWlc1a2N5Qk5iMlJsYkNCN1hHNGdJRUJ5WlhGMWFYSmxaQ2dwWEc0Z0lFQjFhV1ZzWlcxbGJuUW9YQ0owWlhoMFlYSmxZVndpTENCN0lHeGhZbVZzT2lCY0lrbHVjSFYwWENJc0lIQnNZV05sYUc5c1pHVnlPaUJjSWtsdWNIVjBJRzlpYW1WamRDQW9ZV05qWlhOemFXSnNaU0JoY3lBa2FXNXdkWFFwWENJZ2ZTbGNiaUFnUUdsdWNIVjBLSHNnYUdGdVpHeGxPaUJjSW1sdWNIVjBYQ0lnZlNsY2JpQWdhVzV3ZFhRaE9pQjFibXR1YjNkdU8xeHVYRzRnSUVCeVpYRjFhWEpsWkNncFhHNGdJRUIxYVdWc1pXMWxiblFvWENKcGJuQjFkRndpTENCN0lHeGhZbVZzT2lCY0lsSmxjM1ZzZEZ3aUxDQndiR0ZqWldodmJHUmxjam9nWENKRGIyUmxJR1Y0WldOMWRHbHZiaUJ5WlhOMWJIUmNJaUI5S1Z4dUlDQkFiM1YwY0hWMEtIc2dhR0Z1Wkd4bE9pQmNJbkpsYzNWc2RGd2lJSDBwWEc0Z0lISmxjM1ZzZENFNklIVnVhMjV2ZDI0N1hHNTlYRzVjYmk4cUtseHVJQ29nUVd4c0lHSjFhV3gwTFdsdUlHWnNiM2N0WTI5dWRISnZiQ0J1YjJSbElHTnZibk4wY25WamRHOXljeTVjYmlBcUwxeHVaWGh3YjNKMElHTnZibk4wSUVkU1FWQklYMFpNVDFkZlEwOU9WRkpQVEY5T1QwUkZVeUE5SUZ0Y2JpQWdTV1pHYkc5M1RtOWtaU3hjYmlBZ1UzZHBkR05vUm14dmQwNXZaR1VzWEc0Z0lGQmhjbUZzYkdWc1JteHZkMDV2WkdVc1hHNGdJRTFsY21kbFJteHZkMDV2WkdVc1hHNGdJRTFoY0Vac2IzZE9iMlJsTEZ4dUlDQkVaV3hoZVVac2IzZE9iMlJsTEZ4dUlDQkZjbkp2Y2tKdmRXNWtZWEo1Um14dmQwNXZaR1VzWEc0Z0lFaDFiV0Z1UVhCd2NtOTJZV3hHYkc5M1RtOWtaU3hjYmlBZ1VtVjBkWEp1Um14dmQwNXZaR1VzWEc0Z0lFTnZaR1ZHYkc5M1RtOWtaU3hjYmwwZ1lYTWdZMjl1YzNRN1hHNGlYWDA9Il19