@decaf-ts/integrations 0.14.0 → 0.14.3

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 (1166) hide show
  1. package/README.md +11 -1
  2. package/dist/integrations.cjs +3317 -2
  3. package/dist/integrations.js +3665 -2
  4. package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs +2 -2
  5. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  6. package/lib/cjs/blob/azure/index.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobEnvironment.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  11. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  12. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  13. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  14. package/lib/cjs/blob/core/index.cjs +2 -2
  15. package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs +2 -2
  16. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  17. package/lib/cjs/blob/gcp/index.cjs +2 -2
  18. package/lib/cjs/blob/index.cjs +2 -2
  19. package/lib/cjs/blob/local/LocalBlobEnvironment.cjs +2 -2
  20. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  21. package/lib/cjs/blob/local/index.cjs +2 -2
  22. package/lib/cjs/blob/memory/MemoryBlobEnvironment.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/MinioBlobEnvironment.cjs +2 -2
  26. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  27. package/lib/cjs/blob/s3/R2BlobEnvironment.cjs +2 -2
  28. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  29. package/lib/cjs/blob/s3/S3BlobEnvironment.cjs +2 -2
  30. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  31. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +2 -2
  32. package/lib/cjs/blob/s3/index.cjs +2 -2
  33. package/lib/cjs/calendar/CalendarService.cjs +2 -2
  34. package/lib/cjs/calendar/environment.cjs +2 -2
  35. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +2 -2
  36. package/lib/cjs/calendar/google-calendar/index.cjs +2 -2
  37. package/lib/cjs/calendar/index.cjs +2 -2
  38. package/lib/cjs/calendar/types.cjs +2 -2
  39. package/lib/cjs/calendar/validators/cron.cjs +2 -2
  40. package/lib/cjs/calendar/writers/CalendarFsWriter.cjs +2 -2
  41. package/lib/cjs/calendar/writers/CalenderDownloader.cjs +2 -2
  42. package/lib/cjs/calendar/writers/ICalendarWriter.cjs +2 -2
  43. package/lib/cjs/comms/discord/DiscordService.cjs +2 -2
  44. package/lib/cjs/comms/discord/index.cjs +2 -2
  45. package/lib/cjs/comms/email/EmailService.cjs +2 -2
  46. package/lib/cjs/comms/email/index.cjs +2 -2
  47. package/lib/cjs/comms/email/mime.cjs +2 -2
  48. package/lib/cjs/comms/email/smtp.cjs +2 -2
  49. package/lib/cjs/comms/environment.cjs +2 -2
  50. package/lib/cjs/comms/gmail/GmailService.cjs +2 -2
  51. package/lib/cjs/comms/gmail/index.cjs +2 -2
  52. package/lib/cjs/comms/index.cjs +2 -2
  53. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +2 -2
  54. package/lib/cjs/comms/outlook/index.cjs +2 -2
  55. package/lib/cjs/comms/slack/SlackService.cjs +2 -2
  56. package/lib/cjs/comms/slack/index.cjs +2 -2
  57. package/lib/cjs/comms/teams/TeamsService.cjs +2 -2
  58. package/lib/cjs/comms/teams/index.cjs +2 -2
  59. package/lib/cjs/comms/telegram/TelegramService.cjs +2 -2
  60. package/lib/cjs/comms/telegram/index.cjs +2 -2
  61. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +2 -2
  62. package/lib/cjs/comms/whatsapp/index.cjs +2 -2
  63. package/lib/cjs/devops/environment.cjs +2 -2
  64. package/lib/cjs/devops/github/GithubService.cjs +2 -2
  65. package/lib/cjs/devops/github/index.cjs +2 -2
  66. package/lib/cjs/devops/gitlab/GitlabService.cjs +2 -2
  67. package/lib/cjs/devops/gitlab/index.cjs +2 -2
  68. package/lib/cjs/devops/index.cjs +2 -2
  69. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  70. package/lib/cjs/docker/index.cjs +2 -2
  71. package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs +2 -2
  72. package/lib/cjs/feature-flags/constants.cjs +2 -2
  73. package/lib/cjs/feature-flags/decorators.cjs +2 -2
  74. package/lib/cjs/feature-flags/environment.cjs +2 -2
  75. package/lib/cjs/feature-flags/index.cjs +2 -2
  76. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
  77. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
  78. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
  79. package/lib/cjs/feature-flags/readers/index.cjs +2 -2
  80. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +2 -2
  81. package/lib/cjs/feature-flags/types.cjs +2 -2
  82. package/lib/cjs/feature-flags/utils.cjs +2 -2
  83. package/lib/cjs/index.cjs +5 -5
  84. package/lib/cjs/io/airtable/AirtableService.cjs +2 -2
  85. package/lib/cjs/io/airtable/index.cjs +2 -2
  86. package/lib/cjs/io/confluence/ConfluenceService.cjs +2 -2
  87. package/lib/cjs/io/confluence/index.cjs +2 -2
  88. package/lib/cjs/io/environment.cjs +2 -2
  89. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +2 -2
  90. package/lib/cjs/io/google-docs/index.cjs +2 -2
  91. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +2 -2
  92. package/lib/cjs/io/google-sheets/index.cjs +2 -2
  93. package/lib/cjs/io/graphql/GraphqlService.cjs +2 -2
  94. package/lib/cjs/io/graphql/index.cjs +2 -2
  95. package/lib/cjs/io/index.cjs +2 -2
  96. package/lib/cjs/io/jira/JiraService.cjs +2 -2
  97. package/lib/cjs/io/jira/index.cjs +2 -2
  98. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +2 -2
  99. package/lib/cjs/io/microsoft-excel/index.cjs +2 -2
  100. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +2 -2
  101. package/lib/cjs/io/microsoft-sharepoint/index.cjs +2 -2
  102. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +2 -2
  103. package/lib/cjs/io/spreadsheet/index.cjs +2 -2
  104. package/lib/cjs/keycloak/broker.cjs +2 -2
  105. package/lib/cjs/keycloak/index.cjs +2 -2
  106. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  107. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  108. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  109. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  110. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  111. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  112. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  113. package/lib/cjs/keycloak/services/index.cjs +2 -2
  114. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  115. package/lib/cjs/keycloak/types.cjs +2 -2
  116. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
  117. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
  118. package/lib/cjs/kibana/builders/index.cjs +2 -2
  119. package/lib/cjs/kibana/helpers.cjs +2 -2
  120. package/lib/cjs/kibana/index.cjs +2 -2
  121. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  122. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  123. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  124. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  125. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  126. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  127. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  128. package/lib/cjs/kibana/services/index.cjs +2 -2
  129. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  130. package/lib/cjs/kibana/types.cjs +2 -2
  131. package/lib/cjs/loader/ObjectLoader.cjs +2 -2
  132. package/lib/cjs/loader/assets.cjs +2 -2
  133. package/lib/cjs/loader/config.cjs +2 -2
  134. package/lib/cjs/loader/families.cjs +2 -2
  135. package/lib/cjs/loader/index.cjs +2 -2
  136. package/lib/cjs/loader/nest.cjs +2 -2
  137. package/lib/cjs/loader/types.cjs +2 -2
  138. package/lib/cjs/namespaces/index.cjs +2 -2
  139. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  140. package/lib/cjs/namespaces/models/credential.model.cjs +2 -2
  141. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  142. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  143. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  144. package/lib/cjs/namespaces/models/index.cjs +2 -2
  145. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  146. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  147. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  148. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  149. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  150. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  151. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  152. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  153. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  154. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  155. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  156. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  157. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  158. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  159. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  160. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  161. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  162. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  163. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  164. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
  165. package/lib/cjs/namespaces/rls/index.cjs +2 -2
  166. package/lib/cjs/namespaces/rls/principal-resolver.cjs +2 -2
  167. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +2 -2
  168. package/lib/cjs/namespaces/rls/rls.constants.cjs +2 -2
  169. package/lib/cjs/namespaces/rls/rls.template.cjs +2 -2
  170. package/lib/cjs/namespaces/rls/rls.types.cjs +2 -2
  171. package/lib/cjs/namespaces/rls/session-binding.cjs +2 -2
  172. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  173. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  174. package/lib/cjs/namespaces/services/credential.service.cjs +2 -2
  175. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  176. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  177. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  178. package/lib/cjs/namespaces/services/index.cjs +2 -2
  179. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
  180. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
  181. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  182. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  183. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  184. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  185. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  186. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  187. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  188. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  189. package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
  190. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  191. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  192. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  193. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  194. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  195. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  196. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  197. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  198. package/lib/cjs/namespaces/types.cjs +2 -2
  199. package/lib/cjs/namespaces/utils.cjs +2 -2
  200. package/lib/cjs/nest/decorators.cjs +2 -2
  201. package/lib/cjs/nest/index.cjs +2 -2
  202. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  203. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  204. package/lib/cjs/nest/logging.cjs +2 -2
  205. package/lib/cjs/nest/types.cjs +2 -2
  206. package/lib/cjs/nest/utils.cjs +2 -2
  207. package/lib/cjs/plugins/contract.cjs +2 -2
  208. package/lib/cjs/plugins/index.cjs +2 -2
  209. package/lib/cjs/plugins/kibana/host.cjs +2 -2
  210. package/lib/cjs/plugins/kibana/index.cjs +2 -2
  211. package/lib/cjs/plugins/kibana/installer.cjs +2 -2
  212. package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
  213. package/lib/cjs/plugins/kibana/templates.cjs +2 -2
  214. package/lib/cjs/plugins/kibana/types.cjs +2 -2
  215. package/lib/cjs/plugins/superset/host.cjs +2 -2
  216. package/lib/cjs/plugins/superset/index.cjs +2 -2
  217. package/lib/cjs/plugins/superset/installer.cjs +2 -2
  218. package/lib/cjs/plugins/superset/manifest.cjs +2 -2
  219. package/lib/cjs/plugins/superset/templates.cjs +2 -2
  220. package/lib/cjs/plugins/superset/types.cjs +2 -2
  221. package/lib/cjs/redis/RedisContextLock.cjs +2 -2
  222. package/lib/cjs/redis/RedisDispatch.cjs +2 -2
  223. package/lib/cjs/redis/RedisPaginator.cjs +2 -2
  224. package/lib/cjs/redis/RedisStatement.cjs +2 -2
  225. package/lib/cjs/redis/adapter.cjs +2 -2
  226. package/lib/cjs/redis/constants.cjs +2 -2
  227. package/lib/cjs/redis/handlers.cjs +2 -2
  228. package/lib/cjs/redis/index.cjs +2 -2
  229. package/lib/cjs/redis/serialization.cjs +2 -2
  230. package/lib/cjs/redis/types.cjs +2 -2
  231. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +2 -2
  232. package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs +2 -2
  233. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  234. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  235. package/lib/cjs/secrets/aws/index.cjs +2 -2
  236. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  237. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  238. package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs +2 -2
  239. package/lib/cjs/secrets/azure/index.cjs +2 -2
  240. package/lib/cjs/secrets/core/ClientBasedSecretService.cjs +2 -2
  241. package/lib/cjs/secrets/core/SecretEnvironment.cjs +2 -2
  242. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  243. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  244. package/lib/cjs/secrets/core/SecretReference.cjs +3 -2
  245. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  246. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  247. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  248. package/lib/cjs/secrets/core/index.cjs +2 -2
  249. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +2 -2
  250. package/lib/cjs/secrets/fs/FsSecretService.cjs +2 -2
  251. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +2 -2
  252. package/lib/cjs/secrets/fs/index.cjs +2 -2
  253. package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs +2 -2
  254. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  255. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  256. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  257. package/lib/cjs/secrets/index.cjs +2 -2
  258. package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs +34 -0
  259. package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs +479 -0
  260. package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs +4 -0
  261. package/lib/cjs/secrets/kubernetes/index.cjs +27 -0
  262. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  263. package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs +2 -2
  264. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  265. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  266. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  267. package/lib/cjs/secrets/model/index.cjs +2 -2
  268. package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs +2 -2
  269. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  270. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  271. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  272. package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs +2 -2
  273. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  274. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  275. package/lib/cjs/secrets/vault/index.cjs +2 -2
  276. package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs +2 -2
  277. package/lib/cjs/sftp/aws/AwsSftpService.cjs +2 -2
  278. package/lib/cjs/sftp/aws/index.cjs +24 -0
  279. package/lib/cjs/sftp/core/SftpEnvironment.cjs +2 -2
  280. package/lib/cjs/sftp/core/SftpSource.cjs +2 -2
  281. package/lib/cjs/sftp/core/index.cjs +2 -2
  282. package/lib/cjs/sftp/index.cjs +2 -2
  283. package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs +2 -2
  284. package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs +2 -2
  285. package/lib/cjs/sftp/ssh2/index.cjs +24 -0
  286. package/lib/cjs/shared/environmentValue.cjs +2 -2
  287. package/lib/cjs/shared/http/HttpApiService.cjs +2 -2
  288. package/lib/cjs/shared/http/hermeticBoot.cjs +2 -2
  289. package/lib/cjs/shared/http/index.cjs +2 -2
  290. package/lib/cjs/shared/runtime.cjs +2 -2
  291. package/lib/cjs/user-requests/index.cjs +2 -2
  292. package/lib/cjs/utils.cjs +2 -2
  293. package/lib/esm/blob/azure/AzureBlobEnvironment.js +1 -1
  294. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  295. package/lib/esm/blob/azure/index.js +1 -1
  296. package/lib/esm/blob/core/BlobEnvironment.js +1 -1
  297. package/lib/esm/blob/core/BlobErrors.js +1 -1
  298. package/lib/esm/blob/core/BlobKey.js +1 -1
  299. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  300. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  301. package/lib/esm/blob/core/BlobTypes.js +1 -1
  302. package/lib/esm/blob/core/BlobValue.js +1 -1
  303. package/lib/esm/blob/core/index.js +1 -1
  304. package/lib/esm/blob/gcp/GcsBlobEnvironment.js +1 -1
  305. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  306. package/lib/esm/blob/gcp/index.js +1 -1
  307. package/lib/esm/blob/index.js +1 -1
  308. package/lib/esm/blob/local/LocalBlobEnvironment.js +1 -1
  309. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  310. package/lib/esm/blob/local/index.js +1 -1
  311. package/lib/esm/blob/memory/MemoryBlobEnvironment.js +1 -1
  312. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  313. package/lib/esm/blob/memory/index.js +1 -1
  314. package/lib/esm/blob/s3/MinioBlobEnvironment.js +1 -1
  315. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  316. package/lib/esm/blob/s3/R2BlobEnvironment.js +1 -1
  317. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  318. package/lib/esm/blob/s3/S3BlobEnvironment.js +1 -1
  319. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  320. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +1 -1
  321. package/lib/esm/blob/s3/index.js +1 -1
  322. package/lib/esm/calendar/CalendarService.js +1 -1
  323. package/lib/esm/calendar/environment.js +1 -1
  324. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +1 -1
  325. package/lib/esm/calendar/google-calendar/index.js +1 -1
  326. package/lib/esm/calendar/index.js +1 -1
  327. package/lib/esm/calendar/types.js +1 -1
  328. package/lib/esm/calendar/validators/cron.js +1 -1
  329. package/lib/esm/calendar/writers/CalendarFsWriter.js +1 -1
  330. package/lib/esm/calendar/writers/CalenderDownloader.js +1 -1
  331. package/lib/esm/calendar/writers/ICalendarWriter.js +1 -1
  332. package/lib/esm/comms/discord/DiscordService.js +1 -1
  333. package/lib/esm/comms/discord/index.js +1 -1
  334. package/lib/esm/comms/email/EmailService.js +1 -1
  335. package/lib/esm/comms/email/index.js +1 -1
  336. package/lib/esm/comms/email/mime.js +1 -1
  337. package/lib/esm/comms/email/smtp.js +1 -1
  338. package/lib/esm/comms/environment.js +1 -1
  339. package/lib/esm/comms/gmail/GmailService.js +1 -1
  340. package/lib/esm/comms/gmail/index.js +1 -1
  341. package/lib/esm/comms/index.js +1 -1
  342. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +1 -1
  343. package/lib/esm/comms/outlook/index.js +1 -1
  344. package/lib/esm/comms/slack/SlackService.js +1 -1
  345. package/lib/esm/comms/slack/index.js +1 -1
  346. package/lib/esm/comms/teams/TeamsService.js +1 -1
  347. package/lib/esm/comms/teams/index.js +1 -1
  348. package/lib/esm/comms/telegram/TelegramService.js +1 -1
  349. package/lib/esm/comms/telegram/index.js +1 -1
  350. package/lib/esm/comms/whatsapp/WhatsAppService.js +1 -1
  351. package/lib/esm/comms/whatsapp/index.js +1 -1
  352. package/lib/esm/devops/environment.js +1 -1
  353. package/lib/esm/devops/github/GithubService.js +1 -1
  354. package/lib/esm/devops/github/index.js +1 -1
  355. package/lib/esm/devops/gitlab/GitlabService.js +1 -1
  356. package/lib/esm/devops/gitlab/index.js +1 -1
  357. package/lib/esm/devops/index.js +1 -1
  358. package/lib/esm/docker/DockerComposeService.js +1 -1
  359. package/lib/esm/docker/index.js +1 -1
  360. package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js +1 -1
  361. package/lib/esm/feature-flags/constants.js +1 -1
  362. package/lib/esm/feature-flags/decorators.js +1 -1
  363. package/lib/esm/feature-flags/environment.js +1 -1
  364. package/lib/esm/feature-flags/index.js +1 -1
  365. package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
  366. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
  367. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
  368. package/lib/esm/feature-flags/readers/index.js +1 -1
  369. package/lib/esm/feature-flags/services/FeatureFlag.service.js +1 -1
  370. package/lib/esm/feature-flags/types.js +1 -1
  371. package/lib/esm/feature-flags/utils.js +1 -1
  372. package/lib/esm/index.js +4 -4
  373. package/lib/esm/io/airtable/AirtableService.js +1 -1
  374. package/lib/esm/io/airtable/index.js +1 -1
  375. package/lib/esm/io/confluence/ConfluenceService.js +1 -1
  376. package/lib/esm/io/confluence/index.js +1 -1
  377. package/lib/esm/io/environment.js +1 -1
  378. package/lib/esm/io/google-docs/GoogleDocsService.js +1 -1
  379. package/lib/esm/io/google-docs/index.js +1 -1
  380. package/lib/esm/io/google-sheets/GoogleSheetsService.js +1 -1
  381. package/lib/esm/io/google-sheets/index.js +1 -1
  382. package/lib/esm/io/graphql/GraphqlService.js +1 -1
  383. package/lib/esm/io/graphql/index.js +1 -1
  384. package/lib/esm/io/index.js +1 -1
  385. package/lib/esm/io/jira/JiraService.js +1 -1
  386. package/lib/esm/io/jira/index.js +1 -1
  387. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +1 -1
  388. package/lib/esm/io/microsoft-excel/index.js +1 -1
  389. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +1 -1
  390. package/lib/esm/io/microsoft-sharepoint/index.js +1 -1
  391. package/lib/esm/io/spreadsheet/SpreadsheetService.js +1 -1
  392. package/lib/esm/io/spreadsheet/index.js +1 -1
  393. package/lib/esm/keycloak/broker.js +1 -1
  394. package/lib/esm/keycloak/index.js +1 -1
  395. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  396. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  397. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  398. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  399. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  400. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  401. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  402. package/lib/esm/keycloak/services/index.js +1 -1
  403. package/lib/esm/keycloak/services/runtime.js +1 -1
  404. package/lib/esm/keycloak/types.js +1 -1
  405. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
  406. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
  407. package/lib/esm/kibana/builders/index.js +1 -1
  408. package/lib/esm/kibana/helpers.js +1 -1
  409. package/lib/esm/kibana/index.js +1 -1
  410. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  411. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  412. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  413. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  414. package/lib/esm/kibana/services/KibanaService.js +1 -1
  415. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  416. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  417. package/lib/esm/kibana/services/index.js +1 -1
  418. package/lib/esm/kibana/services/runtime.js +1 -1
  419. package/lib/esm/kibana/types.js +1 -1
  420. package/lib/esm/loader/ObjectLoader.js +1 -1
  421. package/lib/esm/loader/assets.js +1 -1
  422. package/lib/esm/loader/config.js +1 -1
  423. package/lib/esm/loader/families.js +1 -1
  424. package/lib/esm/loader/index.js +1 -1
  425. package/lib/esm/loader/nest.js +1 -1
  426. package/lib/esm/loader/types.js +1 -1
  427. package/lib/esm/namespaces/index.js +1 -1
  428. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  429. package/lib/esm/namespaces/models/credential.model.js +1 -1
  430. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  431. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  432. package/lib/esm/namespaces/models/group.model.js +1 -1
  433. package/lib/esm/namespaces/models/index.js +1 -1
  434. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  435. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  436. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  437. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  438. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  439. package/lib/esm/namespaces/models/permission.model.js +1 -1
  440. package/lib/esm/namespaces/models/principal.model.js +1 -1
  441. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  442. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  443. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  444. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  445. package/lib/esm/namespaces/models/role.model.js +1 -1
  446. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  447. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  448. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  449. package/lib/esm/namespaces/models/tenant.model.js +1 -1
  450. package/lib/esm/namespaces/models/user.model.js +1 -1
  451. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  452. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  453. package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
  454. package/lib/esm/namespaces/rls/index.js +1 -1
  455. package/lib/esm/namespaces/rls/principal-resolver.js +1 -1
  456. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +1 -1
  457. package/lib/esm/namespaces/rls/rls.constants.js +1 -1
  458. package/lib/esm/namespaces/rls/rls.template.js +1 -1
  459. package/lib/esm/namespaces/rls/rls.types.js +1 -1
  460. package/lib/esm/namespaces/rls/session-binding.js +1 -1
  461. package/lib/esm/namespaces/services/authz.service.js +1 -1
  462. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  463. package/lib/esm/namespaces/services/credential.service.js +1 -1
  464. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  465. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  466. package/lib/esm/namespaces/services/group.service.js +1 -1
  467. package/lib/esm/namespaces/services/index.js +1 -1
  468. package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
  469. package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
  470. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  471. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  472. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  473. package/lib/esm/namespaces/services/permission.service.js +1 -1
  474. package/lib/esm/namespaces/services/principal.service.js +1 -1
  475. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  476. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  477. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  478. package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
  479. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  480. package/lib/esm/namespaces/services/role.service.js +1 -1
  481. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  482. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  483. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  484. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  485. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  486. package/lib/esm/namespaces/services/user.service.js +1 -1
  487. package/lib/esm/namespaces/types.js +1 -1
  488. package/lib/esm/namespaces/utils.js +1 -1
  489. package/lib/esm/nest/decorators.js +1 -1
  490. package/lib/esm/nest/index.js +1 -1
  491. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  492. package/lib/esm/nest/keycloakModule.js +1 -1
  493. package/lib/esm/nest/logging.js +1 -1
  494. package/lib/esm/nest/types.js +1 -1
  495. package/lib/esm/nest/utils.js +1 -1
  496. package/lib/esm/plugins/contract.js +1 -1
  497. package/lib/esm/plugins/index.js +1 -1
  498. package/lib/esm/plugins/kibana/host.js +1 -1
  499. package/lib/esm/plugins/kibana/index.js +1 -1
  500. package/lib/esm/plugins/kibana/installer.js +1 -1
  501. package/lib/esm/plugins/kibana/manifest.js +1 -1
  502. package/lib/esm/plugins/kibana/templates.js +1 -1
  503. package/lib/esm/plugins/kibana/types.js +1 -1
  504. package/lib/esm/plugins/superset/host.js +1 -1
  505. package/lib/esm/plugins/superset/index.js +1 -1
  506. package/lib/esm/plugins/superset/installer.js +1 -1
  507. package/lib/esm/plugins/superset/manifest.js +1 -1
  508. package/lib/esm/plugins/superset/templates.js +1 -1
  509. package/lib/esm/plugins/superset/types.js +1 -1
  510. package/lib/esm/redis/RedisContextLock.js +1 -1
  511. package/lib/esm/redis/RedisDispatch.js +1 -1
  512. package/lib/esm/redis/RedisPaginator.js +1 -1
  513. package/lib/esm/redis/RedisStatement.js +1 -1
  514. package/lib/esm/redis/adapter.js +1 -1
  515. package/lib/esm/redis/constants.js +1 -1
  516. package/lib/esm/redis/handlers.js +1 -1
  517. package/lib/esm/redis/index.js +1 -1
  518. package/lib/esm/redis/serialization.js +1 -1
  519. package/lib/esm/redis/types.js +1 -1
  520. package/lib/esm/secrets/InfraCredentialBootstrap.js +1 -1
  521. package/lib/esm/secrets/aws/AwsSecretEnvironment.js +1 -1
  522. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  523. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  524. package/lib/esm/secrets/aws/index.js +1 -1
  525. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  526. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  527. package/lib/esm/secrets/azure/AzureSecretEnvironment.js +1 -1
  528. package/lib/esm/secrets/azure/index.js +1 -1
  529. package/lib/esm/secrets/core/ClientBasedSecretService.js +1 -1
  530. package/lib/esm/secrets/core/SecretEnvironment.js +1 -1
  531. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  532. package/lib/esm/secrets/core/SecretName.js +1 -1
  533. package/lib/esm/secrets/core/SecretReference.js +2 -1
  534. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  535. package/lib/esm/secrets/core/SecretService.js +1 -1
  536. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  537. package/lib/esm/secrets/core/index.js +1 -1
  538. package/lib/esm/secrets/fs/FsSecretEnvironment.js +1 -1
  539. package/lib/esm/secrets/fs/FsSecretService.js +1 -1
  540. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +1 -1
  541. package/lib/esm/secrets/fs/index.js +1 -1
  542. package/lib/esm/secrets/gcp/GcpSecretEnvironment.js +1 -1
  543. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  544. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  545. package/lib/esm/secrets/gcp/index.js +1 -1
  546. package/lib/esm/secrets/index.js +1 -1
  547. package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js +30 -0
  548. package/lib/esm/secrets/kubernetes/KubernetesSecretService.js +474 -0
  549. package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js +9 -0
  550. package/lib/esm/secrets/kubernetes/index.js +10 -0
  551. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  552. package/lib/esm/secrets/model/ModelSecretEnvironment.js +1 -1
  553. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  554. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  555. package/lib/esm/secrets/model/Secret.js +1 -1
  556. package/lib/esm/secrets/model/index.js +1 -1
  557. package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js +1 -1
  558. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  559. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  560. package/lib/esm/secrets/onepassword/index.js +1 -1
  561. package/lib/esm/secrets/vault/VaultSecretEnvironment.js +1 -1
  562. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  563. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  564. package/lib/esm/secrets/vault/index.js +1 -1
  565. package/lib/esm/sftp/aws/AwsSftpEnvironment.js +1 -1
  566. package/lib/esm/sftp/aws/AwsSftpService.js +1 -1
  567. package/lib/esm/sftp/aws/index.js +7 -0
  568. package/lib/esm/sftp/core/SftpEnvironment.js +1 -1
  569. package/lib/esm/sftp/core/SftpSource.js +1 -1
  570. package/lib/esm/sftp/core/index.js +1 -1
  571. package/lib/esm/sftp/index.js +1 -1
  572. package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js +1 -1
  573. package/lib/esm/sftp/ssh2/Ssh2SftpService.js +1 -1
  574. package/lib/esm/sftp/ssh2/index.js +7 -0
  575. package/lib/esm/shared/environmentValue.js +1 -1
  576. package/lib/esm/shared/http/HttpApiService.js +1 -1
  577. package/lib/esm/shared/http/hermeticBoot.js +1 -1
  578. package/lib/esm/shared/http/index.js +1 -1
  579. package/lib/esm/shared/runtime.js +1 -1
  580. package/lib/esm/user-requests/index.js +1 -1
  581. package/lib/esm/utils.js +1 -1
  582. package/lib/types/index.d.cts +2 -2
  583. package/lib/types/index.d.mts +2 -2
  584. package/lib/types/secrets/core/SecretTypes.d.cts +13 -1
  585. package/lib/types/secrets/core/SecretTypes.d.mts +13 -1
  586. package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.cts +34 -0
  587. package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.mts +34 -0
  588. package/lib/types/secrets/kubernetes/KubernetesSecretService.d.cts +45 -0
  589. package/lib/types/secrets/kubernetes/KubernetesSecretService.d.mts +45 -0
  590. package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.cts +49 -0
  591. package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.mts +49 -0
  592. package/lib/types/secrets/kubernetes/index.d.cts +9 -0
  593. package/lib/types/secrets/kubernetes/index.d.mts +9 -0
  594. package/lib/types/sftp/aws/index.d.cts +6 -0
  595. package/lib/types/sftp/aws/index.d.mts +6 -0
  596. package/lib/types/sftp/ssh2/index.d.cts +6 -0
  597. package/lib/types/sftp/ssh2/index.d.mts +6 -0
  598. package/package.json +180 -55
  599. package/dist/integrations.cjs.map +0 -1
  600. package/dist/integrations.js.map +0 -1
  601. package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs.map +0 -1
  602. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  603. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  604. package/lib/cjs/blob/core/BlobEnvironment.cjs.map +0 -1
  605. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  606. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  607. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  608. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  609. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  610. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  611. package/lib/cjs/blob/core/index.cjs.map +0 -1
  612. package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs.map +0 -1
  613. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  614. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  615. package/lib/cjs/blob/index.cjs.map +0 -1
  616. package/lib/cjs/blob/local/LocalBlobEnvironment.cjs.map +0 -1
  617. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  618. package/lib/cjs/blob/local/index.cjs.map +0 -1
  619. package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs.map +0 -1
  620. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  621. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  622. package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs.map +0 -1
  623. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  624. package/lib/cjs/blob/s3/R2BlobEnvironment.cjs.map +0 -1
  625. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  626. package/lib/cjs/blob/s3/S3BlobEnvironment.cjs.map +0 -1
  627. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  628. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +0 -1
  629. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  630. package/lib/cjs/calendar/CalendarService.cjs.map +0 -1
  631. package/lib/cjs/calendar/environment.cjs.map +0 -1
  632. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +0 -1
  633. package/lib/cjs/calendar/google-calendar/index.cjs.map +0 -1
  634. package/lib/cjs/calendar/index.cjs.map +0 -1
  635. package/lib/cjs/calendar/types.cjs.map +0 -1
  636. package/lib/cjs/calendar/validators/cron.cjs.map +0 -1
  637. package/lib/cjs/calendar/writers/CalendarFsWriter.cjs.map +0 -1
  638. package/lib/cjs/calendar/writers/CalenderDownloader.cjs.map +0 -1
  639. package/lib/cjs/calendar/writers/ICalendarWriter.cjs.map +0 -1
  640. package/lib/cjs/comms/discord/DiscordService.cjs.map +0 -1
  641. package/lib/cjs/comms/discord/index.cjs.map +0 -1
  642. package/lib/cjs/comms/email/EmailService.cjs.map +0 -1
  643. package/lib/cjs/comms/email/index.cjs.map +0 -1
  644. package/lib/cjs/comms/email/mime.cjs.map +0 -1
  645. package/lib/cjs/comms/email/smtp.cjs.map +0 -1
  646. package/lib/cjs/comms/environment.cjs.map +0 -1
  647. package/lib/cjs/comms/gmail/GmailService.cjs.map +0 -1
  648. package/lib/cjs/comms/gmail/index.cjs.map +0 -1
  649. package/lib/cjs/comms/index.cjs.map +0 -1
  650. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +0 -1
  651. package/lib/cjs/comms/outlook/index.cjs.map +0 -1
  652. package/lib/cjs/comms/slack/SlackService.cjs.map +0 -1
  653. package/lib/cjs/comms/slack/index.cjs.map +0 -1
  654. package/lib/cjs/comms/teams/TeamsService.cjs.map +0 -1
  655. package/lib/cjs/comms/teams/index.cjs.map +0 -1
  656. package/lib/cjs/comms/telegram/TelegramService.cjs.map +0 -1
  657. package/lib/cjs/comms/telegram/index.cjs.map +0 -1
  658. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +0 -1
  659. package/lib/cjs/comms/whatsapp/index.cjs.map +0 -1
  660. package/lib/cjs/devops/environment.cjs.map +0 -1
  661. package/lib/cjs/devops/github/GithubService.cjs.map +0 -1
  662. package/lib/cjs/devops/github/index.cjs.map +0 -1
  663. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +0 -1
  664. package/lib/cjs/devops/gitlab/index.cjs.map +0 -1
  665. package/lib/cjs/devops/index.cjs.map +0 -1
  666. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  667. package/lib/cjs/docker/index.cjs.map +0 -1
  668. package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs.map +0 -1
  669. package/lib/cjs/feature-flags/constants.cjs.map +0 -1
  670. package/lib/cjs/feature-flags/decorators.cjs.map +0 -1
  671. package/lib/cjs/feature-flags/environment.cjs.map +0 -1
  672. package/lib/cjs/feature-flags/index.cjs.map +0 -1
  673. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +0 -1
  674. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +0 -1
  675. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +0 -1
  676. package/lib/cjs/feature-flags/readers/index.cjs.map +0 -1
  677. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +0 -1
  678. package/lib/cjs/feature-flags/types.cjs.map +0 -1
  679. package/lib/cjs/feature-flags/utils.cjs.map +0 -1
  680. package/lib/cjs/index.cjs.map +0 -1
  681. package/lib/cjs/io/airtable/AirtableService.cjs.map +0 -1
  682. package/lib/cjs/io/airtable/index.cjs.map +0 -1
  683. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +0 -1
  684. package/lib/cjs/io/confluence/index.cjs.map +0 -1
  685. package/lib/cjs/io/environment.cjs.map +0 -1
  686. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +0 -1
  687. package/lib/cjs/io/google-docs/index.cjs.map +0 -1
  688. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +0 -1
  689. package/lib/cjs/io/google-sheets/index.cjs.map +0 -1
  690. package/lib/cjs/io/graphql/GraphqlService.cjs.map +0 -1
  691. package/lib/cjs/io/graphql/index.cjs.map +0 -1
  692. package/lib/cjs/io/index.cjs.map +0 -1
  693. package/lib/cjs/io/jira/JiraService.cjs.map +0 -1
  694. package/lib/cjs/io/jira/index.cjs.map +0 -1
  695. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +0 -1
  696. package/lib/cjs/io/microsoft-excel/index.cjs.map +0 -1
  697. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +0 -1
  698. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +0 -1
  699. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +0 -1
  700. package/lib/cjs/io/spreadsheet/index.cjs.map +0 -1
  701. package/lib/cjs/keycloak/broker.cjs.map +0 -1
  702. package/lib/cjs/keycloak/index.cjs.map +0 -1
  703. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  704. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  705. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  706. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  707. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  708. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  709. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  710. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  711. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  712. package/lib/cjs/keycloak/types.cjs.map +0 -1
  713. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +0 -1
  714. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +0 -1
  715. package/lib/cjs/kibana/builders/index.cjs.map +0 -1
  716. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  717. package/lib/cjs/kibana/index.cjs.map +0 -1
  718. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  719. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  720. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  721. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  722. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  723. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  724. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  725. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  726. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  727. package/lib/cjs/kibana/types.cjs.map +0 -1
  728. package/lib/cjs/loader/ObjectLoader.cjs.map +0 -1
  729. package/lib/cjs/loader/assets.cjs.map +0 -1
  730. package/lib/cjs/loader/config.cjs.map +0 -1
  731. package/lib/cjs/loader/families.cjs.map +0 -1
  732. package/lib/cjs/loader/index.cjs.map +0 -1
  733. package/lib/cjs/loader/nest.cjs.map +0 -1
  734. package/lib/cjs/loader/types.cjs.map +0 -1
  735. package/lib/cjs/namespaces/index.cjs.map +0 -1
  736. package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
  737. package/lib/cjs/namespaces/models/credential.model.cjs.map +0 -1
  738. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
  739. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
  740. package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
  741. package/lib/cjs/namespaces/models/index.cjs.map +0 -1
  742. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
  743. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
  744. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
  745. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
  746. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
  747. package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
  748. package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
  749. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
  750. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
  751. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
  752. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
  753. package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
  754. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
  755. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
  756. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
  757. package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
  758. package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
  759. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
  760. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
  761. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
  762. package/lib/cjs/namespaces/rls/index.cjs.map +0 -1
  763. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +0 -1
  764. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +0 -1
  765. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +0 -1
  766. package/lib/cjs/namespaces/rls/rls.template.cjs.map +0 -1
  767. package/lib/cjs/namespaces/rls/rls.types.cjs.map +0 -1
  768. package/lib/cjs/namespaces/rls/session-binding.cjs.map +0 -1
  769. package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
  770. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
  771. package/lib/cjs/namespaces/services/credential.service.cjs.map +0 -1
  772. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
  773. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
  774. package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
  775. package/lib/cjs/namespaces/services/index.cjs.map +0 -1
  776. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
  777. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
  778. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
  779. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
  780. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
  781. package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
  782. package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
  783. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
  784. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
  785. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
  786. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
  787. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
  788. package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
  789. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
  790. package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
  791. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
  792. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
  793. package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
  794. package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
  795. package/lib/cjs/namespaces/types.cjs.map +0 -1
  796. package/lib/cjs/namespaces/utils.cjs.map +0 -1
  797. package/lib/cjs/nest/decorators.cjs.map +0 -1
  798. package/lib/cjs/nest/index.cjs.map +0 -1
  799. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  800. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  801. package/lib/cjs/nest/logging.cjs.map +0 -1
  802. package/lib/cjs/nest/types.cjs.map +0 -1
  803. package/lib/cjs/nest/utils.cjs.map +0 -1
  804. package/lib/cjs/plugins/contract.cjs.map +0 -1
  805. package/lib/cjs/plugins/index.cjs.map +0 -1
  806. package/lib/cjs/plugins/kibana/host.cjs.map +0 -1
  807. package/lib/cjs/plugins/kibana/index.cjs.map +0 -1
  808. package/lib/cjs/plugins/kibana/installer.cjs.map +0 -1
  809. package/lib/cjs/plugins/kibana/manifest.cjs.map +0 -1
  810. package/lib/cjs/plugins/kibana/templates.cjs.map +0 -1
  811. package/lib/cjs/plugins/kibana/types.cjs.map +0 -1
  812. package/lib/cjs/plugins/superset/host.cjs.map +0 -1
  813. package/lib/cjs/plugins/superset/index.cjs.map +0 -1
  814. package/lib/cjs/plugins/superset/installer.cjs.map +0 -1
  815. package/lib/cjs/plugins/superset/manifest.cjs.map +0 -1
  816. package/lib/cjs/plugins/superset/templates.cjs.map +0 -1
  817. package/lib/cjs/plugins/superset/types.cjs.map +0 -1
  818. package/lib/cjs/redis/RedisContextLock.cjs.map +0 -1
  819. package/lib/cjs/redis/RedisDispatch.cjs.map +0 -1
  820. package/lib/cjs/redis/RedisPaginator.cjs.map +0 -1
  821. package/lib/cjs/redis/RedisStatement.cjs.map +0 -1
  822. package/lib/cjs/redis/adapter.cjs.map +0 -1
  823. package/lib/cjs/redis/constants.cjs.map +0 -1
  824. package/lib/cjs/redis/handlers.cjs.map +0 -1
  825. package/lib/cjs/redis/index.cjs.map +0 -1
  826. package/lib/cjs/redis/serialization.cjs.map +0 -1
  827. package/lib/cjs/redis/types.cjs.map +0 -1
  828. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +0 -1
  829. package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs.map +0 -1
  830. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  831. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  832. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  833. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  834. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  835. package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs.map +0 -1
  836. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  837. package/lib/cjs/secrets/core/ClientBasedSecretService.cjs.map +0 -1
  838. package/lib/cjs/secrets/core/SecretEnvironment.cjs.map +0 -1
  839. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  840. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  841. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  842. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  843. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  844. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  845. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  846. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +0 -1
  847. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +0 -1
  848. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +0 -1
  849. package/lib/cjs/secrets/fs/index.cjs.map +0 -1
  850. package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs.map +0 -1
  851. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  852. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  853. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  854. package/lib/cjs/secrets/index.cjs.map +0 -1
  855. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  856. package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs.map +0 -1
  857. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  858. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  859. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  860. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  861. package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs.map +0 -1
  862. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  863. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  864. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  865. package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs.map +0 -1
  866. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  867. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  868. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  869. package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs.map +0 -1
  870. package/lib/cjs/sftp/aws/AwsSftpService.cjs.map +0 -1
  871. package/lib/cjs/sftp/core/SftpEnvironment.cjs.map +0 -1
  872. package/lib/cjs/sftp/core/SftpSource.cjs.map +0 -1
  873. package/lib/cjs/sftp/core/index.cjs.map +0 -1
  874. package/lib/cjs/sftp/index.cjs.map +0 -1
  875. package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs.map +0 -1
  876. package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs.map +0 -1
  877. package/lib/cjs/shared/environmentValue.cjs.map +0 -1
  878. package/lib/cjs/shared/http/HttpApiService.cjs.map +0 -1
  879. package/lib/cjs/shared/http/hermeticBoot.cjs.map +0 -1
  880. package/lib/cjs/shared/http/index.cjs.map +0 -1
  881. package/lib/cjs/shared/runtime.cjs.map +0 -1
  882. package/lib/cjs/user-requests/index.cjs.map +0 -1
  883. package/lib/cjs/utils.cjs.map +0 -1
  884. package/lib/esm/blob/azure/AzureBlobEnvironment.js.map +0 -1
  885. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  886. package/lib/esm/blob/azure/index.js.map +0 -1
  887. package/lib/esm/blob/core/BlobEnvironment.js.map +0 -1
  888. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  889. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  890. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  891. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  892. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  893. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  894. package/lib/esm/blob/core/index.js.map +0 -1
  895. package/lib/esm/blob/gcp/GcsBlobEnvironment.js.map +0 -1
  896. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  897. package/lib/esm/blob/gcp/index.js.map +0 -1
  898. package/lib/esm/blob/index.js.map +0 -1
  899. package/lib/esm/blob/local/LocalBlobEnvironment.js.map +0 -1
  900. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  901. package/lib/esm/blob/local/index.js.map +0 -1
  902. package/lib/esm/blob/memory/MemoryBlobEnvironment.js.map +0 -1
  903. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  904. package/lib/esm/blob/memory/index.js.map +0 -1
  905. package/lib/esm/blob/s3/MinioBlobEnvironment.js.map +0 -1
  906. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  907. package/lib/esm/blob/s3/R2BlobEnvironment.js.map +0 -1
  908. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  909. package/lib/esm/blob/s3/S3BlobEnvironment.js.map +0 -1
  910. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  911. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +0 -1
  912. package/lib/esm/blob/s3/index.js.map +0 -1
  913. package/lib/esm/calendar/CalendarService.js.map +0 -1
  914. package/lib/esm/calendar/environment.js.map +0 -1
  915. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +0 -1
  916. package/lib/esm/calendar/google-calendar/index.js.map +0 -1
  917. package/lib/esm/calendar/index.js.map +0 -1
  918. package/lib/esm/calendar/types.js.map +0 -1
  919. package/lib/esm/calendar/validators/cron.js.map +0 -1
  920. package/lib/esm/calendar/writers/CalendarFsWriter.js.map +0 -1
  921. package/lib/esm/calendar/writers/CalenderDownloader.js.map +0 -1
  922. package/lib/esm/calendar/writers/ICalendarWriter.js.map +0 -1
  923. package/lib/esm/comms/discord/DiscordService.js.map +0 -1
  924. package/lib/esm/comms/discord/index.js.map +0 -1
  925. package/lib/esm/comms/email/EmailService.js.map +0 -1
  926. package/lib/esm/comms/email/index.js.map +0 -1
  927. package/lib/esm/comms/email/mime.js.map +0 -1
  928. package/lib/esm/comms/email/smtp.js.map +0 -1
  929. package/lib/esm/comms/environment.js.map +0 -1
  930. package/lib/esm/comms/gmail/GmailService.js.map +0 -1
  931. package/lib/esm/comms/gmail/index.js.map +0 -1
  932. package/lib/esm/comms/index.js.map +0 -1
  933. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +0 -1
  934. package/lib/esm/comms/outlook/index.js.map +0 -1
  935. package/lib/esm/comms/slack/SlackService.js.map +0 -1
  936. package/lib/esm/comms/slack/index.js.map +0 -1
  937. package/lib/esm/comms/teams/TeamsService.js.map +0 -1
  938. package/lib/esm/comms/teams/index.js.map +0 -1
  939. package/lib/esm/comms/telegram/TelegramService.js.map +0 -1
  940. package/lib/esm/comms/telegram/index.js.map +0 -1
  941. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +0 -1
  942. package/lib/esm/comms/whatsapp/index.js.map +0 -1
  943. package/lib/esm/devops/environment.js.map +0 -1
  944. package/lib/esm/devops/github/GithubService.js.map +0 -1
  945. package/lib/esm/devops/github/index.js.map +0 -1
  946. package/lib/esm/devops/gitlab/GitlabService.js.map +0 -1
  947. package/lib/esm/devops/gitlab/index.js.map +0 -1
  948. package/lib/esm/devops/index.js.map +0 -1
  949. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  950. package/lib/esm/docker/index.js.map +0 -1
  951. package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js.map +0 -1
  952. package/lib/esm/feature-flags/constants.js.map +0 -1
  953. package/lib/esm/feature-flags/decorators.js.map +0 -1
  954. package/lib/esm/feature-flags/environment.js.map +0 -1
  955. package/lib/esm/feature-flags/index.js.map +0 -1
  956. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +0 -1
  957. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +0 -1
  958. package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +0 -1
  959. package/lib/esm/feature-flags/readers/index.js.map +0 -1
  960. package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +0 -1
  961. package/lib/esm/feature-flags/types.js.map +0 -1
  962. package/lib/esm/feature-flags/utils.js.map +0 -1
  963. package/lib/esm/index.js.map +0 -1
  964. package/lib/esm/io/airtable/AirtableService.js.map +0 -1
  965. package/lib/esm/io/airtable/index.js.map +0 -1
  966. package/lib/esm/io/confluence/ConfluenceService.js.map +0 -1
  967. package/lib/esm/io/confluence/index.js.map +0 -1
  968. package/lib/esm/io/environment.js.map +0 -1
  969. package/lib/esm/io/google-docs/GoogleDocsService.js.map +0 -1
  970. package/lib/esm/io/google-docs/index.js.map +0 -1
  971. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +0 -1
  972. package/lib/esm/io/google-sheets/index.js.map +0 -1
  973. package/lib/esm/io/graphql/GraphqlService.js.map +0 -1
  974. package/lib/esm/io/graphql/index.js.map +0 -1
  975. package/lib/esm/io/index.js.map +0 -1
  976. package/lib/esm/io/jira/JiraService.js.map +0 -1
  977. package/lib/esm/io/jira/index.js.map +0 -1
  978. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +0 -1
  979. package/lib/esm/io/microsoft-excel/index.js.map +0 -1
  980. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +0 -1
  981. package/lib/esm/io/microsoft-sharepoint/index.js.map +0 -1
  982. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +0 -1
  983. package/lib/esm/io/spreadsheet/index.js.map +0 -1
  984. package/lib/esm/keycloak/broker.js.map +0 -1
  985. package/lib/esm/keycloak/index.js.map +0 -1
  986. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  987. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  988. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  989. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  990. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  991. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  992. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  993. package/lib/esm/keycloak/services/index.js.map +0 -1
  994. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  995. package/lib/esm/keycloak/types.js.map +0 -1
  996. package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +0 -1
  997. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +0 -1
  998. package/lib/esm/kibana/builders/index.js.map +0 -1
  999. package/lib/esm/kibana/helpers.js.map +0 -1
  1000. package/lib/esm/kibana/index.js.map +0 -1
  1001. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  1002. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  1003. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  1004. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  1005. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  1006. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  1007. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  1008. package/lib/esm/kibana/services/index.js.map +0 -1
  1009. package/lib/esm/kibana/services/runtime.js.map +0 -1
  1010. package/lib/esm/kibana/types.js.map +0 -1
  1011. package/lib/esm/loader/ObjectLoader.js.map +0 -1
  1012. package/lib/esm/loader/assets.js.map +0 -1
  1013. package/lib/esm/loader/config.js.map +0 -1
  1014. package/lib/esm/loader/families.js.map +0 -1
  1015. package/lib/esm/loader/index.js.map +0 -1
  1016. package/lib/esm/loader/nest.js.map +0 -1
  1017. package/lib/esm/loader/types.js.map +0 -1
  1018. package/lib/esm/namespaces/index.js.map +0 -1
  1019. package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
  1020. package/lib/esm/namespaces/models/credential.model.js.map +0 -1
  1021. package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
  1022. package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
  1023. package/lib/esm/namespaces/models/group.model.js.map +0 -1
  1024. package/lib/esm/namespaces/models/index.js.map +0 -1
  1025. package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
  1026. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
  1027. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
  1028. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
  1029. package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
  1030. package/lib/esm/namespaces/models/permission.model.js.map +0 -1
  1031. package/lib/esm/namespaces/models/principal.model.js.map +0 -1
  1032. package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
  1033. package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
  1034. package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
  1035. package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
  1036. package/lib/esm/namespaces/models/role.model.js.map +0 -1
  1037. package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
  1038. package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
  1039. package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
  1040. package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
  1041. package/lib/esm/namespaces/models/user.model.js.map +0 -1
  1042. package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
  1043. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
  1044. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
  1045. package/lib/esm/namespaces/rls/index.js.map +0 -1
  1046. package/lib/esm/namespaces/rls/principal-resolver.js.map +0 -1
  1047. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +0 -1
  1048. package/lib/esm/namespaces/rls/rls.constants.js.map +0 -1
  1049. package/lib/esm/namespaces/rls/rls.template.js.map +0 -1
  1050. package/lib/esm/namespaces/rls/rls.types.js.map +0 -1
  1051. package/lib/esm/namespaces/rls/session-binding.js.map +0 -1
  1052. package/lib/esm/namespaces/services/authz.service.js.map +0 -1
  1053. package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
  1054. package/lib/esm/namespaces/services/credential.service.js.map +0 -1
  1055. package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
  1056. package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
  1057. package/lib/esm/namespaces/services/group.service.js.map +0 -1
  1058. package/lib/esm/namespaces/services/index.js.map +0 -1
  1059. package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
  1060. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
  1061. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
  1062. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
  1063. package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
  1064. package/lib/esm/namespaces/services/permission.service.js.map +0 -1
  1065. package/lib/esm/namespaces/services/principal.service.js.map +0 -1
  1066. package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
  1067. package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
  1068. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
  1069. package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
  1070. package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
  1071. package/lib/esm/namespaces/services/role.service.js.map +0 -1
  1072. package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
  1073. package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
  1074. package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
  1075. package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
  1076. package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
  1077. package/lib/esm/namespaces/services/user.service.js.map +0 -1
  1078. package/lib/esm/namespaces/types.js.map +0 -1
  1079. package/lib/esm/namespaces/utils.js.map +0 -1
  1080. package/lib/esm/nest/decorators.js.map +0 -1
  1081. package/lib/esm/nest/index.js.map +0 -1
  1082. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  1083. package/lib/esm/nest/keycloakModule.js.map +0 -1
  1084. package/lib/esm/nest/logging.js.map +0 -1
  1085. package/lib/esm/nest/types.js.map +0 -1
  1086. package/lib/esm/nest/utils.js.map +0 -1
  1087. package/lib/esm/plugins/contract.js.map +0 -1
  1088. package/lib/esm/plugins/index.js.map +0 -1
  1089. package/lib/esm/plugins/kibana/host.js.map +0 -1
  1090. package/lib/esm/plugins/kibana/index.js.map +0 -1
  1091. package/lib/esm/plugins/kibana/installer.js.map +0 -1
  1092. package/lib/esm/plugins/kibana/manifest.js.map +0 -1
  1093. package/lib/esm/plugins/kibana/templates.js.map +0 -1
  1094. package/lib/esm/plugins/kibana/types.js.map +0 -1
  1095. package/lib/esm/plugins/superset/host.js.map +0 -1
  1096. package/lib/esm/plugins/superset/index.js.map +0 -1
  1097. package/lib/esm/plugins/superset/installer.js.map +0 -1
  1098. package/lib/esm/plugins/superset/manifest.js.map +0 -1
  1099. package/lib/esm/plugins/superset/templates.js.map +0 -1
  1100. package/lib/esm/plugins/superset/types.js.map +0 -1
  1101. package/lib/esm/redis/RedisContextLock.js.map +0 -1
  1102. package/lib/esm/redis/RedisDispatch.js.map +0 -1
  1103. package/lib/esm/redis/RedisPaginator.js.map +0 -1
  1104. package/lib/esm/redis/RedisStatement.js.map +0 -1
  1105. package/lib/esm/redis/adapter.js.map +0 -1
  1106. package/lib/esm/redis/constants.js.map +0 -1
  1107. package/lib/esm/redis/handlers.js.map +0 -1
  1108. package/lib/esm/redis/index.js.map +0 -1
  1109. package/lib/esm/redis/serialization.js.map +0 -1
  1110. package/lib/esm/redis/types.js.map +0 -1
  1111. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +0 -1
  1112. package/lib/esm/secrets/aws/AwsSecretEnvironment.js.map +0 -1
  1113. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  1114. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  1115. package/lib/esm/secrets/aws/index.js.map +0 -1
  1116. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  1117. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  1118. package/lib/esm/secrets/azure/AzureSecretEnvironment.js.map +0 -1
  1119. package/lib/esm/secrets/azure/index.js.map +0 -1
  1120. package/lib/esm/secrets/core/ClientBasedSecretService.js.map +0 -1
  1121. package/lib/esm/secrets/core/SecretEnvironment.js.map +0 -1
  1122. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  1123. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  1124. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  1125. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  1126. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  1127. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  1128. package/lib/esm/secrets/core/index.js.map +0 -1
  1129. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +0 -1
  1130. package/lib/esm/secrets/fs/FsSecretService.js.map +0 -1
  1131. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +0 -1
  1132. package/lib/esm/secrets/fs/index.js.map +0 -1
  1133. package/lib/esm/secrets/gcp/GcpSecretEnvironment.js.map +0 -1
  1134. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  1135. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  1136. package/lib/esm/secrets/gcp/index.js.map +0 -1
  1137. package/lib/esm/secrets/index.js.map +0 -1
  1138. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  1139. package/lib/esm/secrets/model/ModelSecretEnvironment.js.map +0 -1
  1140. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  1141. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  1142. package/lib/esm/secrets/model/Secret.js.map +0 -1
  1143. package/lib/esm/secrets/model/index.js.map +0 -1
  1144. package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js.map +0 -1
  1145. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  1146. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  1147. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  1148. package/lib/esm/secrets/vault/VaultSecretEnvironment.js.map +0 -1
  1149. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  1150. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  1151. package/lib/esm/secrets/vault/index.js.map +0 -1
  1152. package/lib/esm/sftp/aws/AwsSftpEnvironment.js.map +0 -1
  1153. package/lib/esm/sftp/aws/AwsSftpService.js.map +0 -1
  1154. package/lib/esm/sftp/core/SftpEnvironment.js.map +0 -1
  1155. package/lib/esm/sftp/core/SftpSource.js.map +0 -1
  1156. package/lib/esm/sftp/core/index.js.map +0 -1
  1157. package/lib/esm/sftp/index.js.map +0 -1
  1158. package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js.map +0 -1
  1159. package/lib/esm/sftp/ssh2/Ssh2SftpService.js.map +0 -1
  1160. package/lib/esm/shared/environmentValue.js.map +0 -1
  1161. package/lib/esm/shared/http/HttpApiService.js.map +0 -1
  1162. package/lib/esm/shared/http/hermeticBoot.js.map +0 -1
  1163. package/lib/esm/shared/http/index.js.map +0 -1
  1164. package/lib/esm/shared/runtime.js.map +0 -1
  1165. package/lib/esm/user-requests/index.js.map +0 -1
  1166. package/lib/esm/utils.js.map +0 -1
@@ -429,5 +429,5 @@ class RedisStatement extends core_1.Statement {
429
429
  }
430
430
  }
431
431
  exports.RedisStatement = RedisStatement;
432
- //# sourceMappingURL=RedisStatement.js.map
433
- //# sourceMappingURL=RedisStatement.cjs.map
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVkaXMvUmVkaXNTdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxhQUFhLEVBQ2IsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLEVBRVYsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxjQUlYLFNBQVEsU0FBc0M7SUFDOUM7Ozs7T0FJRztJQUNILFlBQVksT0FBVSxFQUFFLFNBQWlDO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssT0FBTztRQUNiLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBVSxFQUFFLEdBQVUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDakMsTUFBTSxJQUFJLGFBQWEsQ0FDckIsZ0RBQWdELENBQ2pELENBQUM7WUFDSixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLGVBQWUsR0FDbkIsbUJBQW1CLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsTUFB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QyxDQUFDO2dCQUNwRCxNQUFNLElBQUksVUFBVSxDQUNsQixHQUFHLE9BQU8seUJBQXlCLFFBQVEsMkJBQTJCLENBQ3ZFLENBQUM7WUFDSjtnQkFDRSxNQUFNLElBQUksVUFBVSxDQUNsQixHQUFHLE9BQU8sc0JBQXNCLFFBQVEsb0JBQW9CLFFBQVEsR0FBRyxDQUN4RSxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIEFkYXB0ZXJGbGFncyxcbiAgQ29uZGl0aW9uLFxuICBHcm91cE9wZXJhdG9yLFxuICBPcGVyYXRvcixcbiAgT3JkZXJEaXJlY3Rpb24sXG4gIFF1ZXJ5RXJyb3IsXG4gIFNlbGVjdFNlbGVjdG9yLFxuICBTdGF0ZW1lbnQsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgUmVkaXNDb250ZXh0LCBSYXdSZWRpc1F1ZXJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlZGlzLXNwZWNpZmljIHF1ZXJ5IHN0YXRlbWVudCBidWlsZGVyXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNlIFN0YXRlbWVudCBjbGFzcyB0byBwcm92aWRlIHF1ZXJ5IGJ1aWxkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBSZWRpcyBhZGFwdGVyLlxuICogVGhpcyBjbGFzcyB0cmFuc2xhdGVzIGhpZ2gtbGV2ZWwgcXVlcnkgb3BlcmF0aW9ucyBpbnRvIHByZWRpY2F0ZXMgdGhhdCBjYW4gZmlsdGVyIGFuZCBzb3J0XG4gKiBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzIChyZWNvcmRzIHJldmVydGVkIGZyb20gdGhlIHRhYmxlIGhhc2gpLlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBiZWluZyBxdWVyaWVkXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXN1bHQgdHlwZSByZXR1cm5lZCBieSB0aGUgcXVlcnlcbiAqIEBjbGFzcyBSZWRpc1N0YXRlbWVudFxuICogQGNhdGVnb3J5IFJlZGlzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgc3RhdGVtZW50IGZvciBxdWVyeWluZyBVc2VyIG1vZGVsc1xuICogY29uc3Qgc3RhdGVtZW50ID0gcmVkaXNBZGFwdGVyLlN0YXRlbWVudDxVc2VyPigpO1xuICpcbiAqIC8vIEJ1aWxkIGEgcXVlcnkgdG8gZmluZCBhY3RpdmUgdXNlcnMgd2l0aCBhZ2UgPiAxOFxuICogY29uc3QgcmVzdWx0cyA9IGF3YWl0IHN0YXRlbWVudFxuICogICAuZnJvbShVc2VyKVxuICogICAud2hlcmUoQ29uZGl0aW9uLmFuZChcbiAqICAgICBDb25kaXRpb24uZXEoJ2FjdGl2ZScsIHRydWUpLFxuICogICAgIENvbmRpdGlvbi5ndCgnYWdlJywgMTgpXG4gKiAgICkpXG4gKiAgIC5vcmRlckJ5KCdsYXN0TmFtZScsICdhc2MnKVxuICogICAubGltaXQoMTApXG4gKiAgIC5leGVjdXRlKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZGlzU3RhdGVtZW50PFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIsXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPE0sIGFueSwgUmF3UmVkaXNRdWVyeTxhbnk+LCBSZWRpc0NvbnRleHQ+LFxuPiBleHRlbmRzIFN0YXRlbWVudDxNLCBBLCBSLCBSYXdSZWRpc1F1ZXJ5PGFueT4+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgc3RhdGVtZW50IGJvdW5kIHRvIHRoZSBSZWRpcyBhZGFwdGVyXG4gICAqIEBwYXJhbSB7QX0gYWRhcHRlciAtIFRoZSBSZWRpcyBhZGFwdGVyIGluc3RhbmNlIHRvIHVzZSBmb3IgZXhlY3V0aW5nIHF1ZXJpZXNcbiAgICogQHBhcmFtIHtQYXJ0aWFsPEFkYXB0ZXJGbGFncz59IFtvdmVycmlkZXNdIC0gT3B0aW9uYWwgYWRhcHRlciBmbGFnIG92ZXJyaWRlc1xuICAgKi9cbiAgY29uc3RydWN0b3IoYWRhcHRlcjogQSwgb3ZlcnJpZGVzPzogUGFydGlhbDxBZGFwdGVyRmxhZ3M+KSB7XG4gICAgc3VwZXIoYWRhcHRlciwgb3ZlcnJpZGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNvcnQgY29tcGFyYXRvciBmdW5jdGlvblxuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNvbXBhcmVzIHR3byBtb2RlbCBpbnN0YW5jZXMgYmFzZWQgb24gdGhlIG9yZGVyQnkgY3JpdGVyaWEuXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZGlmZmVyZW50IGRhdGEgdHlwZXMgKHN0cmluZywgbnVtYmVyLCBkYXRlKSBhbmQgc29ydCBkaXJlY3Rpb25zIChhc2MsIGRlc2MpLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbihNb2RlbCwgTW9kZWwpOiBudW1iZXJ9IEEgY29tcGFyYXRvciBmdW5jdGlvbiBmb3Igc29ydGluZyBtb2RlbCBpbnN0YW5jZXNcbiAgICovXG4gIHByaXZhdGUgZ2V0U29ydCgpIHtcbiAgICBjb25zdCBzZWxlY3RvcnMgPSB0aGlzLm9yZGVyQnlTZWxlY3RvcnM7XG4gICAgcmV0dXJuIChlbDE6IE1vZGVsLCBlbDI6IE1vZGVsKSA9PiB7XG4gICAgICBpZiAoIXNlbGVjdG9ycyB8fCAhc2VsZWN0b3JzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgXCJvcmRlckJ5U2VsZWN0b3JzIG5vdCBzZXQuIFNob3VsZCBiZSBpbXBvc3NpYmxlXCJcbiAgICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGlyZWN0aW9uXSBvZiBzZWxlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERpcmVjdGlvbiA9IFN0cmluZyhkaXJlY3Rpb24pLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9XG4gICAgICAgICAgbm9ybWFsaXplZERpcmVjdGlvbiA9PT0gT3JkZXJEaXJlY3Rpb24uQVNDID8gMSA6IC0xO1xuICAgICAgICBjb25zdCBjb21wYXJpc29uID0gdGhpcy5jb21wYXJlQnlLZXkoZWwxLCBlbDIsIGtleSBhcyBrZXlvZiBNb2RlbCk7XG4gICAgICAgIGlmIChjb21wYXJpc29uICE9PSAwKSByZXR1cm4gZGlyZWN0aW9uRmFjdG9yICogY29tcGFyaXNvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBtb2RlbHMgYnkgYSBzaW5nbGUgYXR0cmlidXRlXG4gICAqIEBzdW1tYXJ5IFJlc29sdmVzIHRoZSBhdHRyaWJ1dGUncyBkZXNpZ24gdHlwZSBhbmQgZGVsZWdhdGVzIHRvIHRoZSBtYXRjaGluZ1xuICAgKiB0eXBlLXNwZWNpZmljIGNvbXBhcmF0b3IuXG4gICAqIEBwYXJhbSB7TW9kZWx9IGVsMSAtIFRoZSBmaXJzdCBtb2RlbCBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge01vZGVsfSBlbDIgLSBUaGUgc2Vjb25kIG1vZGVsIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7a2V5b2YgTW9kZWx9IGtleSAtIFRoZSBhdHRyaWJ1dGUgdG8gY29tcGFyZVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IEEgbmVnYXRpdmUgbnVtYmVyLCB6ZXJvIG9yIGEgcG9zaXRpdmUgbnVtYmVyIGFzIHBlciB0aGUgY29tcGFyaXNvblxuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlQnlLZXkoZWwxOiBNb2RlbCwgZWwyOiBNb2RlbCwga2V5OiBrZXlvZiBNb2RlbCk6IG51bWJlciB7XG4gICAgY29uc3QgdmFsdWUxID0gZWwxW2tleV07XG4gICAgY29uc3QgdmFsdWUyID0gZWwyW2tleV07XG5cbiAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpIHJldHVybiAwO1xuXG4gICAgaWYgKHZhbHVlMSA9PSBudWxsIHx8IHZhbHVlMiA9PSBudWxsKSByZXR1cm4gdmFsdWUxID09IG51bGwgPyAxIDogLTE7XG5cbiAgICBjb25zdCB7IGRlc2lnblR5cGU6IHR5cGUgfSA9IE1ldGFkYXRhLmdldFByb3BEZXNpZ25UeXBlcyhcbiAgICAgIGVsMS5jb25zdHJ1Y3RvciBhcyBhbnksXG4gICAgICBrZXkgYXMgc3RyaW5nXG4gICAgKTtcbiAgICBjb25zdCByZXNvbHZlZFR5cGUgPVxuICAgICAgKHR5cGUgJiYgdHlwZS5uYW1lICYmIHR5cGUubmFtZS50b0xvd2VyQ2FzZSgpKSB8fCB0eXBlb2YgdmFsdWUxO1xuXG4gICAgc3dpdGNoIChyZXNvbHZlZFR5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZVN0cmluZ3MoXG4gICAgICAgICAgdmFsdWUxIGFzIHVua25vd24gYXMgc3RyaW5nLFxuICAgICAgICAgIHZhbHVlMiBhcyB1bmtub3duIGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlTnVtYmVycyhcbiAgICAgICAgICB2YWx1ZTEgYXMgdW5rbm93biBhcyBudW1iZXIsXG4gICAgICAgICAgdmFsdWUyIGFzIHVua25vd24gYXMgbnVtYmVyXG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVCaWdJbnRzKFxuICAgICAgICAgIHZhbHVlMSBhcyB1bmtub3duIGFzIGJpZ2ludCxcbiAgICAgICAgICB2YWx1ZTIgYXMgdW5rbm93biBhcyBiaWdpbnRcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVCb29sZWFucyhcbiAgICAgICAgICB2YWx1ZTEgYXMgdW5rbm93biBhcyBib29sZWFuLFxuICAgICAgICAgIHZhbHVlMiBhcyB1bmtub3duIGFzIGJvb2xlYW5cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIGlmICh2YWx1ZTEgaW5zdGFuY2VvZiBEYXRlICYmIHZhbHVlMiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlRGF0ZXModmFsdWUxIGFzIERhdGUsIHZhbHVlMiBhcyBEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBzb3J0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJHtyZXNvbHZlZFR5cGV9YCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBib29sZWFuIHZhbHVlc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IDAgd2hlbiBlcXVhbCwgMSB3aGVuIGBhYCBpcyB0cnVlLCAtMSBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgY29tcGFyZUJvb2xlYW5zKGE6IGJvb2xlYW4sIGI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPyAxIDogLTE7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBudW1lcmljIHZhbHVlc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1lcmljIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWVzXG4gICAqL1xuICBwcml2YXRlIGNvbXBhcmVOdW1iZXJzKGE6IG51bWJlciwgYjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYSAtIGI7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBiaWdpbnQgdmFsdWVzXG4gICAqIEByZXR1cm4ge251bWJlcn0gMCB3aGVuIGVxdWFsLCAxIHdoZW4gYGFgIGlzIGdyZWF0ZXIsIC0xIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlQmlnSW50cyhhOiBiaWdpbnQsIGI6IGJpZ2ludCk6IG51bWJlciB7XG4gICAgaWYgKGEgPT09IGIpIHJldHVybiAwO1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIHN0cmluZ3MgdXNpbmcgbG9jYWxlLWF3YXJlIG9yZGVyaW5nXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGxvY2FsZSBjb21wYXJlIHJlc3VsdCBiZXR3ZWVuIHRoZSB2YWx1ZXNcbiAgICovXG4gIHByaXZhdGUgY29tcGFyZVN0cmluZ3MoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBkYXRlcyBieSB0aGVpciBlcG9jaCB0aW1lc3RhbXBzXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGltZXN0YW1wc1xuICAgKi9cbiAgcHJpdmF0ZSBjb21wYXJlRGF0ZXMoYTogRGF0ZSwgYjogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGEudmFsdWVPZigpIC0gYi52YWx1ZU9mKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEJ1aWxkcyBhIFJlZGlzIHF1ZXJ5IGZyb20gdGhlIHN0YXRlbWVudFxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyB0aGUgc3RhdGVtZW50J3Mgc2VsZWN0b3JzIGFuZCBjb25kaXRpb25zIGludG8gYSBSYXdSZWRpc1F1ZXJ5IG9iamVjdFxuICAgKiB0aGF0IGNhbiBiZSBleGVjdXRlZCBieSB0aGUgUmVkaXMgYWRhcHRlci4gVGhpcyBtZXRob2QgYXNzZW1ibGVzIGFsbCBxdWVyeSBjb21wb25lbnRzXG4gICAqIChzZWxlY3QsIGZyb20sIHdoZXJlLCBsaW1pdCwgb2Zmc2V0LCBzb3J0KSBpbnRvIHRoZSBmaW5hbCBxdWVyeSBzdHJ1Y3R1cmUuXG4gICAqIEByZXR1cm4ge1Jhd1JlZGlzUXVlcnk8TT59IFRoZSBjb25zdHJ1Y3RlZCBSZWRpcyBxdWVyeSBvYmplY3RcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZCgpOiBSYXdSZWRpc1F1ZXJ5PGFueT4ge1xuICAgIGlmICh0aGlzLm1pblNlbGVjdG9yKVxuICAgICAgdGhpcy5lbnN1cmVOdW1iZXJPckRhdGVTZWxlY3Rvcih0aGlzLm1pblNlbGVjdG9yLCBcIk1JTiBvcGVyYXRpb25cIik7XG4gICAgaWYgKHRoaXMubWF4U2VsZWN0b3IpXG4gICAgICB0aGlzLmVuc3VyZU51bWJlck9yRGF0ZVNlbGVjdG9yKHRoaXMubWF4U2VsZWN0b3IsIFwiTUFYIG9wZXJhdGlvblwiKTtcbiAgICBpZiAodGhpcy5zdW1TZWxlY3RvcilcbiAgICAgIHRoaXMuZW5zdXJlTnVtZXJpY1NlbGVjdG9yKHRoaXMuc3VtU2VsZWN0b3IsIFwiU1VNIG9wZXJhdGlvblwiKTtcbiAgICBpZiAodGhpcy5hdmdTZWxlY3RvcilcbiAgICAgIHRoaXMuZW5zdXJlTnVtYmVyT3JEYXRlU2VsZWN0b3IodGhpcy5hdmdTZWxlY3RvciwgXCJBVkcgb3BlcmF0aW9uXCIpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBSYXdSZWRpc1F1ZXJ5PE0+ID0ge1xuICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdFNlbGVjdG9yLFxuICAgICAgZnJvbTogdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICB3aGVyZTogdGhpcy53aGVyZUNvbmRpdGlvblxuICAgICAgICA/IHRoaXMucGFyc2VDb25kaXRpb24odGhpcy53aGVyZUNvbmRpdGlvbikud2hlcmVcbiAgICAgICAgOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgKGVsOiBNKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9LFxuICAgICAgbGltaXQ6IHRoaXMubGltaXRTZWxlY3RvcixcbiAgICAgIHNraXA6IHRoaXMub2Zmc2V0U2VsZWN0b3IsXG4gICAgICBncm91cEJ5OiB0aGlzLmdyb3VwQnlTZWxlY3RvcnMsXG4gICAgfTtcblxuICAgIGlmICh0eXBlb2YgdGhpcy5jb3VudFNlbGVjdG9yICE9PSBcInVuZGVmaW5lZFwiKSByZXN1bHQuY291bnQgPSB0aGlzLmNvdW50U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yKSByZXN1bHQuY291bnREaXN0aW5jdCA9IHRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yO1xuICAgIGlmICh0aGlzLm1pblNlbGVjdG9yKSByZXN1bHQubWluID0gdGhpcy5taW5TZWxlY3RvcjtcbiAgICBpZiAodGhpcy5tYXhTZWxlY3RvcikgcmVzdWx0Lm1heCA9IHRoaXMubWF4U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMuc3VtU2VsZWN0b3IpIHJlc3VsdC5zdW0gPSB0aGlzLnN1bVNlbGVjdG9yO1xuICAgIGlmICh0aGlzLmF2Z1NlbGVjdG9yKSByZXN1bHQuYXZnID0gdGhpcy5hdmdTZWxlY3RvcjtcbiAgICBpZiAodGhpcy5kaXN0aW5jdFNlbGVjdG9yKSByZXN1bHQuZGlzdGluY3QgPSB0aGlzLmRpc3RpbmN0U2VsZWN0b3I7XG4gICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKSByZXN1bHQuc29ydCA9IHRoaXMuZ2V0U29ydCgpO1xuICAgIHJldHVybiByZXN1bHQgYXMgUmF3UmVkaXNRdWVyeTxhbnk+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYSBjb25kaXRpb24gaW50byBhIFJlZGlzIHF1ZXJ5IHByZWRpY2F0ZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIENvbmRpdGlvbiBvYmplY3QgaW50byBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGZpbHRlciBtb2RlbCBpbnN0YW5jZXMgaW4gbWVtb3J5LiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggc2ltcGxlIGNvbmRpdGlvbnNcbiAgICogKGVxdWFscywgZ3JlYXRlciB0aGFuLCBldGMuKSBhbmQgY29tcGxleCBjb25kaXRpb25zIHdpdGggbG9naWNhbCBvcGVyYXRvcnMgKEFORCwgT1IpLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGZvciB0aGUgY29uZGl0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIHBhcnNlXG4gICAqIEByZXR1cm4ge1Jhd1JlZGlzUXVlcnk8TT59IEEgUmVkaXMgcXVlcnkgb2JqZWN0IHdpdGggYSB3aGVyZSBwcmVkaWNhdGUgZnVuY3Rpb25cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUmVkaXNTdGF0ZW1lbnRcbiAgICogICBwYXJ0aWNpcGFudCBTaW1wbGVDb25kaXRpb25cbiAgICogICBwYXJ0aWNpcGFudCBDb21wbGV4Q29uZGl0aW9uXG4gICAqXG4gICAqICAgQ2FsbGVyLT4+UmVkaXNTdGF0ZW1lbnQ6IHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbilcbiAgICogICBhbHQgU2ltcGxlIGNvbmRpdGlvbiAoZXEsIGd0LCBsdCwgZXRjLilcbiAgICogICAgIFJlZGlzU3RhdGVtZW50LT4+U2ltcGxlQ29uZGl0aW9uOiBFeHRyYWN0IGF0dHIxLCBvcGVyYXRvciwgY29tcGFyaXNvblxuICAgKiAgICAgU2ltcGxlQ29uZGl0aW9uLS0+PlJlZGlzU3RhdGVtZW50OiBSZXR1cm4gcHJlZGljYXRlIGZ1bmN0aW9uXG4gICAqICAgZWxzZSBMb2dpY2FsIG9wZXJhdG9yIChBTkQsIE9SKVxuICAgKiAgICAgUmVkaXNTdGF0ZW1lbnQtPj5Db21wbGV4Q29uZGl0aW9uOiBFeHRyYWN0IG5lc3RlZCBjb25kaXRpb25zXG4gICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlJlZGlzU3RhdGVtZW50OiBwYXJzZUNvbmRpdGlvbihsZWZ0Q29uZGl0aW9uKVxuICAgKiAgICAgUmVkaXNTdGF0ZW1lbnQtPj5SZWRpc1N0YXRlbWVudDogcGFyc2VDb25kaXRpb24ocmlnaHRDb25kaXRpb24pXG4gICAqICAgICBDb21wbGV4Q29uZGl0aW9uLS0+PlJlZGlzU3RhdGVtZW50OiBDb21iaW5lIHByZWRpY2F0ZXMgd2l0aCBsb2dpY2FsIG9wZXJhdG9yXG4gICAqICAgZW5kXG4gICAqICAgUmVkaXNTdGF0ZW1lbnQtLT4+Q2FsbGVyOiBSZXR1cm4gcXVlcnkgd2l0aCB3aGVyZSBwcmVkaWNhdGVcbiAgICovXG4gIHByb3RlY3RlZCBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbjxNPik6IFJhd1JlZGlzUXVlcnk8YW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdoZXJlOiAobTogTW9kZWwpID0+IHtcbiAgICAgICAgY29uc3QgeyBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb24gfSA9IGNvbmRpdGlvbiBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgICBhdHRyMTogc3RyaW5nIHwgQ29uZGl0aW9uPE0+O1xuICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3I7XG4gICAgICAgICAgY29tcGFyaXNvbjogYW55O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBbR3JvdXBPcGVyYXRvci5BTkQsIEdyb3VwT3BlcmF0b3IuT1IsIE9wZXJhdG9yLk5PVF0uaW5kZXhPZihcbiAgICAgICAgICAgIG9wZXJhdG9yIGFzIEdyb3VwT3BlcmF0b3JcbiAgICAgICAgICApID09PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkJJR0dFUjpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdID4gY29tcGFyaXNvbjtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuQklHR0VSX0VROlxuICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gPj0gY29tcGFyaXNvbjtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuRElGRkVSRU5UOlxuICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gIT09IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVRVUFMOlxuICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gPT09IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLlJFR0VYUDpcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSAhPT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBJbnZhbGlkIHJlZ2V4cCBjb21wYXJpc29uIG9uIGEgbm9uIHN0cmluZyBhdHRyaWJ1dGU6ICR7bVthdHRyMSBhcyBrZXlvZiBNb2RlbF19YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiAhIShtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSBhcyB1bmtub3duIGFzIHN0cmluZykubWF0Y2goXG4gICAgICAgICAgICAgICAgbmV3IFJlZ0V4cChjb21wYXJpc29uLCBcImdcIilcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU1RBUlRTX1dJVEg6IHtcbiAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHIxIGFzIGtleW9mIE1vZGVsO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyTmFtZSA9IGF0dHIgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyVmFsdWUgPSBtW2F0dHJdIGFzIHVua25vd247XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgYXR0clZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgICAgICAgICBgSW52YWxpZCBzdGFydHNXaXRoIGNvbXBhcmlzb24gb24gYSBub24gc3RyaW5nIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBTVEFSVFNfV0lUSCBvcGVyYXRvciByZXF1aXJlcyBhIHN0cmluZyBjb21wYXJpc29uLCBnb3QgJHt0eXBlb2YgY29tcGFyaXNvbn1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gKGF0dHJWYWx1ZSBhcyBzdHJpbmcpLnN0YXJ0c1dpdGgoY29tcGFyaXNvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVORFNfV0lUSDoge1xuICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cjEgYXMga2V5b2YgTW9kZWw7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0ciBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IG1bYXR0cl0gYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhdHRyVmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBJbnZhbGlkIGVuZHNXaXRoIGNvbXBhcmlzb24gb24gYSBub24gc3RyaW5nIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBFTkRTX1dJVEggb3BlcmF0b3IgcmVxdWlyZXMgYSBzdHJpbmcgY29tcGFyaXNvbiwgZ290ICR7dHlwZW9mIGNvbXBhcmlzb259YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIChhdHRyVmFsdWUgYXMgc3RyaW5nKS5lbmRzV2l0aChjb21wYXJpc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUjpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdIDwgY29tcGFyaXNvbjtcbiAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUl9FUTpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdIDw9IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLklOOlxuICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcGFyaXNvbikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgICAgICAgICBgSU4gb3BlcmF0b3IgcmVxdWlyZXMgYW4gYXJyYXksIGdvdDogJHt0eXBlb2YgY29tcGFyaXNvbn1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb24uaW5jbHVkZXMobVthdHRyMSBhcyBrZXlvZiBNb2RlbF0pO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5CRVRXRUVOOiB7XG4gICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wYXJpc29uKSB8fCBjb21wYXJpc29uLmxlbmd0aCAhPT0gMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBCRVRXRUVOIG9wZXJhdG9yIHJlcXVpcmVzIGFuIGFycmF5IHdpdGggMiB2YWx1ZXMgW21pbiwgbWF4XSwgZ290OiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgICBjb21wYXJpc29uXG4gICAgICAgICAgICAgICAgICApfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cjEgYXMga2V5b2YgTW9kZWw7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0ciBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJUeXBlID0gdGhpcy5kZXRlcm1pbmVBdHRyaWJ1dGVUeXBlKFxuICAgICAgICAgICAgICAgIG0uY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3I8TW9kZWw+LFxuICAgICAgICAgICAgICAgIGF0dHJOYW1lLFxuICAgICAgICAgICAgICAgIFwiQkVUV0VFTlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc051bWVyaWNUeXBlKGF0dHJUeXBlKSAmJiBhdHRyVHlwZSAhPT0gXCJkYXRlXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBCRVRXRUVOIG9wZXJhdG9yIHJlcXVpcmVzIG51bWVyaWMgb3IgZGF0ZSBhdHRyaWJ1dGVzLCBidXQgXCIke2F0dHJOYW1lfVwiIGlzICR7YXR0clR5cGUgfHxcbiAgICAgICAgICAgICAgICAgICAgXCJ1bmtub3duXCJ9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGNvbXBhcmlzb247XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbVthdHRyXTtcbiAgICAgICAgICAgICAgY29uc3QgY29tcGFyYWJsZVZhbHVlID0gdGhpcy50b0NvbXBhcmFibGVWYWx1ZShcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBhdHRyVHlwZSxcbiAgICAgICAgICAgICAgICBhdHRyTmFtZSxcbiAgICAgICAgICAgICAgICBcIkJFVFdFRU5cIixcbiAgICAgICAgICAgICAgICB7IGFsbG93TnVsbDogdHJ1ZSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChjb21wYXJhYmxlVmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgY29uc3QgbWluQ29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUoXG4gICAgICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgICAgIGF0dHJUeXBlLFxuICAgICAgICAgICAgICAgIGF0dHJOYW1lLFxuICAgICAgICAgICAgICAgIFwiQkVUV0VFTiBtaW5cIlxuICAgICAgICAgICAgICApITtcbiAgICAgICAgICAgICAgY29uc3QgbWF4Q29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUoXG4gICAgICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgICAgIGF0dHJUeXBlLFxuICAgICAgICAgICAgICAgIGF0dHJOYW1lLFxuICAgICAgICAgICAgICAgIFwiQkVUV0VFTiBtYXhcIlxuICAgICAgICAgICAgICApITtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBjb21wYXJhYmxlVmFsdWUgPj0gbWluQ29tcGFyYWJsZSAmJiBjb21wYXJhYmxlVmFsdWUgPD0gbWF4Q29tcGFyYWJsZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5FWElTVFM6IHtcbiAgICAgICAgICAgICAgY29uc3QgcHJlc2VudCA9XG4gICAgICAgICAgICAgICAgbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdICE9PSBudWxsO1xuICAgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvbiA9PT0gZmFsc2UgPyAhcHJlc2VudCA6IHByZXNlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgSW52YWxpZCBvcGVyYXRvciBmb3Igc3RhbmRhcmQgY29tcGFyaXNvbnM6ICR7b3BlcmF0b3J9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRvciA9PT0gT3BlcmF0b3IuTk9UKSB7XG4gICAgICAgICAgaWYgKCEoYXR0cjEgaW5zdGFuY2VvZiBDb25kaXRpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgXCJOT1Qgb3BlcmF0b3IgcmVxdWlyZXMgYSBuZXN0ZWQgY29uZGl0aW9uIHRvIG5lZ2F0ZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXN0ZWQgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKGF0dHIxIGFzIENvbmRpdGlvbjxNPik7XG4gICAgICAgICAgcmV0dXJuICFuZXN0ZWQud2hlcmUobSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb3AxOiBSYXdSZWRpc1F1ZXJ5PGFueT4gPSB0aGlzLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgICAgICAgYXR0cjEgYXMgQ29uZGl0aW9uPE0+XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBvcDI6IFJhd1JlZGlzUXVlcnk8YW55PiA9IHRoaXMucGFyc2VDb25kaXRpb24oXG4gICAgICAgICAgICBjb21wYXJpc29uIGFzIENvbmRpdGlvbjxNPlxuICAgICAgICAgICk7XG4gICAgICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSBHcm91cE9wZXJhdG9yLkFORDpcbiAgICAgICAgICAgICAgcmV0dXJuIG9wMS53aGVyZShtKSAmJiBvcDIud2hlcmUobSk7XG4gICAgICAgICAgICBjYXNlIEdyb3VwT3BlcmF0b3IuT1I6XG4gICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgfHwgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgYEludmFsaWQgb3BlcmF0b3IgZm9yIEFuZC9PciBjb21wYXJpc29uczogJHtvcGVyYXRvcn1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0gYXMgUmF3UmVkaXNRdWVyeTxhbnk+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhhdCBhbiBhZ2dyZWdhdGlvbiBzZWxlY3RvciB0YXJnZXRzIGEgbnVtZXJpYyBhdHRyaWJ1dGVcbiAgICogQHBhcmFtIHtTZWxlY3RTZWxlY3RvcjxNPn0gc2VsZWN0b3IgLSBUaGUgYXR0cmlidXRlIHNlbGVjdG9yIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVOdW1lcmljU2VsZWN0b3IoXG4gICAgc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yPE0+LFxuICAgIGNvbnRleHQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVNlbGVjdG9yVHlwZShcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgY29udGV4dCxcbiAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSksXG4gICAgICBcIm51bWVyaWNcIlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyB0aGF0IGFuIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIHRhcmdldHMgYSBudW1lcmljIG9yIGRhdGUgYXR0cmlidXRlXG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3I8TT59IHNlbGVjdG9yIC0gVGhlIGF0dHJpYnV0ZSBzZWxlY3RvciB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBhZ2dyZWdhdGlvbiBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlTnVtYmVyT3JEYXRlU2VsZWN0b3IoXG4gICAgc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yPE0+LFxuICAgIGNvbnRleHQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZVNlbGVjdG9yVHlwZShcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgY29udGV4dCxcbiAgICAgICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSkgfHwgdHlwZSA9PT0gXCJkYXRlXCIsXG4gICAgICBcIm51bWVyaWMgb3IgZGF0ZVwiXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdGVzIHRoYXQgYSBzZWxlY3RvcidzIGF0dHJpYnV0ZSB0eXBlIHNhdGlzZmllcyBhIHByZWRpY2F0ZVxuICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0aGUgYXR0cmlidXRlIHR5cGUgZnJvbSB0aGUgbW9kZWwgbWV0YWRhdGEgYW5kIHJhaXNlcyBhXG4gICAqIGBRdWVyeUVycm9yYCB3aGVuIHRoZSB0eXBlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBraW5kLlxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yPE0+fSBzZWxlY3RvciAtIFRoZSBhdHRyaWJ1dGUgc2VsZWN0b3IgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRleHQgLSBUaGUgYWdncmVnYXRpb24gY29udGV4dCB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKTogYm9vbGVhbn0gcHJlZGljYXRlIC0gVHlwZSBhY2NlcHRhbmNlIHByZWRpY2F0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gLSBIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgYWNjZXB0ZWQgdHlwZXNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlU2VsZWN0b3JUeXBlKFxuICAgIHNlbGVjdG9yOiBTZWxlY3RTZWxlY3RvcjxNPixcbiAgICBjb250ZXh0OiBzdHJpbmcsXG4gICAgcHJlZGljYXRlOiAodHlwZTogc3RyaW5nKSA9PiBib29sZWFuLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmZyb21TZWxlY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9IHJlcXVpcmVzIGEgdGFyZ2V0IG1vZGVsLiBDYWxsIGZyb20oKSBiZWZvcmUgYWdncmVnYXRpbmcuYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYXR0ciA9IHNlbGVjdG9yIGFzIHN0cmluZztcbiAgICBjb25zdCB0eXBlID0gdGhpcy5kZXRlcm1pbmVBdHRyaWJ1dGVUeXBlKFxuICAgICAgdGhpcy5mcm9tU2VsZWN0b3IsXG4gICAgICBhdHRyIGFzIGtleW9mIE1vZGVsPGZhbHNlPixcbiAgICAgIGNvbnRleHRcbiAgICApO1xuXG4gICAgaWYgKCFwcmVkaWNhdGUodHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBgJHtjb250ZXh0fSByZXF1aXJlcyBhICR7ZGVzY3JpcHRpb259IGF0dHJpYnV0ZSwgYnV0IFwiJHthdHRyfVwiIGlzICR7dHlwZSB8fCBcInVua25vd25cIn1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgdGhlIGF0dHJpYnV0ZSB0eXBlIGZyb20gdGhlIG1vZGVsIG1ldGFkYXRhXG4gICAqIEBzdW1tYXJ5IFJlYWRzIHRoZSBtZXRhZGF0YSBvciBkZXNpZ24gdHlwZSBvZiB0aGUgYXR0cmlidXRlIGFuZCBub3JtYWxpemVzIGl0XG4gICAqIHRvIGEgbG93ZXJjYXNlIHR5cGUgbmFtZS5cbiAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyIC0gVGhlIGF0dHJpYnV0ZSBuYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZUF0dHJpYnV0ZVR5cGUoXG4gICAgY2xheno6IENvbnN0cnVjdG9yPE1vZGVsPixcbiAgICBhdHRyOiBzdHJpbmcsXG4gICAgY29udGV4dDogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvcEtleSA9IGF0dHIgYXMga2V5b2YgTW9kZWw8ZmFsc2U+O1xuICAgIGNvbnN0IG1ldGFUeXBlID1cbiAgICAgIE1ldGFkYXRhLnR5cGUoY2xhenosIHByb3BLZXkpID8/XG4gICAgICBNZXRhZGF0YS5nZXRQcm9wRGVzaWduVHlwZXMoY2xhenosIHByb3BLZXkpPy5kZXNpZ25UeXBlO1xuICAgIGNvbnN0IHJlc29sdmVkID0gdGhpcy5ub3JtYWxpemVNZXRhVHlwZShtZXRhVHlwZSk7XG4gICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9IGNvdWxkIG5vdCByZXNvbHZlIHByb3BlcnR5IHR5cGUgZm9yIFwiJHthdHRyfVwiYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOb3JtYWxpemVzIGEgcmF3IG1ldGFkYXRhIHR5cGUgdG8gYSBsb3dlcmNhc2UgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSB7YW55fSBtZXRhVHlwZSAtIFRoZSByYXcgbWV0YWRhdGEgdHlwZSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBub3JtYWxpemVkIHR5cGUgbmFtZSwgd2hlbiByZXNvbHZhYmxlXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlOiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghbWV0YVR5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVvZiBtZXRhVHlwZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIG1ldGFUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHR5cGVvZiBtZXRhVHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG1ldGFUeXBlLm5hbWUpXG4gICAgICByZXR1cm4gbWV0YVR5cGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGdpdmVuIHR5cGUgbmFtZSBpcyBhIG51bWVyaWMgdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3R5cGVdIC0gVGhlIG5vcm1hbGl6ZWQgdHlwZSBuYW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgZm9yIFwibnVtYmVyXCIgYW5kIFwiYmlnaW50XCJcbiAgICovXG4gIHByaXZhdGUgaXNOdW1lcmljVHlwZSh0eXBlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZSA9PT0gXCJiaWdpbnRcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSB2YWx1ZSB0byBhIG51bWVyaWMgY29tcGFyYWJsZSB2YWx1ZVxuICAgKiBAc3VtbWFyeSBNYXBzIGRhdGUsIG51bWJlciBhbmQgYmlnaW50IHZhbHVlcyB0byBudW1iZXJzIGZvciBjb21wYXJpc29uIGFuZFxuICAgKiByYWlzZXMgYSBgUXVlcnlFcnJvcmAgZm9yIG1pc3Npbmcgb3IgaW5jb21wYXRpYmxlIHZhbHVlcy5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJUeXBlIC0gVGhlIG5vcm1hbGl6ZWQgYXR0cmlidXRlIHR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJOYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRleHQgLSBUaGUgY29udGV4dCB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBDb252ZXJzaW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd051bGxdIC0gV2hldGhlciBudWxsL3VuZGVmaW5lZCB2YWx1ZXMgcmV0dXJuIG51bGwgaW5zdGVhZCBvZiByYWlzaW5nXG4gICAqIEByZXR1cm4ge251bWJlciB8IG51bGx9IFRoZSBudW1lcmljIGNvbXBhcmFibGUgdmFsdWVcbiAgICovXG4gIHByaXZhdGUgdG9Db21wYXJhYmxlVmFsdWUoXG4gICAgdmFsdWU6IGFueSxcbiAgICBhdHRyVHlwZTogc3RyaW5nLFxuICAgIGF0dHJOYW1lOiBzdHJpbmcsXG4gICAgY29udGV4dDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7IGFsbG93TnVsbD86IGJvb2xlYW4gfVxuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnM/LmFsbG93TnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhIHZhbHVlIGZvciBcIiR7YXR0ck5hbWV9XCJgKTtcbiAgICB9XG4gICAgc3dpdGNoIChhdHRyVHlwZSkge1xuICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICAgICAgYCR7Y29udGV4dH0gb24gZGF0ZSBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIERhdGUgdmFsdWVzYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICAgICAgYCR7Y29udGV4dH0gb24gbnVtZXJpYyBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIG51bWJlciB2YWx1ZXNgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICAgIGAke2NvbnRleHR9IG9uIGJpZ2ludCBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIG51bWVyaWMgdmFsdWVzYFxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgYCR7Y29udGV4dH0gdW5zdXBwb3J0ZWQgdHlwZSBcIiR7YXR0clR5cGV9XCIgZm9yIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJSZWRpc1N0YXRlbWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBNEc7QUFDNUcsMkRBQXdEO0FBQ3hELHFEQUFnRDtBQUNoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsY0FBZSxTQUFRLGdCQUFTO0lBQ3pDOzs7O09BSUc7SUFDSCxZQUFZLE9BQU8sRUFBRSxTQUFTO1FBQzFCLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsT0FBTztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDL0IsTUFBTSxJQUFJLDZCQUFhLENBQUMsZ0RBQWdELENBQUMsQ0FBQztZQUM5RSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsS0FBSyxxQkFBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFVBQVUsS0FBSyxDQUFDO29CQUNoQixPQUFPLGVBQWUsR0FBRyxVQUFVLENBQUM7WUFDNUMsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ2Is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OlsiaW1wb3J0IHsgQ29uZGl0aW9uLCBHcm91cE9wZXJhdG9yLCBPcGVyYXRvciwgT3JkZXJEaXJlY3Rpb24sIFF1ZXJ5RXJyb3IsIFN0YXRlbWVudCwgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWRpcy1zcGVjaWZpYyBxdWVyeSBzdGF0ZW1lbnQgYnVpbGRlclxuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSBTdGF0ZW1lbnQgY2xhc3MgdG8gcHJvdmlkZSBxdWVyeSBidWlsZGluZyBmdW5jdGlvbmFsaXR5IGZvciB0aGUgUmVkaXMgYWRhcHRlci5cbiAqIFRoaXMgY2xhc3MgdHJhbnNsYXRlcyBoaWdoLWxldmVsIHF1ZXJ5IG9wZXJhdGlvbnMgaW50byBwcmVkaWNhdGVzIHRoYXQgY2FuIGZpbHRlciBhbmQgc29ydFxuICogaW4tbWVtb3J5IGRhdGEgc3RydWN0dXJlcyAocmVjb3JkcyByZXZlcnRlZCBmcm9tIHRoZSB0YWJsZSBoYXNoKS5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgYmVpbmcgcXVlcmllZFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVzdWx0IHR5cGUgcmV0dXJuZWQgYnkgdGhlIHF1ZXJ5XG4gKiBAY2xhc3MgUmVkaXNTdGF0ZW1lbnRcbiAqIEBjYXRlZ29yeSBSZWRpc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIHN0YXRlbWVudCBmb3IgcXVlcnlpbmcgVXNlciBtb2RlbHNcbiAqIGNvbnN0IHN0YXRlbWVudCA9IHJlZGlzQWRhcHRlci5TdGF0ZW1lbnQ8VXNlcj4oKTtcbiAqXG4gKiAvLyBCdWlsZCBhIHF1ZXJ5IHRvIGZpbmQgYWN0aXZlIHVzZXJzIHdpdGggYWdlID4gMThcbiAqIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBzdGF0ZW1lbnRcbiAqICAgLmZyb20oVXNlcilcbiAqICAgLndoZXJlKENvbmRpdGlvbi5hbmQoXG4gKiAgICAgQ29uZGl0aW9uLmVxKCdhY3RpdmUnLCB0cnVlKSxcbiAqICAgICBDb25kaXRpb24uZ3QoJ2FnZScsIDE4KVxuICogICApKVxuICogICAub3JkZXJCeSgnbGFzdE5hbWUnLCAnYXNjJylcbiAqICAgLmxpbWl0KDEwKVxuICogICAuZXhlY3V0ZSgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWRpc1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBzdGF0ZW1lbnQgYm91bmQgdG8gdGhlIFJlZGlzIGFkYXB0ZXJcbiAgICAgKiBAcGFyYW0ge0F9IGFkYXB0ZXIgLSBUaGUgUmVkaXMgYWRhcHRlciBpbnN0YW5jZSB0byB1c2UgZm9yIGV4ZWN1dGluZyBxdWVyaWVzXG4gICAgICogQHBhcmFtIHtQYXJ0aWFsPEFkYXB0ZXJGbGFncz59IFtvdmVycmlkZXNdIC0gT3B0aW9uYWwgYWRhcHRlciBmbGFnIG92ZXJyaWRlc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGFkYXB0ZXIsIG92ZXJyaWRlcykge1xuICAgICAgICBzdXBlcihhZGFwdGVyLCBvdmVycmlkZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNvcnQgY29tcGFyYXRvciBmdW5jdGlvblxuICAgICAqIEBzdW1tYXJ5IEdlbmVyYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdHdvIG1vZGVsIGluc3RhbmNlcyBiYXNlZCBvbiB0aGUgb3JkZXJCeSBjcml0ZXJpYS5cbiAgICAgKiBUaGlzIG1ldGhvZCBoYW5kbGVzIGRpZmZlcmVudCBkYXRhIHR5cGVzIChzdHJpbmcsIG51bWJlciwgZGF0ZSkgYW5kIHNvcnQgZGlyZWN0aW9ucyAoYXNjLCBkZXNjKS5cbiAgICAgKiBAcmV0dXJuIHtmdW5jdGlvbihNb2RlbCwgTW9kZWwpOiBudW1iZXJ9IEEgY29tcGFyYXRvciBmdW5jdGlvbiBmb3Igc29ydGluZyBtb2RlbCBpbnN0YW5jZXNcbiAgICAgKi9cbiAgICBnZXRTb3J0KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RvcnMgPSB0aGlzLm9yZGVyQnlTZWxlY3RvcnM7XG4gICAgICAgIHJldHVybiAoZWwxLCBlbDIpID0+IHtcbiAgICAgICAgICAgIGlmICghc2VsZWN0b3JzIHx8ICFzZWxlY3RvcnMubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwib3JkZXJCeVNlbGVjdG9ycyBub3Qgc2V0LiBTaG91bGQgYmUgaW1wb3NzaWJsZVwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgZGlyZWN0aW9uXSBvZiBzZWxlY3RvcnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRGlyZWN0aW9uID0gU3RyaW5nKGRpcmVjdGlvbikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25GYWN0b3IgPSBub3JtYWxpemVkRGlyZWN0aW9uID09PSBPcmRlckRpcmVjdGlvbi5BU0MgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IHRoaXMuY29tcGFyZUJ5S2V5KGVsMSwgZWwyLCBrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXJpc29uICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uRmFjdG9yICogY29tcGFyaXNvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIG1vZGVscyBieSBhIHNpbmdsZSBhdHRyaWJ1dGVcbiAgICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0aGUgYXR0cmlidXRlJ3MgZGVzaWduIHR5cGUgYW5kIGRlbGVnYXRlcyB0byB0aGUgbWF0Y2hpbmdcbiAgICAgKiB0eXBlLXNwZWNpZmljIGNvbXBhcmF0b3IuXG4gICAgICogQHBhcmFtIHtNb2RlbH0gZWwxIC0gVGhlIGZpcnN0IG1vZGVsIGluc3RhbmNlXG4gICAgICogQHBhcmFtIHtNb2RlbH0gZWwyIC0gVGhlIHNlY29uZCBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7a2V5b2YgTW9kZWx9IGtleSAtIFRoZSBhdHRyaWJ1dGUgdG8gY29tcGFyZVxuICAgICAqIEByZXR1cm4ge251bWJlcn0gQSBuZWdhdGl2ZSBudW1iZXIsIHplcm8gb3IgYSBwb3NpdGl2ZSBudW1iZXIgYXMgcGVyIHRoZSBjb21wYXJpc29uXG4gICAgICovXG4gICAgY29tcGFyZUJ5S2V5KGVsMSwgZWwyLCBrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUxID0gZWwxW2tleV07XG4gICAgICAgIGNvbnN0IHZhbHVlMiA9IGVsMltrZXldO1xuICAgICAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsIHx8IHZhbHVlMiA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlMSA9PSBudWxsID8gMSA6IC0xO1xuICAgICAgICBjb25zdCB7IGRlc2lnblR5cGU6IHR5cGUgfSA9IE1ldGFkYXRhLmdldFByb3BEZXNpZ25UeXBlcyhlbDEuY29uc3RydWN0b3IsIGtleSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVHlwZSA9ICh0eXBlICYmIHR5cGUubmFtZSAmJiB0eXBlLm5hbWUudG9Mb3dlckNhc2UoKSkgfHwgdHlwZW9mIHZhbHVlMTtcbiAgICAgICAgc3dpdGNoIChyZXNvbHZlZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlU3RyaW5ncyh2YWx1ZTEsIHZhbHVlMik7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZU51bWJlcnModmFsdWUxLCB2YWx1ZTIpO1xuICAgICAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVCaWdJbnRzKHZhbHVlMSwgdmFsdWUyKTtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUJvb2xlYW5zKHZhbHVlMSwgdmFsdWUyKTtcbiAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlMSBpbnN0YW5jZW9mIERhdGUgJiYgdmFsdWUyIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlRGF0ZXModmFsdWUxLCB2YWx1ZTIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYHNvcnRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdHlwZSAke3Jlc29sdmVkVHlwZX1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBib29sZWFuIHZhbHVlc1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gMCB3aGVuIGVxdWFsLCAxIHdoZW4gYGFgIGlzIHRydWUsIC0xIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGNvbXBhcmVCb29sZWFucyhhLCBiKSB7XG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPyAxIDogLTE7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wYXJlcyB0d28gbnVtZXJpYyB2YWx1ZXNcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1lcmljIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWVzXG4gICAgICovXG4gICAgY29tcGFyZU51bWJlcnMoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAtIGI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wYXJlcyB0d28gYmlnaW50IHZhbHVlc1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gMCB3aGVuIGVxdWFsLCAxIHdoZW4gYGFgIGlzIGdyZWF0ZXIsIC0xIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGNvbXBhcmVCaWdJbnRzKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgPT09IGIpXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IC0xO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIHN0cmluZ3MgdXNpbmcgbG9jYWxlLWF3YXJlIG9yZGVyaW5nXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbG9jYWxlIGNvbXBhcmUgcmVzdWx0IGJldHdlZW4gdGhlIHZhbHVlc1xuICAgICAqL1xuICAgIGNvbXBhcmVTdHJpbmdzKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBhcmVzIHR3byBkYXRlcyBieSB0aGVpciBlcG9jaCB0aW1lc3RhbXBzXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aW1lc3RhbXBzXG4gICAgICovXG4gICAgY29tcGFyZURhdGVzKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEudmFsdWVPZigpIC0gYi52YWx1ZU9mKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCdWlsZHMgYSBSZWRpcyBxdWVyeSBmcm9tIHRoZSBzdGF0ZW1lbnRcbiAgICAgKiBAc3VtbWFyeSBDb252ZXJ0cyB0aGUgc3RhdGVtZW50J3Mgc2VsZWN0b3JzIGFuZCBjb25kaXRpb25zIGludG8gYSBSYXdSZWRpc1F1ZXJ5IG9iamVjdFxuICAgICAqIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IHRoZSBSZWRpcyBhZGFwdGVyLiBUaGlzIG1ldGhvZCBhc3NlbWJsZXMgYWxsIHF1ZXJ5IGNvbXBvbmVudHNcbiAgICAgKiAoc2VsZWN0LCBmcm9tLCB3aGVyZSwgbGltaXQsIG9mZnNldCwgc29ydCkgaW50byB0aGUgZmluYWwgcXVlcnkgc3RydWN0dXJlLlxuICAgICAqIEByZXR1cm4ge1Jhd1JlZGlzUXVlcnk8TT59IFRoZSBjb25zdHJ1Y3RlZCBSZWRpcyBxdWVyeSBvYmplY3RcbiAgICAgKi9cbiAgICBidWlsZCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWluU2VsZWN0b3IpXG4gICAgICAgICAgICB0aGlzLmVuc3VyZU51bWJlck9yRGF0ZVNlbGVjdG9yKHRoaXMubWluU2VsZWN0b3IsIFwiTUlOIG9wZXJhdGlvblwiKTtcbiAgICAgICAgaWYgKHRoaXMubWF4U2VsZWN0b3IpXG4gICAgICAgICAgICB0aGlzLmVuc3VyZU51bWJlck9yRGF0ZVNlbGVjdG9yKHRoaXMubWF4U2VsZWN0b3IsIFwiTUFYIG9wZXJhdGlvblwiKTtcbiAgICAgICAgaWYgKHRoaXMuc3VtU2VsZWN0b3IpXG4gICAgICAgICAgICB0aGlzLmVuc3VyZU51bWVyaWNTZWxlY3Rvcih0aGlzLnN1bVNlbGVjdG9yLCBcIlNVTSBvcGVyYXRpb25cIik7XG4gICAgICAgIGlmICh0aGlzLmF2Z1NlbGVjdG9yKVxuICAgICAgICAgICAgdGhpcy5lbnN1cmVOdW1iZXJPckRhdGVTZWxlY3Rvcih0aGlzLmF2Z1NlbGVjdG9yLCBcIkFWRyBvcGVyYXRpb25cIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHNlbGVjdDogdGhpcy5zZWxlY3RTZWxlY3RvcixcbiAgICAgICAgICAgIGZyb206IHRoaXMuZnJvbVNlbGVjdG9yLFxuICAgICAgICAgICAgd2hlcmU6IHRoaXMud2hlcmVDb25kaXRpb25cbiAgICAgICAgICAgICAgICA/IHRoaXMucGFyc2VDb25kaXRpb24odGhpcy53aGVyZUNvbmRpdGlvbikud2hlcmVcbiAgICAgICAgICAgICAgICA6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbWl0OiB0aGlzLmxpbWl0U2VsZWN0b3IsXG4gICAgICAgICAgICBza2lwOiB0aGlzLm9mZnNldFNlbGVjdG9yLFxuICAgICAgICAgICAgZ3JvdXBCeTogdGhpcy5ncm91cEJ5U2VsZWN0b3JzLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY291bnRTZWxlY3RvciAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHJlc3VsdC5jb3VudCA9IHRoaXMuY291bnRTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuY291bnREaXN0aW5jdFNlbGVjdG9yKVxuICAgICAgICAgICAgcmVzdWx0LmNvdW50RGlzdGluY3QgPSB0aGlzLmNvdW50RGlzdGluY3RTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMubWluU2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQubWluID0gdGhpcy5taW5TZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMubWF4U2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQubWF4ID0gdGhpcy5tYXhTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuc3VtU2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQuc3VtID0gdGhpcy5zdW1TZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuYXZnU2VsZWN0b3IpXG4gICAgICAgICAgICByZXN1bHQuYXZnID0gdGhpcy5hdmdTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMuZGlzdGluY3RTZWxlY3RvcilcbiAgICAgICAgICAgIHJlc3VsdC5kaXN0aW5jdCA9IHRoaXMuZGlzdGluY3RTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKVxuICAgICAgICAgICAgcmVzdWx0LnNvcnQgPSB0aGlzLmdldFNvcnQoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhIGNvbmRpdGlvbiBpbnRvIGEgUmVkaXMgcXVlcnkgcHJlZGljYXRlXG4gICAgICogQHN1bW1hcnkgQ29udmVydHMgYSBDb25kaXRpb24gb2JqZWN0IGludG8gYSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGZpbHRlciBtb2RlbCBpbnN0YW5jZXMgaW4gbWVtb3J5LiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggc2ltcGxlIGNvbmRpdGlvbnNcbiAgICAgKiAoZXF1YWxzLCBncmVhdGVyIHRoYW4sIGV0Yy4pIGFuZCBjb21wbGV4IGNvbmRpdGlvbnMgd2l0aCBsb2dpY2FsIG9wZXJhdG9ycyAoQU5ELCBPUikuXG4gICAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBmb3IgdGhlIGNvbmRpdGlvblxuICAgICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIHBhcnNlXG4gICAgICogQHJldHVybiB7UmF3UmVkaXNRdWVyeTxNPn0gQSBSZWRpcyBxdWVyeSBvYmplY3Qgd2l0aCBhIHdoZXJlIHByZWRpY2F0ZSBmdW5jdGlvblxuICAgICAqIEBtZXJtYWlkXG4gICAgICogc2VxdWVuY2VEaWFncmFtXG4gICAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICAgKiAgIHBhcnRpY2lwYW50IFJlZGlzU3RhdGVtZW50XG4gICAgICogICBwYXJ0aWNpcGFudCBTaW1wbGVDb25kaXRpb25cbiAgICAgKiAgIHBhcnRpY2lwYW50IENvbXBsZXhDb25kaXRpb25cbiAgICAgKlxuICAgICAqICAgQ2FsbGVyLT4+UmVkaXNTdGF0ZW1lbnQ6IHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbilcbiAgICAgKiAgIGFsdCBTaW1wbGUgY29uZGl0aW9uIChlcSwgZ3QsIGx0LCBldGMuKVxuICAgICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlNpbXBsZUNvbmRpdGlvbjogRXh0cmFjdCBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb25cbiAgICAgKiAgICAgU2ltcGxlQ29uZGl0aW9uLS0+PlJlZGlzU3RhdGVtZW50OiBSZXR1cm4gcHJlZGljYXRlIGZ1bmN0aW9uXG4gICAgICogICBlbHNlIExvZ2ljYWwgb3BlcmF0b3IgKEFORCwgT1IpXG4gICAgICogICAgIFJlZGlzU3RhdGVtZW50LT4+Q29tcGxleENvbmRpdGlvbjogRXh0cmFjdCBuZXN0ZWQgY29uZGl0aW9uc1xuICAgICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlJlZGlzU3RhdGVtZW50OiBwYXJzZUNvbmRpdGlvbihsZWZ0Q29uZGl0aW9uKVxuICAgICAqICAgICBSZWRpc1N0YXRlbWVudC0+PlJlZGlzU3RhdGVtZW50OiBwYXJzZUNvbmRpdGlvbihyaWdodENvbmRpdGlvbilcbiAgICAgKiAgICAgQ29tcGxleENvbmRpdGlvbi0tPj5SZWRpc1N0YXRlbWVudDogQ29tYmluZSBwcmVkaWNhdGVzIHdpdGggbG9naWNhbCBvcGVyYXRvclxuICAgICAqICAgZW5kXG4gICAgICogICBSZWRpc1N0YXRlbWVudC0tPj5DYWxsZXI6IFJldHVybiBxdWVyeSB3aXRoIHdoZXJlIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2hlcmU6IChtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhdHRyMSwgb3BlcmF0b3IsIGNvbXBhcmlzb24gfSA9IGNvbmRpdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoW0dyb3VwT3BlcmF0b3IuQU5ELCBHcm91cE9wZXJhdG9yLk9SLCBPcGVyYXRvci5OT1RdLmluZGV4T2Yob3BlcmF0b3IpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkJJR0dFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMV0gPiBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5CSUdHRVJfRVE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjFdID49IGNvbXBhcmlzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkRJRkZFUkVOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMV0gIT09IGNvbXBhcmlzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVRVUFMOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxXSA9PT0gY29tcGFyaXNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuUkVHRVhQOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbVthdHRyMV0gIT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBJbnZhbGlkIHJlZ2V4cCBjb21wYXJpc29uIG9uIGEgbm9uIHN0cmluZyBhdHRyaWJ1dGU6ICR7bVthdHRyMV19YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhbVthdHRyMV0ubWF0Y2gobmV3IFJlZ0V4cChjb21wYXJpc29uLCBcImdcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5TVEFSVFNfV0lUSDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyTmFtZSA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0clZhbHVlID0gbVthdHRyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGF0dHJWYWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgSW52YWxpZCBzdGFydHNXaXRoIGNvbXBhcmlzb24gb24gYSBub24gc3RyaW5nIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21wYXJpc29uICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBTVEFSVFNfV0lUSCBvcGVyYXRvciByZXF1aXJlcyBhIHN0cmluZyBjb21wYXJpc29uLCBnb3QgJHt0eXBlb2YgY29tcGFyaXNvbn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJWYWx1ZS5zdGFydHNXaXRoKGNvbXBhcmlzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5FTkRTX1dJVEg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyID0gYXR0cjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0ck5hbWUgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IG1bYXR0cl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhdHRyVmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEludmFsaWQgZW5kc1dpdGggY29tcGFyaXNvbiBvbiBhIG5vbiBzdHJpbmcgYXR0cmlidXRlIFwiJHthdHRyTmFtZX1cImApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBhcmlzb24gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEVORFNfV0lUSCBvcGVyYXRvciByZXF1aXJlcyBhIHN0cmluZyBjb21wYXJpc29uLCBnb3QgJHt0eXBlb2YgY29tcGFyaXNvbn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJWYWx1ZS5lbmRzV2l0aChjb21wYXJpc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuU01BTExFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVthdHRyMV0gPCBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5TTUFMTEVSX0VROlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxXSA8PSBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5JTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcGFyaXNvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGBJTiBvcGVyYXRvciByZXF1aXJlcyBhbiBhcnJheSwgZ290OiAke3R5cGVvZiBjb21wYXJpc29ufWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uLmluY2x1ZGVzKG1bYXR0cjFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT3BlcmF0b3IuQkVUV0VFTjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wYXJpc29uKSB8fCBjb21wYXJpc29uLmxlbmd0aCAhPT0gMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEJFVFdFRU4gb3BlcmF0b3IgcmVxdWlyZXMgYW4gYXJyYXkgd2l0aCAyIHZhbHVlcyBbbWluLCBtYXhdLCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkoY29tcGFyaXNvbil9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXR0ciA9IGF0dHIxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyVHlwZSA9IHRoaXMuZGV0ZXJtaW5lQXR0cmlidXRlVHlwZShtLmNvbnN0cnVjdG9yLCBhdHRyTmFtZSwgXCJCRVRXRUVOXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc051bWVyaWNUeXBlKGF0dHJUeXBlKSAmJiBhdHRyVHlwZSAhPT0gXCJkYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYEJFVFdFRU4gb3BlcmF0b3IgcmVxdWlyZXMgbnVtZXJpYyBvciBkYXRlIGF0dHJpYnV0ZXMsIGJ1dCBcIiR7YXR0ck5hbWV9XCIgaXMgJHthdHRyVHlwZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1bmtub3duXCJ9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbVthdHRyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wYXJhYmxlVmFsdWUgPSB0aGlzLnRvQ29tcGFyYWJsZVZhbHVlKHZhbHVlLCBhdHRyVHlwZSwgYXR0ck5hbWUsIFwiQkVUV0VFTlwiLCB7IGFsbG93TnVsbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGFyYWJsZVZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluQ29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUobWluLCBhdHRyVHlwZSwgYXR0ck5hbWUsIFwiQkVUV0VFTiBtaW5cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4Q29tcGFyYWJsZSA9IHRoaXMudG9Db21wYXJhYmxlVmFsdWUobWF4LCBhdHRyVHlwZSwgYXR0ck5hbWUsIFwiQkVUV0VFTiBtYXhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjb21wYXJhYmxlVmFsdWUgPj0gbWluQ29tcGFyYWJsZSAmJiBjb21wYXJhYmxlVmFsdWUgPD0gbWF4Q29tcGFyYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkVYSVNUUzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSBtW2F0dHIxXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1bYXR0cjFdICE9PSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uID09PSBmYWxzZSA/ICFwcmVzZW50IDogcHJlc2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEludmFsaWQgb3BlcmF0b3IgZm9yIHN0YW5kYXJkIGNvbXBhcmlzb25zOiAke29wZXJhdG9yfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhdG9yID09PSBPcGVyYXRvci5OT1QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYXR0cjEgaW5zdGFuY2VvZiBDb25kaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5PVCBvcGVyYXRvciByZXF1aXJlcyBhIG5lc3RlZCBjb25kaXRpb24gdG8gbmVnYXRlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZCA9IHRoaXMucGFyc2VDb25kaXRpb24oYXR0cjEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIW5lc3RlZC53aGVyZShtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wMSA9IHRoaXMucGFyc2VDb25kaXRpb24oYXR0cjEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcDIgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKGNvbXBhcmlzb24pO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdyb3VwT3BlcmF0b3IuQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgJiYgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHcm91cE9wZXJhdG9yLk9SOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgfHwgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgSW52YWxpZCBvcGVyYXRvciBmb3IgQW5kL09yIGNvbXBhcmlzb25zOiAke29wZXJhdG9yfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyB0aGF0IGFuIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIHRhcmdldHMgYSBudW1lcmljIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3I8TT59IHNlbGVjdG9yIC0gVGhlIGF0dHJpYnV0ZSBzZWxlY3RvciB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgICAqIEByZXR1cm4ge3ZvaWR9XG4gICAgICovXG4gICAgZW5zdXJlTnVtZXJpY1NlbGVjdG9yKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlU2VsZWN0b3JUeXBlKHNlbGVjdG9yLCBjb250ZXh0LCAodHlwZSkgPT4gdGhpcy5pc051bWVyaWNUeXBlKHR5cGUpLCBcIm51bWVyaWNcIik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhhdCBhbiBhZ2dyZWdhdGlvbiBzZWxlY3RvciB0YXJnZXRzIGEgbnVtZXJpYyBvciBkYXRlIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3I8TT59IHNlbGVjdG9yIC0gVGhlIGF0dHJpYnV0ZSBzZWxlY3RvciB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGFnZ3JlZ2F0aW9uIGNvbnRleHQgdXNlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgICAqIEByZXR1cm4ge3ZvaWR9XG4gICAgICovXG4gICAgZW5zdXJlTnVtYmVyT3JEYXRlU2VsZWN0b3Ioc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVTZWxlY3RvclR5cGUoc2VsZWN0b3IsIGNvbnRleHQsICh0eXBlKSA9PiB0aGlzLmlzTnVtZXJpY1R5cGUodHlwZSkgfHwgdHlwZSA9PT0gXCJkYXRlXCIsIFwibnVtZXJpYyBvciBkYXRlXCIpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdGVzIHRoYXQgYSBzZWxlY3RvcidzIGF0dHJpYnV0ZSB0eXBlIHNhdGlzZmllcyBhIHByZWRpY2F0ZVxuICAgICAqIEBzdW1tYXJ5IFJlc29sdmVzIHRoZSBhdHRyaWJ1dGUgdHlwZSBmcm9tIHRoZSBtb2RlbCBtZXRhZGF0YSBhbmQgcmFpc2VzIGFcbiAgICAgKiBgUXVlcnlFcnJvcmAgd2hlbiB0aGUgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQga2luZC5cbiAgICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yPE0+fSBzZWxlY3RvciAtIFRoZSBhdHRyaWJ1dGUgc2VsZWN0b3IgdG8gdmFsaWRhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBhZ2dyZWdhdGlvbiBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyk6IGJvb2xlYW59IHByZWRpY2F0ZSAtIFR5cGUgYWNjZXB0YW5jZSBwcmVkaWNhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gLSBIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgYWNjZXB0ZWQgdHlwZXNcbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuICAgIGVuc3VyZVNlbGVjdG9yVHlwZShzZWxlY3RvciwgY29udGV4dCwgcHJlZGljYXRlLCBkZXNjcmlwdGlvbikge1xuICAgICAgICBpZiAoIXRoaXMuZnJvbVNlbGVjdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhIHRhcmdldCBtb2RlbC4gQ2FsbCBmcm9tKCkgYmVmb3JlIGFnZ3JlZ2F0aW5nLmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF0dHIgPSBzZWxlY3RvcjtcbiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuZGV0ZXJtaW5lQXR0cmlidXRlVHlwZSh0aGlzLmZyb21TZWxlY3RvciwgYXR0ciwgY29udGV4dCk7XG4gICAgICAgIGlmICghcHJlZGljYXRlKHR5cGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhICR7ZGVzY3JpcHRpb259IGF0dHJpYnV0ZSwgYnV0IFwiJHthdHRyfVwiIGlzICR7dHlwZSB8fCBcInVua25vd25cIn1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzb2x2ZXMgdGhlIGF0dHJpYnV0ZSB0eXBlIGZyb20gdGhlIG1vZGVsIG1ldGFkYXRhXG4gICAgICogQHN1bW1hcnkgUmVhZHMgdGhlIG1ldGFkYXRhIG9yIGRlc2lnbiB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUgYW5kIG5vcm1hbGl6ZXMgaXRcbiAgICAgKiB0byBhIGxvd2VyY2FzZSB0eXBlIG5hbWUuXG4gICAgICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNb2RlbD59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHIgLSBUaGUgYXR0cmlidXRlIG5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlXG4gICAgICovXG4gICAgZGV0ZXJtaW5lQXR0cmlidXRlVHlwZShjbGF6eiwgYXR0ciwgY29udGV4dCkge1xuICAgICAgICBjb25zdCBwcm9wS2V5ID0gYXR0cjtcbiAgICAgICAgY29uc3QgbWV0YVR5cGUgPSBNZXRhZGF0YS50eXBlKGNsYXp6LCBwcm9wS2V5KSA/P1xuICAgICAgICAgICAgTWV0YWRhdGEuZ2V0UHJvcERlc2lnblR5cGVzKGNsYXp6LCBwcm9wS2V5KT8uZGVzaWduVHlwZTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLm5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlKTtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYCR7Y29udGV4dH0gY291bGQgbm90IHJlc29sdmUgcHJvcGVydHkgdHlwZSBmb3IgXCIke2F0dHJ9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBOb3JtYWxpemVzIGEgcmF3IG1ldGFkYXRhIHR5cGUgdG8gYSBsb3dlcmNhc2UgdHlwZSBuYW1lXG4gICAgICogQHBhcmFtIHthbnl9IG1ldGFUeXBlIC0gVGhlIHJhdyBtZXRhZGF0YSB0eXBlIHZhbHVlXG4gICAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbm9ybWFsaXplZCB0eXBlIG5hbWUsIHdoZW4gcmVzb2x2YWJsZVxuICAgICAqL1xuICAgIG5vcm1hbGl6ZU1ldGFUeXBlKG1ldGFUeXBlKSB7XG4gICAgICAgIGlmICghbWV0YVR5cGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGFUeXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgbWV0YVR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBtZXRhVHlwZS5uYW1lKVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFUeXBlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGdpdmVuIHR5cGUgbmFtZSBpcyBhIG51bWVyaWMgdHlwZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZV0gLSBUaGUgbm9ybWFsaXplZCB0eXBlIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGZvciBcIm51bWJlclwiIGFuZCBcImJpZ2ludFwiXG4gICAgICovXG4gICAgaXNOdW1lcmljVHlwZSh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwiYmlnaW50XCI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgbnVtZXJpYyBjb21wYXJhYmxlIHZhbHVlXG4gICAgICogQHN1bW1hcnkgTWFwcyBkYXRlLCBudW1iZXIgYW5kIGJpZ2ludCB2YWx1ZXMgdG8gbnVtYmVycyBmb3IgY29tcGFyaXNvbiBhbmRcbiAgICAgKiByYWlzZXMgYSBgUXVlcnlFcnJvcmAgZm9yIG1pc3Npbmcgb3IgaW5jb21wYXRpYmxlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyVHlwZSAtIFRoZSBub3JtYWxpemVkIGF0dHJpYnV0ZSB0eXBlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJOYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBjb250ZXh0IHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gQ29udmVyc2lvbiBvcHRpb25zXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hbGxvd051bGxdIC0gV2hldGhlciBudWxsL3VuZGVmaW5lZCB2YWx1ZXMgcmV0dXJuIG51bGwgaW5zdGVhZCBvZiByYWlzaW5nXG4gICAgICogQHJldHVybiB7bnVtYmVyIHwgbnVsbH0gVGhlIG51bWVyaWMgY29tcGFyYWJsZSB2YWx1ZVxuICAgICAqL1xuICAgIHRvQ29tcGFyYWJsZVZhbHVlKHZhbHVlLCBhdHRyVHlwZSwgYXR0ck5hbWUsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zPy5hbGxvd051bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSByZXF1aXJlcyBhIHZhbHVlIGZvciBcIiR7YXR0ck5hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGF0dHJUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoYCR7Y29udGV4dH0gb24gZGF0ZSBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIERhdGUgdmFsdWVzYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihgJHtjb250ZXh0fSBvbiBudW1lcmljIGF0dHJpYnV0ZSBcIiR7YXR0ck5hbWV9XCIgcmVxdWlyZXMgbnVtYmVyIHZhbHVlc2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGAke2NvbnRleHR9IG9uIGJpZ2ludCBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiIHJlcXVpcmVzIG51bWVyaWMgdmFsdWVzYCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGAke2NvbnRleHR9IHVuc3VwcG9ydGVkIHR5cGUgXCIke2F0dHJUeXBlfVwiIGZvciBhdHRyaWJ1dGUgXCIke2F0dHJOYW1lfVwiYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVbVZrYVhOVGRHRjBaVzFsYm5RdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTl6Y21NdmNtVmthWE12VW1Wa2FYTlRkR0YwWlcxbGJuUXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVkTUxGTkJRVk1zUlVGRFZDeGhRVUZoTEVWQlEySXNVVUZCVVN4RlFVTlNMR05CUVdNc1JVRkRaQ3hWUVVGVkxFVkJSVllzVTBGQlV5eEhRVU5XTEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGSGVFSXNUMEZCVHl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hOUVVGTkxIbENRVUY1UWl4RFFVRkRPMEZCUTNoRUxFOUJRVThzUlVGQlpTeFJRVUZSTEVWQlFVVXNUVUZCVFN4elFrRkJjMElzUTBGQlF6dEJRVVUzUkRzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRIUVhsQ1J6dEJRVU5JTEUxQlFVMHNUMEZCVHl4alFVbFlMRk5CUVZFc1UwRkJjME03U1VGRE9VTTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCVlN4RlFVRkZMRk5CUVdsRE8xRkJRM1pFTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03U1VGRE5VSXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBzc1QwRkJUenRSUVVOaUxFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU40UXl4UFFVRlBMRU5CUVVNc1IwRkJWU3hGUVVGRkxFZEJRVlVzUlVGQlJTeEZRVUZGTzFsQlEyaERMRWxCUVVrc1EwRkJReXhUUVVGVExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFR0blFrRkRha01zVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc1owUkJRV2RFTEVOQlEycEVMRU5CUVVNN1dVRkRTaXhMUVVGTExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNVMEZCVXl4RFFVRkRMRWxCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVU03WjBKQlEzcERMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzJkQ1FVTTFSQ3hOUVVGTkxHVkJRV1VzUjBGRGJrSXNiVUpCUVcxQ0xFdEJRVXNzWTBGQll5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRVFzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFXdENMRU5CUVVNc1EwRkJRenRuUWtGRGJrVXNTVUZCU1N4VlFVRlZMRXRCUVVzc1EwRkJRenR2UWtGQlJTeFBRVUZQTEdWQlFXVXNSMEZCUnl4VlFVRlZMRU5CUVVNN1dVRkROVVFzUTBGQlF6dFpRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTFnc1EwRkJReXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZFT3pzN096czdPenRQUVZGSE8wbEJRMHNzV1VGQldTeERRVUZETEVkQlFWVXNSVUZCUlN4SFFVRlZMRVZCUVVVc1IwRkJaMEk3VVVGRE0wUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzaENMRTFCUVUwc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjRRaXhKUVVGSkxFMUJRVTBzUzBGQlN5eE5RVUZOTzFsQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZhRU1zU1VGQlNTeE5RVUZOTEVsQlFVa3NTVUZCU1N4SlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSk8xbEJRVVVzVDBGQlR5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhKRkxFMUJRVTBzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1VVRkJVU3hEUVVGRExHdENRVUZyUWl4RFFVTjBSQ3hIUVVGSExFTkJRVU1zVjBGQmEwSXNSVUZEZEVJc1IwRkJZU3hEUVVOa0xFTkJRVU03VVVGRFJpeE5RVUZOTEZsQlFWa3NSMEZEYUVJc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVsQlFVa3NUMEZCVHl4TlFVRk5MRU5CUVVNN1VVRkZiRVVzVVVGQlVTeFpRVUZaTEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhMUVVGTExGRkJRVkU3WjBKQlExZ3NUMEZCVHl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVONFFpeE5RVUV5UWl4RlFVTXpRaXhOUVVFeVFpeERRVU0xUWl4RFFVRkRPMWxCUTBvc1MwRkJTeXhSUVVGUk8yZENRVU5ZTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkRlRUlzVFVGQk1rSXNSVUZETTBJc1RVRkJNa0lzUTBGRE5VSXNRMEZCUXp0WlFVTktMRXRCUVVzc1VVRkJVVHRuUWtGRFdDeFBRVUZQTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUTNoQ0xFMUJRVEpDTEVWQlF6TkNMRTFCUVRKQ0xFTkJRelZDTEVOQlFVTTdXVUZEU2l4TFFVRkxMRk5CUVZNN1owSkJRMW9zVDBGQlR5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVTjZRaXhOUVVFMFFpeEZRVU0xUWl4TlFVRTBRaXhEUVVNM1FpeERRVUZETzFsQlEwb3NTMEZCU3l4TlFVRk5MRU5CUVVNN1dVRkRXaXhMUVVGTExGRkJRVkU3WjBKQlExZ3NTVUZCU1N4TlFVRk5MRmxCUVZrc1NVRkJTU3hKUVVGSkxFMUJRVTBzV1VGQldTeEpRVUZKTEVWQlFVVXNRMEZCUXp0dlFrRkRja1FzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVdNc1JVRkJSU3hOUVVGakxFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1EwRkJRenRuUWtGRFJDeE5RVUZOTzFsQlExSTdaMEpCUTBVc1RVRkJUVHRSUVVOV0xFTkJRVU03VVVGRlJDeE5RVUZOTEVsQlFVa3NWVUZCVlN4RFFVRkRMR3REUVVGclF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTNwRkxFTkJRVU03U1VGRlJEczdPMDlCUjBjN1NVRkRTeXhsUVVGbExFTkJRVU1zUTBGQlZTeEZRVUZGTEVOQlFWVTdVVUZETlVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5zUXl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwc3NZMEZCWXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8xRkJRM3BETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRlJEczdPMDlCUjBjN1NVRkRTeXhqUVVGakxFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTTdVVUZEZWtNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dFpRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNSQ0xFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBzc1kwRkJZeXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTzFGQlEzcERMRTlCUVU4c1EwRkJReXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTTFRaXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBzc1dVRkJXU3hEUVVGRExFTkJRVThzUlVGQlJTeERRVUZQTzFGQlEyNURMRTlCUVU4c1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOdVF5eERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTA4c1MwRkJTenRSUVVOaUxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWYzdXVUZEYkVJc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdVVUZEY2tVc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ6dFpRVU5zUWl4SlFVRkpMRU5CUVVNc01FSkJRVEJDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hsUVVGbExFTkJRVU1zUTBGQlF6dFJRVU55UlN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWE8xbEJRMnhDTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJRMmhGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjN1dVRkRiRUlzU1VGQlNTeERRVUZETERCQ1FVRXdRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZja1VzVFVGQlRTeE5RVUZOTEVkQlFYRkNPMWxCUXk5Q0xFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXp0WlFVTXpRaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWazdXVUZEZGtJc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eGpRVUZqTzJkQ1FVTjRRaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUzBGQlN6dG5Ra0ZEYUVRc1EwRkJReXhEUVVGRExEWkVRVUUyUkR0dlFrRkROMFFzUTBGQlF5eEZRVUZMTEVWQlFVVXNSVUZCUlR0M1FrRkRVaXhQUVVGUExFbEJRVWtzUTBGQlF6dHZRa0ZEWkN4RFFVRkRPMWxCUTB3c1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eGhRVUZoTzFsQlEzcENMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll6dFpRVU42UWl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExHZENRVUZuUWp0VFFVTXZRaXhEUVVGRE8xRkJSVVlzU1VGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4aFFVRmhMRXRCUVVzc1YwRkJWenRaUVVGRkxFMUJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVOcVJpeEpRVUZKTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUk3V1VGQlJTeE5RVUZOTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXp0UlFVTnNSaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTzFsQlFVVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEzQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmM3V1VGQlJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03VVVGRGNFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWenRaUVVGRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhPMWxCUVVVc1RVRkJUU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRPMUZCUTNCRUxFbEJRVWtzU1VGQlNTeERRVUZETEdkQ1FVRm5RanRaUVVGRkxFMUJRVTBzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlEyNUZMRWxCUVVrc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRTFCUVUwN1dVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVOb1JTeFBRVUZQTEUxQlFUUkNMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZFT3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRQUVRCQ1J6dEpRVU5QTEdOQlFXTXNRMEZCUXl4VFFVRjFRanRSUVVNNVF5eFBRVUZQTzFsQlEwd3NTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVU3WjBKQlEyeENMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SFFVRkhMRk5CU1haRExFTkJRVU03WjBKQlJVWXNTVUZEUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVU42UkN4UlFVRjVRaXhEUVVNeFFpeExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVTlNMRU5CUVVNN2IwSkJRMFFzVVVGQlVTeFJRVUZSTEVWQlFVVXNRMEZCUXp0M1FrRkRha0lzUzBGQlN5eFJRVUZSTEVOQlFVTXNUVUZCVFRzMFFrRkRiRUlzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCYjBJc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF6dDNRa0ZET1VNc1MwRkJTeXhSUVVGUkxFTkJRVU1zVTBGQlV6czBRa0ZEY2tJc1QwRkJUeXhEUVVGRExFTkJRVU1zUzBGQmIwSXNRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenQzUWtGREwwTXNTMEZCU3l4UlFVRlJMRU5CUVVNc1UwRkJVenMwUWtGRGNrSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJiMElzUTBGQlF5eExRVUZMTEZWQlFWVXNRMEZCUXp0M1FrRkRhRVFzUzBGQlN5eFJRVUZSTEVOQlFVTXNTMEZCU3pzMFFrRkRha0lzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCYjBJc1EwRkJReXhMUVVGTExGVkJRVlVzUTBGQlF6dDNRa0ZEYUVRc1MwRkJTeXhSUVVGUkxFTkJRVU1zVFVGQlRUczBRa0ZEYkVJc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZ2UWl4RFFVRkRMRXRCUVVzc1VVRkJVVHRuUTBGRE4wTXNUVUZCVFN4SlFVRkpMRlZCUVZVc1EwRkRiRUlzZDBSQlFYZEVMRU5CUVVNc1EwRkJReXhMUVVGdlFpeERRVUZETEVWQlFVVXNRMEZEYkVZc1EwRkJRenMwUWtGRFNpeFBRVUZQTEVOQlFVTXNRMEZCUlN4RFFVRkRMRU5CUVVNc1MwRkJiMElzUTBGQmRVSXNRMEZCUXl4TFFVRkxMRU5CUXpORUxFbEJRVWtzVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkROVUlzUTBGQlF6dDNRa0ZEU2l4TFFVRkxMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZET3pSQ1FVTXhRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZ2UWl4RFFVRkRPelJDUVVOc1F5eE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRmpMRU5CUVVNN05FSkJRMmhETEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVmtzUTBGQlF6czBRa0ZEY2tNc1NVRkJTU3hQUVVGUExGTkJRVk1zUzBGQlN5eFJRVUZSTEVWQlFVVXNRMEZCUXp0blEwRkRiRU1zVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZEYkVJc05FUkJRVFJFTEZGQlFWRXNSMEZCUnl4RFFVTjRSU3hEUVVGRE96UkNRVU5LTEVOQlFVTTdORUpCUTBRc1NVRkJTU3hQUVVGUExGVkJRVlVzUzBGQlN5eFJRVUZSTEVWQlFVVXNRMEZCUXp0blEwRkRia01zVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZEYkVJc01FUkJRVEJFTEU5QlFVOHNWVUZCVlN4RlFVRkZMRU5CUXpsRkxFTkJRVU03TkVKQlEwb3NRMEZCUXpzMFFrRkRSQ3hQUVVGUkxGTkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8zZENRVU4wUkN4RFFVRkRPM2RDUVVORUxFdEJRVXNzVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNN05FSkJRM2hDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVc5Q0xFTkJRVU03TkVKQlEyeERMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRV01zUTBGQlF6czBRa0ZEYUVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCV1N4RFFVRkRPelJDUVVOeVF5eEpRVUZKTEU5QlFVOHNVMEZCVXl4TFFVRkxMRkZCUVZFc1JVRkJSU3hEUVVGRE8yZERRVU5zUXl4TlFVRk5MRWxCUVVrc1ZVRkJWU3hEUVVOc1Fpd3dSRUZCTUVRc1VVRkJVU3hIUVVGSExFTkJRM1JGTEVOQlFVTTdORUpCUTBvc1EwRkJRenMwUWtGRFJDeEpRVUZKTEU5QlFVOHNWVUZCVlN4TFFVRkxMRkZCUVZFc1JVRkJSU3hEUVVGRE8yZERRVU51UXl4TlFVRk5MRWxCUVVrc1ZVRkJWU3hEUVVOc1FpeDNSRUZCZDBRc1QwRkJUeXhWUVVGVkxFVkJRVVVzUTBGRE5VVXNRMEZCUXpzMFFrRkRTaXhEUVVGRE96UkNRVU5FTEU5QlFWRXNVMEZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdkMEpCUTNCRUxFTkJRVU03ZDBKQlEwUXNTMEZCU3l4UlFVRlJMRU5CUVVNc1QwRkJUenMwUWtGRGJrSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1MwRkJiMElzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXp0M1FrRkRPVU1zUzBGQlN5eFJRVUZSTEVOQlFVTXNWVUZCVlRzMFFrRkRkRUlzVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCYjBJc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF6dDNRa0ZETDBNc1MwRkJTeXhSUVVGUkxFTkJRVU1zUlVGQlJUczBRa0ZEWkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTTdaME5CUXpWQ0xFMUJRVTBzU1VGQlNTeFZRVUZWTEVOQlEyeENMSFZEUVVGMVF5eFBRVUZQTEZWQlFWVXNSVUZCUlN4RFFVTXpSQ3hEUVVGRE96UkNRVU5LTEU5QlFVOHNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQmIwSXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRM1JFTEV0QlFVc3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03TkVKQlEzUkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF6dG5RMEZEZGtRc1RVRkJUU3hKUVVGSkxGVkJRVlVzUTBGRGJFSXNjVVZCUVhGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlEycEdMRlZCUVZVc1EwRkRXQ3hGUVVGRkxFTkJRMG9zUTBGQlF6czBRa0ZEU2l4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGdlFpeERRVUZET3pSQ1FVTnNReXhOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZqTEVOQlFVTTdORUpCUTJoRExFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGRE1VTXNRMEZCUXl4RFFVRkRMRmRCUVdsRExFVkJRMjVETEZGQlFWRXNSVUZEVWl4VFFVRlRMRU5CUTFZc1EwRkJRenMwUWtGRFJpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeFJRVUZSTEV0QlFVc3NUVUZCVFN4RlFVRkZMRU5CUVVNN1owTkJRM3BFTEUxQlFVMHNTVUZCU1N4VlFVRlZMRU5CUTJ4Q0xEaEVRVUU0UkN4UlFVRlJMRkZCUVZFc1VVRkJVVHR2UTBGRGNFWXNVMEZCVXl4RlFVRkZMRU5CUTJRc1EwRkJRenMwUWtGRFNpeERRVUZET3pSQ1FVTkVMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRPelJDUVVNNVFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03TkVKQlEzUkNMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkROVU1zUzBGQlN5eEZRVU5NTEZGQlFWRXNSVUZEVWl4UlFVRlJMRVZCUTFJc1UwRkJVeXhGUVVOVUxFVkJRVVVzVTBGQlV5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVTndRaXhEUVVGRE96UkNRVU5HTEVsQlFVa3NaVUZCWlN4TFFVRkxMRWxCUVVrN1owTkJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdORUpCUXpORExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGRE1VTXNSMEZCUnl4RlFVTklMRkZCUVZFc1JVRkRVaXhSUVVGUkxFVkJRMUlzWVVGQllTeERRVU5pTEVOQlFVTTdORUpCUTBnc1RVRkJUU3hoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVNeFF5eEhRVUZITEVWQlEwZ3NVVUZCVVN4RlFVTlNMRkZCUVZFc1JVRkRVaXhoUVVGaExFTkJRMklzUTBGQlF6czBRa0ZEU0N4UFFVRlBMRU5CUTB3c1pVRkJaU3hKUVVGSkxHRkJRV0VzU1VGQlNTeGxRVUZsTEVsQlFVa3NZVUZCWVN4RFFVTnlSU3hEUVVGRE8zZENRVU5LTEVOQlFVTTdkMEpCUTBRc1MwRkJTeXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXpzMFFrRkRja0lzVFVGQlRTeFBRVUZQTEVkQlExZ3NRMEZCUXl4RFFVRkRMRXRCUVc5Q0xFTkJRVU1zUzBGQlN5eFRRVUZUTzJkRFFVTnlReXhEUVVGRExFTkJRVU1zUzBGQmIwSXNRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJRenMwUWtGRGJrTXNUMEZCVHl4VlFVRlZMRXRCUVVzc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRE8zZENRVU51UkN4RFFVRkRPM2RDUVVORU96UkNRVU5GTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xEaERRVUU0UXl4UlFVRlJMRVZCUVVVc1EwRkRla1FzUTBGQlF6dHZRa0ZEVGl4RFFVRkRPMmRDUVVOSUxFTkJRVU03Y1VKQlFVMHNTVUZCU1N4UlFVRlJMRXRCUVVzc1VVRkJVU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzI5Q1FVTnlReXhKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEZsQlFWa3NVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRGJFTXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkRja0lzYjBSQlFXOUVMRU5CUTNKRUxFTkJRVU03YjBKQlEwb3NRMEZCUXp0dlFrRkRSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRXRCUVhGQ0xFTkJRVU1zUTBGQlF6dHZRa0ZETVVRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZDTEVOQlFVTTdjVUpCUVUwc1EwRkJRenR2UWtGRFRpeE5RVUZOTEVkQlFVY3NSMEZCZFVJc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGRGFrUXNTMEZCY1VJc1EwRkRkRUlzUTBGQlF6dHZRa0ZEUml4TlFVRk5MRWRCUVVjc1IwRkJkVUlzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZEYWtRc1ZVRkJNRUlzUTBGRE0wSXNRMEZCUXp0dlFrRkRSaXhSUVVGUkxGRkJRVkVzUlVGQlJTeERRVUZETzNkQ1FVTnFRaXhMUVVGTExHRkJRV0VzUTBGQlF5eEhRVUZIT3pSQ1FVTndRaXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRkRU1zUzBGQlN5eGhRVUZoTEVOQlFVTXNSVUZCUlRzMFFrRkRia0lzVDBGQlR5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRM1JET3pSQ1FVTkZMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTERSRFFVRTBReXhSUVVGUkxFVkJRVVVzUTBGRGRrUXNRMEZCUXp0dlFrRkRUaXhEUVVGRE8yZENRVU5JTEVOQlFVTTdXVUZEU0N4RFFVRkRPMU5CUTI5Q0xFTkJRVU03U1VGRE1VSXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBzc2NVSkJRWEZDTEVOQlF6TkNMRkZCUVRKQ0xFVkJRek5DTEU5QlFXVTdVVUZGWml4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlEzSkNMRkZCUVZFc1JVRkRVaXhQUVVGUExFVkJRMUFzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlEyeERMRk5CUVZNc1EwRkRWaXhEUVVGRE8wbEJRMG9zUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwc3NNRUpCUVRCQ0xFTkJRMmhETEZGQlFUSkNMRVZCUXpOQ0xFOUJRV1U3VVVGRlppeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFTkJRM0pDTEZGQlFWRXNSVUZEVWl4UFFVRlBMRVZCUTFBc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeExRVUZMTEUxQlFVMHNSVUZEY2tRc2FVSkJRV2xDTEVOQlEyeENMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVE3T3pzN096czdPenRQUVZOSE8wbEJRMHNzYTBKQlFXdENMRU5CUTNoQ0xGRkJRVEpDTEVWQlF6TkNMRTlCUVdVc1JVRkRaaXhUUVVGdlF5eEZRVU53UXl4WFFVRnRRanRSUVVWdVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8xbEJRM1pDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xFZEJRVWNzVDBGQlR5d3lSRUZCTWtRc1EwRkRkRVVzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZEUkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhSUVVGclFpeERRVUZETzFGQlEyaERMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkRkRU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZEYWtJc1NVRkJNRUlzUlVGRE1VSXNUMEZCVHl4RFFVTlNMRU5CUVVNN1VVRkZSaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRja0lzVFVGQlRTeEpRVUZKTEZWQlFWVXNRMEZEYkVJc1IwRkJSeXhQUVVGUExHVkJRV1VzVjBGQlZ5eHZRa0ZCYjBJc1NVRkJTU3hSUVVGUkxFbEJRVWtzU1VGQlNTeFRRVUZUTEVWQlFVVXNRMEZEZUVZc1EwRkJRenRSUVVOS0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFN5eHpRa0ZCYzBJc1EwRkROVUlzUzBGQmVVSXNSVUZEZWtJc1NVRkJXU3hGUVVOYUxFOUJRV1U3VVVGRlppeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRXdRaXhEUVVGRE8xRkJRek5ETEUxQlFVMHNVVUZCVVN4SFFVTmFMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXp0WlFVTTNRaXhSUVVGUkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUTBGQlF5eEZRVUZGTEZWQlFWVXNRMEZCUXp0UlFVTXhSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEYkVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzFsQlEyUXNUVUZCVFN4SlFVRkpMRlZCUVZVc1EwRkRiRUlzUjBGQlJ5eFBRVUZQTEhsRFFVRjVReXhKUVVGSkxFZEJRVWNzUTBGRE0wUXNRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkRSQ3hQUVVGUExGRkJRVkVzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlVRN096czdUMEZKUnp0SlFVTkxMR2xDUVVGcFFpeERRVUZETEZGQlFXRTdVVUZEY2tNc1NVRkJTU3hEUVVGRExGRkJRVkU3V1VGQlJTeFBRVUZQTEZOQlFWTXNRMEZCUXp0UlFVTm9ReXhKUVVGSkxFOUJRVThzVVVGQlVTeExRVUZMTEZGQlFWRTdXVUZCUlN4UFFVRlBMRkZCUVZFc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU5vUlN4SlFVRkpMRTlCUVU4c1VVRkJVU3hMUVVGTExGVkJRVlVzU1VGQlNTeFJRVUZSTEVOQlFVTXNTVUZCU1R0WlFVTnFSQ3hQUVVGUExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRja01zVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRU96czdPMDlCU1VjN1NVRkRTeXhoUVVGaExFTkJRVU1zU1VGQllUdFJRVU5xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhSUVVGUkxFbEJRVWtzU1VGQlNTeExRVUZMTEZGQlFWRXNRMEZCUXp0SlFVTm9SQ3hEUVVGRE8wbEJSVVE3T3pzN096czdPenM3TzA5QlYwYzdTVUZEU3l4cFFrRkJhVUlzUTBGRGRrSXNTMEZCVlN4RlFVTldMRkZCUVdkQ0xFVkJRMmhDTEZGQlFXZENMRVZCUTJoQ0xFOUJRV1VzUlVGRFppeFBRVUZwUXp0UlFVVnFReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTnNRaXhKUVVGSkxFOUJRVThzUlVGQlJTeFRRVUZUTzJkQ1FVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRE8xbEJRM0JETEUxQlFVMHNTVUZCU1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhQUVVGUExEQkNRVUV3UWl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM2hGTEVOQlFVTTdVVUZEUkN4UlFVRlJMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRMnBDTEV0QlFVc3NUVUZCVFR0blFrRkRWQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eExRVUZMTEZsQlFWa3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenR2UWtGRE4wSXNUVUZCVFN4SlFVRkpMRlZCUVZVc1EwRkRiRUlzUjBGQlJ5eFBRVUZQTEhWQ1FVRjFRaXhSUVVGUkxIZENRVUYzUWl4RFFVTnNSU3hEUVVGRE8yZENRVU5LTEVOQlFVTTdaMEpCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdXVUZEZWtJc1MwRkJTeXhSUVVGUk8yZENRVU5ZTEVsQlFVa3NUMEZCVHl4TFFVRkxMRXRCUVVzc1VVRkJVU3hGUVVGRkxFTkJRVU03YjBKQlF6bENMRTFCUVUwc1NVRkJTU3hWUVVGVkxFTkJRMnhDTEVkQlFVY3NUMEZCVHl3d1FrRkJNRUlzVVVGQlVTd3dRa0ZCTUVJc1EwRkRka1VzUTBGQlF6dG5Ra0ZEU2l4RFFVRkRPMmRDUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzFsQlEyWXNTMEZCU3l4UlFVRlJPMmRDUVVOWUxFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVR0dlFrRkJSU3hQUVVGUExFdEJRVXNzUTBGQlF6dG5Ra0ZETlVNc1NVRkJTU3hQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTzI5Q1FVRkZMRTlCUVU4c1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTndSQ3hOUVVGTkxFbEJRVWtzVlVGQlZTeERRVU5zUWl4SFFVRkhMRTlCUVU4c2VVSkJRWGxDTEZGQlFWRXNNa0pCUVRKQ0xFTkJRM1pGTEVOQlFVTTdXVUZEU2p0blFrRkRSU3hOUVVGTkxFbEJRVWtzVlVGQlZTeERRVU5zUWl4SFFVRkhMRTlCUVU4c2MwSkJRWE5DTEZGQlFWRXNiMEpCUVc5Q0xGRkJRVkVzUjBGQlJ5eERRVU40UlN4RFFVRkRPMUZCUTA0c1EwRkJRenRKUVVOSUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdYRzRnSUVGa1lYQjBaWElzWEc0Z0lFRmtZWEIwWlhKR2JHRm5jeXhjYmlBZ1EyOXVaR2wwYVc5dUxGeHVJQ0JIY205MWNFOXdaWEpoZEc5eUxGeHVJQ0JQY0dWeVlYUnZjaXhjYmlBZ1QzSmtaWEpFYVhKbFkzUnBiMjRzWEc0Z0lGRjFaWEo1UlhKeWIzSXNYRzRnSUZObGJHVmpkRk5sYkdWamRHOXlMRnh1SUNCVGRHRjBaVzFsYm5Rc1hHNTlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZZMjl5WlZ3aU8xeHVhVzF3YjNKMElIc2dVbVZrYVhORGIyNTBaWGgwTENCU1lYZFNaV1JwYzFGMVpYSjVJSDBnWm5KdmJTQmNJaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUUxdlpHVnNJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBiM0l0ZG1Gc2FXUmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dTVzUwWlhKdVlXeEZjbkp2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHSXRaR1ZqYjNKaGRHOXljMXdpTzF4dWFXMXdiM0owSUhzZ1EyOXVjM1J5ZFdOMGIzSXNJRTFsZEdGa1lYUmhJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBhVzl1WENJN1hHNWNiaThxS2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUZKbFpHbHpMWE53WldOcFptbGpJSEYxWlhKNUlITjBZWFJsYldWdWRDQmlkV2xzWkdWeVhHNGdLaUJBYzNWdGJXRnllU0JGZUhSbGJtUnpJSFJvWlNCaVlYTmxJRk4wWVhSbGJXVnVkQ0JqYkdGemN5QjBieUJ3Y205MmFXUmxJSEYxWlhKNUlHSjFhV3hrYVc1bklHWjFibU4wYVc5dVlXeHBkSGtnWm05eUlIUm9aU0JTWldScGN5QmhaR0Z3ZEdWeUxseHVJQ29nVkdocGN5QmpiR0Z6Y3lCMGNtRnVjMnhoZEdWeklHaHBaMmd0YkdWMlpXd2djWFZsY25rZ2IzQmxjbUYwYVc5dWN5QnBiblJ2SUhCeVpXUnBZMkYwWlhNZ2RHaGhkQ0JqWVc0Z1ptbHNkR1Z5SUdGdVpDQnpiM0owWEc0Z0tpQnBiaTF0WlcxdmNua2daR0YwWVNCemRISjFZM1IxY21WeklDaHlaV052Y21SeklISmxkbVZ5ZEdWa0lHWnliMjBnZEdobElIUmhZbXhsSUdoaGMyZ3BMbHh1SUNvZ1FIUmxiWEJzWVhSbElFMGdMU0JVYUdVZ2JXOWtaV3dnZEhsd1pTQmlaV2x1WnlCeGRXVnlhV1ZrWEc0Z0tpQkFkR1Z0Y0d4aGRHVWdVaUF0SUZSb1pTQnlaWE4xYkhRZ2RIbHdaU0J5WlhSMWNtNWxaQ0JpZVNCMGFHVWdjWFZsY25sY2JpQXFJRUJqYkdGemN5QlNaV1JwYzFOMFlYUmxiV1Z1ZEZ4dUlDb2dRR05oZEdWbmIzSjVJRkpsWkdselhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1lHQmdkSGx3WlhOamNtbHdkRnh1SUNvZ0x5OGdRM0psWVhSbElHRWdjM1JoZEdWdFpXNTBJR1p2Y2lCeGRXVnllV2x1WnlCVmMyVnlJRzF2WkdWc2MxeHVJQ29nWTI5dWMzUWdjM1JoZEdWdFpXNTBJRDBnY21Wa2FYTkJaR0Z3ZEdWeUxsTjBZWFJsYldWdWREeFZjMlZ5UGlncE8xeHVJQ3BjYmlBcUlDOHZJRUoxYVd4a0lHRWdjWFZsY25rZ2RHOGdabWx1WkNCaFkzUnBkbVVnZFhObGNuTWdkMmwwYUNCaFoyVWdQaUF4T0Z4dUlDb2dZMjl1YzNRZ2NtVnpkV3gwY3lBOUlHRjNZV2wwSUhOMFlYUmxiV1Z1ZEZ4dUlDb2dJQ0F1Wm5KdmJTaFZjMlZ5S1Z4dUlDb2dJQ0F1ZDJobGNtVW9RMjl1WkdsMGFXOXVMbUZ1WkNoY2JpQXFJQ0FnSUNCRGIyNWthWFJwYjI0dVpYRW9KMkZqZEdsMlpTY3NJSFJ5ZFdVcExGeHVJQ29nSUNBZ0lFTnZibVJwZEdsdmJpNW5kQ2duWVdkbEp5d2dNVGdwWEc0Z0tpQWdJQ2twWEc0Z0tpQWdJQzV2Y21SbGNrSjVLQ2RzWVhOMFRtRnRaU2NzSUNkaGMyTW5LVnh1SUNvZ0lDQXViR2x0YVhRb01UQXBYRzRnS2lBZ0lDNWxlR1ZqZFhSbEtDazdYRzRnS2lCZ1lHQmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRkpsWkdselUzUmhkR1Z0Wlc1MFBGeHVJQ0JOSUdWNGRHVnVaSE1nVFc5a1pXd3NYRzRnSUZJc1hHNGdJRUVnWlhoMFpXNWtjeUJCWkdGd2RHVnlQRTBzSUdGdWVTd2dVbUYzVW1Wa2FYTlJkV1Z5ZVR4aGJuaytMQ0JTWldScGMwTnZiblJsZUhRK0xGeHVQaUJsZUhSbGJtUnpJRk4wWVhSbGJXVnVkRHhOTENCQkxDQlNMQ0JTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDQrSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCRGNtVmhkR1Z6SUdFZ2MzUmhkR1Z0Wlc1MElHSnZkVzVrSUhSdklIUm9aU0JTWldScGN5QmhaR0Z3ZEdWeVhHNGdJQ0FxSUVCd1lYSmhiU0I3UVgwZ1lXUmhjSFJsY2lBdElGUm9aU0JTWldScGN5QmhaR0Z3ZEdWeUlHbHVjM1JoYm1ObElIUnZJSFZ6WlNCbWIzSWdaWGhsWTNWMGFXNW5JSEYxWlhKcFpYTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UVlYSjBhV0ZzUEVGa1lYQjBaWEpHYkdGbmN6NTlJRnR2ZG1WeWNtbGtaWE5kSUMwZ1QzQjBhVzl1WVd3Z1lXUmhjSFJsY2lCbWJHRm5JRzkyWlhKeWFXUmxjMXh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb1lXUmhjSFJsY2pvZ1FTd2diM1psY25KcFpHVnpQem9nVUdGeWRHbGhiRHhCWkdGd2RHVnlSbXhoWjNNK0tTQjdYRzRnSUNBZ2MzVndaWElvWVdSaGNIUmxjaXdnYjNabGNuSnBaR1Z6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTNKbFlYUmxjeUJoSUhOdmNuUWdZMjl0Y0dGeVlYUnZjaUJtZFc1amRHbHZibHh1SUNBZ0tpQkFjM1Z0YldGeWVTQkhaVzVsY21GMFpYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElHTnZiWEJoY21WeklIUjNieUJ0YjJSbGJDQnBibk4wWVc1alpYTWdZbUZ6WldRZ2IyNGdkR2hsSUc5eVpHVnlRbmtnWTNKcGRHVnlhV0V1WEc0Z0lDQXFJRlJvYVhNZ2JXVjBhRzlrSUdoaGJtUnNaWE1nWkdsbVptVnlaVzUwSUdSaGRHRWdkSGx3WlhNZ0tITjBjbWx1Wnl3Z2JuVnRZbVZ5TENCa1lYUmxLU0JoYm1RZ2MyOXlkQ0JrYVhKbFkzUnBiMjV6SUNoaGMyTXNJR1JsYzJNcExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0bWRXNWpkR2x2YmloTmIyUmxiQ3dnVFc5a1pXd3BPaUJ1ZFcxaVpYSjlJRUVnWTI5dGNHRnlZWFJ2Y2lCbWRXNWpkR2x2YmlCbWIzSWdjMjl5ZEdsdVp5QnRiMlJsYkNCcGJuTjBZVzVqWlhOY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1oyVjBVMjl5ZENncElIdGNiaUFnSUNCamIyNXpkQ0J6Wld4bFkzUnZjbk1nUFNCMGFHbHpMbTl5WkdWeVFubFRaV3hsWTNSdmNuTTdYRzRnSUNBZ2NtVjBkWEp1SUNobGJERTZJRTF2WkdWc0xDQmxiREk2SUUxdlpHVnNLU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9JWE5sYkdWamRHOXljeUI4ZkNBaGMyVnNaV04wYjNKekxteGxibWQwYUNsY2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkR1Z5Ym1Gc1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ1hDSnZjbVJsY2tKNVUyVnNaV04wYjNKeklHNXZkQ0J6WlhRdUlGTm9iM1ZzWkNCaVpTQnBiWEJ2YzNOcFlteGxYQ0pjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1cydGxlU3dnWkdseVpXTjBhVzl1WFNCdlppQnpaV3hsWTNSdmNuTXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibTl5YldGc2FYcGxaRVJwY21WamRHbHZiaUE5SUZOMGNtbHVaeWhrYVhKbFkzUnBiMjRwTG5SdlRHOTNaWEpEWVhObEtDazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUnBjbVZqZEdsdmJrWmhZM1J2Y2lBOVhHNGdJQ0FnSUNBZ0lDQWdibTl5YldGc2FYcGxaRVJwY21WamRHbHZiaUE5UFQwZ1QzSmtaWEpFYVhKbFkzUnBiMjR1UVZORElEOGdNU0E2SUMweE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamIyMXdZWEpwYzI5dUlEMGdkR2hwY3k1amIyMXdZWEpsUW5sTFpYa29aV3d4TENCbGJESXNJR3RsZVNCaGN5QnJaWGx2WmlCTmIyUmxiQ2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjF3WVhKcGMyOXVJQ0U5UFNBd0tTQnlaWFIxY200Z1pHbHlaV04wYVc5dVJtRmpkRzl5SUNvZ1kyOXRjR0Z5YVhOdmJqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlBd08xeHVJQ0FnSUgwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJYQmhjbVZ6SUhSM2J5QnRiMlJsYkhNZ1lua2dZU0J6YVc1bmJHVWdZWFIwY21saWRYUmxYRzRnSUNBcUlFQnpkVzF0WVhKNUlGSmxjMjlzZG1WeklIUm9aU0JoZEhSeWFXSjFkR1VuY3lCa1pYTnBaMjRnZEhsd1pTQmhibVFnWkdWc1pXZGhkR1Z6SUhSdklIUm9aU0J0WVhSamFHbHVaMXh1SUNBZ0tpQjBlWEJsTFhOd1pXTnBabWxqSUdOdmJYQmhjbUYwYjNJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VFc5a1pXeDlJR1ZzTVNBdElGUm9aU0JtYVhKemRDQnRiMlJsYkNCcGJuTjBZVzVqWlZ4dUlDQWdLaUJBY0dGeVlXMGdlMDF2WkdWc2ZTQmxiRElnTFNCVWFHVWdjMlZqYjI1a0lHMXZaR1ZzSUdsdWMzUmhibU5sWEc0Z0lDQXFJRUJ3WVhKaGJTQjdhMlY1YjJZZ1RXOWtaV3g5SUd0bGVTQXRJRlJvWlNCaGRIUnlhV0oxZEdVZ2RHOGdZMjl0Y0dGeVpWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVFZ2JtVm5ZWFJwZG1VZ2JuVnRZbVZ5TENCNlpYSnZJRzl5SUdFZ2NHOXphWFJwZG1VZ2JuVnRZbVZ5SUdGeklIQmxjaUIwYUdVZ1kyOXRjR0Z5YVhOdmJseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmpiMjF3WVhKbFFubExaWGtvWld3eE9pQk5iMlJsYkN3Z1pXd3lPaUJOYjJSbGJDd2dhMlY1T2lCclpYbHZaaUJOYjJSbGJDazZJRzUxYldKbGNpQjdYRzRnSUNBZ1kyOXVjM1FnZG1Gc2RXVXhJRDBnWld3eFcydGxlVjA3WEc0Z0lDQWdZMjl1YzNRZ2RtRnNkV1V5SUQwZ1pXd3lXMnRsZVYwN1hHNWNiaUFnSUNCcFppQW9kbUZzZFdVeElEMDlQU0IyWVd4MVpUSXBJSEpsZEhWeWJpQXdPMXh1WEc0Z0lDQWdhV1lnS0haaGJIVmxNU0E5UFNCdWRXeHNJSHg4SUhaaGJIVmxNaUE5UFNCdWRXeHNLU0J5WlhSMWNtNGdkbUZzZFdVeElEMDlJRzUxYkd3Z1B5QXhJRG9nTFRFN1hHNWNiaUFnSUNCamIyNXpkQ0I3SUdSbGMybG5ibFI1Y0dVNklIUjVjR1VnZlNBOUlFMWxkR0ZrWVhSaExtZGxkRkJ5YjNCRVpYTnBaMjVVZVhCbGN5aGNiaUFnSUNBZ0lHVnNNUzVqYjI1emRISjFZM1J2Y2lCaGN5QmhibmtzWEc0Z0lDQWdJQ0JyWlhrZ1lYTWdjM1J5YVc1blhHNGdJQ0FnS1R0Y2JpQWdJQ0JqYjI1emRDQnlaWE52YkhabFpGUjVjR1VnUFZ4dUlDQWdJQ0FnS0hSNWNHVWdKaVlnZEhsd1pTNXVZVzFsSUNZbUlIUjVjR1V1Ym1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwS1NCOGZDQjBlWEJsYjJZZ2RtRnNkV1V4TzF4dVhHNGdJQ0FnYzNkcGRHTm9JQ2h5WlhOdmJIWmxaRlI1Y0dVcElIdGNiaUFnSUNBZ0lHTmhjMlVnWENKemRISnBibWRjSWpwY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl0Y0dGeVpWTjBjbWx1WjNNb1hHNGdJQ0FnSUNBZ0lDQWdkbUZzZFdVeElHRnpJSFZ1YTI1dmQyNGdZWE1nYzNSeWFXNW5MRnh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxNaUJoY3lCMWJtdHViM2R1SUdGeklITjBjbWx1WjF4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ1kyRnpaU0JjSW01MWJXSmxjbHdpT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjF3WVhKbFRuVnRZbVZ5Y3loY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRFZ1lYTWdkVzVyYm05M2JpQmhjeUJ1ZFcxaVpYSXNYRzRnSUNBZ0lDQWdJQ0FnZG1Gc2RXVXlJR0Z6SUhWdWEyNXZkMjRnWVhNZ2JuVnRZbVZ5WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCallYTmxJRndpWW1sbmFXNTBYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiWEJoY21WQ2FXZEpiblJ6S0Z4dUlDQWdJQ0FnSUNBZ0lIWmhiSFZsTVNCaGN5QjFibXR1YjNkdUlHRnpJR0pwWjJsdWRDeGNiaUFnSUNBZ0lDQWdJQ0IyWVd4MVpUSWdZWE1nZFc1cmJtOTNiaUJoY3lCaWFXZHBiblJjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUdOaGMyVWdYQ0ppYjI5c1pXRnVYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiWEJoY21WQ2IyOXNaV0Z1Y3loY2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRFZ1lYTWdkVzVyYm05M2JpQmhjeUJpYjI5c1pXRnVMRnh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxNaUJoY3lCMWJtdHViM2R1SUdGeklHSnZiMnhsWVc1Y2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lHTmhjMlVnWENKa1lYUmxYQ0k2WEc0Z0lDQWdJQ0JqWVhObElGd2liMkpxWldOMFhDSTZYRzRnSUNBZ0lDQWdJR2xtSUNoMllXeDFaVEVnYVc1emRHRnVZMlZ2WmlCRVlYUmxJQ1ltSUhaaGJIVmxNaUJwYm5OMFlXNWpaVzltSUVSaGRHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjF3WVhKbFJHRjBaWE1vZG1Gc2RXVXhJR0Z6SUVSaGRHVXNJSFpoYkhWbE1pQmhjeUJFWVhSbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvY205M0lHNWxkeUJSZFdWeWVVVnljbTl5S0dCemIzSjBhVzVuSUc1dmRDQnpkWEJ3YjNKMFpXUWdabTl5SUhSNWNHVWdKSHR5WlhOdmJIWmxaRlI1Y0dWOVlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiWEJoY21WeklIUjNieUJpYjI5c1pXRnVJSFpoYkhWbGMxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SURBZ2QyaGxiaUJsY1hWaGJDd2dNU0IzYUdWdUlHQmhZQ0JwY3lCMGNuVmxMQ0F0TVNCdmRHaGxjbmRwYzJWY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXRjR0Z5WlVKdmIyeGxZVzV6S0dFNklHSnZiMnhsWVc0c0lHSTZJR0p2YjJ4bFlXNHBPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCaElEMDlQU0JpSUQ4Z01DQTZJR0VnUHlBeElEb2dMVEU3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52YlhCaGNtVnpJSFIzYnlCdWRXMWxjbWxqSUhaaGJIVmxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlGUm9aU0J1ZFcxbGNtbGpJR1JwWm1abGNtVnVZMlVnWW1WMGQyVmxiaUIwYUdVZ2RtRnNkV1Z6WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdOdmJYQmhjbVZPZFcxaVpYSnpLR0U2SUc1MWJXSmxjaXdnWWpvZ2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdZU0F0SUdJN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJYQmhjbVZ6SUhSM2J5QmlhV2RwYm5RZ2RtRnNkV1Z6WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdNQ0IzYUdWdUlHVnhkV0ZzTENBeElIZG9aVzRnWUdGZ0lHbHpJR2R5WldGMFpYSXNJQzB4SUc5MGFHVnlkMmx6WlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCamIyMXdZWEpsUW1sblNXNTBjeWhoT2lCaWFXZHBiblFzSUdJNklHSnBaMmx1ZENrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tHRWdQVDA5SUdJcElISmxkSFZ5YmlBd08xeHVJQ0FnSUhKbGRIVnliaUJoSUQ0Z1lpQS9JREVnT2lBdE1UdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1EyOXRjR0Z5WlhNZ2RIZHZJSE4wY21sdVozTWdkWE5wYm1jZ2JHOWpZV3hsTFdGM1lYSmxJRzl5WkdWeWFXNW5YRzRnSUNBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ1ZHaGxJR3h2WTJGc1pTQmpiMjF3WVhKbElISmxjM1ZzZENCaVpYUjNaV1Z1SUhSb1pTQjJZV3gxWlhOY2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXRjR0Z5WlZOMGNtbHVaM01vWVRvZ2MzUnlhVzVuTENCaU9pQnpkSEpwYm1jcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUJoTG14dlkyRnNaVU52YlhCaGNtVW9ZaWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRU52YlhCaGNtVnpJSFIzYnlCa1lYUmxjeUJpZVNCMGFHVnBjaUJsY0c5amFDQjBhVzFsYzNSaGJYQnpYRzRnSUNBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ1ZHaGxJR1JwWm1abGNtVnVZMlVnWW1WMGQyVmxiaUIwYUdVZ2RHbHRaWE4wWVcxd2MxeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmpiMjF3WVhKbFJHRjBaWE1vWVRvZ1JHRjBaU3dnWWpvZ1JHRjBaU2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlHRXVkbUZzZFdWUFppZ3BJQzBnWWk1MllXeDFaVTltS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVKMWFXeGtjeUJoSUZKbFpHbHpJSEYxWlhKNUlHWnliMjBnZEdobElITjBZWFJsYldWdWRGeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRGIyNTJaWEowY3lCMGFHVWdjM1JoZEdWdFpXNTBKM01nYzJWc1pXTjBiM0p6SUdGdVpDQmpiMjVrYVhScGIyNXpJR2x1ZEc4Z1lTQlNZWGRTWldScGMxRjFaWEo1SUc5aWFtVmpkRnh1SUNBZ0tpQjBhR0YwSUdOaGJpQmlaU0JsZUdWamRYUmxaQ0JpZVNCMGFHVWdVbVZrYVhNZ1lXUmhjSFJsY2k0Z1ZHaHBjeUJ0WlhSb2IyUWdZWE56WlcxaWJHVnpJR0ZzYkNCeGRXVnllU0JqYjIxd2IyNWxiblJ6WEc0Z0lDQXFJQ2h6Wld4bFkzUXNJR1p5YjIwc0lIZG9aWEpsTENCc2FXMXBkQ3dnYjJabWMyVjBMQ0J6YjNKMEtTQnBiblJ2SUhSb1pTQm1hVzVoYkNCeGRXVnllU0J6ZEhKMVkzUjFjbVV1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMUpoZDFKbFpHbHpVWFZsY25rOFRUNTlJRlJvWlNCamIyNXpkSEoxWTNSbFpDQlNaV1JwY3lCeGRXVnllU0J2WW1wbFkzUmNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JpZFdsc1pDZ3BPaUJTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbTFwYmxObGJHVmpkRzl5S1Z4dUlDQWdJQ0FnZEdocGN5NWxibk4xY21WT2RXMWlaWEpQY2tSaGRHVlRaV3hsWTNSdmNpaDBhR2x6TG0xcGJsTmxiR1ZqZEc5eUxDQmNJazFKVGlCdmNHVnlZWFJwYjI1Y0lpazdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJXRjRVMlZzWldOMGIzSXBYRzRnSUNBZ0lDQjBhR2x6TG1WdWMzVnlaVTUxYldKbGNrOXlSR0YwWlZObGJHVmpkRzl5S0hSb2FYTXViV0Y0VTJWc1pXTjBiM0lzSUZ3aVRVRllJRzl3WlhKaGRHbHZibHdpS1R0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZFcxVFpXeGxZM1J2Y2lsY2JpQWdJQ0FnSUhSb2FYTXVaVzV6ZFhKbFRuVnRaWEpwWTFObGJHVmpkRzl5S0hSb2FYTXVjM1Z0VTJWc1pXTjBiM0lzSUZ3aVUxVk5JRzl3WlhKaGRHbHZibHdpS1R0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVoZG1kVFpXeGxZM1J2Y2lsY2JpQWdJQ0FnSUhSb2FYTXVaVzV6ZFhKbFRuVnRZbVZ5VDNKRVlYUmxVMlZzWldOMGIzSW9kR2hwY3k1aGRtZFRaV3hsWTNSdmNpd2dYQ0pCVmtjZ2IzQmxjbUYwYVc5dVhDSXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwT2lCU1lYZFNaV1JwYzFGMVpYSjVQRTArSUQwZ2UxeHVJQ0FnSUNBZ2MyVnNaV04wT2lCMGFHbHpMbk5sYkdWamRGTmxiR1ZqZEc5eUxGeHVJQ0FnSUNBZ1puSnZiVG9nZEdocGN5NW1jbTl0VTJWc1pXTjBiM0lzWEc0Z0lDQWdJQ0IzYUdWeVpUb2dkR2hwY3k1M2FHVnlaVU52Ym1ScGRHbHZibHh1SUNBZ0lDQWdJQ0EvSUhSb2FYTXVjR0Z5YzJWRGIyNWthWFJwYjI0b2RHaHBjeTUzYUdWeVpVTnZibVJwZEdsdmJpa3VkMmhsY21WY2JpQWdJQ0FnSUNBZ09pQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjV2TFhWdWRYTmxaQzEyWVhKelhHNGdJQ0FnSUNBZ0lDQWdLR1ZzT2lCTktTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2JHbHRhWFE2SUhSb2FYTXViR2x0YVhSVFpXeGxZM1J2Y2l4Y2JpQWdJQ0FnSUhOcmFYQTZJSFJvYVhNdWIyWm1jMlYwVTJWc1pXTjBiM0lzWEc0Z0lDQWdJQ0JuY205MWNFSjVPaUIwYUdsekxtZHliM1Z3UW5sVFpXeGxZM1J2Y25Nc1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RHaHBjeTVqYjNWdWRGTmxiR1ZqZEc5eUlDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQnlaWE4xYkhRdVkyOTFiblFnUFNCMGFHbHpMbU52ZFc1MFUyVnNaV04wYjNJN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTI5MWJuUkVhWE4wYVc1amRGTmxiR1ZqZEc5eUtTQnlaWE4xYkhRdVkyOTFiblJFYVhOMGFXNWpkQ0E5SUhSb2FYTXVZMjkxYm5SRWFYTjBhVzVqZEZObGJHVmpkRzl5TzF4dUlDQWdJR2xtSUNoMGFHbHpMbTFwYmxObGJHVmpkRzl5S1NCeVpYTjFiSFF1YldsdUlEMGdkR2hwY3k1dGFXNVRaV3hsWTNSdmNqdGNiaUFnSUNCcFppQW9kR2hwY3k1dFlYaFRaV3hsWTNSdmNpa2djbVZ6ZFd4MExtMWhlQ0E5SUhSb2FYTXViV0Y0VTJWc1pXTjBiM0k3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjM1Z0VTJWc1pXTjBiM0lwSUhKbGMzVnNkQzV6ZFcwZ1BTQjBhR2x6TG5OMWJWTmxiR1ZqZEc5eU8xeHVJQ0FnSUdsbUlDaDBhR2x6TG1GMloxTmxiR1ZqZEc5eUtTQnlaWE4xYkhRdVlYWm5JRDBnZEdocGN5NWhkbWRUWld4bFkzUnZjanRjYmlBZ0lDQnBaaUFvZEdocGN5NWthWE4wYVc1amRGTmxiR1ZqZEc5eUtTQnlaWE4xYkhRdVpHbHpkR2x1WTNRZ1BTQjBhR2x6TG1ScGMzUnBibU4wVTJWc1pXTjBiM0k3WEc0Z0lDQWdhV1lnS0hSb2FYTXViM0prWlhKQ2VWTmxiR1ZqZEc5eWN6OHViR1Z1WjNSb0tTQnlaWE4xYkhRdWMyOXlkQ0E5SUhSb2FYTXVaMlYwVTI5eWRDZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFFnWVhNZ1VtRjNVbVZrYVhOUmRXVnllVHhoYm5rK08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCUVlYSnpaWE1nWVNCamIyNWthWFJwYjI0Z2FXNTBieUJoSUZKbFpHbHpJSEYxWlhKNUlIQnlaV1JwWTJGMFpWeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCRGIyNTJaWEowY3lCaElFTnZibVJwZEdsdmJpQnZZbXBsWTNRZ2FXNTBieUJoSUhCeVpXUnBZMkYwWlNCbWRXNWpkR2x2YmlCMGFHRjBJR05oYmlCaVpTQjFjMlZrWEc0Z0lDQXFJSFJ2SUdacGJIUmxjaUJ0YjJSbGJDQnBibk4wWVc1alpYTWdhVzRnYldWdGIzSjVMaUJVYUdseklHMWxkR2h2WkNCb1lXNWtiR1Z6SUdKdmRHZ2djMmx0Y0d4bElHTnZibVJwZEdsdmJuTmNiaUFnSUNvZ0tHVnhkV0ZzY3l3Z1ozSmxZWFJsY2lCMGFHRnVMQ0JsZEdNdUtTQmhibVFnWTI5dGNHeGxlQ0JqYjI1a2FYUnBiMjV6SUhkcGRHZ2diRzluYVdOaGJDQnZjR1Z5WVhSdmNuTWdLRUZPUkN3Z1QxSXBMbHh1SUNBZ0tpQkFkR1Z0Y0d4aGRHVWdUU0F0SUZSb1pTQnRiMlJsYkNCMGVYQmxJR1p2Y2lCMGFHVWdZMjl1WkdsMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN1EyOXVaR2wwYVc5dVBFMCtmU0JqYjI1a2FYUnBiMjRnTFNCVWFHVWdZMjl1WkdsMGFXOXVJSFJ2SUhCaGNuTmxYRzRnSUNBcUlFQnlaWFIxY200Z2UxSmhkMUpsWkdselVYVmxjbms4VFQ1OUlFRWdVbVZrYVhNZ2NYVmxjbmtnYjJKcVpXTjBJSGRwZEdnZ1lTQjNhR1Z5WlNCd2NtVmthV05oZEdVZ1puVnVZM1JwYjI1Y2JpQWdJQ29nUUcxbGNtMWhhV1JjYmlBZ0lDb2djMlZ4ZFdWdVkyVkVhV0ZuY21GdFhHNGdJQ0FxSUNBZ2NHRnlkR2xqYVhCaGJuUWdRMkZzYkdWeVhHNGdJQ0FxSUNBZ2NHRnlkR2xqYVhCaGJuUWdVbVZrYVhOVGRHRjBaVzFsYm5SY2JpQWdJQ29nSUNCd1lYSjBhV05wY0dGdWRDQlRhVzF3YkdWRGIyNWthWFJwYjI1Y2JpQWdJQ29nSUNCd1lYSjBhV05wY0dGdWRDQkRiMjF3YkdWNFEyOXVaR2wwYVc5dVhHNGdJQ0FxWEc0Z0lDQXFJQ0FnUTJGc2JHVnlMVDQrVW1Wa2FYTlRkR0YwWlcxbGJuUTZJSEJoY25ObFEyOXVaR2wwYVc5dUtHTnZibVJwZEdsdmJpbGNiaUFnSUNvZ0lDQmhiSFFnVTJsdGNHeGxJR052Ym1ScGRHbHZiaUFvWlhFc0lHZDBMQ0JzZEN3Z1pYUmpMaWxjYmlBZ0lDb2dJQ0FnSUZKbFpHbHpVM1JoZEdWdFpXNTBMVDQrVTJsdGNHeGxRMjl1WkdsMGFXOXVPaUJGZUhSeVlXTjBJR0YwZEhJeExDQnZjR1Z5WVhSdmNpd2dZMjl0Y0dGeWFYTnZibHh1SUNBZ0tpQWdJQ0FnVTJsdGNHeGxRMjl1WkdsMGFXOXVMUzArUGxKbFpHbHpVM1JoZEdWdFpXNTBPaUJTWlhSMWNtNGdjSEpsWkdsallYUmxJR1oxYm1OMGFXOXVYRzRnSUNBcUlDQWdaV3h6WlNCTWIyZHBZMkZzSUc5d1pYSmhkRzl5SUNoQlRrUXNJRTlTS1Z4dUlDQWdLaUFnSUNBZ1VtVmthWE5UZEdGMFpXMWxiblF0UGo1RGIyMXdiR1Y0UTI5dVpHbDBhVzl1T2lCRmVIUnlZV04wSUc1bGMzUmxaQ0JqYjI1a2FYUnBiMjV6WEc0Z0lDQXFJQ0FnSUNCU1pXUnBjMU4wWVhSbGJXVnVkQzArUGxKbFpHbHpVM1JoZEdWdFpXNTBPaUJ3WVhKelpVTnZibVJwZEdsdmJpaHNaV1owUTI5dVpHbDBhVzl1S1Z4dUlDQWdLaUFnSUNBZ1VtVmthWE5UZEdGMFpXMWxiblF0UGo1U1pXUnBjMU4wWVhSbGJXVnVkRG9nY0dGeWMyVkRiMjVrYVhScGIyNG9jbWxuYUhSRGIyNWthWFJwYjI0cFhHNGdJQ0FxSUNBZ0lDQkRiMjF3YkdWNFEyOXVaR2wwYVc5dUxTMCtQbEpsWkdselUzUmhkR1Z0Wlc1ME9pQkRiMjFpYVc1bElIQnlaV1JwWTJGMFpYTWdkMmwwYUNCc2IyZHBZMkZzSUc5d1pYSmhkRzl5WEc0Z0lDQXFJQ0FnWlc1a1hHNGdJQ0FxSUNBZ1VtVmthWE5UZEdGMFpXMWxiblF0TFQ0K1EyRnNiR1Z5T2lCU1pYUjFjbTRnY1hWbGNua2dkMmwwYUNCM2FHVnlaU0J3Y21Wa2FXTmhkR1ZjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCd1lYSnpaVU52Ym1ScGRHbHZiaWhqYjI1a2FYUnBiMjQ2SUVOdmJtUnBkR2x2Ymp4TlBpazZJRkpoZDFKbFpHbHpVWFZsY25rOFlXNTVQaUI3WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lIZG9aWEpsT2lBb2JUb2dUVzlrWld3cElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdleUJoZEhSeU1Td2diM0JsY21GMGIzSXNJR052YlhCaGNtbHpiMjRnZlNBOUlHTnZibVJwZEdsdmJpQmhjeUIxYm10dWIzZHVJR0Z6SUh0Y2JpQWdJQ0FnSUNBZ0lDQmhkSFJ5TVRvZ2MzUnlhVzVuSUh3Z1EyOXVaR2wwYVc5dVBFMCtPMXh1SUNBZ0lDQWdJQ0FnSUc5d1pYSmhkRzl5T2lCUGNHVnlZWFJ2Y2lCOElFZHliM1Z3VDNCbGNtRjBiM0k3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXRjR0Z5YVhOdmJqb2dZVzU1TzF4dUlDQWdJQ0FnSUNCOU8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ0lDQmJSM0p2ZFhCUGNHVnlZWFJ2Y2k1QlRrUXNJRWR5YjNWd1QzQmxjbUYwYjNJdVQxSXNJRTl3WlhKaGRHOXlMazVQVkYwdWFXNWtaWGhQWmloY2JpQWdJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHOXlJR0Z6SUVkeWIzVndUM0JsY21GMGIzSmNiaUFnSUNBZ0lDQWdJQ0FwSUQwOVBTQXRNVnh1SUNBZ0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tHOXdaWEpoZEc5eUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRTl3WlhKaGRHOXlMa0pKUjBkRlVqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxYllYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXeGRJRDRnWTI5dGNHRnlhWE52Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1QzQmxjbUYwYjNJdVFrbEhSMFZTWDBWUk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMGdQajBnWTI5dGNHRnlhWE52Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1QzQmxjbUYwYjNJdVJFbEdSa1ZTUlU1VU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMGdJVDA5SUdOdmJYQmhjbWx6YjI0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElFOXdaWEpoZEc5eUxrVlJWVUZNT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiVnRoZEhSeU1TQmhjeUJyWlhsdlppQk5iMlJsYkYwZ1BUMDlJR052YlhCaGNtbHpiMjQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUU5d1pYSmhkRzl5TGxKRlIwVllVRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ0VzJGMGRISXhJR0Z6SUd0bGVXOW1JRTF2WkdWc1hTQWhQVDBnWENKemRISnBibWRjSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VYVmxjbmxGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JKYm5aaGJHbGtJSEpsWjJWNGNDQmpiMjF3WVhKcGMyOXVJRzl1SUdFZ2JtOXVJSE4wY21sdVp5QmhkSFJ5YVdKMWRHVTZJQ1I3YlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMTlZRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQWhJU2h0VzJGMGRISXhJR0Z6SUd0bGVXOW1JRTF2WkdWc1hTQmhjeUIxYm10dWIzZHVJR0Z6SUhOMGNtbHVaeWt1YldGMFkyZ29YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibVYzSUZKbFowVjRjQ2hqYjIxd1lYSnBjMjl1TENCY0ltZGNJaWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnVDNCbGNtRjBiM0l1VTFSQlVsUlRYMWRKVkVnNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWVhSMGNpQTlJR0YwZEhJeElHRnpJR3RsZVc5bUlFMXZaR1ZzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmhkSFJ5VG1GdFpTQTlJR0YwZEhJZ1lYTWdjM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JoZEhSeVZtRnNkV1VnUFNCdFcyRjBkSEpkSUdGeklIVnVhMjV2ZDI0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lYUjBjbFpoYkhWbElDRTlQU0JjSW5OMGNtbHVaMXdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGRjFaWEo1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JnU1c1MllXeHBaQ0J6ZEdGeWRITlhhWFJvSUdOdmJYQmhjbWx6YjI0Z2IyNGdZU0J1YjI0Z2MzUnlhVzVuSUdGMGRISnBZblYwWlNCY0lpUjdZWFIwY2s1aGJXVjlYQ0pnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJYQmhjbWx6YjI0Z0lUMDlJRndpYzNSeWFXNW5YQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VYVmxjbmxGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JUVkVGU1ZGTmZWMGxVU0NCdmNHVnlZWFJ2Y2lCeVpYRjFhWEpsY3lCaElITjBjbWx1WnlCamIyMXdZWEpwYzI5dUxDQm5iM1FnSkh0MGVYQmxiMllnWTI5dGNHRnlhWE52Ym4xZ1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0dGMGRISldZV3gxWlNCaGN5QnpkSEpwYm1jcExuTjBZWEowYzFkcGRHZ29ZMjl0Y0dGeWFYTnZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRTl3WlhKaGRHOXlMa1ZPUkZOZlYwbFVTRG9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmhkSFJ5SUQwZ1lYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXdzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdGMGRISk9ZVzFsSUQwZ1lYUjBjaUJoY3lCemRISnBibWM3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHRjBkSEpXWVd4MVpTQTlJRzFiWVhSMGNsMGdZWE1nZFc1cmJtOTNianRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJoZEhSeVZtRnNkV1VnSVQwOUlGd2ljM1J5YVc1blhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVVhWbGNubEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQkpiblpoYkdsa0lHVnVaSE5YYVhSb0lHTnZiWEJoY21semIyNGdiMjRnWVNCdWIyNGdjM1J5YVc1bklHRjBkSEpwWW5WMFpTQmNJaVI3WVhSMGNrNWhiV1Y5WENKZ1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHTnZiWEJoY21semIyNGdJVDA5SUZ3aWMzUnlhVzVuWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dVWFZsY25sRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdCRlRrUlRYMWRKVkVnZ2IzQmxjbUYwYjNJZ2NtVnhkV2x5WlhNZ1lTQnpkSEpwYm1jZ1kyOXRjR0Z5YVhOdmJpd2daMjkwSUNSN2RIbHdaVzltSUdOdmJYQmhjbWx6YjI1OVlGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoaGRIUnlWbUZzZFdVZ1lYTWdjM1J5YVc1bktTNWxibVJ6VjJsMGFDaGpiMjF3WVhKcGMyOXVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdUM0JsY21GMGIzSXVVMDFCVEV4RlVqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxYllYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXeGRJRHdnWTI5dGNHRnlhWE52Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1QzQmxjbUYwYjNJdVUwMUJURXhGVWw5RlVUcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxYllYUjBjakVnWVhNZ2EyVjViMllnVFc5a1pXeGRJRHc5SUdOdmJYQmhjbWx6YjI0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElFOXdaWEpoZEc5eUxrbE9PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVVGeWNtRjVMbWx6UVhKeVlYa29ZMjl0Y0dGeWFYTnZiaWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZGMVpYSjVSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmdTVTRnYjNCbGNtRjBiM0lnY21WeGRXbHlaWE1nWVc0Z1lYSnlZWGtzSUdkdmREb2dKSHQwZVhCbGIyWWdZMjl0Y0dGeWFYTnZibjFnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR052YlhCaGNtbHpiMjR1YVc1amJIVmtaWE1vYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JQY0dWeVlYUnZjaTVDUlZSWFJVVk9PaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFFYSnlZWGt1YVhOQmNuSmhlU2hqYjIxd1lYSnBjMjl1S1NCOGZDQmpiMjF3WVhKcGMyOXVMbXhsYm1kMGFDQWhQVDBnTWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VYVmxjbmxGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JDUlZSWFJVVk9JRzl3WlhKaGRHOXlJSEpsY1hWcGNtVnpJR0Z1SUdGeWNtRjVJSGRwZEdnZ01pQjJZV3gxWlhNZ1cyMXBiaXdnYldGNFhTd2daMjkwT2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjF3WVhKcGMyOXVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwZldCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JoZEhSeUlEMGdZWFIwY2pFZ1lYTWdhMlY1YjJZZ1RXOWtaV3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHRjBkSEpPWVcxbElEMGdZWFIwY2lCaGN5QnpkSEpwYm1jN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR0YwZEhKVWVYQmxJRDBnZEdocGN5NWtaWFJsY20xcGJtVkJkSFJ5YVdKMWRHVlVlWEJsS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcwdVkyOXVjM1J5ZFdOMGIzSWdZWE1nUTI5dWMzUnlkV04wYjNJOFRXOWtaV3crTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGMGRISk9ZVzFsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ3aVFrVlVWMFZGVGx3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hkR2hwY3k1cGMwNTFiV1Z5YVdOVWVYQmxLR0YwZEhKVWVYQmxLU0FtSmlCaGRIUnlWSGx3WlNBaFBUMGdYQ0prWVhSbFhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVVhWbGNubEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQkNSVlJYUlVWT0lHOXdaWEpoZEc5eUlISmxjWFZwY21WeklHNTFiV1Z5YVdNZ2IzSWdaR0YwWlNCaGRIUnlhV0oxZEdWekxDQmlkWFFnWENJa2UyRjBkSEpPWVcxbGZWd2lJR2x6SUNSN1lYUjBjbFI1Y0dVZ2ZIeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWENKMWJtdHViM2R1WENKOVlGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnVzIxcGJpd2diV0Y0WFNBOUlHTnZiWEJoY21semIyNDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhaaGJIVmxJRDBnYlZ0aGRIUnlYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyOXRjR0Z5WVdKc1pWWmhiSFZsSUQwZ2RHaHBjeTUwYjBOdmJYQmhjbUZpYkdWV1lXeDFaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhkSFJ5Vkhsd1pTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhkSFJ5VG1GdFpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmNJa0pGVkZkRlJVNWNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I3SUdGc2JHOTNUblZzYkRvZ2RISjFaU0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyMXdZWEpoWW14bFZtRnNkV1VnUFQwOUlHNTFiR3dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldsdVEyOXRjR0Z5WVdKc1pTQTlJSFJvYVhNdWRHOURiMjF3WVhKaFlteGxWbUZzZFdVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXbHVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKVWVYQmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKT1lXMWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpUWtWVVYwVkZUaUJ0YVc1Y0lseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBcElUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldGNFEyOXRjR0Z5WVdKc1pTQTlJSFJvYVhNdWRHOURiMjF3WVhKaFlteGxWbUZzZFdVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXRjRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKVWVYQmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0YwZEhKT1lXMWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpUWtWVVYwVkZUaUJ0WVhoY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBcElUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyMXdZWEpoWW14bFZtRnNkV1VnUGowZ2JXbHVRMjl0Y0dGeVlXSnNaU0FtSmlCamIyMXdZWEpoWW14bFZtRnNkV1VnUEQwZ2JXRjRRMjl0Y0dGeVlXSnNaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQlBjR1Z5WVhSdmNpNUZXRWxUVkZNNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY0hKbGMyVnVkQ0E5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYlZ0aGRIUnlNU0JoY3lCclpYbHZaaUJOYjJSbGJGMGdJVDA5SUhWdVpHVm1hVzVsWkNBbUpseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWJZWFIwY2pFZ1lYTWdhMlY1YjJZZ1RXOWtaV3hkSUNFOVBTQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMjl0Y0dGeWFYTnZiaUE5UFQwZ1ptRnNjMlVnUHlBaGNISmxjMlZ1ZENBNklIQnlaWE5sYm5RN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JnU1c1MllXeHBaQ0J2Y0dWeVlYUnZjaUJtYjNJZ2MzUmhibVJoY21RZ1kyOXRjR0Z5YVhOdmJuTTZJQ1I3YjNCbGNtRjBiM0o5WUZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h2Y0dWeVlYUnZjaUE5UFQwZ1QzQmxjbUYwYjNJdVRrOVVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLQ0VvWVhSMGNqRWdhVzV6ZEdGdVkyVnZaaUJEYjI1a2FYUnBiMjRwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1hDSk9UMVFnYjNCbGNtRjBiM0lnY21WeGRXbHlaWE1nWVNCdVpYTjBaV1FnWTI5dVpHbDBhVzl1SUhSdklHNWxaMkYwWlZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnVaWE4wWldRZ1BTQjBhR2x6TG5CaGNuTmxRMjl1WkdsMGFXOXVLR0YwZEhJeElHRnpJRU52Ym1ScGRHbHZianhOUGlrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDRnVaWE4wWldRdWQyaGxjbVVvYlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2IzQXhPaUJTWVhkU1pXUnBjMUYxWlhKNVBHRnVlVDRnUFNCMGFHbHpMbkJoY25ObFEyOXVaR2wwYVc5dUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWVhSMGNqRWdZWE1nUTI5dVpHbDBhVzl1UEUwK1hHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J2Y0RJNklGSmhkMUpsWkdselVYVmxjbms4WVc1NVBpQTlJSFJvYVhNdWNHRnljMlZEYjI1a2FYUnBiMjRvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjF3WVhKcGMyOXVJR0Z6SUVOdmJtUnBkR2x2Ymp4TlBseHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2MzZHBkR05vSUNodmNHVnlZWFJ2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQkhjbTkxY0U5d1pYSmhkRzl5TGtGT1JEcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5d01TNTNhR1Z5WlNodEtTQW1KaUJ2Y0RJdWQyaGxjbVVvYlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElFZHliM1Z3VDNCbGNtRjBiM0l1VDFJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ2Y0RFdWQyaGxjbVVvYlNrZ2ZId2diM0F5TG5kb1pYSmxLRzBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkR1Z5Ym1Gc1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWUVsdWRtRnNhV1FnYjNCbGNtRjBiM0lnWm05eUlFRnVaQzlQY2lCamIyMXdZWEpwYzI5dWN6b2dKSHR2Y0dWeVlYUnZjbjFnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lIMGdZWE1nVW1GM1VtVmthWE5SZFdWeWVUeGhibmsrTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJXWVd4cFpHRjBaWE1nZEdoaGRDQmhiaUJoWjJkeVpXZGhkR2x2YmlCelpXeGxZM1J2Y2lCMFlYSm5aWFJ6SUdFZ2JuVnRaWEpwWXlCaGRIUnlhV0oxZEdWY2JpQWdJQ29nUUhCaGNtRnRJSHRUWld4bFkzUlRaV3hsWTNSdmNqeE5QbjBnYzJWc1pXTjBiM0lnTFNCVWFHVWdZWFIwY21saWRYUmxJSE5sYkdWamRHOXlJSFJ2SUhaaGJHbGtZWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmpiMjUwWlhoMElDMGdWR2hsSUdGblozSmxaMkYwYVc5dUlHTnZiblJsZUhRZ2RYTmxaQ0JwYmlCbGNuSnZjaUJ0WlhOellXZGxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdDJiMmxrZlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCbGJuTjFjbVZPZFcxbGNtbGpVMlZzWldOMGIzSW9YRzRnSUNBZ2MyVnNaV04wYjNJNklGTmxiR1ZqZEZObGJHVmpkRzl5UEUwK0xGeHVJQ0FnSUdOdmJuUmxlSFE2SUhOMGNtbHVaMXh1SUNBcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxtVnVjM1Z5WlZObGJHVmpkRzl5Vkhsd1pTaGNiaUFnSUNBZ0lITmxiR1ZqZEc5eUxGeHVJQ0FnSUNBZ1kyOXVkR1Y0ZEN4Y2JpQWdJQ0FnSUNoMGVYQmxLU0E5UGlCMGFHbHpMbWx6VG5WdFpYSnBZMVI1Y0dVb2RIbHdaU2tzWEc0Z0lDQWdJQ0JjSW01MWJXVnlhV05jSWx4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRlpoYkdsa1lYUmxjeUIwYUdGMElHRnVJR0ZuWjNKbFoyRjBhVzl1SUhObGJHVmpkRzl5SUhSaGNtZGxkSE1nWVNCdWRXMWxjbWxqSUc5eUlHUmhkR1VnWVhSMGNtbGlkWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVMlZzWldOMFUyVnNaV04wYjNJOFRUNTlJSE5sYkdWamRHOXlJQzBnVkdobElHRjBkSEpwWW5WMFpTQnpaV3hsWTNSdmNpQjBieUIyWVd4cFpHRjBaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1kyOXVkR1Y0ZENBdElGUm9aU0JoWjJkeVpXZGhkR2x2YmlCamIyNTBaWGgwSUhWelpXUWdhVzRnWlhKeWIzSWdiV1Z6YzJGblpYTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2RtOXBaSDFjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWlc1emRYSmxUblZ0WW1WeVQzSkVZWFJsVTJWc1pXTjBiM0lvWEc0Z0lDQWdjMlZzWldOMGIzSTZJRk5sYkdWamRGTmxiR1ZqZEc5eVBFMCtMRnh1SUNBZ0lHTnZiblJsZUhRNklITjBjbWx1WjF4dUlDQXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbVZ1YzNWeVpWTmxiR1ZqZEc5eVZIbHdaU2hjYmlBZ0lDQWdJSE5sYkdWamRHOXlMRnh1SUNBZ0lDQWdZMjl1ZEdWNGRDeGNiaUFnSUNBZ0lDaDBlWEJsS1NBOVBpQjBhR2x6TG1selRuVnRaWEpwWTFSNWNHVW9kSGx3WlNrZ2ZId2dkSGx3WlNBOVBUMGdYQ0prWVhSbFhDSXNYRzRnSUNBZ0lDQmNJbTUxYldWeWFXTWdiM0lnWkdGMFpWd2lYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1ZtRnNhV1JoZEdWeklIUm9ZWFFnWVNCelpXeGxZM1J2Y2lkeklHRjBkSEpwWW5WMFpTQjBlWEJsSUhOaGRHbHpabWxsY3lCaElIQnlaV1JwWTJGMFpWeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCU1pYTnZiSFpsY3lCMGFHVWdZWFIwY21saWRYUmxJSFI1Y0dVZ1puSnZiU0IwYUdVZ2JXOWtaV3dnYldWMFlXUmhkR0VnWVc1a0lISmhhWE5sY3lCaFhHNGdJQ0FxSUdCUmRXVnllVVZ5Y205eVlDQjNhR1Z1SUhSb1pTQjBlWEJsSUdSdlpYTWdibTkwSUcxaGRHTm9JSFJvWlNCbGVIQmxZM1JsWkNCcmFXNWtMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxTmxiR1ZqZEZObGJHVmpkRzl5UEUwK2ZTQnpaV3hsWTNSdmNpQXRJRlJvWlNCaGRIUnlhV0oxZEdVZ2MyVnNaV04wYjNJZ2RHOGdkbUZzYVdSaGRHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdOdmJuUmxlSFFnTFNCVWFHVWdZV2RuY21WbllYUnBiMjRnWTI5dWRHVjRkQ0IxYzJWa0lHbHVJR1Z5Y205eUlHMWxjM05oWjJWelhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjRvYzNSeWFXNW5LVG9nWW05dmJHVmhibjBnY0hKbFpHbGpZWFJsSUMwZ1ZIbHdaU0JoWTJObGNIUmhibU5sSUhCeVpXUnBZMkYwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdaR1Z6WTNKcGNIUnBiMjRnTFNCSWRXMWhiaUJ5WldGa1lXSnNaU0JrWlhOamNtbHdkR2x2YmlCdlppQjBhR1VnWVdOalpYQjBaV1FnZEhsd1pYTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2RtOXBaSDFjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWlc1emRYSmxVMlZzWldOMGIzSlVlWEJsS0Z4dUlDQWdJSE5sYkdWamRHOXlPaUJUWld4bFkzUlRaV3hsWTNSdmNqeE5QaXhjYmlBZ0lDQmpiMjUwWlhoME9pQnpkSEpwYm1jc1hHNGdJQ0FnY0hKbFpHbGpZWFJsT2lBb2RIbHdaVG9nYzNSeWFXNW5LU0E5UGlCaWIyOXNaV0Z1TEZ4dUlDQWdJR1JsYzJOeWFYQjBhVzl1T2lCemRISnBibWRjYmlBZ0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtWnliMjFUWld4bFkzUnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0FrZTJOdmJuUmxlSFI5SUhKbGNYVnBjbVZ6SUdFZ2RHRnlaMlYwSUcxdlpHVnNMaUJEWVd4c0lHWnliMjBvS1NCaVpXWnZjbVVnWVdkbmNtVm5ZWFJwYm1jdVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdZWFIwY2lBOUlITmxiR1ZqZEc5eUlHRnpJSE4wY21sdVp6dGNiaUFnSUNCamIyNXpkQ0IwZVhCbElEMGdkR2hwY3k1a1pYUmxjbTFwYm1WQmRIUnlhV0oxZEdWVWVYQmxLRnh1SUNBZ0lDQWdkR2hwY3k1bWNtOXRVMlZzWldOMGIzSXNYRzRnSUNBZ0lDQmhkSFJ5SUdGeklHdGxlVzltSUUxdlpHVnNQR1poYkhObFBpeGNiaUFnSUNBZ0lHTnZiblJsZUhSY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnYVdZZ0tDRndjbVZrYVdOaGRHVW9kSGx3WlNrcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnSkh0amIyNTBaWGgwZlNCeVpYRjFhWEpsY3lCaElDUjdaR1Z6WTNKcGNIUnBiMjU5SUdGMGRISnBZblYwWlN3Z1luVjBJRndpSkh0aGRIUnlmVndpSUdseklDUjdkSGx3WlNCOGZDQmNJblZ1YTI1dmQyNWNJbjFnWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVbVZ6YjJ4MlpYTWdkR2hsSUdGMGRISnBZblYwWlNCMGVYQmxJR1p5YjIwZ2RHaGxJRzF2WkdWc0lHMWxkR0ZrWVhSaFhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbFlXUnpJSFJvWlNCdFpYUmhaR0YwWVNCdmNpQmtaWE5wWjI0Z2RIbHdaU0J2WmlCMGFHVWdZWFIwY21saWRYUmxJR0Z1WkNCdWIzSnRZV3hwZW1WeklHbDBYRzRnSUNBcUlIUnZJR0VnYkc5M1pYSmpZWE5sSUhSNWNHVWdibUZ0WlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHREYjI1emRISjFZM1J2Y2p4TmIyUmxiRDU5SUdOc1lYcDZJQzBnVkdobElHMXZaR1ZzSUdOdmJuTjBjblZqZEc5eVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JoZEhSeUlDMGdWR2hsSUdGMGRISnBZblYwWlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCamIyNTBaWGgwSUMwZ1ZHaGxJR052Ym5SbGVIUWdkWE5sWkNCcGJpQmxjbkp2Y2lCdFpYTnpZV2RsYzF4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRlJvWlNCdWIzSnRZV3hwZW1Wa0lHRjBkSEpwWW5WMFpTQjBlWEJsWEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdSbGRHVnliV2x1WlVGMGRISnBZblYwWlZSNWNHVW9YRzRnSUNBZ1kyeGhlbm82SUVOdmJuTjBjblZqZEc5eVBFMXZaR1ZzUGl4Y2JpQWdJQ0JoZEhSeU9pQnpkSEpwYm1jc1hHNGdJQ0FnWTI5dWRHVjRkRG9nYzNSeWFXNW5YRzRnSUNrNklITjBjbWx1WnlCN1hHNGdJQ0FnWTI5dWMzUWdjSEp2Y0V0bGVTQTlJR0YwZEhJZ1lYTWdhMlY1YjJZZ1RXOWtaV3c4Wm1Gc2MyVStPMXh1SUNBZ0lHTnZibk4wSUcxbGRHRlVlWEJsSUQxY2JpQWdJQ0FnSUUxbGRHRmtZWFJoTG5SNWNHVW9ZMnhoZW5vc0lIQnliM0JMWlhrcElEOC9YRzRnSUNBZ0lDQk5aWFJoWkdGMFlTNW5aWFJRY205d1JHVnphV2R1Vkhsd1pYTW9ZMnhoZW5vc0lIQnliM0JMWlhrcFB5NWtaWE5wWjI1VWVYQmxPMXh1SUNBZ0lHTnZibk4wSUhKbGMyOXNkbVZrSUQwZ2RHaHBjeTV1YjNKdFlXeHBlbVZOWlhSaFZIbHdaU2h0WlhSaFZIbHdaU2s3WEc0Z0lDQWdhV1lnS0NGeVpYTnZiSFpsWkNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGRjFaWEo1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0FrZTJOdmJuUmxlSFI5SUdOdmRXeGtJRzV2ZENCeVpYTnZiSFpsSUhCeWIzQmxjblI1SUhSNWNHVWdabTl5SUZ3aUpIdGhkSFJ5ZlZ3aVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVmtPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQk9iM0p0WVd4cGVtVnpJR0VnY21GM0lHMWxkR0ZrWVhSaElIUjVjR1VnZEc4Z1lTQnNiM2RsY21OaGMyVWdkSGx3WlNCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCN1lXNTVmU0J0WlhSaFZIbHdaU0F0SUZSb1pTQnlZWGNnYldWMFlXUmhkR0VnZEhsd1pTQjJZV3gxWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1I5SUZSb1pTQnViM0p0WVd4cGVtVmtJSFI1Y0dVZ2JtRnRaU3dnZDJobGJpQnlaWE52YkhaaFlteGxYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJRzV2Y20xaGJHbDZaVTFsZEdGVWVYQmxLRzFsZEdGVWVYQmxPaUJoYm5rcE9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lHbG1JQ2doYldWMFlWUjVjR1VwSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ0WlhSaFZIbHdaU0E5UFQwZ1hDSnpkSEpwYm1kY0lpa2djbVYwZFhKdUlHMWxkR0ZVZVhCbExuUnZURzkzWlhKRFlYTmxLQ2s3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ0WlhSaFZIbHdaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUcxbGRHRlVlWEJsTG01aGJXVXBYRzRnSUNBZ0lDQnlaWFIxY200Z2JXVjBZVlI1Y0dVdWJtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRmRvWlhSb1pYSWdkR2hsSUdkcGRtVnVJSFI1Y0dVZ2JtRnRaU0JwY3lCaElHNTFiV1Z5YVdNZ2RIbHdaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1czUjVjR1ZkSUMwZ1ZHaGxJRzV2Y20xaGJHbDZaV1FnZEhsd1pTQnVZVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ1ptOXlJRndpYm5WdFltVnlYQ0lnWVc1a0lGd2lZbWxuYVc1MFhDSmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdhWE5PZFcxbGNtbGpWSGx3WlNoMGVYQmxQem9nYzNSeWFXNW5LVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUjVjR1VnUFQwOUlGd2liblZ0WW1WeVhDSWdmSHdnZEhsd1pTQTlQVDBnWENKaWFXZHBiblJjSWp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTI5dWRtVnlkSE1nWVNCMllXeDFaU0IwYnlCaElHNTFiV1Z5YVdNZ1kyOXRjR0Z5WVdKc1pTQjJZV3gxWlZ4dUlDQWdLaUJBYzNWdGJXRnllU0JOWVhCeklHUmhkR1VzSUc1MWJXSmxjaUJoYm1RZ1ltbG5hVzUwSUhaaGJIVmxjeUIwYnlCdWRXMWlaWEp6SUdadmNpQmpiMjF3WVhKcGMyOXVJR0Z1WkZ4dUlDQWdLaUJ5WVdselpYTWdZU0JnVVhWbGNubEZjbkp2Y21BZ1ptOXlJRzFwYzNOcGJtY2diM0lnYVc1amIyMXdZWFJwWW14bElIWmhiSFZsY3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWmhiSFZsSUMwZ1ZHaGxJSFpoYkhWbElIUnZJR052Ym5abGNuUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdGMGRISlVlWEJsSUMwZ1ZHaGxJRzV2Y20xaGJHbDZaV1FnWVhSMGNtbGlkWFJsSUhSNWNHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdGMGRISk9ZVzFsSUMwZ1ZHaGxJR0YwZEhKcFluVjBaU0J1WVcxbElIVnpaV1FnYVc0Z1pYSnliM0lnYldWemMyRm5aWE5jYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTnZiblJsZUhRZ0xTQlVhR1VnWTI5dWRHVjRkQ0IxYzJWa0lHbHVJR1Z5Y205eUlHMWxjM05oWjJWelhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0JiYjNCMGFXOXVjMTBnTFNCRGIyNTJaWEp6YVc5dUlHOXdkR2x2Ym5OY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGFXOXVjeTVoYkd4dmQwNTFiR3hkSUMwZ1YyaGxkR2hsY2lCdWRXeHNMM1Z1WkdWbWFXNWxaQ0IyWVd4MVpYTWdjbVYwZFhKdUlHNTFiR3dnYVc1emRHVmhaQ0J2WmlCeVlXbHphVzVuWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNpQjhJRzUxYkd4OUlGUm9aU0J1ZFcxbGNtbGpJR052YlhCaGNtRmliR1VnZG1Gc2RXVmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdkRzlEYjIxd1lYSmhZbXhsVm1Gc2RXVW9YRzRnSUNBZ2RtRnNkV1U2SUdGdWVTeGNiaUFnSUNCaGRIUnlWSGx3WlRvZ2MzUnlhVzVuTEZ4dUlDQWdJR0YwZEhKT1lXMWxPaUJ6ZEhKcGJtY3NYRzRnSUNBZ1kyOXVkR1Y0ZERvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUI3SUdGc2JHOTNUblZzYkQ4NklHSnZiMnhsWVc0Z2ZWeHVJQ0FwT2lCdWRXMWlaWElnZkNCdWRXeHNJSHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0c5d2RHbHZibk0vTG1Gc2JHOTNUblZzYkNrZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dVWFZsY25sRmNuSnZjaWhnSkh0amIyNTBaWGgwZlNCeVpYRjFhWEpsY3lCaElIWmhiSFZsSUdadmNpQmNJaVI3WVhSMGNrNWhiV1Y5WENKZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnYzNkcGRHTm9JQ2hoZEhSeVZIbHdaU2tnZTF4dUlDQWdJQ0FnWTJGelpTQmNJbVJoZEdWY0lqcGNiaUFnSUNBZ0lDQWdhV1lnS0NFb2RtRnNkV1VnYVc1emRHRnVZMlZ2WmlCRVlYUmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ1lDUjdZMjl1ZEdWNGRIMGdiMjRnWkdGMFpTQmhkSFJ5YVdKMWRHVWdYQ0lrZTJGMGRISk9ZVzFsZlZ3aUlISmxjWFZwY21WeklFUmhkR1VnZG1Gc2RXVnpZRnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiSFZsTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUdOaGMyVWdYQ0p1ZFcxaVpYSmNJanBjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMllXeDFaU0FoUFQwZ1hDSnVkVzFpWlhKY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCUmRXVnllVVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWUNSN1kyOXVkR1Y0ZEgwZ2IyNGdiblZ0WlhKcFl5QmhkSFJ5YVdKMWRHVWdYQ0lrZTJGMGRISk9ZVzFsZlZ3aUlISmxjWFZwY21WeklHNTFiV0psY2lCMllXeDFaWE5nWEc0Z0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVN1hHNGdJQ0FnSUNCallYTmxJRndpWW1sbmFXNTBYQ0k2WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlGd2liblZ0WW1WeVhDSXBJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdYQ0ppYVdkcGJuUmNJaWtnY21WMGRYSnVJRTUxYldKbGNpaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlJkV1Z5ZVVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUdBa2UyTnZiblJsZUhSOUlHOXVJR0pwWjJsdWRDQmhkSFJ5YVdKMWRHVWdYQ0lrZTJGMGRISk9ZVzFsZlZ3aUlISmxjWFZwY21WeklHNTFiV1Z5YVdNZ2RtRnNkV1Z6WUZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGRjFaWEo1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnWUNSN1kyOXVkR1Y0ZEgwZ2RXNXpkWEJ3YjNKMFpXUWdkSGx3WlNCY0lpUjdZWFIwY2xSNWNHVjlYQ0lnWm05eUlHRjBkSEpwWW5WMFpTQmNJaVI3WVhSMGNrNWhiV1Y5WENKZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNGlYWDA9Il19