@decaf-ts/for-fabric 0.11.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/dist/for-fabric.cjs +3797 -2
  2. package/dist/for-fabric.js +3901 -2
  3. package/lib/cjs/bin/cli.cjs +2 -2
  4. package/lib/cjs/cli-module.cjs +28 -3
  5. package/lib/cjs/cli-utils.cjs +2 -2
  6. package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
  7. package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
  8. package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
  9. package/lib/cjs/client/FabricClientRepository.cjs +2 -2
  10. package/lib/cjs/client/FabricClientStatement.cjs +2 -2
  11. package/lib/cjs/client/collections/generation.cjs +2 -2
  12. package/lib/cjs/client/collections/index.cjs +2 -2
  13. package/lib/cjs/client/constants.cjs +2 -2
  14. package/lib/cjs/client/crypto.cjs +2 -2
  15. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
  16. package/lib/cjs/client/erc20/index.cjs +2 -2
  17. package/lib/cjs/client/fabric-fs.cjs +2 -2
  18. package/lib/cjs/client/fabric-hsm.cjs +2 -2
  19. package/lib/cjs/client/ids/id-extraction.cjs +2 -2
  20. package/lib/cjs/client/ids/index.cjs +2 -2
  21. package/lib/cjs/client/index.cjs +2 -2
  22. package/lib/cjs/client/indexes/generation.cjs +2 -2
  23. package/lib/cjs/client/indexes/index.cjs +2 -2
  24. package/lib/cjs/client/logging.cjs +2 -2
  25. package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
  26. package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
  27. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
  28. package/lib/cjs/client/services/constants.cjs +2 -2
  29. package/lib/cjs/client/services/index.cjs +2 -2
  30. package/lib/cjs/client/types.cjs +2 -2
  31. package/lib/cjs/client/utils.cjs +2 -2
  32. package/lib/cjs/contract/Address.cjs +2 -2
  33. package/lib/cjs/contract/AddressContract.cjs +2 -2
  34. package/lib/cjs/contract/AuditContract.cjs +2 -2
  35. package/lib/cjs/contract/BatchContract.cjs +2 -2
  36. package/lib/cjs/contract/MarketContract.cjs +2 -2
  37. package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
  38. package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
  39. package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
  40. package/lib/cjs/contract/OtherProductContract.cjs +2 -2
  41. package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
  42. package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
  43. package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
  44. package/lib/cjs/contract/Product.cjs +2 -2
  45. package/lib/cjs/contract/ProductContract.cjs +2 -2
  46. package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
  47. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
  48. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
  49. package/lib/cjs/contract/User.cjs +2 -2
  50. package/lib/cjs/contract/UserContract.cjs +2 -2
  51. package/lib/cjs/contract/index.cjs +2 -2
  52. package/lib/cjs/contract/logging-context.cjs +2 -2
  53. package/lib/cjs/contract/models/Audit.cjs +2 -2
  54. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
  55. package/lib/cjs/contract/models/BaseModel.cjs +2 -2
  56. package/lib/cjs/contract/models/Batch.cjs +2 -2
  57. package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
  58. package/lib/cjs/contract/models/History.cjs +2 -2
  59. package/lib/cjs/contract/models/Leaflet.cjs +2 -2
  60. package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
  61. package/lib/cjs/contract/models/Market.cjs +2 -2
  62. package/lib/cjs/contract/models/OtherAudit.cjs +2 -2
  63. package/lib/cjs/contract/models/OtherBatchShared.cjs +2 -2
  64. package/lib/cjs/contract/models/OtherLeaflet.cjs +2 -2
  65. package/lib/cjs/contract/models/OtherLeafletFile.cjs +2 -2
  66. package/lib/cjs/contract/models/OtherMarket.cjs +2 -2
  67. package/lib/cjs/contract/models/OtherProduct.cjs +2 -2
  68. package/lib/cjs/contract/models/OtherProductImage.cjs +2 -2
  69. package/lib/cjs/contract/models/OtherProductShared.cjs +2 -2
  70. package/lib/cjs/contract/models/OtherProductStrength.cjs +2 -2
  71. package/lib/cjs/contract/models/Product.cjs +2 -2
  72. package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
  73. package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
  74. package/lib/cjs/contract/models/constants.cjs +2 -2
  75. package/lib/cjs/contract/models/decorators-private.cjs +2 -2
  76. package/lib/cjs/contract/models/decorators.cjs +2 -2
  77. package/lib/cjs/contract/models/gtin.cjs +2 -2
  78. package/lib/cjs/contract/models/history-dec.cjs +2 -2
  79. package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
  80. package/lib/cjs/contracts/ContractContext.cjs +2 -2
  81. package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
  82. package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
  83. package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
  84. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
  85. package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
  86. package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
  87. package/lib/cjs/contracts/MigrationContract.cjs +2 -2
  88. package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
  89. package/lib/cjs/contracts/auth/decorators.cjs +2 -2
  90. package/lib/cjs/contracts/auth/index.cjs +2 -2
  91. package/lib/cjs/contracts/crud/crud-contract.cjs +2 -2
  92. package/lib/cjs/contracts/crud/index.cjs +2 -2
  93. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
  94. package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
  95. package/lib/cjs/contracts/erc20/index.cjs +2 -2
  96. package/lib/cjs/contracts/erc20/models.cjs +2 -2
  97. package/lib/cjs/contracts/index.cjs +2 -2
  98. package/lib/cjs/contracts/logging.cjs +2 -2
  99. package/lib/cjs/contracts/overrides.cjs +2 -2
  100. package/lib/cjs/contracts/types.cjs +2 -2
  101. package/lib/cjs/contracts/uuid.cjs +2 -2
  102. package/lib/cjs/index.cjs +2 -2
  103. package/lib/cjs/shared/ClientSerializer.cjs +2 -2
  104. package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
  105. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
  106. package/lib/cjs/shared/constants.cjs +2 -2
  107. package/lib/cjs/shared/decorators.cjs +2 -2
  108. package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
  109. package/lib/cjs/shared/erc20/index.cjs +2 -2
  110. package/lib/cjs/shared/errors.cjs +2 -2
  111. package/lib/cjs/shared/events.cjs +2 -2
  112. package/lib/cjs/shared/fabric-types.cjs +2 -2
  113. package/lib/cjs/shared/index.cjs +2 -2
  114. package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
  115. package/lib/cjs/shared/interfaces/index.cjs +2 -2
  116. package/lib/cjs/shared/math.cjs +2 -2
  117. package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
  118. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
  119. package/lib/cjs/shared/model/Identity.cjs +2 -2
  120. package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
  121. package/lib/cjs/shared/model/index.cjs +2 -2
  122. package/lib/cjs/shared/overrides/Model.cjs +2 -2
  123. package/lib/cjs/shared/overrides/index.cjs +2 -2
  124. package/lib/cjs/shared/overrides/overrides.cjs +2 -2
  125. package/lib/cjs/shared/types.cjs +2 -2
  126. package/lib/cjs/version.cjs +3 -3
  127. package/lib/esm/bin/cli.js +1 -1
  128. package/lib/esm/cli-module.js +27 -2
  129. package/lib/esm/cli-utils.js +1 -1
  130. package/lib/esm/client/FabricClientAdapter.js +1 -1
  131. package/lib/esm/client/FabricClientDispatch.js +1 -1
  132. package/lib/esm/client/FabricClientPaginator.js +1 -1
  133. package/lib/esm/client/FabricClientRepository.js +1 -1
  134. package/lib/esm/client/FabricClientStatement.js +1 -1
  135. package/lib/esm/client/collections/generation.js +1 -1
  136. package/lib/esm/client/collections/index.js +1 -1
  137. package/lib/esm/client/constants.js +1 -1
  138. package/lib/esm/client/crypto.js +1 -1
  139. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  140. package/lib/esm/client/erc20/index.js +1 -1
  141. package/lib/esm/client/fabric-fs.js +1 -1
  142. package/lib/esm/client/fabric-hsm.js +1 -1
  143. package/lib/esm/client/ids/id-extraction.js +1 -1
  144. package/lib/esm/client/ids/index.js +1 -1
  145. package/lib/esm/client/index.js +1 -1
  146. package/lib/esm/client/indexes/generation.js +1 -1
  147. package/lib/esm/client/indexes/index.js +1 -1
  148. package/lib/esm/client/logging.js +1 -1
  149. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  150. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  151. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  152. package/lib/esm/client/services/constants.js +1 -1
  153. package/lib/esm/client/services/index.js +1 -1
  154. package/lib/esm/client/types.js +1 -1
  155. package/lib/esm/client/utils.js +1 -1
  156. package/lib/esm/contract/Address.js +1 -1
  157. package/lib/esm/contract/AddressContract.js +1 -1
  158. package/lib/esm/contract/AuditContract.js +1 -1
  159. package/lib/esm/contract/BatchContract.js +1 -1
  160. package/lib/esm/contract/MarketContract.js +1 -1
  161. package/lib/esm/contract/OtherAuditContract.js +1 -1
  162. package/lib/esm/contract/OtherBatchContract.js +1 -1
  163. package/lib/esm/contract/OtherMarketContract.js +1 -1
  164. package/lib/esm/contract/OtherProductContract.js +1 -1
  165. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  166. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  167. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  168. package/lib/esm/contract/Product.js +1 -1
  169. package/lib/esm/contract/ProductContract.js +1 -1
  170. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  171. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  172. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  173. package/lib/esm/contract/User.js +1 -1
  174. package/lib/esm/contract/UserContract.js +1 -1
  175. package/lib/esm/contract/index.js +1 -1
  176. package/lib/esm/contract/logging-context.js +1 -1
  177. package/lib/esm/contract/models/Audit.js +1 -1
  178. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  179. package/lib/esm/contract/models/BaseModel.js +1 -1
  180. package/lib/esm/contract/models/Batch.js +1 -1
  181. package/lib/esm/contract/models/GtinOwner.js +1 -1
  182. package/lib/esm/contract/models/History.js +1 -1
  183. package/lib/esm/contract/models/Leaflet.js +1 -1
  184. package/lib/esm/contract/models/LeafletFile.js +1 -1
  185. package/lib/esm/contract/models/Market.js +1 -1
  186. package/lib/esm/contract/models/OtherAudit.js +1 -1
  187. package/lib/esm/contract/models/OtherBatchShared.js +1 -1
  188. package/lib/esm/contract/models/OtherLeaflet.js +1 -1
  189. package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
  190. package/lib/esm/contract/models/OtherMarket.js +1 -1
  191. package/lib/esm/contract/models/OtherProduct.js +1 -1
  192. package/lib/esm/contract/models/OtherProductImage.js +1 -1
  193. package/lib/esm/contract/models/OtherProductShared.js +1 -1
  194. package/lib/esm/contract/models/OtherProductStrength.js +1 -1
  195. package/lib/esm/contract/models/Product.js +1 -1
  196. package/lib/esm/contract/models/ProductStrength.js +1 -1
  197. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  198. package/lib/esm/contract/models/constants.js +1 -1
  199. package/lib/esm/contract/models/decorators-private.js +1 -1
  200. package/lib/esm/contract/models/decorators.js +1 -1
  201. package/lib/esm/contract/models/gtin.js +1 -1
  202. package/lib/esm/contract/models/history-dec.js +1 -1
  203. package/lib/esm/contracts/ContractAdapter.js +1 -1
  204. package/lib/esm/contracts/ContractContext.js +1 -1
  205. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  206. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  207. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  208. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  209. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  210. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  211. package/lib/esm/contracts/MigrationContract.js +1 -1
  212. package/lib/esm/contracts/PrivateSequence.js +1 -1
  213. package/lib/esm/contracts/auth/decorators.js +1 -1
  214. package/lib/esm/contracts/auth/index.js +1 -1
  215. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  216. package/lib/esm/contracts/crud/index.js +1 -1
  217. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  218. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  219. package/lib/esm/contracts/erc20/index.js +1 -1
  220. package/lib/esm/contracts/erc20/models.js +1 -1
  221. package/lib/esm/contracts/index.js +1 -1
  222. package/lib/esm/contracts/logging.js +1 -1
  223. package/lib/esm/contracts/overrides.js +1 -1
  224. package/lib/esm/contracts/types.js +1 -1
  225. package/lib/esm/contracts/uuid.js +1 -1
  226. package/lib/esm/index.js +1 -1
  227. package/lib/esm/shared/ClientSerializer.js +1 -1
  228. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  229. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  230. package/lib/esm/shared/constants.js +1 -1
  231. package/lib/esm/shared/decorators.js +1 -1
  232. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  233. package/lib/esm/shared/erc20/index.js +1 -1
  234. package/lib/esm/shared/errors.js +1 -1
  235. package/lib/esm/shared/events.js +1 -1
  236. package/lib/esm/shared/fabric-types.js +1 -1
  237. package/lib/esm/shared/index.js +1 -1
  238. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  239. package/lib/esm/shared/interfaces/index.js +1 -1
  240. package/lib/esm/shared/math.js +1 -1
  241. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  242. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  243. package/lib/esm/shared/model/Identity.js +1 -1
  244. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  245. package/lib/esm/shared/model/index.js +1 -1
  246. package/lib/esm/shared/overrides/Model.js +1 -1
  247. package/lib/esm/shared/overrides/index.js +1 -1
  248. package/lib/esm/shared/overrides/overrides.js +1 -1
  249. package/lib/esm/shared/types.js +1 -1
  250. package/lib/esm/version.js +2 -2
  251. package/lib/types/client/FabricClientAdapter.d.cts +3 -3
  252. package/lib/types/client/FabricClientAdapter.d.mts +3 -3
  253. package/lib/types/client/FabricClientDispatch.d.cts +2 -2
  254. package/lib/types/client/FabricClientDispatch.d.mts +2 -2
  255. package/lib/types/client/FabricClientPaginator.d.cts +1 -1
  256. package/lib/types/client/FabricClientPaginator.d.mts +1 -1
  257. package/lib/types/client/FabricClientRepository.d.cts +1 -1
  258. package/lib/types/client/FabricClientRepository.d.mts +1 -1
  259. package/lib/types/client/FabricClientStatement.d.cts +2 -2
  260. package/lib/types/client/FabricClientStatement.d.mts +2 -2
  261. package/lib/types/client/collections/index.d.cts +1 -1
  262. package/lib/types/client/collections/index.d.mts +1 -1
  263. package/lib/types/client/constants.d.cts +1 -1
  264. package/lib/types/client/constants.d.mts +1 -1
  265. package/lib/types/client/erc20/FabricERC20ClientRepository.d.cts +3 -3
  266. package/lib/types/client/erc20/FabricERC20ClientRepository.d.mts +3 -3
  267. package/lib/types/client/erc20/index.d.cts +1 -1
  268. package/lib/types/client/erc20/index.d.mts +1 -1
  269. package/lib/types/client/ids/index.d.cts +1 -1
  270. package/lib/types/client/ids/index.d.mts +1 -1
  271. package/lib/types/client/index.d.cts +14 -14
  272. package/lib/types/client/index.d.mts +14 -14
  273. package/lib/types/client/indexes/index.d.cts +1 -1
  274. package/lib/types/client/indexes/index.d.mts +1 -1
  275. package/lib/types/client/services/FabricEnrollmentService.d.cts +4 -4
  276. package/lib/types/client/services/FabricEnrollmentService.d.mts +4 -4
  277. package/lib/types/client/services/FabricIdentityService.d.cts +5 -5
  278. package/lib/types/client/services/FabricIdentityService.d.mts +5 -5
  279. package/lib/types/client/services/RegistrationRequestBuilder.d.cts +1 -1
  280. package/lib/types/client/services/RegistrationRequestBuilder.d.mts +1 -1
  281. package/lib/types/client/services/index.d.cts +4 -4
  282. package/lib/types/client/services/index.d.mts +4 -4
  283. package/lib/types/client/types.d.cts +1 -1
  284. package/lib/types/client/types.d.mts +1 -1
  285. package/lib/types/client/utils.d.cts +1 -1
  286. package/lib/types/client/utils.d.mts +1 -1
  287. package/lib/types/contract/AddressContract.d.cts +2 -2
  288. package/lib/types/contract/AddressContract.d.mts +2 -2
  289. package/lib/types/contract/AuditContract.d.cts +2 -2
  290. package/lib/types/contract/AuditContract.d.mts +2 -2
  291. package/lib/types/contract/BatchContract.d.cts +2 -2
  292. package/lib/types/contract/BatchContract.d.mts +2 -2
  293. package/lib/types/contract/MarketContract.d.cts +2 -2
  294. package/lib/types/contract/MarketContract.d.mts +2 -2
  295. package/lib/types/contract/OtherAuditContract.d.cts +2 -2
  296. package/lib/types/contract/OtherAuditContract.d.mts +2 -2
  297. package/lib/types/contract/OtherBatchContract.d.cts +2 -2
  298. package/lib/types/contract/OtherBatchContract.d.mts +2 -2
  299. package/lib/types/contract/OtherMarketContract.d.cts +2 -2
  300. package/lib/types/contract/OtherMarketContract.d.mts +2 -2
  301. package/lib/types/contract/OtherProductContract.d.cts +2 -2
  302. package/lib/types/contract/OtherProductContract.d.mts +2 -2
  303. package/lib/types/contract/OtherProductImageContract.d.cts +2 -2
  304. package/lib/types/contract/OtherProductImageContract.d.mts +2 -2
  305. package/lib/types/contract/OtherProductSharedContract.d.cts +2 -2
  306. package/lib/types/contract/OtherProductSharedContract.d.mts +2 -2
  307. package/lib/types/contract/OtherProductStrengthContract.d.cts +2 -2
  308. package/lib/types/contract/OtherProductStrengthContract.d.mts +2 -2
  309. package/lib/types/contract/Product.d.cts +1 -1
  310. package/lib/types/contract/Product.d.mts +1 -1
  311. package/lib/types/contract/ProductContract.d.cts +2 -2
  312. package/lib/types/contract/ProductContract.d.mts +2 -2
  313. package/lib/types/contract/ProductStrengthContract.d.cts +2 -2
  314. package/lib/types/contract/ProductStrengthContract.d.mts +2 -2
  315. package/lib/types/contract/SegregatedPrivateDocumentContract.d.cts +2 -2
  316. package/lib/types/contract/SegregatedPrivateDocumentContract.d.mts +2 -2
  317. package/lib/types/contract/SegregatedSharedDocumentContract.d.cts +2 -2
  318. package/lib/types/contract/SegregatedSharedDocumentContract.d.mts +2 -2
  319. package/lib/types/contract/UserContract.d.cts +2 -2
  320. package/lib/types/contract/UserContract.d.mts +2 -2
  321. package/lib/types/contract/models/Audit.d.cts +2 -2
  322. package/lib/types/contract/models/Audit.d.mts +2 -2
  323. package/lib/types/contract/models/BaseIdentifiedModel.d.cts +1 -1
  324. package/lib/types/contract/models/BaseIdentifiedModel.d.mts +1 -1
  325. package/lib/types/contract/models/Batch.d.cts +1 -1
  326. package/lib/types/contract/models/Batch.d.mts +1 -1
  327. package/lib/types/contract/models/GtinOwner.d.cts +1 -1
  328. package/lib/types/contract/models/GtinOwner.d.mts +1 -1
  329. package/lib/types/contract/models/Leaflet.d.cts +1 -1
  330. package/lib/types/contract/models/Leaflet.d.mts +1 -1
  331. package/lib/types/contract/models/LeafletFile.d.cts +1 -1
  332. package/lib/types/contract/models/LeafletFile.d.mts +1 -1
  333. package/lib/types/contract/models/Market.d.cts +1 -1
  334. package/lib/types/contract/models/Market.d.mts +1 -1
  335. package/lib/types/contract/models/OtherAudit.d.cts +2 -2
  336. package/lib/types/contract/models/OtherAudit.d.mts +2 -2
  337. package/lib/types/contract/models/OtherBatchShared.d.cts +1 -1
  338. package/lib/types/contract/models/OtherBatchShared.d.mts +1 -1
  339. package/lib/types/contract/models/OtherLeaflet.d.cts +2 -2
  340. package/lib/types/contract/models/OtherLeaflet.d.mts +2 -2
  341. package/lib/types/contract/models/OtherLeafletFile.d.cts +1 -1
  342. package/lib/types/contract/models/OtherLeafletFile.d.mts +1 -1
  343. package/lib/types/contract/models/OtherMarket.d.cts +1 -1
  344. package/lib/types/contract/models/OtherMarket.d.mts +1 -1
  345. package/lib/types/contract/models/OtherProduct.d.cts +1 -1
  346. package/lib/types/contract/models/OtherProduct.d.mts +1 -1
  347. package/lib/types/contract/models/OtherProductImage.d.cts +1 -1
  348. package/lib/types/contract/models/OtherProductImage.d.mts +1 -1
  349. package/lib/types/contract/models/OtherProductShared.d.cts +4 -4
  350. package/lib/types/contract/models/OtherProductShared.d.mts +4 -4
  351. package/lib/types/contract/models/OtherProductStrength.d.cts +1 -1
  352. package/lib/types/contract/models/OtherProductStrength.d.mts +1 -1
  353. package/lib/types/contract/models/Product.d.cts +3 -3
  354. package/lib/types/contract/models/Product.d.mts +3 -3
  355. package/lib/types/contract/models/ProductStrength.d.cts +1 -1
  356. package/lib/types/contract/models/ProductStrength.d.mts +1 -1
  357. package/lib/types/contract/models/SegregatedDocument.d.cts +1 -1
  358. package/lib/types/contract/models/SegregatedDocument.d.mts +1 -1
  359. package/lib/types/contract/models/decorators-private.d.cts +2 -2
  360. package/lib/types/contract/models/decorators-private.d.mts +2 -2
  361. package/lib/types/contract/models/decorators.d.cts +2 -2
  362. package/lib/types/contract/models/decorators.d.mts +2 -2
  363. package/lib/types/contract/models/history-dec.d.cts +1 -1
  364. package/lib/types/contract/models/history-dec.d.mts +1 -1
  365. package/lib/types/contracts/ContractAdapter.d.cts +5 -5
  366. package/lib/types/contracts/ContractAdapter.d.mts +5 -5
  367. package/lib/types/contracts/ContractContext.d.cts +1 -1
  368. package/lib/types/contracts/ContractContext.d.mts +1 -1
  369. package/lib/types/contracts/FabricContractDispatch.d.cts +2 -2
  370. package/lib/types/contracts/FabricContractDispatch.d.mts +2 -2
  371. package/lib/types/contracts/FabricContractPaginator.d.cts +1 -1
  372. package/lib/types/contracts/FabricContractPaginator.d.mts +1 -1
  373. package/lib/types/contracts/FabricContractRepository.d.cts +3 -3
  374. package/lib/types/contracts/FabricContractRepository.d.mts +3 -3
  375. package/lib/types/contracts/FabricContractRepositoryObservableHandler.d.cts +1 -1
  376. package/lib/types/contracts/FabricContractRepositoryObservableHandler.d.mts +1 -1
  377. package/lib/types/contracts/FabricContractStatement.d.cts +1 -1
  378. package/lib/types/contracts/FabricContractStatement.d.mts +1 -1
  379. package/lib/types/contracts/MigrationContract.d.cts +3 -3
  380. package/lib/types/contracts/MigrationContract.d.mts +3 -3
  381. package/lib/types/contracts/auth/index.d.cts +1 -1
  382. package/lib/types/contracts/auth/index.d.mts +1 -1
  383. package/lib/types/contracts/crud/crud-contract.d.cts +5 -5
  384. package/lib/types/contracts/crud/crud-contract.d.mts +5 -5
  385. package/lib/types/contracts/crud/index.d.cts +2 -2
  386. package/lib/types/contracts/crud/index.d.mts +2 -2
  387. package/lib/types/contracts/crud/serialized-crud-contract.d.cts +1 -1
  388. package/lib/types/contracts/crud/serialized-crud-contract.d.mts +1 -1
  389. package/lib/types/contracts/erc20/erc20contract.d.cts +3 -3
  390. package/lib/types/contracts/erc20/erc20contract.d.mts +3 -3
  391. package/lib/types/contracts/erc20/index.d.cts +1 -1
  392. package/lib/types/contracts/erc20/index.d.mts +1 -1
  393. package/lib/types/contracts/index.d.cts +13 -13
  394. package/lib/types/contracts/index.d.mts +13 -13
  395. package/lib/types/contracts/types.d.cts +1 -1
  396. package/lib/types/contracts/types.d.mts +1 -1
  397. package/lib/types/index.d.cts +3 -3
  398. package/lib/types/index.d.mts +3 -3
  399. package/lib/types/shared/decorators.d.cts +3 -3
  400. package/lib/types/shared/decorators.d.mts +3 -3
  401. package/lib/types/shared/erc20/index.d.cts +1 -1
  402. package/lib/types/shared/erc20/index.d.mts +1 -1
  403. package/lib/types/shared/index.d.cts +14 -14
  404. package/lib/types/shared/index.d.mts +14 -14
  405. package/lib/types/shared/interfaces/index.d.cts +1 -1
  406. package/lib/types/shared/interfaces/index.d.mts +1 -1
  407. package/lib/types/shared/model/FabricIdentifiedBaseModel.d.cts +1 -1
  408. package/lib/types/shared/model/FabricIdentifiedBaseModel.d.mts +1 -1
  409. package/lib/types/shared/model/Identity.d.cts +2 -2
  410. package/lib/types/shared/model/Identity.d.mts +2 -2
  411. package/lib/types/shared/model/index.d.cts +4 -4
  412. package/lib/types/shared/model/index.d.mts +4 -4
  413. package/lib/types/shared/overrides/Model.d.cts +2 -2
  414. package/lib/types/shared/overrides/Model.d.mts +2 -2
  415. package/lib/types/shared/overrides/index.d.cts +2 -2
  416. package/lib/types/shared/overrides/index.d.mts +2 -2
  417. package/lib/types/version.d.cts +1 -1
  418. package/lib/types/version.d.mts +1 -1
  419. package/package.json +7 -7
  420. package/dist/for-fabric.cjs.map +0 -1
  421. package/dist/for-fabric.js.map +0 -1
  422. package/lib/cjs/bin/cli.cjs.map +0 -1
  423. package/lib/cjs/cli-module.cjs.map +0 -1
  424. package/lib/cjs/cli-utils.cjs.map +0 -1
  425. package/lib/cjs/client/FabricClientAdapter.cjs.map +0 -1
  426. package/lib/cjs/client/FabricClientDispatch.cjs.map +0 -1
  427. package/lib/cjs/client/FabricClientPaginator.cjs.map +0 -1
  428. package/lib/cjs/client/FabricClientRepository.cjs.map +0 -1
  429. package/lib/cjs/client/FabricClientStatement.cjs.map +0 -1
  430. package/lib/cjs/client/collections/generation.cjs.map +0 -1
  431. package/lib/cjs/client/collections/index.cjs.map +0 -1
  432. package/lib/cjs/client/constants.cjs.map +0 -1
  433. package/lib/cjs/client/crypto.cjs.map +0 -1
  434. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +0 -1
  435. package/lib/cjs/client/erc20/index.cjs.map +0 -1
  436. package/lib/cjs/client/fabric-fs.cjs.map +0 -1
  437. package/lib/cjs/client/fabric-hsm.cjs.map +0 -1
  438. package/lib/cjs/client/ids/id-extraction.cjs.map +0 -1
  439. package/lib/cjs/client/ids/index.cjs.map +0 -1
  440. package/lib/cjs/client/index.cjs.map +0 -1
  441. package/lib/cjs/client/indexes/generation.cjs.map +0 -1
  442. package/lib/cjs/client/indexes/index.cjs.map +0 -1
  443. package/lib/cjs/client/logging.cjs.map +0 -1
  444. package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +0 -1
  445. package/lib/cjs/client/services/FabricIdentityService.cjs.map +0 -1
  446. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +0 -1
  447. package/lib/cjs/client/services/constants.cjs.map +0 -1
  448. package/lib/cjs/client/services/index.cjs.map +0 -1
  449. package/lib/cjs/client/types.cjs.map +0 -1
  450. package/lib/cjs/client/utils.cjs.map +0 -1
  451. package/lib/cjs/contract/Address.cjs.map +0 -1
  452. package/lib/cjs/contract/AddressContract.cjs.map +0 -1
  453. package/lib/cjs/contract/AuditContract.cjs.map +0 -1
  454. package/lib/cjs/contract/BatchContract.cjs.map +0 -1
  455. package/lib/cjs/contract/MarketContract.cjs.map +0 -1
  456. package/lib/cjs/contract/OtherAuditContract.cjs.map +0 -1
  457. package/lib/cjs/contract/OtherBatchContract.cjs.map +0 -1
  458. package/lib/cjs/contract/OtherMarketContract.cjs.map +0 -1
  459. package/lib/cjs/contract/OtherProductContract.cjs.map +0 -1
  460. package/lib/cjs/contract/OtherProductImageContract.cjs.map +0 -1
  461. package/lib/cjs/contract/OtherProductSharedContract.cjs.map +0 -1
  462. package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +0 -1
  463. package/lib/cjs/contract/Product.cjs.map +0 -1
  464. package/lib/cjs/contract/ProductContract.cjs.map +0 -1
  465. package/lib/cjs/contract/ProductStrengthContract.cjs.map +0 -1
  466. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +0 -1
  467. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +0 -1
  468. package/lib/cjs/contract/User.cjs.map +0 -1
  469. package/lib/cjs/contract/UserContract.cjs.map +0 -1
  470. package/lib/cjs/contract/index.cjs.map +0 -1
  471. package/lib/cjs/contract/logging-context.cjs.map +0 -1
  472. package/lib/cjs/contract/models/Audit.cjs.map +0 -1
  473. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +0 -1
  474. package/lib/cjs/contract/models/BaseModel.cjs.map +0 -1
  475. package/lib/cjs/contract/models/Batch.cjs.map +0 -1
  476. package/lib/cjs/contract/models/GtinOwner.cjs.map +0 -1
  477. package/lib/cjs/contract/models/History.cjs.map +0 -1
  478. package/lib/cjs/contract/models/Leaflet.cjs.map +0 -1
  479. package/lib/cjs/contract/models/LeafletFile.cjs.map +0 -1
  480. package/lib/cjs/contract/models/Market.cjs.map +0 -1
  481. package/lib/cjs/contract/models/OtherAudit.cjs.map +0 -1
  482. package/lib/cjs/contract/models/OtherBatchShared.cjs.map +0 -1
  483. package/lib/cjs/contract/models/OtherLeaflet.cjs.map +0 -1
  484. package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +0 -1
  485. package/lib/cjs/contract/models/OtherMarket.cjs.map +0 -1
  486. package/lib/cjs/contract/models/OtherProduct.cjs.map +0 -1
  487. package/lib/cjs/contract/models/OtherProductImage.cjs.map +0 -1
  488. package/lib/cjs/contract/models/OtherProductShared.cjs.map +0 -1
  489. package/lib/cjs/contract/models/OtherProductStrength.cjs.map +0 -1
  490. package/lib/cjs/contract/models/Product.cjs.map +0 -1
  491. package/lib/cjs/contract/models/ProductStrength.cjs.map +0 -1
  492. package/lib/cjs/contract/models/SegregatedDocument.cjs.map +0 -1
  493. package/lib/cjs/contract/models/constants.cjs.map +0 -1
  494. package/lib/cjs/contract/models/decorators-private.cjs.map +0 -1
  495. package/lib/cjs/contract/models/decorators.cjs.map +0 -1
  496. package/lib/cjs/contract/models/gtin.cjs.map +0 -1
  497. package/lib/cjs/contract/models/history-dec.cjs.map +0 -1
  498. package/lib/cjs/contracts/ContractAdapter.cjs.map +0 -1
  499. package/lib/cjs/contracts/ContractContext.cjs.map +0 -1
  500. package/lib/cjs/contracts/FabricContractDispatch.cjs.map +0 -1
  501. package/lib/cjs/contracts/FabricContractPaginator.cjs.map +0 -1
  502. package/lib/cjs/contracts/FabricContractRepository.cjs.map +0 -1
  503. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +0 -1
  504. package/lib/cjs/contracts/FabricContractSequence.cjs.map +0 -1
  505. package/lib/cjs/contracts/FabricContractStatement.cjs.map +0 -1
  506. package/lib/cjs/contracts/MigrationContract.cjs.map +0 -1
  507. package/lib/cjs/contracts/PrivateSequence.cjs.map +0 -1
  508. package/lib/cjs/contracts/auth/decorators.cjs.map +0 -1
  509. package/lib/cjs/contracts/auth/index.cjs.map +0 -1
  510. package/lib/cjs/contracts/crud/crud-contract.cjs.map +0 -1
  511. package/lib/cjs/contracts/crud/index.cjs.map +0 -1
  512. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +0 -1
  513. package/lib/cjs/contracts/erc20/erc20contract.cjs.map +0 -1
  514. package/lib/cjs/contracts/erc20/index.cjs.map +0 -1
  515. package/lib/cjs/contracts/erc20/models.cjs.map +0 -1
  516. package/lib/cjs/contracts/index.cjs.map +0 -1
  517. package/lib/cjs/contracts/logging.cjs.map +0 -1
  518. package/lib/cjs/contracts/overrides.cjs.map +0 -1
  519. package/lib/cjs/contracts/types.cjs.map +0 -1
  520. package/lib/cjs/contracts/uuid.cjs.map +0 -1
  521. package/lib/cjs/index.cjs.map +0 -1
  522. package/lib/cjs/shared/ClientSerializer.cjs.map +0 -1
  523. package/lib/cjs/shared/DeterministicSerializer.cjs.map +0 -1
  524. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +0 -1
  525. package/lib/cjs/shared/constants.cjs.map +0 -1
  526. package/lib/cjs/shared/decorators.cjs.map +0 -1
  527. package/lib/cjs/shared/erc20/erc20-constants.cjs.map +0 -1
  528. package/lib/cjs/shared/erc20/index.cjs.map +0 -1
  529. package/lib/cjs/shared/errors.cjs.map +0 -1
  530. package/lib/cjs/shared/events.cjs.map +0 -1
  531. package/lib/cjs/shared/fabric-types.cjs.map +0 -1
  532. package/lib/cjs/shared/index.cjs.map +0 -1
  533. package/lib/cjs/shared/interfaces/Checkable.cjs.map +0 -1
  534. package/lib/cjs/shared/interfaces/index.cjs.map +0 -1
  535. package/lib/cjs/shared/math.cjs.map +0 -1
  536. package/lib/cjs/shared/model/FabricBaseModel.cjs.map +0 -1
  537. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +0 -1
  538. package/lib/cjs/shared/model/Identity.cjs.map +0 -1
  539. package/lib/cjs/shared/model/IdentityCredentials.cjs.map +0 -1
  540. package/lib/cjs/shared/model/index.cjs.map +0 -1
  541. package/lib/cjs/shared/overrides/Model.cjs.map +0 -1
  542. package/lib/cjs/shared/overrides/index.cjs.map +0 -1
  543. package/lib/cjs/shared/overrides/overrides.cjs.map +0 -1
  544. package/lib/cjs/shared/types.cjs.map +0 -1
  545. package/lib/cjs/version.cjs.map +0 -1
  546. package/lib/esm/bin/cli.js.map +0 -1
  547. package/lib/esm/cli-module.js.map +0 -1
  548. package/lib/esm/cli-utils.js.map +0 -1
  549. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  550. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  551. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  552. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  553. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  554. package/lib/esm/client/collections/generation.js.map +0 -1
  555. package/lib/esm/client/collections/index.js.map +0 -1
  556. package/lib/esm/client/constants.js.map +0 -1
  557. package/lib/esm/client/crypto.js.map +0 -1
  558. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  559. package/lib/esm/client/erc20/index.js.map +0 -1
  560. package/lib/esm/client/fabric-fs.js.map +0 -1
  561. package/lib/esm/client/fabric-hsm.js.map +0 -1
  562. package/lib/esm/client/ids/id-extraction.js.map +0 -1
  563. package/lib/esm/client/ids/index.js.map +0 -1
  564. package/lib/esm/client/index.js.map +0 -1
  565. package/lib/esm/client/indexes/generation.js.map +0 -1
  566. package/lib/esm/client/indexes/index.js.map +0 -1
  567. package/lib/esm/client/logging.js.map +0 -1
  568. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  569. package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
  570. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
  571. package/lib/esm/client/services/constants.js.map +0 -1
  572. package/lib/esm/client/services/index.js.map +0 -1
  573. package/lib/esm/client/types.js.map +0 -1
  574. package/lib/esm/client/utils.js.map +0 -1
  575. package/lib/esm/contract/Address.js.map +0 -1
  576. package/lib/esm/contract/AddressContract.js.map +0 -1
  577. package/lib/esm/contract/AuditContract.js.map +0 -1
  578. package/lib/esm/contract/BatchContract.js.map +0 -1
  579. package/lib/esm/contract/MarketContract.js.map +0 -1
  580. package/lib/esm/contract/OtherAuditContract.js.map +0 -1
  581. package/lib/esm/contract/OtherBatchContract.js.map +0 -1
  582. package/lib/esm/contract/OtherMarketContract.js.map +0 -1
  583. package/lib/esm/contract/OtherProductContract.js.map +0 -1
  584. package/lib/esm/contract/OtherProductImageContract.js.map +0 -1
  585. package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
  586. package/lib/esm/contract/OtherProductStrengthContract.js.map +0 -1
  587. package/lib/esm/contract/Product.js.map +0 -1
  588. package/lib/esm/contract/ProductContract.js.map +0 -1
  589. package/lib/esm/contract/ProductStrengthContract.js.map +0 -1
  590. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  591. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
  592. package/lib/esm/contract/User.js.map +0 -1
  593. package/lib/esm/contract/UserContract.js.map +0 -1
  594. package/lib/esm/contract/index.js.map +0 -1
  595. package/lib/esm/contract/logging-context.js.map +0 -1
  596. package/lib/esm/contract/models/Audit.js.map +0 -1
  597. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
  598. package/lib/esm/contract/models/BaseModel.js.map +0 -1
  599. package/lib/esm/contract/models/Batch.js.map +0 -1
  600. package/lib/esm/contract/models/GtinOwner.js.map +0 -1
  601. package/lib/esm/contract/models/History.js.map +0 -1
  602. package/lib/esm/contract/models/Leaflet.js.map +0 -1
  603. package/lib/esm/contract/models/LeafletFile.js.map +0 -1
  604. package/lib/esm/contract/models/Market.js.map +0 -1
  605. package/lib/esm/contract/models/OtherAudit.js.map +0 -1
  606. package/lib/esm/contract/models/OtherBatchShared.js.map +0 -1
  607. package/lib/esm/contract/models/OtherLeaflet.js.map +0 -1
  608. package/lib/esm/contract/models/OtherLeafletFile.js.map +0 -1
  609. package/lib/esm/contract/models/OtherMarket.js.map +0 -1
  610. package/lib/esm/contract/models/OtherProduct.js.map +0 -1
  611. package/lib/esm/contract/models/OtherProductImage.js.map +0 -1
  612. package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
  613. package/lib/esm/contract/models/OtherProductStrength.js.map +0 -1
  614. package/lib/esm/contract/models/Product.js.map +0 -1
  615. package/lib/esm/contract/models/ProductStrength.js.map +0 -1
  616. package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
  617. package/lib/esm/contract/models/constants.js.map +0 -1
  618. package/lib/esm/contract/models/decorators-private.js.map +0 -1
  619. package/lib/esm/contract/models/decorators.js.map +0 -1
  620. package/lib/esm/contract/models/gtin.js.map +0 -1
  621. package/lib/esm/contract/models/history-dec.js.map +0 -1
  622. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  623. package/lib/esm/contracts/ContractContext.js.map +0 -1
  624. package/lib/esm/contracts/FabricContractDispatch.js.map +0 -1
  625. package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
  626. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  627. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  628. package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
  629. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  630. package/lib/esm/contracts/MigrationContract.js.map +0 -1
  631. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  632. package/lib/esm/contracts/auth/decorators.js.map +0 -1
  633. package/lib/esm/contracts/auth/index.js.map +0 -1
  634. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  635. package/lib/esm/contracts/crud/index.js.map +0 -1
  636. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  637. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  638. package/lib/esm/contracts/erc20/index.js.map +0 -1
  639. package/lib/esm/contracts/erc20/models.js.map +0 -1
  640. package/lib/esm/contracts/index.js.map +0 -1
  641. package/lib/esm/contracts/logging.js.map +0 -1
  642. package/lib/esm/contracts/overrides.js.map +0 -1
  643. package/lib/esm/contracts/types.js.map +0 -1
  644. package/lib/esm/contracts/uuid.js.map +0 -1
  645. package/lib/esm/index.js.map +0 -1
  646. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  647. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  648. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  649. package/lib/esm/shared/constants.js.map +0 -1
  650. package/lib/esm/shared/decorators.js.map +0 -1
  651. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  652. package/lib/esm/shared/erc20/index.js.map +0 -1
  653. package/lib/esm/shared/errors.js.map +0 -1
  654. package/lib/esm/shared/events.js.map +0 -1
  655. package/lib/esm/shared/fabric-types.js.map +0 -1
  656. package/lib/esm/shared/index.js.map +0 -1
  657. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  658. package/lib/esm/shared/interfaces/index.js.map +0 -1
  659. package/lib/esm/shared/math.js.map +0 -1
  660. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  661. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  662. package/lib/esm/shared/model/Identity.js.map +0 -1
  663. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  664. package/lib/esm/shared/model/index.js.map +0 -1
  665. package/lib/esm/shared/overrides/Model.js.map +0 -1
  666. package/lib/esm/shared/overrides/index.js.map +0 -1
  667. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  668. package/lib/esm/shared/types.js.map +0 -1
  669. package/lib/esm/version.js.map +0 -1
  670. package/lib/types/bin/cli.d.ts +0 -1
  671. package/lib/types/cli-module.d.ts +0 -3
  672. package/lib/types/cli-utils.d.ts +0 -21
  673. package/lib/types/client/FabricClientAdapter.d.ts +0 -404
  674. package/lib/types/client/FabricClientDispatch.d.ts +0 -133
  675. package/lib/types/client/FabricClientPaginator.d.ts +0 -12
  676. package/lib/types/client/FabricClientRepository.d.ts +0 -71
  677. package/lib/types/client/FabricClientStatement.d.ts +0 -64
  678. package/lib/types/client/collections/generation.d.ts +0 -46
  679. package/lib/types/client/collections/index.d.ts +0 -1
  680. package/lib/types/client/constants.d.ts +0 -2
  681. package/lib/types/client/crypto.d.ts +0 -107
  682. package/lib/types/client/erc20/FabricERC20ClientRepository.d.ts +0 -254
  683. package/lib/types/client/erc20/index.d.ts +0 -1
  684. package/lib/types/client/fabric-fs.d.ts +0 -92
  685. package/lib/types/client/fabric-hsm.d.ts +0 -24
  686. package/lib/types/client/ids/id-extraction.d.ts +0 -4
  687. package/lib/types/client/ids/index.d.ts +0 -1
  688. package/lib/types/client/index.d.ts +0 -23
  689. package/lib/types/client/indexes/generation.d.ts +0 -10
  690. package/lib/types/client/indexes/index.d.ts +0 -1
  691. package/lib/types/client/logging.d.ts +0 -60
  692. package/lib/types/client/services/FabricEnrollmentService.d.ts +0 -176
  693. package/lib/types/client/services/FabricIdentityService.d.ts +0 -98
  694. package/lib/types/client/services/RegistrationRequestBuilder.d.ts +0 -19
  695. package/lib/types/client/services/constants.d.ts +0 -15
  696. package/lib/types/client/services/index.d.ts +0 -4
  697. package/lib/types/client/types.d.ts +0 -20
  698. package/lib/types/client/utils.d.ts +0 -71
  699. package/lib/types/contract/Address.d.ts +0 -13
  700. package/lib/types/contract/AddressContract.d.ts +0 -5
  701. package/lib/types/contract/AuditContract.d.ts +0 -5
  702. package/lib/types/contract/BatchContract.d.ts +0 -5
  703. package/lib/types/contract/MarketContract.d.ts +0 -5
  704. package/lib/types/contract/OtherAuditContract.d.ts +0 -5
  705. package/lib/types/contract/OtherBatchContract.d.ts +0 -5
  706. package/lib/types/contract/OtherMarketContract.d.ts +0 -5
  707. package/lib/types/contract/OtherProductContract.d.ts +0 -5
  708. package/lib/types/contract/OtherProductImageContract.d.ts +0 -5
  709. package/lib/types/contract/OtherProductSharedContract.d.ts +0 -5
  710. package/lib/types/contract/OtherProductStrengthContract.d.ts +0 -5
  711. package/lib/types/contract/Product.d.ts +0 -7
  712. package/lib/types/contract/ProductContract.d.ts +0 -5
  713. package/lib/types/contract/ProductStrengthContract.d.ts +0 -5
  714. package/lib/types/contract/SegregatedPrivateDocumentContract.d.ts +0 -5
  715. package/lib/types/contract/SegregatedSharedDocumentContract.d.ts +0 -5
  716. package/lib/types/contract/User.d.ts +0 -7
  717. package/lib/types/contract/UserContract.d.ts +0 -5
  718. package/lib/types/contract/index.d.ts +0 -2
  719. package/lib/types/contract/logging-context.d.ts +0 -8
  720. package/lib/types/contract/models/Audit.d.ts +0 -13
  721. package/lib/types/contract/models/BaseIdentifiedModel.d.ts +0 -7
  722. package/lib/types/contract/models/BaseModel.d.ts +0 -7
  723. package/lib/types/contract/models/Batch.d.ts +0 -18
  724. package/lib/types/contract/models/GtinOwner.d.ts +0 -8
  725. package/lib/types/contract/models/History.d.ts +0 -9
  726. package/lib/types/contract/models/Leaflet.d.ts +0 -12
  727. package/lib/types/contract/models/LeafletFile.d.ts +0 -9
  728. package/lib/types/contract/models/Market.d.ts +0 -12
  729. package/lib/types/contract/models/OtherAudit.d.ts +0 -15
  730. package/lib/types/contract/models/OtherBatchShared.d.ts +0 -18
  731. package/lib/types/contract/models/OtherLeaflet.d.ts +0 -16
  732. package/lib/types/contract/models/OtherLeafletFile.d.ts +0 -10
  733. package/lib/types/contract/models/OtherMarket.d.ts +0 -13
  734. package/lib/types/contract/models/OtherProduct.d.ts +0 -12
  735. package/lib/types/contract/models/OtherProductImage.d.ts +0 -9
  736. package/lib/types/contract/models/OtherProductShared.d.ts +0 -18
  737. package/lib/types/contract/models/OtherProductStrength.d.ts +0 -12
  738. package/lib/types/contract/models/Product.d.ts +0 -15
  739. package/lib/types/contract/models/ProductStrength.d.ts +0 -11
  740. package/lib/types/contract/models/SegregatedDocument.d.ts +0 -18
  741. package/lib/types/contract/models/constants.d.ts +0 -24
  742. package/lib/types/contract/models/decorators-private.d.ts +0 -16
  743. package/lib/types/contract/models/decorators.d.ts +0 -28
  744. package/lib/types/contract/models/gtin.d.ts +0 -8
  745. package/lib/types/contract/models/history-dec.d.ts +0 -6
  746. package/lib/types/contracts/ContractAdapter.d.ts +0 -287
  747. package/lib/types/contracts/ContractContext.d.ts +0 -89
  748. package/lib/types/contracts/FabricContractDispatch.d.ts +0 -7
  749. package/lib/types/contracts/FabricContractPaginator.d.ts +0 -105
  750. package/lib/types/contracts/FabricContractRepository.d.ts +0 -119
  751. package/lib/types/contracts/FabricContractRepositoryObservableHandler.d.ts +0 -62
  752. package/lib/types/contracts/FabricContractSequence.d.ts +0 -87
  753. package/lib/types/contracts/FabricContractStatement.d.ts +0 -36
  754. package/lib/types/contracts/MigrationContract.d.ts +0 -22
  755. package/lib/types/contracts/PrivateSequence.d.ts +0 -15
  756. package/lib/types/contracts/auth/decorators.d.ts +0 -6
  757. package/lib/types/contracts/auth/index.d.ts +0 -1
  758. package/lib/types/contracts/crud/crud-contract.d.ts +0 -199
  759. package/lib/types/contracts/crud/index.d.ts +0 -2
  760. package/lib/types/contracts/crud/serialized-crud-contract.d.ts +0 -42
  761. package/lib/types/contracts/erc20/erc20contract.d.ts +0 -152
  762. package/lib/types/contracts/erc20/index.d.ts +0 -2
  763. package/lib/types/contracts/erc20/models.d.ts +0 -114
  764. package/lib/types/contracts/index.d.ts +0 -20
  765. package/lib/types/contracts/logging.d.ts +0 -54
  766. package/lib/types/contracts/overrides.d.ts +0 -1
  767. package/lib/types/contracts/types.d.ts +0 -38
  768. package/lib/types/contracts/uuid.d.ts +0 -2
  769. package/lib/types/index.d.ts +0 -8
  770. package/lib/types/shared/ClientSerializer.d.ts +0 -52
  771. package/lib/types/shared/DeterministicSerializer.d.ts +0 -47
  772. package/lib/types/shared/SimpleDeterministicSerializer.d.ts +0 -7
  773. package/lib/types/shared/constants.d.ts +0 -35
  774. package/lib/types/shared/decorators.d.ts +0 -81
  775. package/lib/types/shared/erc20/erc20-constants.d.ts +0 -25
  776. package/lib/types/shared/erc20/index.d.ts +0 -1
  777. package/lib/types/shared/errors.d.ts +0 -140
  778. package/lib/types/shared/events.d.ts +0 -37
  779. package/lib/types/shared/fabric-types.d.ts +0 -32
  780. package/lib/types/shared/index.d.ts +0 -21
  781. package/lib/types/shared/interfaces/Checkable.d.ts +0 -23
  782. package/lib/types/shared/interfaces/index.d.ts +0 -1
  783. package/lib/types/shared/math.d.ts +0 -34
  784. package/lib/types/shared/model/FabricBaseModel.d.ts +0 -7
  785. package/lib/types/shared/model/FabricIdentifiedBaseModel.d.ts +0 -7
  786. package/lib/types/shared/model/Identity.d.ts +0 -42
  787. package/lib/types/shared/model/IdentityCredentials.d.ts +0 -41
  788. package/lib/types/shared/model/index.d.ts +0 -4
  789. package/lib/types/shared/overrides/Model.d.ts +0 -22
  790. package/lib/types/shared/overrides/index.d.ts +0 -2
  791. package/lib/types/shared/overrides/overrides.d.ts +0 -1
  792. package/lib/types/shared/types.d.ts +0 -125
  793. package/lib/types/version.d.ts +0 -2
@@ -6,5 +6,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const cli_module_js_1 = __importDefault(require("./../cli-module.cjs"));
8
8
  (0, cli_module_js_1.default)().parse(process.argv);
9
- //# sourceMappingURL=cli.js.map
10
- //# sourceMappingURL=cli.js.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLDJCQUFzQjtBQUVuQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZhYnJpYyBmcm9tIFwiLi4vY2xpLW1vZHVsZVwiO1xuXG5mYWJyaWMoKS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xpLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUVBQXdDO0FBQ3hDLElBQUEsdUJBQU0sR0FBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0Isc2FBQXNhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZhYnJpYyBmcm9tIFwiLi8uLi9jbGktbW9kdWxlLmpzXCI7XG5mYWJyaWMoKS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTJ4cExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2YzNKakwySnBiaTlqYkdrdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eE5RVUZOTERKQ1FVRnpRanRCUVVWdVF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdaaFluSnBZeUJtY205dElGd2lMaTR2WTJ4cExXMXZaSFZzWlZ3aU8xeHVYRzVtWVdKeWFXTW9LUzV3WVhKelpTaHdjbTlqWlhOekxtRnlaM1lwTzF4dUlsMTkiXX0=
@@ -55,8 +55,10 @@ const compileCommand = new commander_1.Command()
55
55
  .option("--input <String>", "input folder for contracts", "lib/contracts")
56
56
  .option("--output <String>", "output folder for contracts", "./contracts")
57
57
  .option("--sourcemaps", "includes sourcemaps in the compiled output", false)
58
+ .option("--npmrc", "includes .npmrc in the compiled output", false)
58
59
  .action(async (options) => {
59
60
  const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), "package.json"), "utf-8"));
61
+ let npmrcContent = undefined;
60
62
  const version = pkg.version;
61
63
  let {
62
64
  // eslint-disable-next-line prefer-const
@@ -74,8 +76,29 @@ const compileCommand = new commander_1.Command()
74
76
  // eslint-disable-next-line prefer-const
75
77
  ccaas,
76
78
  // eslint-disable-next-line prefer-const
77
- bundle, tsConfigFile, sourcemaps, } = options;
79
+ bundle, tsConfigFile,
80
+ // eslint-disable-next-line prefer-const
81
+ sourcemaps,
82
+ // eslint-disable-next-line prefer-const
83
+ npmrc, } = options;
78
84
  const log = logger.for("compile-contract");
85
+ try {
86
+ if (npmrc) {
87
+ npmrcContent = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), ".npmrc"), "utf-8"));
88
+ const replaced = npmrcContent.replace(/\$\{([^}]+)\}/g, (_, varName) => {
89
+ const value = process.env[varName];
90
+ if (value === undefined) {
91
+ console.warn(`Warning: Environment variable "${varName}" is not set`);
92
+ return "";
93
+ }
94
+ return value;
95
+ });
96
+ npmrcContent = replaced;
97
+ }
98
+ }
99
+ catch {
100
+ log.info(`No .npmrc file found, skipping copying .npmrc to output`);
101
+ }
79
102
  log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
80
103
  tsConfigFile = path_1.default.isAbsolute(tsConfigFile)
81
104
  ? tsConfigFile
@@ -177,6 +200,8 @@ const compileCommand = new commander_1.Command()
177
200
  ? `${(0, logging_1.toPascalCase)(name)}.js`
178
201
  : `${input}/index.js`;
179
202
  fs_1.default.writeFileSync(path_1.default.join(output, "package.json"), JSON.stringify(contractPackage));
203
+ if (npmrc)
204
+ fs_1.default.writeFileSync(path_1.default.join(output, ".npmrc"), npmrc);
180
205
  log.info(`Installing and shrinkwrapping dependencies`);
181
206
  (0, child_process_1.execSync)(`npm install`, { cwd: output });
182
207
  (0, child_process_1.execSync)(`npm shrinkwrap`, { cwd: output });
@@ -476,5 +501,5 @@ fabricCmd.addCommand(extractCollections);
476
501
  function fabric() {
477
502
  return fabricCmd;
478
503
  }
479
- //# sourceMappingURL=cli-module.js.map
480
- //# sourceMappingURL=cli-module.js.map
504
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsWUFBWSxHQUNiLGtDQUF5QjtBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLDRCQUE0QixHQUM3Qix1QkFBb0I7QUFDckIscUNBQTRCO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQ0wsa0JBQWtCLElBQUksYUFBYSxFQUVuQyxnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLHNDQUFtQztBQUdwQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXJDLFNBQVMsdUJBQXVCO0lBQzlCLE9BQU87UUFDTCxJQUFJLEVBQUUsNEJBQTRCO1FB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LENBQ1YsbUVBQW1FLENBQ3BFLENBQUM7QUFFSixTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3JDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsQyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3JDLFNBQVMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN4QyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFekMsTUFBTSxDQUFDLE9BQU8sVUFBVSxNQUFNO0lBQzVCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgTG9nZ2luZywgdG9QYXNjYWxDYXNlIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgUGx1Z2luLCByb2xsdXAgfSBmcm9tIFwicm9sbHVwXCI7XG5pbXBvcnQgcmVwbGFjZSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tcmVwbGFjZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBnZW5lcmF0ZU1vZGVsRGVzaWduRG9jcyxcbiAgZ2VuZXJhdGVNb2RlbEluZGV4ZXMsXG4gIHJlYWRNb2RlbEZpbGUsXG4gIHJlYWRNb2RlbEZvbGRlcnMsXG4gIHdyaXRlRGVzaWduRG9jcyxcbiAgd3JpdGVJbmRleGVzLFxufSBmcm9tIFwiLi9jbGllbnQvaW5kZXhlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBhcHByb3ZlQ29udHJhY3QsXG4gIGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkLFxuICBpbnN0YWxsQ29udHJhY3QsXG4gIHBhY2thZ2VDb250cmFjdCxcbiAgY29tbWl0Q2hhaW5jb2RlLFxuICBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZCxcbiAgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyxcbn0gZnJvbSBcIi4vY2xpLXV0aWxzXCI7XG5pbXBvcnQgXCIuL3NoYXJlZC9vdmVycmlkZXNcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgZXh0cmFjdENvbGxlY3Rpb25zIGFzIGV4Q29sbGVjdGlvbnMsXG4gIFByaXZhdGVDb2xsZWN0aW9uLFxuICB3cml0ZUNvbGxlY3Rpb25zLFxuICB3cml0ZUNvbGxlY3Rpb25EZXNpZ25Eb2NzLFxufSBmcm9tIFwiLi9jbGllbnQvY29sbGVjdGlvbnMvaW5kZXhcIjtcbmltcG9ydCB7IENvdWNoREJEZXNpZ25Eb2MsIENyZWF0ZUluZGV4UmVxdWVzdCB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuY29uc3QgbG9nZ2VyID0gTG9nZ2luZy5mb3IoXCJmYWJyaWNcIik7XG5cbmZ1bmN0aW9uIHJlc29sdmVCdW5kbGVkSnNJbXBvcnRzKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJyZXNvbHZlLWJ1bmRsZWQtanMtaW1wb3J0c1wiLFxuICAgIHJlc29sdmVJZChzb3VyY2UsIGltcG9ydGVyKSB7XG4gICAgICBpZiAoIWltcG9ydGVyIHx8ICFzb3VyY2Uuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoaW1wb3J0ZXIpLCBzb3VyY2UpO1xuICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgcmVzb2x2ZWRQYXRoLFxuICAgICAgICBgJHtyZXNvbHZlZFBhdGh9LmpzYCxcbiAgICAgICAgcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgXCJpbmRleC5qc1wiKSxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FuZGlkYXRlKSAmJiBmcy5zdGF0U3luYyhjYW5kaWRhdGUpLmlzRmlsZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICB9O1xufVxuXG5jb25zdCBjb21waWxlQ29tbWFuZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJjb21waWxlLWNvbnRyYWN0XCIpXG4gIC5kZXNjcmlwdGlvbihcIkNyZWF0ZXMgYSBnbG9iYWwgY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tZGV2XCIsIFwiY29tcGlsZXMgY29udHJhY3RzIHdpdGhvdXQgbWluaWZpY2F0aW9uXCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1kZWJ1Z1wiLCBcIm1ha2VzIGF0dGFjaGluZyBkZWJ1Z2dlciBwb3NzaWJsZVwiLCBmYWxzZSlcbiAgLm9wdGlvbihcbiAgICBcIi0tY2NhYXNcIixcbiAgICBcIkFqdXN0cyB0aGUgcGFja2FnZSBjb21tYW5kcyB0byBiZSBkZXBsb3llZCBhcyBjY2Fhc1wiLFxuICAgIGZhbHNlXG4gIClcbiAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcImNvbnRyYWN0IG5hbWVcIiwgXCJnbG9iYWwtY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tYnVuZGxlXCIsIFwiQnVuZGxlcyB3aXRoIHJvbGx1cCBpbnN0ZWFkIG9mIHVzaW5nIHRzY1wiLCBmYWxzZSlcbiAgLm9wdGlvbihcbiAgICBcIi0tdHMtY29uZmlnLWZpbGUgPHN0cmluZz5cIixcbiAgICBcInJlbGF0aXZlIHBhdGggdG8gdGhlIHRzIGNvbmZpZyBmaWxlIGJhc2VkIG9uIGN3ZCBvciBhYnNvbHV0ZSBwYXRoXCIsXG4gICAgXCIuL3RzY29uZmlnLmpzb25cIlxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWRlc2NyaXB0aW9uIDxTdHJpbmc+XCIsXG4gICAgXCJjb250cmFjdCBkZXNjcmlwdGlvblwiLFxuICAgIFwiR2xvYmFsIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uXCJcbiAgKVxuICAub3B0aW9uKFwiLS1zdHJpcC1jb250cmFjdC1uYW1lXCIsIFwic3RyaXAgY29udHJhY3QgbmFtZSBmcm9tIG91dHB1dFwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0taW5wdXQgPFN0cmluZz5cIiwgXCJpbnB1dCBmb2xkZXIgZm9yIGNvbnRyYWN0c1wiLCBcImxpYi9jb250cmFjdHNcIilcbiAgLm9wdGlvbihcIi0tb3V0cHV0IDxTdHJpbmc+XCIsIFwib3V0cHV0IGZvbGRlciBmb3IgY29udHJhY3RzXCIsIFwiLi9jb250cmFjdHNcIilcbiAgLm9wdGlvbihcIi0tc291cmNlbWFwc1wiLCBcImluY2x1ZGVzIHNvdXJjZW1hcHMgaW4gdGhlIGNvbXBpbGVkIG91dHB1dFwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0tbnBtcmNcIiwgXCJpbmNsdWRlcyAubnBtcmMgaW4gdGhlIGNvbXBpbGVkIG91dHB1dFwiLCBmYWxzZSlcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgbGV0IG5wbXJjQ29udGVudCA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcblxuICAgIGxldCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBkZXYsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBkZWJ1ZyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIG5hbWUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG91dHB1dCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGlucHV0LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgc3RyaXBDb250cmFjdE5hbWUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBjY2FhcyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGJ1bmRsZSxcblxuICAgICAgdHNDb25maWdGaWxlLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgc291cmNlbWFwcyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIG5wbXJjLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJjb21waWxlLWNvbnRyYWN0XCIpO1xuICAgIHRyeSB7XG4gICAgICBpZiAobnBtcmMpIHtcbiAgICAgICAgbnBtcmNDb250ZW50ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLm5wbXJjXCIpLCBcInV0Zi04XCIpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcmVwbGFjZWQgPSBucG1yY0NvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAvXFwkXFx7KFtefV0rKVxcfS9nLFxuICAgICAgICAgIChfOiBhbnksIHZhck5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudlt2YXJOYW1lXTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBXYXJuaW5nOiBFbnZpcm9ubWVudCB2YXJpYWJsZSBcIiR7dmFyTmFtZX1cIiBpcyBub3Qgc2V0YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBucG1yY0NvbnRlbnQgPSByZXBsYWNlZDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZy5pbmZvKGBObyAubnBtcmMgZmlsZSBmb3VuZCwgc2tpcHBpbmcgY29weWluZyAubnBtcmMgdG8gb3V0cHV0YCk7XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG5cbiAgICB0c0NvbmZpZ0ZpbGUgPSBwYXRoLmlzQWJzb2x1dGUodHNDb25maWdGaWxlKVxuICAgICAgPyB0c0NvbmZpZ0ZpbGVcbiAgICAgIDogcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIHRzQ29uZmlnRmlsZSk7XG5cbiAgICBvdXRwdXQgPSBzdHJpcENvbnRyYWN0TmFtZSA/IG91dHB1dCA6IHBhdGguam9pbihvdXRwdXQsIG5hbWUpO1xuICAgIGxvZy5pbmZvKGBEZWxldGluZyBleGlzdGluZyBvdXRwdXQgZm9sZGVyIChpZiBleGlzdHMpIHVuZGVyICR7b3V0cHV0fWApO1xuICAgIGV4ZWNTeW5jKGBybSAtcmYgJHtvdXRwdXR9YCk7XG4gICAgaWYgKGJ1bmRsZSkge1xuICAgICAgbG9nLmluZm8oYGJ1bmRsaW5nIGNvbnRyYWN0IGZyb20gJHtpbnB1dH1gKTtcbiAgICAgIGNvbnN0IHRlbXBCdW5kbGVEaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLmNvbnRyYWN0LWJ1bmRsZS1cIilcbiAgICAgICk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpbnB1dEVudHJ5ID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGlucHV0LCBcImluZGV4LnRzXCIpO1xuICAgICAgICBjb25zdCBjb25maWdGaWxlID0gdHMucmVhZENvbmZpZ0ZpbGUodHNDb25maWdGaWxlLCB0cy5zeXMucmVhZEZpbGUpO1xuICAgICAgICBpZiAoY29uZmlnRmlsZS5lcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgdHMuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChjb25maWdGaWxlLmVycm9yLm1lc3NhZ2VUZXh0LCBcIlxcblwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJzZWRDb25maWcgPSB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChcbiAgICAgICAgICBjb25maWdGaWxlLmNvbmZpZyxcbiAgICAgICAgICB0cy5zeXMsXG4gICAgICAgICAgcGF0aC5kaXJuYW1lKHRzQ29uZmlnRmlsZSksXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHRzQ29uZmlnRmlsZVxuICAgICAgICApO1xuICAgICAgICBpZiAocGFyc2VkQ29uZmlnLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIHBhcnNlZENvbmZpZy5lcnJvcnNcbiAgICAgICAgICAgICAgLm1hcCgoZXJyb3IpID0+XG4gICAgICAgICAgICAgICAgdHMuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChlcnJvci5tZXNzYWdlVGV4dCwgXCJcXG5cIilcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuam9pbihcIlxcblwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZW1wQ29tcGlsZXJPcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMgPSB7XG4gICAgICAgICAgLi4ucGFyc2VkQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgICAgb3V0RGlyOiB0ZW1wQnVuZGxlRGlyLFxuICAgICAgICAgIG1vZHVsZTogdHMuTW9kdWxlS2luZC5FU05leHQsXG4gICAgICAgICAgZGVjbGFyYXRpb246IGZhbHNlLFxuICAgICAgICAgIHNvdXJjZU1hcDogZmFsc2UsXG4gICAgICAgICAgaW5saW5lU291cmNlczogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJ1bmRsZWRFbnRyeVBvaW50ID0gdHNcbiAgICAgICAgICAuZ2V0T3V0cHV0RmlsZU5hbWVzKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5wYXJzZWRDb25maWcsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHRlbXBDb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRFbnRyeSxcbiAgICAgICAgICAgICF0cy5zeXMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lc1xuICAgICAgICAgIClcbiAgICAgICAgICAuZmluZCgoZmlsZU5hbWUpID0+IGZpbGVOYW1lLmVuZHNXaXRoKFwiLmpzXCIpKTtcblxuICAgICAgICBpZiAoIWJ1bmRsZWRFbnRyeVBvaW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGRldGVybWluZSB0aGUgZW1pdHRlZCBidW5kbGUgZW50cnkgZm9yICR7aW5wdXRFbnRyeX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbXBpbGVXaXRoVHNjb25maWdPdmVycmlkZXModHNDb25maWdGaWxlLCB0ZW1wQ29tcGlsZXJPcHRpb25zKTtcbiAgICAgICAgY29uc3QgYnVuZGxlZENvbnRyYWN0ID0gYXdhaXQgcm9sbHVwKHtcbiAgICAgICAgICBpbnB1dDogYnVuZGxlZEVudHJ5UG9pbnQsXG4gICAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgcmVzb2x2ZUJ1bmRsZWRKc0ltcG9ydHMoKSxcbiAgICAgICAgICAgIHJlcGxhY2Uoe1xuICAgICAgICAgICAgICBwcmV2ZW50QXNzaWdubWVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgZGVsaW1pdGVyczogW1wiXCIsIFwiXCJdLFxuICAgICAgICAgICAgICB2YWx1ZXM6IHsgXCIjI1ZFUlNJT04jI1wiOiB2ZXJzaW9uLCBcIiMjUEFDS0FHRSMjXCI6IHBrZy5uYW1lIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgICAgbG9nLmluZm8oXG4gICAgICAgICAgYHdpdGhpbmcgY29udHJhY3QgdG8gJHtvdXRwdXR9IHdpdGggbmFtZSAke3RvUGFzY2FsQ2FzZShuYW1lKX0uanNgXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IGJ1bmRsZWRDb250cmFjdC53cml0ZSh7XG4gICAgICAgICAgZmlsZTogYCR7b3V0cHV0fS8ke3RvUGFzY2FsQ2FzZShuYW1lKX0uanNgLFxuICAgICAgICAgIGZvcm1hdDogXCJ1bWRcIixcbiAgICAgICAgICBuYW1lOiBgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCxcbiAgICAgICAgICBzb3VyY2VtYXA6IHNvdXJjZW1hcHMgPyBcImlubGluZVwiIDogZmFsc2UsXG4gICAgICAgICAgc291cmNlbWFwUGF0aFRyYW5zZm9ybTogKHJlbGF0aXZlU291cmNlUGF0aCwgc291cmNlbWFwUGF0aCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWJzb2x1dGVTb3VyY2VQYXRoID0gcGF0aC5yZXNvbHZlKFxuICAgICAgICAgICAgICBwYXRoLmRpcm5hbWUoc291cmNlbWFwUGF0aCksXG4gICAgICAgICAgICAgIHJlbGF0aXZlU291cmNlUGF0aFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGFic29sdXRlU291cmNlUGF0aC5zdGFydHNXaXRoKHRlbXBCdW5kbGVEaXIpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgICAgICAgICAgXCIuYnVuZGxlXCIsXG4gICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgICAgLnJlbGF0aXZlKHRlbXBCdW5kbGVEaXIsIGFic29sdXRlU291cmNlUGF0aClcbiAgICAgICAgICAgICAgICAgIC5zcGxpdChwYXRoLnNlcClcbiAgICAgICAgICAgICAgICAgIC5qb2luKFwiL1wiKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVsYXRpdmVTb3VyY2VQYXRoO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBidW5kbGVkQ29udHJhY3QuY2xvc2UoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZzLnJtU3luYyh0ZW1wQnVuZGxlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVXaXRoVHNjb25maWdPdmVycmlkZXModHNDb25maWdGaWxlLCB7XG4gICAgICAgIG91dERpcjogb3V0cHV0LFxuICAgICAgICBtb2R1bGU6IHRzLk1vZHVsZUtpbmQuRVNOZXh0LFxuICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgIHNvdXJjZU1hcDogc291cmNlbWFwcyxcbiAgICAgICAgaW5saW5lU291cmNlczogc291cmNlbWFwcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdHMgPSB7XG4gICAgICBzdGFydDogZ2V0Q29udHJhY3RTdGFydENvbW1hbmQoZGVidWcsIGNjYWFzKSxcbiAgICAgIFwic3RhcnQ6ZGV2XCI6IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IC0tdGxzLmVuYWJsZWQgZmFsc2VcIixcbiAgICAgIFwic3RhcnQ6d2F0Y2hcIjogJ25vZGVtb24gLS1leGVjIFwibnBtIHJ1biBzdGFydDpkZXZcIicsXG4gICAgICBidWlsZDogJ2VjaG8gXCJObyBuZWVkIHRvIGJ1aWxkIHRoZSBjaGFpbmNvZGVcIicsXG4gICAgICBsaW50OiBcImVzbGludCAuIC0tZml4IC0tZXh0IC5qc1wiLFxuICAgIH07XG5cbiAgICBjb25zdCBjb250cmFjdFBhY2thZ2UgPSBwa2c7XG5cbiAgICBjb250cmFjdFBhY2thZ2UubmFtZSA9IG5hbWU7XG4gICAgY29udHJhY3RQYWNrYWdlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgY29udHJhY3RQYWNrYWdlLnNjcmlwdHMgPSBzY3JpcHRzO1xuXG4gICAgZGVsZXRlIGNvbnRyYWN0UGFja2FnZS50eXBlO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZXM7XG4gICAgZGVsZXRlIGNvbnRyYWN0UGFja2FnZS5leHBvcnRzO1xuICAgIGNvbnRyYWN0UGFja2FnZS5tYWluID0gYnVuZGxlXG4gICAgICA/IGAke3RvUGFzY2FsQ2FzZShuYW1lKX0uanNgXG4gICAgICA6IGAke2lucHV0fS9pbmRleC5qc2A7XG5cbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgcGF0aC5qb2luKG91dHB1dCwgXCJwYWNrYWdlLmpzb25cIiksXG4gICAgICBKU09OLnN0cmluZ2lmeShjb250cmFjdFBhY2thZ2UpXG4gICAgKTtcblxuICAgIGlmIChucG1yYykgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCBcIi5ucG1yY1wiKSwgbnBtcmMpO1xuXG4gICAgbG9nLmluZm8oYEluc3RhbGxpbmcgYW5kIHNocmlua3dyYXBwaW5nIGRlcGVuZGVuY2llc2ApO1xuICAgIGV4ZWNTeW5jKGBucG0gaW5zdGFsbGAsIHsgY3dkOiBvdXRwdXQgfSk7XG4gICAgZXhlY1N5bmMoYG5wbSBzaHJpbmt3cmFwYCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBleGVjU3luYyhcInJtIC1yZiBub2RlX21vZHVsZXNcIiwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBsb2cuaW5mbyhgZGVsZXRpbmcgdGVtcCBmb2xkZXJzYCk7XG4gICAgZXhlY1N5bmMoYHJtIC1yZiAuL2xpYiAmJiBybSAtcmYgLi9kaXN0YCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGBDb250cmFjdCAke25hbWV9IGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSEgaW4gJHtwYXRoLnJlc29sdmUob3V0cHV0KX1gXG4gICAgKTtcbiAgICBpZiAoZGV2KSB7XG4gICAgICBsb2cuaW5mbyhgZGV2IG1vZGUgZW5hYmxlZC4gaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZ2ApO1xuICAgICAgZXhlY1N5bmMoYG5wbSBpbnN0YWxsYCwge1xuICAgICAgICBjd2Q6IG91dHB1dCxcbiAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBOT0RFX0VOVjogXCJwcm9kdWN0aW9uXCIgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbmNvbnN0IGV4dHJhY3RJbmRleGVzID0gbmV3IENvbW1hbmQoKVxuICAuY29tbWFuZChcImV4dHJhY3QtaW5kZXhlc1wiKVxuICAub3B0aW9uKFwiLS1maWxlIFtTdHJpbmddXCIsIFwidGhlIG1vZGVsIGZpbGVcIilcbiAgLm9wdGlvbihcIi0tZm9sZGVyIFtTdHJpbmddXCIsIFwidGhlIG1vZGVsIGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1vdXREaXIgPFN0cmluZz5cIiwgXCJ0aGUgb3V0ZGlyLiBzaG91bGQgbWF0Y2ggeW91ciBjb250cmFjdCBmb2xkZXJcIilcbiAgLmRlc2NyaXB0aW9uKFxuICAgIFwiQ3JlYXRlcyBhIHRoZSBKU09OIGluZGV4IGZpbGVzIHRvIGJlIHN1Ym1pdHRlZCB0byBhbG9uZyB3aXRoIHRoZSBjb250cmFjdFwiXG4gIClcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImV4dHJhY3QtaW5kZXhlc1wiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBmaWxlLCBmb2xkZXIsIG91dERpciB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IG1vZGVsczogYW55W10gPSBbXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgbW9kZWxzLnB1c2goLi4ucmVhZE1vZGVsRmlsZShmaWxlKSk7XG4gICAgfVxuXG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgbG9nLmluZm8oYExvYWRpbmcgbW9kZWxzIGZyb20gJHtmb2xkZXJ9Li4uYCk7XG4gICAgICBtb2RlbHMucHVzaCguLi4oYXdhaXQgcmVhZE1vZGVsRm9sZGVycyhmb2xkZXIpKSk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGNvbnN0IGRlc2lnbkRvY3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGlmICghZmlsZSAmJiAhZm9sZGVyKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE11c3QgcGFzcyBhIGZpbGUgb3IgYSBmb2xkZXJgKTtcblxuICAgIGZvciAoY29uc3QgbSBvZiBtb2RlbHMpIHtcbiAgICAgIGxvZy52ZXJib3NlKGBFeHRyYWN0aW5nIGluZGV4ZXMgZm9yIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKG0pfWApO1xuICAgICAgY29uc3QgaW5kZXhlcyA9IGdlbmVyYXRlTW9kZWxJbmRleGVzKG0pO1xuICAgICAgaW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXgubmFtZSkge1xuICAgICAgICAgIHJlc3VsdFtpbmRleC5uYW1lXSA9IGluZGV4O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGdlbmVyYXRlTW9kZWxEZXNpZ25Eb2NzKG0sIGRlc2lnbkRvY3MpO1xuICAgIH1cbiAgICBjb25zdCBpbmRleGVzVG9Xcml0ZSA9IE9iamVjdC52YWx1ZXMocmVzdWx0KTtcbiAgICBjb25zdCBkb2NzVG9Xcml0ZSA9IE9iamVjdC52YWx1ZXMoZGVzaWduRG9jcyk7XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7aW5kZXhlc1RvV3JpdGUubGVuZ3RofSBpbmRleGVzIHRvIGNyZWF0ZWApO1xuICAgIGxvZy52ZXJib3NlKGBGb3VuZCAke2RvY3NUb1dyaXRlLmxlbmd0aH0gZGVzaWduIGRvY3MgdG8gY3JlYXRlYCk7XG4gICAgbG9nLmRlYnVnKGBJbmRleGVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gICAgbG9nLmRlYnVnKGBEZXNpZ25Eb2NzOiAke0pTT04uc3RyaW5naWZ5KGRlc2lnbkRvY3MpfWApO1xuICAgIHdyaXRlSW5kZXhlcyhpbmRleGVzVG9Xcml0ZSwgb3V0RGlyKTtcbiAgICB3cml0ZURlc2lnbkRvY3MoZG9jc1RvV3JpdGUsIG91dERpcik7XG4gIH0pO1xuXG5jb25zdCBleHRyYWN0Q29sbGVjdGlvbnMgPSBuZXcgQ29tbWFuZCgpXG4gIC5jb21tYW5kKFwiZXh0cmFjdC1jb2xsZWN0aW9uc1wiKVxuICAub3B0aW9uKFwiLS1maWxlIFtTdHJpbmddXCIsIFwidGhlIG1vZGVsIGZpbGVcIilcbiAgLm9wdGlvbihcIi0tZm9sZGVyIFtTdHJpbmddXCIsIFwidGhlIG1vZGVsIGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1vdXREaXIgPFN0cmluZz5cIiwgXCJ0aGUgb3V0ZGlyLiBzaG91bGQgbWF0Y2ggeW91ciBjb250cmFjdCBmb2xkZXJcIilcbiAgLm9wdGlvbihcIi0tbXNwSWRzIDxTdHJpbmc+XCIsIFwic2luZ2xlIG1zcElkIG9yIHN0cmluZ2lmaWVkIGFycmF5XCIpXG4gIC5vcHRpb24oXCItLW1haW5Nc3BJZCA8U3RyaW5nPlwiLCBcInNpbmdsZSBtc3BJZFwiKVxuICAub3B0aW9uKFxuICAgIFwiLS1vdmVycmlkZXMgW1N0cmluZ11cIixcbiAgICBcInN0cmluZ2lmaWVkIG92ZXJyaWRlIG9iamVjdCB7cmVxdWlyZWRQZWVyQ291bnQ6IG51bWJlciwgbWF4UGVlckNvdW50OiBudW1iZXIsIGJsb2NrVG9MaXZlOiBudW1iZXIsIG1lbWJlck9ubHlSZWFkOiBudW1iZXIsIG1lbWJlck9ubHlXcml0ZTogbnVtYmVyLCBlbmRvcnNlbWVudFBvbGljeTogIHt9fVwiXG4gIClcbiAgLmRlc2NyaXB0aW9uKFxuICAgIFwiQ3JlYXRlcyBhIHRoZSBKU09OIGluZGV4IGZpbGVzIHRvIGJlIHN1Ym1pdHRlZCB0byBhbG9uZyB3aXRoIHRoZSBjb250cmFjdFwiXG4gIClcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImV4dHJhY3QtY29sbGVjdGlvbnNcIik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgZmlsZSwgZm9sZGVyLCBvdXREaXIsIG1zcElkcywgbWFpbk1zcElkIH0gPSBvcHRpb25zO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1zcElkcyA9IG1zcElkcyA/IEpTT04ucGFyc2UobXNwSWRzKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAvLyAgZG8gbm90aGluZ1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoYFVuYWJsZSB0byBleHRyYWN0IG1zcGlkczogICR7ZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbHM6IGFueVtdID0gW107XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIG1vZGVscy5wdXNoKC4uLnJlYWRNb2RlbEZpbGUoZmlsZSkpO1xuICAgIH1cblxuICAgIGlmIChmb2xkZXIpIHtcbiAgICAgIGxvZy5pbmZvKGBMb2FkaW5nIG1vZGVscyBmcm9tICR7Zm9sZGVyfS4uLmApO1xuICAgICAgbW9kZWxzLnB1c2goLi4uKGF3YWl0IHJlYWRNb2RlbEZvbGRlcnMoZm9sZGVyKSkpO1xuICAgIH1cblxuICAgIGlmICghZmlsZSAmJiAhZm9sZGVyKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE11c3QgcGFzcyBhIGZpbGUgb3IgYSBmb2xkZXJgKTtcblxuICAgIGNvbnN0IGluamVjdGFibGVNb2RlbHMgPSBtb2RlbHMuZmlsdGVyKFxuICAgICAgKG1vZGVsKSA9PlxuICAgICAgICBNb2RlbC5pc1NoYXJlZChtb2RlbCkgfHxcbiAgICAgICAgTW9kZWwuaXNQcml2YXRlKG1vZGVsKSB8fFxuICAgICAgICAhIU1vZGVsLm1pcnJvcmVkQXQobW9kZWwpXG4gICAgKTtcbiAgICBpZiAoIWluamVjdGFibGVNb2RlbHMubGVuZ3RoKSB7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYE5vIHNoYXJlZCwgcHJpdmF0ZSwgb3IgbWlycm9yZWQgbW9kZWxzIGZvdW5kIHRvIGV4dHJhY3QgY29sbGVjdGlvbnNgXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldENvbHMobXNwSWRzTGlzdD86IHN0cmluZ1tdKSB7XG4gICAgICBjb25zdCBjb2xzOiB7XG4gICAgICAgIGluZGV4ZXM6IENyZWF0ZUluZGV4UmVxdWVzdFtdO1xuICAgICAgICBkZXNpZ25Eb2NzOiBDb3VjaERCRGVzaWduRG9jW107XG4gICAgICAgIG1pcnJvcj86IFByaXZhdGVDb2xsZWN0aW9uO1xuICAgICAgICBjb2xsZWN0aW9uczogUHJpdmF0ZUNvbGxlY3Rpb25bXTtcbiAgICAgIH1bXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBpbmplY3RhYmxlTW9kZWxzLm1hcChhc3luYyAoY2xhenopID0+IHtcbiAgICAgICAgICBjb25zdCB0YWJsZU5hbWUgPSBNb2RlbC50YWJsZU5hbWUoY2xhenopO1xuICAgICAgICAgIGNvbnN0IG1pcnJvck1ldGEgPSBNb2RlbC5taXJyb3JlZEF0KGNsYXp6KTtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKHRhYmxlTmFtZSk7XG4gICAgICAgICAgY29uc3QgY29sbGVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IG1zcCBvZiBtc3BJZHNMaXN0IHx8IG1zcElkcyB8fCBbXSkge1xuICAgICAgICAgICAgY29sbGVjdGlvbnNbbXNwXSA9IGF3YWl0IGV4Q29sbGVjdGlvbnMoXG4gICAgICAgICAgICAgIGNsYXp6LFxuICAgICAgICAgICAgICBbbXNwLCBtYWluTXNwSWRdLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAvLyAgIHNoYXJlZENvbHM6IE9iamVjdC5hc3NpZ24oe30sIG92ZXJyaWRlcy5zaGFyZWRDb2xzKSxcbiAgICAgICAgICAgICAgLy8gICBwcml2YXRlQ29sczogT2JqZWN0LmFzc2lnbih7fSwgb3ZlcnJpZGVzLnByaXZhdGVDb2xzKSxcbiAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgICAgISFtaXJyb3JNZXRhXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBtaXJyb3JDb2xsZWN0aW9uOiBQcml2YXRlQ29sbGVjdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChtaXJyb3JNZXRhKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uc1ttYWluTXNwSWRdID0gY29sbGVjdGlvbnNbbWFpbk1zcElkXSB8fCB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25zKS5mb3JFYWNoKChtc3A6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uc1ttYWluTXNwSWRdLnByaXZhdGVzID0gY29sbGVjdGlvbnNbXG4gICAgICAgICAgICAgICAgbXNwXG4gICAgICAgICAgICAgIF0ucHJpdmF0ZXM/LmZpbHRlcigocDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHAubmFtZSAhPT0gKG1pcnJvck1ldGEucmVzb2x2ZXIgYXMgc3RyaW5nKSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgbWlycm9yQ29sbGVjdGlvbiA9IHAgYXMgYW55O1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBwcml2YXRlc0NvdW50ID0gT2JqZWN0LnZhbHVlcyhjb2xsZWN0aW9ucylcbiAgICAgICAgICAgIC5tYXAoKGMpID0+IGMucHJpdmF0ZXMpXG4gICAgICAgICAgICAuZmxhdCgpLmxlbmd0aDtcbiAgICAgICAgICBpZiAocHJpdmF0ZXNDb3VudClcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgIC5pbmZvKGBGb3VuZCAke3ByaXZhdGVzQ291bnR9IHByaXZhdGUgY29sbGVjdGlvbnMgdG8gY3JlYXRlYCk7XG4gICAgICAgICAgY29uc3Qgc2hhcmVkQ291bnQgPSBPYmplY3QudmFsdWVzKGNvbGxlY3Rpb25zKVxuICAgICAgICAgICAgLm1hcCgoYykgPT4gYy5zaGFyZWQpXG4gICAgICAgICAgICAuZmxhdCgpLmxlbmd0aDtcblxuICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgLmluZm8oYEZvdW5kICR7c2hhcmVkQ291bnR9IHNoYXJlZCBjb2xsZWN0aW9ucyB0byBjcmVhdGVgKTtcbiAgICAgICAgICBpZiAobWlycm9yQ29sbGVjdGlvbilcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgIC5pbmZvKFxuICAgICAgICAgICAgICAgIGBGb3VuZCBvbmUgbWlycm9yIGNvbGxlY3Rpb24gJHttaXJyb3JNZXRhPy5yZXNvbHZlciBhcyBzdHJpbmd9YFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgY29sTGlzdCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAubWFwKChjKSA9PiBbLi4uKGMucHJpdmF0ZXMgfHwgW10pLCAuLi4oYy5zaGFyZWQgfHwgW10pXSlcbiAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgICAgbGV0IGluZGV4ZXM6IENyZWF0ZUluZGV4UmVxdWVzdFtdID0gW107XG4gICAgICAgICAgbGV0IGRlc2lnbkRvY3M6IENvdWNoREJEZXNpZ25Eb2NbXSA9IFtdO1xuICAgICAgICAgIGlmIChjb2xMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLnZlcmJvc2UoYGdlbmVyYXRpbmcgaW5kZXhlcyBmb3IgY29sbGVjdGlvbnNgKTtcbiAgICAgICAgICAgIGluZGV4ZXMgPSBnZW5lcmF0ZU1vZGVsSW5kZXhlcyhjbGF6eik7XG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAuaW5mbyhgZm91bmQgJHtpbmRleGVzLmxlbmd0aH0gaW5kZXhlc2ApO1xuICAgICAgICAgICAgZGVzaWduRG9jcyA9IGdlbmVyYXRlTW9kZWxEZXNpZ25Eb2NzKGNsYXp6KTtcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgIC5pbmZvKGBmb3VuZCAke2Rlc2lnbkRvY3MubGVuZ3RofSBkZXNpZ24gZG9jc2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICAgIGRlc2lnbkRvY3MsXG4gICAgICAgICAgICBjb2xsZWN0aW9uczogY29sTGlzdCxcbiAgICAgICAgICAgIG1pcnJvcjogbWlycm9yQ29sbGVjdGlvbixcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJldHVybiBjb2xzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHMgPSBhd2FpdCBnZXRDb2xzKCk7XG4gICAgY29uc3Qgb25seU1pcnJvciA9IGF3YWl0IGdldENvbHMoW21haW5Nc3BJZF0pO1xuXG4gICAgY29uc3QgY29sbGVjdGlvbnNUbyA9IFtcbiAgICAgIC4uLm9ubHlNaXJyb3IuZmlsdGVyKChjKSA9PiBjLm1pcnJvcikubWFwKChjKSA9PiBjLm1pcnJvciksXG4gICAgICAuLi5jb2xzLm1hcCgoYykgPT4gYy5jb2xsZWN0aW9ucykuZmxhdCgpLFxuICAgICAgLi4uY29scy5maWx0ZXIoKGMpID0+IGMubWlycm9yKS5tYXAoKGMpID0+IGMubWlycm9yKSxcbiAgICBdIGFzIFByaXZhdGVDb2xsZWN0aW9uW107XG5cbiAgICBjb25zdCB1bmlxdWVCeUNvbGxlY3Rpb24gPSBbXG4gICAgICAuLi5uZXcgTWFwKFxuICAgICAgICBjb2xsZWN0aW9uc1RvLm1hcCgoaXRlbTogUHJpdmF0ZUNvbGxlY3Rpb24pID0+IFtpdGVtLm5hbWUsIGl0ZW1dKVxuICAgICAgKS52YWx1ZXMoKSxcbiAgICBdO1xuXG4gICAgaWYgKHVuaXF1ZUJ5Q29sbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgIHdyaXRlQ29sbGVjdGlvbnModW5pcXVlQnlDb2xsZWN0aW9uLCBvdXREaXIpO1xuICAgICAgY29uc3QgbWV0YUNvbGxlY3Rpb25zQ29uZmlnID0gcGF0aC5qb2luKFxuICAgICAgICBvdXREaXIsXG4gICAgICAgIFwiTUVUQS1JTkZcIixcbiAgICAgICAgXCJjb2xsZWN0aW9uc19jb25maWcuanNvblwiXG4gICAgICApO1xuICAgICAgY29uc3QgY29udHJhY3RDb2xsZWN0aW9uc0NvbmZpZyA9IHBhdGguam9pbihcbiAgICAgICAgb3V0RGlyLFxuICAgICAgICBcImNvbGxlY3Rpb25zX2NvbmZpZy5qc29uXCJcbiAgICAgICk7XG4gICAgICBmcy5jb3B5RmlsZVN5bmMobWV0YUNvbGxlY3Rpb25zQ29uZmlnLCBjb250cmFjdENvbGxlY3Rpb25zQ29uZmlnKTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgU3RvcmVkICR7Y29sbGVjdGlvbnNUby5sZW5ndGh9IGNvbGxlY3Rpb25zIHRvICR7bWV0YUNvbGxlY3Rpb25zQ29uZmlnfWBcbiAgICAgICk7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYENvcGllZCBjb2xsZWN0aW9uc19jb25maWcgdG8gJHtjb250cmFjdENvbGxlY3Rpb25zQ29uZmlnfSBhbG9uZ3NpZGUgdGhlIHBhY2thZ2UuanNvbmBcbiAgICAgICk7XG5cbiAgICAgIGNvbHMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBjb25zdCB7IGluZGV4ZXMsIGRlc2lnbkRvY3MsIGNvbGxlY3Rpb25zLCBtaXJyb3IgfSA9IGM7XG4gICAgICAgIGNvbnN0IHRvSW5kZXg6IFByaXZhdGVDb2xsZWN0aW9uW10gPSBbLi4uY29sbGVjdGlvbnMsIG1pcnJvcl0uZmlsdGVyKFxuICAgICAgICAgIEJvb2xlYW5cbiAgICAgICAgKSBhcyBQcml2YXRlQ29sbGVjdGlvbltdO1xuICAgICAgICB0b0luZGV4LmZvckVhY2goKGkpID0+IHtcbiAgICAgICAgICB3cml0ZUluZGV4ZXMoaW5kZXhlcywgb3V0RGlyLCBpLm5hbWUpO1xuICAgICAgICAgIHdyaXRlQ29sbGVjdGlvbkRlc2lnbkRvY3MoZGVzaWduRG9jcyB8fCBbXSwgb3V0RGlyLCBpLm5hbWUpO1xuICAgICAgICAgIGxvZy5pbmZvKFxuICAgICAgICAgICAgYFN0b3JlZCAke2luZGV4ZXM/Lmxlbmd0aCB8fCAwfSBpbmRleGVzIGFuZCAke2Rlc2lnbkRvY3M/Lmxlbmd0aCB8fCAwfSBkZXNpZ24gZG9jcyB0byBjb2xsZWN0aW9uICR7aS5uYW1lfWBcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbmNvbnN0IGVuc3VyZUluZnJhID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImF3YWl0LWluZnJhXCIpXG4gIC5kZXNjcmlwdGlvbihcIndhaXRzIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gYmUgdXAgYW5kIHJ1bm5pbmdcIilcbiAgLm9wdGlvbihcbiAgICBcIi0tY29udGFpbmVyIDxTdHJpbmc+XCIsXG4gICAgXCJkb2NrZXIgY29udGFpbmVyIG5hbWUgdG8gdGVzdCAodXN1YWxseSBsYXN0IHBlZXIpXCIsXG4gICAgXCJib290LW9yZy1jLXBlZXItMFwiXG4gIClcbiAgLm9wdGlvbihcIi0tdGltZW91dCA8U3RyaW5nPlwiLCBcInRpbWVvdXQgYmV0d2VlbiB0ZXN0cyBpbiBtaWxsaXNlY29uZHNcIiwgXCI1MDAwXCIpXG4gIC5vcHRpb24oXCItLWF0dGVtcHRzIDxTdHJpbmc+XCIsIFwibnVtYmVyIG9mIGF0dGVtcHRzIGJlZm9yZSBnaXZpbmcgdXBcIiwgXCIxMFwiKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiYXdhaXQtaW5mcmFcIik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IGNvbnRhaW5lciwgdGltZW91dCwgYXR0ZW1wdHMgfSA9IG9wdGlvbnM7XG4gICAgdGltZW91dCA9IHBhcnNlSW50KHRpbWVvdXQpIHx8IDUwMDA7XG4gICAgYXR0ZW1wdHMgPSBwYXJzZUludChhdHRlbXB0cykgfHwgMTA7XG5cbiAgICBhd2FpdCBlbnN1cmVJbmZyYXN0cnVjdHVyZUJvb3RlZChcImJvb3Qtb3JnLWMtcGVlci0wXCIsIHRpbWVvdXQsIGF0dGVtcHRzKTtcblxuICAgIGxvZy5pbmZvKFxuICAgICAgYEluZnJhc3RydWN0dXJlIGJvb3RlZCBzdWNjZXNzZnVsbHkgKGFjY29yZGluZyB0byBjb250YWluZXIgJHtjb250YWluZXJ9KSFgXG4gICAgKTtcbiAgfSk7XG5cbmNvbnN0IGRlcGxveUNvbnRyYWN0ID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImRlcGxveS1jb250cmFjdFwiKVxuICAuZGVzY3JpcHRpb24oXCJkZXBsb3lzIHRoZSBzZWxlY3RlZCBjb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1uYW1lIDxTdHJpbmc+XCIsIFwiQ29udHJhY3QgTmFtZSAoYW5kIGZvbGRlcilcIilcbiAgLm9wdGlvbihcIi0taW5wdXQgPFN0cmluZz5cIiwgXCJpbnB1dCBmb2xkZXJcIilcbiAgLm9wdGlvbihcbiAgICBcIi0tY29sbGVjdGlvbnMtY29uZmlnIDxTdHJpbmc+XCIsXG4gICAgXCJwYXRoIHRvIGNvbGxlY3Rpb25zX2NvbmZpZy5qc29uIHRvIGNvbmZpZ3VyZSBwcml2YXRlIGNvbGxlY3Rpb25zXCJcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1pbmNyZW1lbnRWZXJzaW9uIDxTdHJpbmc+XCIsXG4gICAgXCIodHJ1ZSB8IGZhbHNlKSBpZiBzaG91bGQgdXNlIHZlcnNpb24gb3Igc2VxdWVuY2UgdG8gdXBkYXRlIGNvbnRyYWN0c1wiLFxuICAgIGZhbHNlXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tdHJhY2tlckZvbGRlciA8U3RyaW5nPlwiLFxuICAgIFwiY29udHJhY3QgdmVyc2lvbiB0cmFja2VyIGZvbGRlciAoc2hvdWxkIGJlIGRlbGV0ZWQgb24gaW5mcmFzdHJ1Y3R1cmU6ZG93bilcIixcbiAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJ0ZXN0c1wiLCBcImludGVncmF0aW9uXCIsIFwiY2hhaW5jb2RlVHJhY2tlcnNcIilcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1wZWVycyA8U3RyaW5nPlwiLFxuICAgIFwiY29tbWEgc2VwYXJhdGVkIHBlZXIgaWRzXCIsXG4gICAgXCJvcmctYS1wZWVyLTAsb3JnLWItcGVlci0wLG9yZy1jLXBlZXItMFwiXG4gIClcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImRlcGxveS1jb250cmFjdFwiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBpbnB1dCxcbiAgICAgIHBlZXJzLFxuICAgICAgdHJhY2tlckZvbGRlcixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGluY3JlbWVudFZlcnNpb24sXG4gICAgICBjb2xsZWN0aW9uc0NvbmZpZyxcbiAgICB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBwZWVySWRzID0gcGVlcnMuc3BsaXQoXCIsXCIpO1xuXG4gICAgY29uc3QgY291bnRQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguam9pbih0cmFja2VyRm9sZGVyLCBgJHtuYW1lfS5jb3VudGApKTtcblxuICAgIGxldCBzZXF1ZW5jZTogbnVtYmVyO1xuXG4gICAgdHJ5IHtcbiAgICAgIHNlcXVlbmNlID0gcGFyc2VJbnQoZnMucmVhZEZpbGVTeW5jKGNvdW50UGF0aCkudG9TdHJpbmcoXCJ1dGYtOFwiKSk7XG4gICAgICBpZiAoaXNOYU4oc2VxdWVuY2UpKSBzZXF1ZW5jZSA9IDE7XG4gICAgICBlbHNlIHNlcXVlbmNlICs9IDE7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgc2VxdWVuY2UgPSAxO1xuICAgIH1cbiAgICAvL1xuICAgIC8vIGlmIChpbmNyZW1lbnRWZXJzaW9uKSB7XG4gICAgLy8gICB2ZXJzaW9uID0gdmVyc2lvbiArIGAtJHtzZXF1ZW5jZX1gO1xuICAgIC8vICAgLy8gc2VxdWVuY2UgPSAxO1xuICAgIC8vIH1cblxuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IHBlZXIgb2YgcGVlcklkcykge1xuICAgICAgICBwYWNrYWdlQ29udHJhY3QocGVlciwgaW5wdXQsIG5hbWUsIHZlcnNpb24pO1xuICAgICAgICBpbnN0YWxsQ29udHJhY3QocGVlciwgbmFtZSk7XG4gICAgICAgIGFwcHJvdmVDb250cmFjdChcbiAgICAgICAgICBwZWVyLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcGVlciA9PT0gXCJvcmctYS1wZWVyLTBcIlxuICAgICAgICAgICAgPyBcInRscy1jYS1jZXJ0LnBlbVwiXG4gICAgICAgICAgICA6IFwib3JkZXJlci10bHMtY2EtY2VydC5wZW1cIixcbiAgICAgICAgICBzZXF1ZW5jZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGNvdW50UGF0aCwgc2VxdWVuY2UudG9TdHJpbmcoKSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGxvZy5lcnJvcihcIkVycm9yIGRlcGxveWluZyBjb250cmFjdDpcIiwgZXJyKTtcbiAgICB9XG4gICAgY29tbWl0Q2hhaW5jb2RlKG5hbWUsIHNlcXVlbmNlLCB2ZXJzaW9uLCBjb2xsZWN0aW9uc0NvbmZpZyk7XG4gIH0pO1xuXG5jb25zdCBnZXRDcnlwdG9NYXRlcmlhbCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJnZXQtY3J5cHRvLW1hdGVyaWFsXCIpXG4gIC5kZXNjcmlwdGlvbihcImNvcGllcyB0aGUgY3J5cHRvIG1hdGVyaWFsIHRvIHRoZSBzZWxlY3RlZCBmb2xkZXJcIilcbiAgLm9wdGlvbihcIi0tZm9sZGVyIDxTdHJpbmc+XCIsIFwib3V0cHV0IGZvbGRlclwiLCBcImRvY2tlci9kb2NrZXItZGF0YVwiKVxuICAub3B0aW9uKFwiLS1vcmcgW1N0cmluZ11cIiwgXCJ0aGUgb3JnL3BlZXIgdG8gZXh0cmFjdCBmcm9tXCIsIFwib3JnLWFcIilcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImdldC1jcnlwdG8tbWF0ZXJpYWxcIik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG4gICAgY29uc3QgeyBmb2xkZXIsIG9yZyB9ID0gb3B0aW9ucztcbiAgICBleGVjU3luYyhgZG9ja2VyIGNwICR7b3JnfTovd2VhdmVyL2NsaWVudC8uICR7Zm9sZGVyfWAsIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICB9KTtcbiAgfSk7XG5cbmNvbnN0IGZhYnJpY0NtZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJmb3ItZmFicmljXCIpXG4gIC5jb21tYW5kKFwiZmFicmljXCIpXG4gIC5kZXNjcmlwdGlvbihcbiAgICBcImV4cG9zZXMgc2V2ZXJhbCBjb21tYW5kcyB0byBoZWxwIG1hbmFnZSB0aGUgZmFicmljIGluZnJhc3RydWN0dXJlXCJcbiAgKTtcblxuZmFicmljQ21kLmFkZENvbW1hbmQoY29tcGlsZUNvbW1hbmQpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZXh0cmFjdEluZGV4ZXMpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZW5zdXJlSW5mcmEpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZGVwbG95Q29udHJhY3QpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZ2V0Q3J5cHRvTWF0ZXJpYWwpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZXh0cmFjdENvbGxlY3Rpb25zKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmFicmljKCkge1xuICByZXR1cm4gZmFicmljQ21kO1xufVxuIl19
505
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaS1tb2R1bGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4ZUEseUJBRUM7QUFoZkQseUNBQW9DO0FBQ3BDLCtDQUEwRDtBQUMxRCxpREFBeUM7QUFDekMsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixtQ0FBZ0M7QUFDaEMsNEVBQTZDO0FBQzdDLDJEQUE0RTtBQUM1RSx3REFBMko7QUFDM0oseUVBQXVEO0FBQ3ZELGlEQUF3TDtBQUN4TCx1Q0FBcUM7QUFDckMsNERBQTRCO0FBQzVCLDREQUFrSTtBQUNsSSxNQUFNLE1BQU0sR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxTQUFTLHVCQUF1QjtJQUM1QixPQUFPO1FBQ0gsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVE7WUFDdEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRSxNQUFNLFVBQVUsR0FBRztnQkFDZixZQUFZO2dCQUNaLEdBQUcsWUFBWSxLQUFLO2dCQUNwQixjQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7YUFDdEMsQ0FBQztZQUNGLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksWUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxZQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQzlELE9BQU8s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LENBQUM7QUFDckIsQ0FBQztBQUNELDh6MERBQTh6MEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgTG9nZ2luZywgdG9QYXNjYWxDYXNlIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcm9sbHVwIH0gZnJvbSBcInJvbGx1cFwiO1xuaW1wb3J0IHJlcGxhY2UgZnJvbSBcIkByb2xsdXAvcGx1Z2luLXJlcGxhY2VcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIFNlcmlhbGl6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MsIGdlbmVyYXRlTW9kZWxJbmRleGVzLCByZWFkTW9kZWxGaWxlLCByZWFkTW9kZWxGb2xkZXJzLCB3cml0ZURlc2lnbkRvY3MsIHdyaXRlSW5kZXhlcywgfSBmcm9tIFwiLi9jbGllbnQvaW5kZXhlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBhcHByb3ZlQ29udHJhY3QsIGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkLCBpbnN0YWxsQ29udHJhY3QsIHBhY2thZ2VDb250cmFjdCwgY29tbWl0Q2hhaW5jb2RlLCBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZCwgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcywgfSBmcm9tIFwiLi9jbGktdXRpbHMuanNcIjtcbmltcG9ydCBcIi4vc2hhcmVkL292ZXJyaWRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBleHRyYWN0Q29sbGVjdGlvbnMgYXMgZXhDb2xsZWN0aW9ucywgd3JpdGVDb2xsZWN0aW9ucywgd3JpdGVDb2xsZWN0aW9uRGVzaWduRG9jcywgfSBmcm9tIFwiLi9jbGllbnQvY29sbGVjdGlvbnMvaW5kZXguanNcIjtcbmNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZm9yKFwiZmFicmljXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZUJ1bmRsZWRKc0ltcG9ydHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogXCJyZXNvbHZlLWJ1bmRsZWQtanMtaW1wb3J0c1wiLFxuICAgICAgICByZXNvbHZlSWQoc291cmNlLCBpbXBvcnRlcikge1xuICAgICAgICAgICAgaWYgKCFpbXBvcnRlciB8fCAhc291cmNlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGltcG9ydGVyKSwgc291cmNlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRQYXRoLFxuICAgICAgICAgICAgICAgIGAke3Jlc29sdmVkUGF0aH0uanNgLFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvbHZlZFBhdGgsIFwiaW5kZXguanNcIiksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkgJiYgZnMuc3RhdFN5bmMoY2FuZGlkYXRlKS5pc0ZpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgIH07XG59XG5jb25zdCBjb21waWxlQ29tbWFuZCA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImNvbXBpbGUtY29udHJhY3RcIilcbiAgICAuZGVzY3JpcHRpb24oXCJDcmVhdGVzIGEgZ2xvYmFsIGNvbnRyYWN0XCIpXG4gICAgLm9wdGlvbihcIi0tZGV2XCIsIFwiY29tcGlsZXMgY29udHJhY3RzIHdpdGhvdXQgbWluaWZpY2F0aW9uXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLWRlYnVnXCIsIFwibWFrZXMgYXR0YWNoaW5nIGRlYnVnZ2VyIHBvc3NpYmxlXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLWNjYWFzXCIsIFwiQWp1c3RzIHRoZSBwYWNrYWdlIGNvbW1hbmRzIHRvIGJlIGRlcGxveWVkIGFzIGNjYWFzXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLW5hbWUgPFN0cmluZz5cIiwgXCJjb250cmFjdCBuYW1lXCIsIFwiZ2xvYmFsLWNvbnRyYWN0XCIpXG4gICAgLm9wdGlvbihcIi0tYnVuZGxlXCIsIFwiQnVuZGxlcyB3aXRoIHJvbGx1cCBpbnN0ZWFkIG9mIHVzaW5nIHRzY1wiLCBmYWxzZSlcbiAgICAub3B0aW9uKFwiLS10cy1jb25maWctZmlsZSA8c3RyaW5nPlwiLCBcInJlbGF0aXZlIHBhdGggdG8gdGhlIHRzIGNvbmZpZyBmaWxlIGJhc2VkIG9uIGN3ZCBvciBhYnNvbHV0ZSBwYXRoXCIsIFwiLi90c2NvbmZpZy5qc29uXCIpXG4gICAgLm9wdGlvbihcIi0tZGVzY3JpcHRpb24gPFN0cmluZz5cIiwgXCJjb250cmFjdCBkZXNjcmlwdGlvblwiLCBcIkdsb2JhbCBjb250cmFjdCBpbXBsZW1lbnRhdGlvblwiKVxuICAgIC5vcHRpb24oXCItLXN0cmlwLWNvbnRyYWN0LW5hbWVcIiwgXCJzdHJpcCBjb250cmFjdCBuYW1lIGZyb20gb3V0cHV0XCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLWlucHV0IDxTdHJpbmc+XCIsIFwiaW5wdXQgZm9sZGVyIGZvciBjb250cmFjdHNcIiwgXCJsaWIvY29udHJhY3RzXCIpXG4gICAgLm9wdGlvbihcIi0tb3V0cHV0IDxTdHJpbmc+XCIsIFwib3V0cHV0IGZvbGRlciBmb3IgY29udHJhY3RzXCIsIFwiLi9jb250cmFjdHNcIilcbiAgICAub3B0aW9uKFwiLS1zb3VyY2VtYXBzXCIsIFwiaW5jbHVkZXMgc291cmNlbWFwcyBpbiB0aGUgY29tcGlsZWQgb3V0cHV0XCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLW5wbXJjXCIsIFwiaW5jbHVkZXMgLm5wbXJjIGluIHRoZSBjb21waWxlZCBvdXRwdXRcIiwgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKSk7XG4gICAgbGV0IG5wbXJjQ29udGVudCA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG4gICAgbGV0IHsgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGRldiwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGRlYnVnLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbmFtZSwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGRlc2NyaXB0aW9uLCBvdXRwdXQsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBpbnB1dCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIHN0cmlwQ29udHJhY3ROYW1lLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgY2NhYXMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBidW5kbGUsIHRzQ29uZmlnRmlsZSwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIHNvdXJjZW1hcHMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBucG1yYywgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImNvbXBpbGUtY29udHJhY3RcIik7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKG5wbXJjKSB7XG4gICAgICAgICAgICBucG1yY0NvbnRlbnQgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIubnBtcmNcIiksIFwidXRmLThcIikpO1xuICAgICAgICAgICAgY29uc3QgcmVwbGFjZWQgPSBucG1yY0NvbnRlbnQucmVwbGFjZSgvXFwkXFx7KFtefV0rKVxcfS9nLCAoXywgdmFyTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbdmFyTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBFbnZpcm9ubWVudCB2YXJpYWJsZSBcIiR7dmFyTmFtZX1cIiBpcyBub3Qgc2V0YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5wbXJjQ29udGVudCA9IHJlcGxhY2VkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgbG9nLmluZm8oYE5vIC5ucG1yYyBmaWxlIGZvdW5kLCBza2lwcGluZyBjb3B5aW5nIC5ucG1yYyB0byBvdXRwdXRgKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICAgIHRzQ29uZmlnRmlsZSA9IHBhdGguaXNBYnNvbHV0ZSh0c0NvbmZpZ0ZpbGUpXG4gICAgICAgID8gdHNDb25maWdGaWxlXG4gICAgICAgIDogcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIHRzQ29uZmlnRmlsZSk7XG4gICAgb3V0cHV0ID0gc3RyaXBDb250cmFjdE5hbWUgPyBvdXRwdXQgOiBwYXRoLmpvaW4ob3V0cHV0LCBuYW1lKTtcbiAgICBsb2cuaW5mbyhgRGVsZXRpbmcgZXhpc3Rpbmcgb3V0cHV0IGZvbGRlciAoaWYgZXhpc3RzKSB1bmRlciAke291dHB1dH1gKTtcbiAgICBleGVjU3luYyhgcm0gLXJmICR7b3V0cHV0fWApO1xuICAgIGlmIChidW5kbGUpIHtcbiAgICAgICAgbG9nLmluZm8oYGJ1bmRsaW5nIGNvbnRyYWN0IGZyb20gJHtpbnB1dH1gKTtcbiAgICAgICAgY29uc3QgdGVtcEJ1bmRsZURpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi5jb250cmFjdC1idW5kbGUtXCIpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0RW50cnkgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgaW5wdXQsIFwiaW5kZXgudHNcIik7XG4gICAgICAgICAgICBjb25zdCBjb25maWdGaWxlID0gdHMucmVhZENvbmZpZ0ZpbGUodHNDb25maWdGaWxlLCB0cy5zeXMucmVhZEZpbGUpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZ0ZpbGUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcih0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KGNvbmZpZ0ZpbGUuZXJyb3IubWVzc2FnZVRleHQsIFwiXFxuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZENvbmZpZyA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGNvbmZpZ0ZpbGUuY29uZmlnLCB0cy5zeXMsIHBhdGguZGlybmFtZSh0c0NvbmZpZ0ZpbGUpLCB1bmRlZmluZWQsIHRzQ29uZmlnRmlsZSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkQ29uZmlnLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihwYXJzZWRDb25maWcuZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGVycm9yKSA9PiB0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KGVycm9yLm1lc3NhZ2VUZXh0LCBcIlxcblwiKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGVtcENvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi5wYXJzZWRDb25maWcub3B0aW9ucyxcbiAgICAgICAgICAgICAgICBvdXREaXI6IHRlbXBCdW5kbGVEaXIsXG4gICAgICAgICAgICAgICAgbW9kdWxlOiB0cy5Nb2R1bGVLaW5kLkVTTmV4dCxcbiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmxpbmVTb3VyY2VzOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBidW5kbGVkRW50cnlQb2ludCA9IHRzXG4gICAgICAgICAgICAgICAgLmdldE91dHB1dEZpbGVOYW1lcyh7XG4gICAgICAgICAgICAgICAgLi4ucGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRlbXBDb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgICB9LCBpbnB1dEVudHJ5LCAhdHMuc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpXG4gICAgICAgICAgICAgICAgLmZpbmQoKGZpbGVOYW1lKSA9PiBmaWxlTmFtZS5lbmRzV2l0aChcIi5qc1wiKSk7XG4gICAgICAgICAgICBpZiAoIWJ1bmRsZWRFbnRyeVBvaW50KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBkZXRlcm1pbmUgdGhlIGVtaXR0ZWQgYnVuZGxlIGVudHJ5IGZvciAke2lucHV0RW50cnl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzQ29uZmlnRmlsZSwgdGVtcENvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBidW5kbGVkQ29udHJhY3QgPSBhd2FpdCByb2xsdXAoe1xuICAgICAgICAgICAgICAgIGlucHV0OiBidW5kbGVkRW50cnlQb2ludCxcbiAgICAgICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVCdW5kbGVkSnNJbXBvcnRzKCksXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudEFzc2lnbm1lbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXJzOiBbXCJcIiwgXCJcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHsgXCIjI1ZFUlNJT04jI1wiOiB2ZXJzaW9uLCBcIiMjUEFDS0FHRSMjXCI6IHBrZy5uYW1lIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGB3aXRoaW5nIGNvbnRyYWN0IHRvICR7b3V0cHV0fSB3aXRoIG5hbWUgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCk7XG4gICAgICAgICAgICBhd2FpdCBidW5kbGVkQ29udHJhY3Qud3JpdGUoe1xuICAgICAgICAgICAgICAgIGZpbGU6IGAke291dHB1dH0vJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidW1kXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2AsXG4gICAgICAgICAgICAgICAgc291cmNlbWFwOiBzb3VyY2VtYXBzID8gXCJpbmxpbmVcIiA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvdXJjZW1hcFBhdGhUcmFuc2Zvcm06IChyZWxhdGl2ZVNvdXJjZVBhdGgsIHNvdXJjZW1hcFBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzb2x1dGVTb3VyY2VQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShzb3VyY2VtYXBQYXRoKSwgcmVsYXRpdmVTb3VyY2VQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFic29sdXRlU291cmNlUGF0aC5zdGFydHNXaXRoKHRlbXBCdW5kbGVEaXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5wb3NpeC5qb2luKFwiLmJ1bmRsZVwiLCBwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbGF0aXZlKHRlbXBCdW5kbGVEaXIsIGFic29sdXRlU291cmNlUGF0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQocGF0aC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIvXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVsYXRpdmVTb3VyY2VQYXRoO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IGJ1bmRsZWRDb250cmFjdC5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgZnMucm1TeW5jKHRlbXBCdW5kbGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyh0c0NvbmZpZ0ZpbGUsIHtcbiAgICAgICAgICAgIG91dERpcjogb3V0cHV0LFxuICAgICAgICAgICAgbW9kdWxlOiB0cy5Nb2R1bGVLaW5kLkVTTmV4dCxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIHNvdXJjZU1hcDogc291cmNlbWFwcyxcbiAgICAgICAgICAgIGlubGluZVNvdXJjZXM6IHNvdXJjZW1hcHMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBzY3JpcHRzID0ge1xuICAgICAgICBzdGFydDogZ2V0Q29udHJhY3RTdGFydENvbW1hbmQoZGVidWcsIGNjYWFzKSxcbiAgICAgICAgXCJzdGFydDpkZXZcIjogXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnQgLS10bHMuZW5hYmxlZCBmYWxzZVwiLFxuICAgICAgICBcInN0YXJ0OndhdGNoXCI6ICdub2RlbW9uIC0tZXhlYyBcIm5wbSBydW4gc3RhcnQ6ZGV2XCInLFxuICAgICAgICBidWlsZDogJ2VjaG8gXCJObyBuZWVkIHRvIGJ1aWxkIHRoZSBjaGFpbmNvZGVcIicsXG4gICAgICAgIGxpbnQ6IFwiZXNsaW50IC4gLS1maXggLS1leHQgLmpzXCIsXG4gICAgfTtcbiAgICBjb25zdCBjb250cmFjdFBhY2thZ2UgPSBwa2c7XG4gICAgY29udHJhY3RQYWNrYWdlLm5hbWUgPSBuYW1lO1xuICAgIGNvbnRyYWN0UGFja2FnZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIGNvbnRyYWN0UGFja2FnZS5zY3JpcHRzID0gc2NyaXB0cztcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGU7XG4gICAgZGVsZXRlIGNvbnRyYWN0UGFja2FnZS50eXBlcztcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLmV4cG9ydHM7XG4gICAgY29udHJhY3RQYWNrYWdlLm1haW4gPSBidW5kbGVcbiAgICAgICAgPyBgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYFxuICAgICAgICA6IGAke2lucHV0fS9pbmRleC5qc2A7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCBcInBhY2thZ2UuanNvblwiKSwgSlNPTi5zdHJpbmdpZnkoY29udHJhY3RQYWNrYWdlKSk7XG4gICAgaWYgKG5wbXJjKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRwdXQsIFwiLm5wbXJjXCIpLCBucG1yYyk7XG4gICAgbG9nLmluZm8oYEluc3RhbGxpbmcgYW5kIHNocmlua3dyYXBwaW5nIGRlcGVuZGVuY2llc2ApO1xuICAgIGV4ZWNTeW5jKGBucG0gaW5zdGFsbGAsIHsgY3dkOiBvdXRwdXQgfSk7XG4gICAgZXhlY1N5bmMoYG5wbSBzaHJpbmt3cmFwYCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBleGVjU3luYyhcInJtIC1yZiBub2RlX21vZHVsZXNcIiwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBsb2cuaW5mbyhgZGVsZXRpbmcgdGVtcCBmb2xkZXJzYCk7XG4gICAgZXhlY1N5bmMoYHJtIC1yZiAuL2xpYiAmJiBybSAtcmYgLi9kaXN0YCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBsb2cuaW5mbyhgQ29udHJhY3QgJHtuYW1lfSBjb21waWxlZCBzdWNjZXNzZnVsbHkhIGluICR7cGF0aC5yZXNvbHZlKG91dHB1dCl9YCk7XG4gICAgaWYgKGRldikge1xuICAgICAgICBsb2cuaW5mbyhgZGV2IG1vZGUgZW5hYmxlZC4gaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZ2ApO1xuICAgICAgICBleGVjU3luYyhgbnBtIGluc3RhbGxgLCB7XG4gICAgICAgICAgICBjd2Q6IG91dHB1dCxcbiAgICAgICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgTk9ERV9FTlY6IFwicHJvZHVjdGlvblwiIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbn0pO1xuY29uc3QgZXh0cmFjdEluZGV4ZXMgPSBuZXcgQ29tbWFuZCgpXG4gICAgLmNvbW1hbmQoXCJleHRyYWN0LWluZGV4ZXNcIilcbiAgICAub3B0aW9uKFwiLS1maWxlIFtTdHJpbmddXCIsIFwidGhlIG1vZGVsIGZpbGVcIilcbiAgICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gICAgLm9wdGlvbihcIi0tb3V0RGlyIDxTdHJpbmc+XCIsIFwidGhlIG91dGRpci4gc2hvdWxkIG1hdGNoIHlvdXIgY29udHJhY3QgZm9sZGVyXCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQ3JlYXRlcyBhIHRoZSBKU09OIGluZGV4IGZpbGVzIHRvIGJlIHN1Ym1pdHRlZCB0byBhbG9uZyB3aXRoIHRoZSBjb250cmFjdFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIikpO1xuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1pbmRleGVzXCIpO1xuICAgIGxvZy5kZWJ1ZyhgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgZmlsZSwgZm9sZGVyLCBvdXREaXIgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgbW9kZWxzLnB1c2goLi4ucmVhZE1vZGVsRmlsZShmaWxlKSk7XG4gICAgfVxuICAgIGlmIChmb2xkZXIpIHtcbiAgICAgICAgbG9nLmluZm8oYExvYWRpbmcgbW9kZWxzIGZyb20gJHtmb2xkZXJ9Li4uYCk7XG4gICAgICAgIG1vZGVscy5wdXNoKC4uLihhd2FpdCByZWFkTW9kZWxGb2xkZXJzKGZvbGRlcikpKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgY29uc3QgZGVzaWduRG9jcyA9IHt9O1xuICAgIGlmICghZmlsZSAmJiAhZm9sZGVyKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTXVzdCBwYXNzIGEgZmlsZSBvciBhIGZvbGRlcmApO1xuICAgIGZvciAoY29uc3QgbSBvZiBtb2RlbHMpIHtcbiAgICAgICAgbG9nLnZlcmJvc2UoYEV4dHJhY3RpbmcgaW5kZXhlcyBmb3IgdGFibGUgJHtNb2RlbC50YWJsZU5hbWUobSl9YCk7XG4gICAgICAgIGNvbnN0IGluZGV4ZXMgPSBnZW5lcmF0ZU1vZGVsSW5kZXhlcyhtKTtcbiAgICAgICAgaW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaW5kZXgubmFtZV0gPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGdlbmVyYXRlTW9kZWxEZXNpZ25Eb2NzKG0sIGRlc2lnbkRvY3MpO1xuICAgIH1cbiAgICBjb25zdCBpbmRleGVzVG9Xcml0ZSA9IE9iamVjdC52YWx1ZXMocmVzdWx0KTtcbiAgICBjb25zdCBkb2NzVG9Xcml0ZSA9IE9iamVjdC52YWx1ZXMoZGVzaWduRG9jcyk7XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7aW5kZXhlc1RvV3JpdGUubGVuZ3RofSBpbmRleGVzIHRvIGNyZWF0ZWApO1xuICAgIGxvZy52ZXJib3NlKGBGb3VuZCAke2RvY3NUb1dyaXRlLmxlbmd0aH0gZGVzaWduIGRvY3MgdG8gY3JlYXRlYCk7XG4gICAgbG9nLmRlYnVnKGBJbmRleGVzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gICAgbG9nLmRlYnVnKGBEZXNpZ25Eb2NzOiAke0pTT04uc3RyaW5naWZ5KGRlc2lnbkRvY3MpfWApO1xuICAgIHdyaXRlSW5kZXhlcyhpbmRleGVzVG9Xcml0ZSwgb3V0RGlyKTtcbiAgICB3cml0ZURlc2lnbkRvY3MoZG9jc1RvV3JpdGUsIG91dERpcik7XG59KTtcbmNvbnN0IGV4dHJhY3RDb2xsZWN0aW9ucyA9IG5ldyBDb21tYW5kKClcbiAgICAuY29tbWFuZChcImV4dHJhY3QtY29sbGVjdGlvbnNcIilcbiAgICAub3B0aW9uKFwiLS1maWxlIFtTdHJpbmddXCIsIFwidGhlIG1vZGVsIGZpbGVcIilcbiAgICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gICAgLm9wdGlvbihcIi0tb3V0RGlyIDxTdHJpbmc+XCIsIFwidGhlIG91dGRpci4gc2hvdWxkIG1hdGNoIHlvdXIgY29udHJhY3QgZm9sZGVyXCIpXG4gICAgLm9wdGlvbihcIi0tbXNwSWRzIDxTdHJpbmc+XCIsIFwic2luZ2xlIG1zcElkIG9yIHN0cmluZ2lmaWVkIGFycmF5XCIpXG4gICAgLm9wdGlvbihcIi0tbWFpbk1zcElkIDxTdHJpbmc+XCIsIFwic2luZ2xlIG1zcElkXCIpXG4gICAgLm9wdGlvbihcIi0tb3ZlcnJpZGVzIFtTdHJpbmddXCIsIFwic3RyaW5naWZpZWQgb3ZlcnJpZGUgb2JqZWN0IHtyZXF1aXJlZFBlZXJDb3VudDogbnVtYmVyLCBtYXhQZWVyQ291bnQ6IG51bWJlciwgYmxvY2tUb0xpdmU6IG51bWJlciwgbWVtYmVyT25seVJlYWQ6IG51bWJlciwgbWVtYmVyT25seVdyaXRlOiBudW1iZXIsIGVuZG9yc2VtZW50UG9saWN5OiAge319XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiQ3JlYXRlcyBhIHRoZSBKU09OIGluZGV4IGZpbGVzIHRvIGJlIHN1Ym1pdHRlZCB0byBhbG9uZyB3aXRoIHRoZSBjb250cmFjdFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIikpO1xuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1jb2xsZWN0aW9uc1wiKTtcbiAgICBsb2cuZGVidWcoYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IGZpbGUsIGZvbGRlciwgb3V0RGlyLCBtc3BJZHMsIG1haW5Nc3BJZCB9ID0gb3B0aW9ucztcbiAgICB0cnkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbXNwSWRzID0gbXNwSWRzID8gSlNPTi5wYXJzZShtc3BJZHMpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyAgZG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoYFVuYWJsZSB0byBleHRyYWN0IG1zcGlkczogICR7ZX1gKTtcbiAgICB9XG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgbW9kZWxzLnB1c2goLi4ucmVhZE1vZGVsRmlsZShmaWxlKSk7XG4gICAgfVxuICAgIGlmIChmb2xkZXIpIHtcbiAgICAgICAgbG9nLmluZm8oYExvYWRpbmcgbW9kZWxzIGZyb20gJHtmb2xkZXJ9Li4uYCk7XG4gICAgICAgIG1vZGVscy5wdXNoKC4uLihhd2FpdCByZWFkTW9kZWxGb2xkZXJzKGZvbGRlcikpKTtcbiAgICB9XG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNdXN0IHBhc3MgYSBmaWxlIG9yIGEgZm9sZGVyYCk7XG4gICAgY29uc3QgaW5qZWN0YWJsZU1vZGVscyA9IG1vZGVscy5maWx0ZXIoKG1vZGVsKSA9PiBNb2RlbC5pc1NoYXJlZChtb2RlbCkgfHxcbiAgICAgICAgTW9kZWwuaXNQcml2YXRlKG1vZGVsKSB8fFxuICAgICAgICAhIU1vZGVsLm1pcnJvcmVkQXQobW9kZWwpKTtcbiAgICBpZiAoIWluamVjdGFibGVNb2RlbHMubGVuZ3RoKSB7XG4gICAgICAgIGxvZy5pbmZvKGBObyBzaGFyZWQsIHByaXZhdGUsIG9yIG1pcnJvcmVkIG1vZGVscyBmb3VuZCB0byBleHRyYWN0IGNvbGxlY3Rpb25zYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0Q29scyhtc3BJZHNMaXN0KSB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBhd2FpdCBQcm9taXNlLmFsbChpbmplY3RhYmxlTW9kZWxzLm1hcChhc3luYyAoY2xhenopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgICAgICAgICBjb25zdCBtaXJyb3JNZXRhID0gTW9kZWwubWlycm9yZWRBdChjbGF6eik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0YWJsZU5hbWUpO1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbXNwIG9mIG1zcElkc0xpc3QgfHwgbXNwSWRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbnNbbXNwXSA9IGF3YWl0IGV4Q29sbGVjdGlvbnMoY2xhenosIFttc3AsIG1haW5Nc3BJZF0sIHt9LCBcbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICBzaGFyZWRDb2xzOiBPYmplY3QuYXNzaWduKHt9LCBvdmVycmlkZXMuc2hhcmVkQ29scyksXG4gICAgICAgICAgICAgICAgLy8gICBwcml2YXRlQ29sczogT2JqZWN0LmFzc2lnbih7fSwgb3ZlcnJpZGVzLnByaXZhdGVDb2xzKSxcbiAgICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAgICEhbWlycm9yTWV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbWlycm9yQ29sbGVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChtaXJyb3JNZXRhKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbnNbbWFpbk1zcElkXSA9IGNvbGxlY3Rpb25zW21haW5Nc3BJZF0gfHwge307XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbnMpLmZvckVhY2goKG1zcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uc1ttYWluTXNwSWRdLnByaXZhdGVzID0gY29sbGVjdGlvbnNbbXNwXS5wcml2YXRlcz8uZmlsdGVyKChwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5uYW1lICE9PSBtaXJyb3JNZXRhLnJlc29sdmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlycm9yQ29sbGVjdGlvbiA9IHA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcHJpdmF0ZXNDb3VudCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYykgPT4gYy5wcml2YXRlcylcbiAgICAgICAgICAgICAgICAuZmxhdCgpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChwcml2YXRlc0NvdW50KVxuICAgICAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgICAgICAgIC5pbmZvKGBGb3VuZCAke3ByaXZhdGVzQ291bnR9IHByaXZhdGUgY29sbGVjdGlvbnMgdG8gY3JlYXRlYCk7XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRDb3VudCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYykgPT4gYy5zaGFyZWQpXG4gICAgICAgICAgICAgICAgLmZsYXQoKS5sZW5ndGg7XG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgICAgLmluZm8oYEZvdW5kICR7c2hhcmVkQ291bnR9IHNoYXJlZCBjb2xsZWN0aW9ucyB0byBjcmVhdGVgKTtcbiAgICAgICAgICAgIGlmIChtaXJyb3JDb2xsZWN0aW9uKVxuICAgICAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgICAgICAgIC5pbmZvKGBGb3VuZCBvbmUgbWlycm9yIGNvbGxlY3Rpb24gJHttaXJyb3JNZXRhPy5yZXNvbHZlcn1gKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbExpc3QgPSBPYmplY3QudmFsdWVzKGNvbGxlY3Rpb25zKVxuICAgICAgICAgICAgICAgIC5tYXAoKGMpID0+IFsuLi4oYy5wcml2YXRlcyB8fCBbXSksIC4uLihjLnNoYXJlZCB8fCBbXSldKVxuICAgICAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgICAgICBsZXQgaW5kZXhlcyA9IFtdO1xuICAgICAgICAgICAgbGV0IGRlc2lnbkRvY3MgPSBbXTtcbiAgICAgICAgICAgIGlmIChjb2xMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgICAgICAgIC52ZXJib3NlKGBnZW5lcmF0aW5nIGluZGV4ZXMgZm9yIGNvbGxlY3Rpb25zYCk7XG4gICAgICAgICAgICAgICAgaW5kZXhlcyA9IGdlbmVyYXRlTW9kZWxJbmRleGVzKGNsYXp6KTtcbiAgICAgICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAgICAgICAuaW5mbyhgZm91bmQgJHtpbmRleGVzLmxlbmd0aH0gaW5kZXhlc2ApO1xuICAgICAgICAgICAgICAgIGRlc2lnbkRvY3MgPSBnZW5lcmF0ZU1vZGVsRGVzaWduRG9jcyhjbGF6eik7XG4gICAgICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgICAgICAgLmluZm8oYGZvdW5kICR7ZGVzaWduRG9jcy5sZW5ndGh9IGRlc2lnbiBkb2NzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgICAgICAgZGVzaWduRG9jcyxcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uczogY29sTGlzdCxcbiAgICAgICAgICAgICAgICBtaXJyb3I6IG1pcnJvckNvbGxlY3Rpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH1cbiAgICBjb25zdCBjb2xzID0gYXdhaXQgZ2V0Q29scygpO1xuICAgIGNvbnN0IG9ubHlNaXJyb3IgPSBhd2FpdCBnZXRDb2xzKFttYWluTXNwSWRdKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uc1RvID0gW1xuICAgICAgICAuLi5vbmx5TWlycm9yLmZpbHRlcigoYykgPT4gYy5taXJyb3IpLm1hcCgoYykgPT4gYy5taXJyb3IpLFxuICAgICAgICAuLi5jb2xzLm1hcCgoYykgPT4gYy5jb2xsZWN0aW9ucykuZmxhdCgpLFxuICAgICAgICAuLi5jb2xzLmZpbHRlcigoYykgPT4gYy5taXJyb3IpLm1hcCgoYykgPT4gYy5taXJyb3IpLFxuICAgIF07XG4gICAgY29uc3QgdW5pcXVlQnlDb2xsZWN0aW9uID0gW1xuICAgICAgICAuLi5uZXcgTWFwKGNvbGxlY3Rpb25zVG8ubWFwKChpdGVtKSA9PiBbaXRlbS5uYW1lLCBpdGVtXSkpLnZhbHVlcygpLFxuICAgIF07XG4gICAgaWYgKHVuaXF1ZUJ5Q29sbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgd3JpdGVDb2xsZWN0aW9ucyh1bmlxdWVCeUNvbGxlY3Rpb24sIG91dERpcik7XG4gICAgICAgIGNvbnN0IG1ldGFDb2xsZWN0aW9uc0NvbmZpZyA9IHBhdGguam9pbihvdXREaXIsIFwiTUVUQS1JTkZcIiwgXCJjb2xsZWN0aW9uc19jb25maWcuanNvblwiKTtcbiAgICAgICAgY29uc3QgY29udHJhY3RDb2xsZWN0aW9uc0NvbmZpZyA9IHBhdGguam9pbihvdXREaXIsIFwiY29sbGVjdGlvbnNfY29uZmlnLmpzb25cIik7XG4gICAgICAgIGZzLmNvcHlGaWxlU3luYyhtZXRhQ29sbGVjdGlvbnNDb25maWcsIGNvbnRyYWN0Q29sbGVjdGlvbnNDb25maWcpO1xuICAgICAgICBsb2cuaW5mbyhgU3RvcmVkICR7Y29sbGVjdGlvbnNUby5sZW5ndGh9IGNvbGxlY3Rpb25zIHRvICR7bWV0YUNvbGxlY3Rpb25zQ29uZmlnfWApO1xuICAgICAgICBsb2cuaW5mbyhgQ29waWVkIGNvbGxlY3Rpb25zX2NvbmZpZyB0byAke2NvbnRyYWN0Q29sbGVjdGlvbnNDb25maWd9IGFsb25nc2lkZSB0aGUgcGFja2FnZS5qc29uYCk7XG4gICAgICAgIGNvbHMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBpbmRleGVzLCBkZXNpZ25Eb2NzLCBjb2xsZWN0aW9ucywgbWlycm9yIH0gPSBjO1xuICAgICAgICAgICAgY29uc3QgdG9JbmRleCA9IFsuLi5jb2xsZWN0aW9ucywgbWlycm9yXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICB0b0luZGV4LmZvckVhY2goKGkpID0+IHtcbiAgICAgICAgICAgICAgICB3cml0ZUluZGV4ZXMoaW5kZXhlcywgb3V0RGlyLCBpLm5hbWUpO1xuICAgICAgICAgICAgICAgIHdyaXRlQ29sbGVjdGlvbkRlc2lnbkRvY3MoZGVzaWduRG9jcyB8fCBbXSwgb3V0RGlyLCBpLm5hbWUpO1xuICAgICAgICAgICAgICAgIGxvZy5pbmZvKGBTdG9yZWQgJHtpbmRleGVzPy5sZW5ndGggfHwgMH0gaW5kZXhlcyBhbmQgJHtkZXNpZ25Eb2NzPy5sZW5ndGggfHwgMH0gZGVzaWduIGRvY3MgdG8gY29sbGVjdGlvbiAke2kubmFtZX1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59KTtcbmNvbnN0IGVuc3VyZUluZnJhID0gbmV3IENvbW1hbmQoKVxuICAgIC5uYW1lKFwiYXdhaXQtaW5mcmFcIilcbiAgICAuZGVzY3JpcHRpb24oXCJ3YWl0cyBmb3IgdGhlIGluZnJhc3RydWN0dXJlIHRvIGJlIHVwIGFuZCBydW5uaW5nXCIpXG4gICAgLm9wdGlvbihcIi0tY29udGFpbmVyIDxTdHJpbmc+XCIsIFwiZG9ja2VyIGNvbnRhaW5lciBuYW1lIHRvIHRlc3QgKHVzdWFsbHkgbGFzdCBwZWVyKVwiLCBcImJvb3Qtb3JnLWMtcGVlci0wXCIpXG4gICAgLm9wdGlvbihcIi0tdGltZW91dCA8U3RyaW5nPlwiLCBcInRpbWVvdXQgYmV0d2VlbiB0ZXN0cyBpbiBtaWxsaXNlY29uZHNcIiwgXCI1MDAwXCIpXG4gICAgLm9wdGlvbihcIi0tYXR0ZW1wdHMgPFN0cmluZz5cIiwgXCJudW1iZXIgb2YgYXR0ZW1wdHMgYmVmb3JlIGdpdmluZyB1cFwiLCBcIjEwXCIpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKSk7XG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJhd2FpdC1pbmZyYVwiKTtcbiAgICBsb2cuZGVidWcoYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IGNvbnRhaW5lciwgdGltZW91dCwgYXR0ZW1wdHMgfSA9IG9wdGlvbnM7XG4gICAgdGltZW91dCA9IHBhcnNlSW50KHRpbWVvdXQpIHx8IDUwMDA7XG4gICAgYXR0ZW1wdHMgPSBwYXJzZUludChhdHRlbXB0cykgfHwgMTA7XG4gICAgYXdhaXQgZW5zdXJlSW5mcmFzdHJ1Y3R1cmVCb290ZWQoXCJib290LW9yZy1jLXBlZXItMFwiLCB0aW1lb3V0LCBhdHRlbXB0cyk7XG4gICAgbG9nLmluZm8oYEluZnJhc3RydWN0dXJlIGJvb3RlZCBzdWNjZXNzZnVsbHkgKGFjY29yZGluZyB0byBjb250YWluZXIgJHtjb250YWluZXJ9KSFgKTtcbn0pO1xuY29uc3QgZGVwbG95Q29udHJhY3QgPSBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJkZXBsb3ktY29udHJhY3RcIilcbiAgICAuZGVzY3JpcHRpb24oXCJkZXBsb3lzIHRoZSBzZWxlY3RlZCBjb250cmFjdFwiKVxuICAgIC5vcHRpb24oXCItLW5hbWUgPFN0cmluZz5cIiwgXCJDb250cmFjdCBOYW1lIChhbmQgZm9sZGVyKVwiKVxuICAgIC5vcHRpb24oXCItLWlucHV0IDxTdHJpbmc+XCIsIFwiaW5wdXQgZm9sZGVyXCIpXG4gICAgLm9wdGlvbihcIi0tY29sbGVjdGlvbnMtY29uZmlnIDxTdHJpbmc+XCIsIFwicGF0aCB0byBjb2xsZWN0aW9uc19jb25maWcuanNvbiB0byBjb25maWd1cmUgcHJpdmF0ZSBjb2xsZWN0aW9uc1wiKVxuICAgIC5vcHRpb24oXCItLWluY3JlbWVudFZlcnNpb24gPFN0cmluZz5cIiwgXCIodHJ1ZSB8IGZhbHNlKSBpZiBzaG91bGQgdXNlIHZlcnNpb24gb3Igc2VxdWVuY2UgdG8gdXBkYXRlIGNvbnRyYWN0c1wiLCBmYWxzZSlcbiAgICAub3B0aW9uKFwiLS10cmFja2VyRm9sZGVyIDxTdHJpbmc+XCIsIFwiY29udHJhY3QgdmVyc2lvbiB0cmFja2VyIGZvbGRlciAoc2hvdWxkIGJlIGRlbGV0ZWQgb24gaW5mcmFzdHJ1Y3R1cmU6ZG93bilcIiwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwidGVzdHNcIiwgXCJpbnRlZ3JhdGlvblwiLCBcImNoYWluY29kZVRyYWNrZXJzXCIpKVxuICAgIC5vcHRpb24oXCItLXBlZXJzIDxTdHJpbmc+XCIsIFwiY29tbWEgc2VwYXJhdGVkIHBlZXIgaWRzXCIsIFwib3JnLWEtcGVlci0wLG9yZy1iLXBlZXItMCxvcmctYy1wZWVyLTBcIilcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImRlcGxveS1jb250cmFjdFwiKTtcbiAgICBsb2cuZGVidWcoYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YCk7XG4gICAgY29uc3QgeyBuYW1lLCBpbnB1dCwgcGVlcnMsIHRyYWNrZXJGb2xkZXIsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBpbmNyZW1lbnRWZXJzaW9uLCBjb2xsZWN0aW9uc0NvbmZpZywgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcGVlcklkcyA9IHBlZXJzLnNwbGl0KFwiLFwiKTtcbiAgICBjb25zdCBjb3VudFBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKHRyYWNrZXJGb2xkZXIsIGAke25hbWV9LmNvdW50YCkpO1xuICAgIGxldCBzZXF1ZW5jZTtcbiAgICB0cnkge1xuICAgICAgICBzZXF1ZW5jZSA9IHBhcnNlSW50KGZzLnJlYWRGaWxlU3luYyhjb3VudFBhdGgpLnRvU3RyaW5nKFwidXRmLThcIikpO1xuICAgICAgICBpZiAoaXNOYU4oc2VxdWVuY2UpKVxuICAgICAgICAgICAgc2VxdWVuY2UgPSAxO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBzZXF1ZW5jZSArPSAxO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHNlcXVlbmNlID0gMTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyBpZiAoaW5jcmVtZW50VmVyc2lvbikge1xuICAgIC8vICAgdmVyc2lvbiA9IHZlcnNpb24gKyBgLSR7c2VxdWVuY2V9YDtcbiAgICAvLyAgIC8vIHNlcXVlbmNlID0gMTtcbiAgICAvLyB9XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yIChjb25zdCBwZWVyIG9mIHBlZXJJZHMpIHtcbiAgICAgICAgICAgIHBhY2thZ2VDb250cmFjdChwZWVyLCBpbnB1dCwgbmFtZSwgdmVyc2lvbik7XG4gICAgICAgICAgICBpbnN0YWxsQ29udHJhY3QocGVlciwgbmFtZSk7XG4gICAgICAgICAgICBhcHByb3ZlQ29udHJhY3QocGVlciwgbmFtZSwgcGVlciA9PT0gXCJvcmctYS1wZWVyLTBcIlxuICAgICAgICAgICAgICAgID8gXCJ0bHMtY2EtY2VydC5wZW1cIlxuICAgICAgICAgICAgICAgIDogXCJvcmRlcmVyLXRscy1jYS1jZXJ0LnBlbVwiLCBzZXF1ZW5jZSwgdmVyc2lvbiwgY29sbGVjdGlvbnNDb25maWcpO1xuICAgICAgICB9XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoY291bnRQYXRoLCBzZXF1ZW5jZS50b1N0cmluZygpKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cuZXJyb3IoXCJFcnJvciBkZXBsb3lpbmcgY29udHJhY3Q6XCIsIGVycik7XG4gICAgfVxuICAgIGNvbW1pdENoYWluY29kZShuYW1lLCBzZXF1ZW5jZSwgdmVyc2lvbiwgY29sbGVjdGlvbnNDb25maWcpO1xufSk7XG5jb25zdCBnZXRDcnlwdG9NYXRlcmlhbCA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImdldC1jcnlwdG8tbWF0ZXJpYWxcIilcbiAgICAuZGVzY3JpcHRpb24oXCJjb3BpZXMgdGhlIGNyeXB0byBtYXRlcmlhbCB0byB0aGUgc2VsZWN0ZWQgZm9sZGVyXCIpXG4gICAgLm9wdGlvbihcIi0tZm9sZGVyIDxTdHJpbmc+XCIsIFwib3V0cHV0IGZvbGRlclwiLCBcImRvY2tlci9kb2NrZXItZGF0YVwiKVxuICAgIC5vcHRpb24oXCItLW9yZyBbU3RyaW5nXVwiLCBcInRoZSBvcmcvcGVlciB0byBleHRyYWN0IGZyb21cIiwgXCJvcmctYVwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIikpO1xuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZ2V0LWNyeXB0by1tYXRlcmlhbFwiKTtcbiAgICBsb2cuZGVidWcoYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YCk7XG4gICAgY29uc3QgeyBmb2xkZXIsIG9yZyB9ID0gb3B0aW9ucztcbiAgICBleGVjU3luYyhgZG9ja2VyIGNwICR7b3JnfTovd2VhdmVyL2NsaWVudC8uICR7Zm9sZGVyfWAsIHtcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIH0pO1xufSk7XG5jb25zdCBmYWJyaWNDbWQgPSBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJmb3ItZmFicmljXCIpXG4gICAgLmNvbW1hbmQoXCJmYWJyaWNcIilcbiAgICAuZGVzY3JpcHRpb24oXCJleHBvc2VzIHNldmVyYWwgY29tbWFuZHMgdG8gaGVscCBtYW5hZ2UgdGhlIGZhYnJpYyBpbmZyYXN0cnVjdHVyZVwiKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGNvbXBpbGVDb21tYW5kKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGV4dHJhY3RJbmRleGVzKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGVuc3VyZUluZnJhKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGRlcGxveUNvbnRyYWN0KTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGdldENyeXB0b01hdGVyaWFsKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGV4dHJhY3RDb2xsZWN0aW9ucyk7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmYWJyaWMoKSB7XG4gICAgcmV0dXJuIGZhYnJpY0NtZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyeHBMVzF2WkhWc1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5amJHa3RiVzlrZFd4bExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hYUVVGWExFTkJRVU03UVVGRGNFTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3haUVVGWkxFVkJRVVVzVFVGQlRTeHRRa0ZCYlVJc1EwRkJRenRCUVVNeFJDeFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1pVRkJaU3hEUVVGRE8wRkJRM3BETEU5QlFVOHNSVUZCUlN4TlFVRk5MRWxCUVVrc1EwRkJRenRCUVVOd1FpeFBRVUZQTEVsQlFVa3NUVUZCVFN4TlFVRk5MRU5CUVVNN1FVRkRlRUlzVDBGQlR5eEZRVUZWTEUxQlFVMHNSVUZCUlN4TlFVRk5MRkZCUVZFc1EwRkJRenRCUVVONFF5eFBRVUZQTEU5QlFVOHNUVUZCVFN4M1FrRkJkMElzUTBGQlF6dEJRVU0zUXl4UFFVRlBMRVZCUVVVc1lVRkJZU3hGUVVGRkxHdENRVUZyUWl4RlFVRkZMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZETlVVc1QwRkJUeXhGUVVOTUxIVkNRVUYxUWl4RlFVTjJRaXh2UWtGQmIwSXNSVUZEY0VJc1lVRkJZU3hGUVVOaUxHZENRVUZuUWl4RlFVTm9RaXhsUVVGbExFVkJRMllzV1VGQldTeEhRVU5pTEd0RFFVRjVRanRCUVVNeFFpeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1owTkJRV2RETEVOQlFVTTdRVUZEZGtRc1QwRkJUeXhGUVVOTUxHVkJRV1VzUlVGRFppd3dRa0ZCTUVJc1JVRkRNVUlzWlVGQlpTeEZRVU5tTEdWQlFXVXNSVUZEWml4bFFVRmxMRVZCUTJZc2RVSkJRWFZDTEVWQlEzWkNMRFJDUVVFMFFpeEhRVU0zUWl4MVFrRkJiMEk3UVVGRGNrSXNjVU5CUVRSQ08wRkJRelZDTEU5QlFVOHNSVUZCUlN4TlFVRk5MRmxCUVZrc1EwRkJRenRCUVVNMVFpeFBRVUZQTEVWQlEwd3NhMEpCUVd0Q0xFbEJRVWtzWVVGQllTeEZRVVZ1UXl4blFrRkJaMElzUlVGRGFFSXNlVUpCUVhsQ0xFZEJRekZDTEhORFFVRnRRenRCUVVkd1F5eE5RVUZOTEUxQlFVMHNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlJYSkRMRk5CUVZNc2RVSkJRWFZDTzBsQlF6bENMRTlCUVU4N1VVRkRUQ3hKUVVGSkxFVkJRVVVzTkVKQlFUUkNPMUZCUTJ4RExGTkJRVk1zUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETzJkQ1FVTjZReXhQUVVGUExFbEJRVWtzUTBGQlF6dFpRVU5rTEVOQlFVTTdXVUZGUkN4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEYkVVc1RVRkJUU3hWUVVGVkxFZEJRVWM3WjBKQlEycENMRmxCUVZrN1owSkJRMW9zUjBGQlJ5eFpRVUZaTEV0QlFVczdaMEpCUTNCQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRlZCUVZVc1EwRkJRenRoUVVOd1F5eERRVUZETzFsQlJVWXNTMEZCU3l4TlFVRk5MRk5CUVZNc1NVRkJTU3hWUVVGVkxFVkJRVVVzUTBGQlF6dG5Ra0ZEYmtNc1NVRkJTU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenR2UWtGRGFFVXNUMEZCVHl4VFFVRlRMRU5CUVVNN1owSkJRMjVDTEVOQlFVTTdXVUZEU0N4RFFVRkRPMWxCUlVRc1QwRkJUeXhKUVVGSkxFTkJRVU03VVVGRFpDeERRVUZETzB0QlEwWXNRMEZCUXp0QlFVTktMRU5CUVVNN1FVRkZSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEpRVUZKTEU5QlFVOHNSVUZCUlR0TFFVTnFReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1MwRkRlRUlzVjBGQlZ5eERRVUZETERKQ1FVRXlRaXhEUVVGRE8wdEJRM2hETEUxQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVc2VVTkJRWGxETEVWQlFVVXNTMEZCU3l4RFFVRkRPMHRCUTJwRkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVWQlFVVXNiVU5CUVcxRExFVkJRVVVzUzBGQlN5eERRVUZETzB0QlF6ZEVMRTFCUVUwc1EwRkRUQ3hUUVVGVExFVkJRMVFzY1VSQlFYRkVMRVZCUTNKRUxFdEJRVXNzUTBGRFRqdExRVU5CTEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeGxRVUZsTEVWQlFVVXNhVUpCUVdsQ0xFTkJRVU03UzBGRE4wUXNUVUZCVFN4RFFVRkRMRlZCUVZVc1JVRkJSU3d3UTBGQk1FTXNSVUZCUlN4TFFVRkxMRU5CUVVNN1MwRkRja1VzVFVGQlRTeERRVU5NTERKQ1FVRXlRaXhGUVVNelFpeHRSVUZCYlVVc1JVRkRia1VzYVVKQlFXbENMRU5CUTJ4Q08wdEJRMEVzVFVGQlRTeERRVU5NTEhkQ1FVRjNRaXhGUVVONFFpeHpRa0ZCYzBJc1JVRkRkRUlzWjBOQlFXZERMRU5CUTJwRE8wdEJRMEVzVFVGQlRTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxHbERRVUZwUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRMUVVONlJTeE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzTkVKQlFUUkNMRVZCUVVVc1pVRkJaU3hEUVVGRE8wdEJRM3BGTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUlVGQlJTdzJRa0ZCTmtJc1JVRkJSU3hoUVVGaExFTkJRVU03UzBGRGVrVXNUVUZCVFN4RFFVRkRMR05CUVdNc1JVRkJSU3cwUTBGQk5FTXNSVUZCUlN4TFFVRkxMRU5CUVVNN1MwRkRNMFVzVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4M1EwRkJkME1zUlVGQlJTeExRVUZMTEVOQlFVTTdTMEZEYkVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZaTEVWQlFVVXNSVUZCUlR0SlFVTTNRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVTndRaXhGUVVGRkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEdOQlFXTXNRMEZCUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVOdVJTeERRVUZETzBsQlJVWXNTVUZCU1N4WlFVRlpMRWRCUVVjc1UwRkJVeXhEUVVGRE8wbEJSVGRDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU03U1VGRk5VSXNTVUZCU1R0SlFVTkdMSGREUVVGM1F6dEpRVU40UXl4SFFVRkhPMGxCUTBnc2QwTkJRWGRETzBsQlEzaERMRXRCUVVzN1NVRkRUQ3gzUTBGQmQwTTdTVUZEZUVNc1NVRkJTVHRKUVVOS0xIZERRVUYzUXp0SlFVTjRReXhYUVVGWExFVkJRMWdzVFVGQlRUdEpRVU5PTEhkRFFVRjNRenRKUVVONFF5eExRVUZMTzBsQlEwd3NkME5CUVhkRE8wbEJRM2hETEdsQ1FVRnBRanRKUVVOcVFpeDNRMEZCZDBNN1NVRkRlRU1zUzBGQlN6dEpRVU5NTEhkRFFVRjNRenRKUVVONFF5eE5RVUZOTEVWQlJVNHNXVUZCV1R0SlFVTmFMSGREUVVGM1F6dEpRVU40UXl4VlFVRlZPMGxCUTFZc2QwTkJRWGRETzBsQlEzaERMRXRCUVVzc1IwRkRUaXhIUVVGSExFOUJRVThzUTBGQlF6dEpRVU5hTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJRenRKUVVNelF5eEpRVUZKTEVOQlFVTTdVVUZEU0N4SlFVRkpMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJRMVlzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUTNaQ0xFVkJRVVVzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNVVUZCVVN4RFFVRkRMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRemRFTEVOQlFVTTdXVUZGUml4TlFVRk5MRkZCUVZFc1IwRkJSeXhaUVVGWkxFTkJRVU1zVDBGQlR5eERRVU51UXl4blFrRkJaMElzUlVGRGFFSXNRMEZCUXl4RFFVRk5MRVZCUVVVc1QwRkJaU3hGUVVGRkxFVkJRVVU3WjBKQlF6RkNMRTFCUVUwc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJSVzVETEVsQlFVa3NTMEZCU3l4TFFVRkxMRk5CUVZNc1JVRkJSU3hEUVVGRE8yOUNRVU40UWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xHdERRVUZyUXl4UFFVRlBMR05CUVdNc1EwRkRlRVFzUTBGQlF6dHZRa0ZEUml4UFFVRlBMRVZCUVVVc1EwRkJRenRuUWtGRFdpeERRVUZETzJkQ1FVVkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8xbEJRMllzUTBGQlF5eERRVU5HTEVOQlFVTTdXVUZGUml4WlFVRlpMRWRCUVVjc1VVRkJVU3hEUVVGRE8xRkJRekZDTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUVVNc1RVRkJUU3hEUVVGRE8xRkJRMUFzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4NVJFRkJlVVFzUTBGQlF5eERRVUZETzBsQlEzUkZMRU5CUVVNN1NVRkZSQ3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVU5RTEhsQ1FVRjVRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRWRCUVVjc1EwRkJReXhKUVVGSkxGbEJRVmtzVDBGQlR5eEZRVUZGTEVOQlEzUkdMRU5CUVVNN1NVRkZSaXhaUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRNVU1zUTBGQlF5eERRVUZETEZsQlFWazdVVUZEWkN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU03U1VGRk0wTXNUVUZCVFN4SFFVRkhMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemxFTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2NVUkJRWEZFTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRlRVVzVVVGQlVTeERRVUZETEZWQlFWVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVNM1FpeEpRVUZKTEUxQlFVMHNSVUZCUlN4RFFVRkRPMUZCUTFnc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5d3dRa0ZCTUVJc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU0xUXl4TlFVRk5MR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVU5zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVU01UXl4RFFVRkRPMUZCUTBZc1NVRkJTU3hEUVVGRE8xbEJRMGdzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xbEJRMnhGTEUxQlFVMHNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJReXhqUVVGakxFTkJRVU1zV1VGQldTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRGNFVXNTVUZCU1N4VlFVRlZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03WjBKQlEzSkNMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEVWQlFVVXNRMEZCUXl3MFFrRkJORUlzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGRGNFVXNRMEZCUXp0WlFVTktMRU5CUVVNN1dVRkZSQ3hOUVVGTkxGbEJRVmtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNNRUpCUVRCQ0xFTkJRMmhFTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUTJwQ0xFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlEwNHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGRE1VSXNVMEZCVXl4RlFVTlVMRmxCUVZrc1EwRkRZaXhEUVVGRE8xbEJRMFlzU1VGQlNTeFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU12UWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeFpRVUZaTEVOQlFVTXNUVUZCVFR0eFFrRkRhRUlzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkRZaXhGUVVGRkxFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZEZWtRN2NVSkJRMEVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVTmtMRU5CUVVNN1dVRkRTaXhEUVVGRE8xbEJSVVFzVFVGQlRTeHRRa0ZCYlVJc1IwRkJkVUk3WjBKQlF6bERMRWRCUVVjc1dVRkJXU3hEUVVGRExFOUJRVTg3WjBKQlEzWkNMRTFCUVUwc1JVRkJSU3hoUVVGaE8yZENRVU55UWl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTzJkQ1FVTTFRaXhYUVVGWExFVkJRVVVzUzBGQlN6dG5Ra0ZEYkVJc1UwRkJVeXhGUVVGRkxFdEJRVXM3WjBKQlEyaENMR0ZCUVdFc1JVRkJSU3hMUVVGTE8yRkJRM0pDTEVOQlFVTTdXVUZEUml4TlFVRk5MR2xDUVVGcFFpeEhRVUZITEVWQlFVVTdhVUpCUTNwQ0xHdENRVUZyUWl4RFFVTnFRanRuUWtGRFJTeEhRVUZITEZsQlFWazdaMEpCUTJZc1QwRkJUeXhGUVVGRkxHMUNRVUZ0UWp0aFFVTTNRaXhGUVVORUxGVkJRVlVzUlVGRFZpeERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc2VVSkJRWGxDTEVOQlEyeERPMmxDUVVOQkxFbEJRVWtzUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUldoRUxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hEUVVGRE8yZENRVU4yUWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeHZSRUZCYjBRc1ZVRkJWU3hGUVVGRkxFTkJRMnBGTEVOQlFVTTdXVUZEU2l4RFFVRkRPMWxCUlVRc05FSkJRVFJDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdXVUZEYUVVc1RVRkJUU3hsUVVGbExFZEJRVWNzVFVGQlRTeE5RVUZOTEVOQlFVTTdaMEpCUTI1RExFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJN1owSkJRM2hDTEU5QlFVOHNSVUZCUlR0dlFrRkRVQ3gxUWtGQmRVSXNSVUZCUlR0dlFrRkRla0lzVDBGQlR5eERRVUZETzNkQ1FVTk9MR2xDUVVGcFFpeEZRVUZGTEVsQlFVazdkMEpCUTNaQ0xGVkJRVlVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNN2QwSkJRM0JDTEUxQlFVMHNSVUZCUlN4RlFVRkZMR0ZCUVdFc1JVRkJSU3hQUVVGUExFVkJRVVVzWVVGQllTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVN2NVSkJRelZFTEVOQlFVTTdhVUpCUTBnN1lVRkRSaXhEUVVGRExFTkJRVU03V1VGRFNDeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVTk9MSFZDUVVGMVFpeE5RVUZOTEdOQlFXTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRMjVGTEVOQlFVTTdXVUZEUml4TlFVRk5MR1ZCUVdVc1EwRkJReXhMUVVGTExFTkJRVU03WjBKQlF6RkNMRWxCUVVrc1JVRkJSU3hIUVVGSExFMUJRVTBzU1VGQlNTeFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzN1owSkJRekZETEUxQlFVMHNSVUZCUlN4TFFVRkxPMmRDUVVOaUxFbEJRVWtzUlVGQlJTeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTenRuUWtGRGFFTXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxPMmRDUVVONFF5eHpRa0ZCYzBJc1JVRkJSU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hGUVVGRk8yOUNRVU0xUkN4TlFVRk5MR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUTNKRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUXpOQ0xHdENRVUZyUWl4RFFVTnVRaXhEUVVGRE8yOUNRVVZHTEVsQlFVa3NhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMRU5CUVVNN2QwSkJRMnBFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRM0JDTEZOQlFWTXNSVUZEVkN4SlFVRkpPelpDUVVORUxGRkJRVkVzUTBGQlF5eGhRVUZoTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03TmtKQlF6TkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZET3paQ1FVTm1MRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGRFlpeERRVUZETzI5Q1FVTktMRU5CUVVNN2IwSkJSVVFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJRenRuUWtGRE5VSXNRMEZCUXp0aFFVTkdMRU5CUVVNc1EwRkJRenRaUVVOSUxFMUJRVTBzWlVGQlpTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCUTJoRExFTkJRVU03WjBKQlFWTXNRMEZCUXp0WlFVTlVMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zWVVGQllTeEZRVUZGTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTNSQ3hEUVVGRE8wbEJRMGdzUTBGQlF6dFRRVUZOTEVOQlFVTTdVVUZEVGl3MFFrRkJORUlzUTBGQlF5eFpRVUZaTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hGUVVGRkxFMUJRVTA3V1VGRFpDeE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTk8xbEJRelZDTEZkQlFWY3NSVUZCUlN4TFFVRkxPMWxCUTJ4Q0xGTkJRVk1zUlVGQlJTeFZRVUZWTzFsQlEzSkNMR0ZCUVdFc1JVRkJSU3hWUVVGVk8xTkJRekZDTEVOQlFVTXNRMEZCUXp0SlFVTk1MRU5CUVVNN1NVRkZSQ3hOUVVGTkxFOUJRVThzUjBGQlJ6dFJRVU5rTEV0QlFVc3NSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRPMUZCUXpWRExGZEJRVmNzUlVGQlJTeHBSRUZCYVVRN1VVRkRPVVFzWVVGQllTeEZRVUZGTEc5RFFVRnZRenRSUVVOdVJDeExRVUZMTEVWQlFVVXNkVU5CUVhWRE8xRkJRemxETEVsQlFVa3NSVUZCUlN3d1FrRkJNRUk3UzBGRGFrTXNRMEZCUXp0SlFVVkdMRTFCUVUwc1pVRkJaU3hIUVVGSExFZEJRVWNzUTBGQlF6dEpRVVUxUWl4bFFVRmxMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dEpRVU0xUWl4bFFVRmxMRU5CUVVNc1YwRkJWeXhIUVVGSExGZEJRVmNzUTBGQlF6dEpRVU14UXl4bFFVRmxMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF6dEpRVVZzUXl4UFFVRlBMR1ZCUVdVc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRE5VSXNUMEZCVHl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRemRDTEU5QlFVOHNaVUZCWlN4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVNdlFpeGxRVUZsTEVOQlFVTXNTVUZCU1N4SFFVRkhMRTFCUVUwN1VVRkRNMElzUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTE8xRkJRelZDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1YwRkJWeXhEUVVGRE8wbEJSWGhDTEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUTJRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNZMEZCWXl4RFFVRkRMRVZCUTJwRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUTJoRExFTkJRVU03U1VGRlJpeEpRVUZKTEV0QlFVczdVVUZCUlN4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBsQlJXaEZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zTkVOQlFUUkRMRU5CUVVNc1EwRkJRenRKUVVOMlJDeFJRVUZSTEVOQlFVTXNZVUZCWVN4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZWtNc1VVRkJVU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETlVNc1VVRkJVU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYWtRc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8wbEJRMnhETEZGQlFWRXNRMEZCUXl3clFrRkJLMElzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRek5FTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUTA0c1dVRkJXU3hKUVVGSkxEaENRVUU0UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlEzSkZMRU5CUVVNN1NVRkRSaXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlExSXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXg1UkVGQmVVUXNRMEZCUXl4RFFVRkRPMUZCUTNCRkxGRkJRVkVzUTBGQlF5eGhRVUZoTEVWQlFVVTdXVUZEZEVJc1IwRkJSeXhGUVVGRkxFMUJRVTA3V1VGRFdDeEhRVUZITEVWQlFVVXNSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzVVVGQlVTeEZRVUZGTEZsQlFWa3NSVUZCUlR0VFFVTm9SQ3hEUVVGRExFTkJRVU03U1VGRFRDeERRVUZETzBGQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZUQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEpRVUZKTEU5QlFVOHNSVUZCUlR0TFFVTnFReXhQUVVGUExFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1MwRkRNVUlzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxHZENRVUZuUWl4RFFVRkRPMHRCUXpORExFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0TFFVTXZReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc0swTkJRU3RETEVOQlFVTTdTMEZETlVVc1YwRkJWeXhEUVVOV0xESkZRVUV5UlN4RFFVTTFSVHRMUVVOQkxFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCV1N4RlFVRkZMRVZCUVVVN1NVRkROMElzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkRjRUlzUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4alFVRmpMRU5CUVVNc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGRGJrVXNRMEZCUXp0SlFVVkdMRTFCUVUwc1QwRkJUeXhIUVVGSExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTTdTVUZGTlVJc1RVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBsQlF6RkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRMUFzZVVKQlFYbENMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRWxCUVVrc1dVRkJXU3hQUVVGUExFVkJRVVVzUTBGRGRFWXNRMEZCUXp0SlFVVkdMSGREUVVGM1F6dEpRVU40UXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNSMEZCUnl4UFFVRlBMRU5CUVVNN1NVRkZka01zVFVGQlRTeE5RVUZOTEVkQlFWVXNSVUZCUlN4RFFVRkRPMGxCUTNwQ0xFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZEVkN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZFTEVsQlFVa3NUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRXQ3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhOUVVGTkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlF6ZERMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTI1RUxFTkJRVU03U1VGRFJDeE5RVUZOTEUxQlFVMHNSMEZCZDBJc1JVRkJSU3hEUVVGRE8wbEJRM1pETEUxQlFVMHNWVUZCVlN4SFFVRjNRaXhGUVVGRkxFTkJRVU03U1VGRk0wTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTA3VVVGRGJFSXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkJReXc0UWtGQk9FSXNRMEZCUXl4RFFVRkRPMGxCUlRGRUxFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRka0lzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4blEwRkJaME1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGJFVXNUVUZCVFN4UFFVRlBMRWRCUVVjc2IwSkJRVzlDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRlRU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRk8xbEJRM2hDTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yZENRVU5tTEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETzFsQlF6ZENMRU5CUVVNN1VVRkRTQ3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5JTEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0SlFVTjZReXhEUVVGRE8wbEJRMFFzVFVGQlRTeGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU0zUXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUXpsRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4alFVRmpMRU5CUVVNc1RVRkJUU3h2UWtGQmIwSXNRMEZCUXl4RFFVRkRPMGxCUTJoRkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4WFFVRlhMRU5CUVVNc1RVRkJUU3gzUWtGQmQwSXNRMEZCUXl4RFFVRkRPMGxCUTJwRkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZGtRc1dVRkJXU3hEUVVGRExHTkJRV01zUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTnlReXhsUVVGbExFTkJRVU1zVjBGQlZ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNaRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJVd3NUVUZCVFN4clFrRkJhMElzUjBGQlJ5eEpRVUZKTEU5QlFVOHNSVUZCUlR0TFFVTnlReXhQUVVGUExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNN1MwRkRPVUlzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxHZENRVUZuUWl4RFFVRkRPMHRCUXpORExFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0TFFVTXZReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc0swTkJRU3RETEVOQlFVTTdTMEZETlVVc1RVRkJUU3hEUVVGRExHMUNRVUZ0UWl4RlFVRkZMRzFEUVVGdFF5eERRVUZETzB0QlEyaEZMRTFCUVUwc1EwRkJReXh6UWtGQmMwSXNSVUZCUlN4alFVRmpMRU5CUVVNN1MwRkRPVU1zVFVGQlRTeERRVU5NTEhOQ1FVRnpRaXhGUVVOMFFpdzJTMEZCTmtzc1EwRkRPVXM3UzBGRFFTeFhRVUZYTEVOQlExWXNNa1ZCUVRKRkxFTkJRelZGTzB0QlEwRXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGWkxFVkJRVVVzUlVGQlJUdEpRVU0zUWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVU53UWl4RlFVRkZMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxHTkJRV01zUTBGQlF5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVTnVSU3hEUVVGRE8wbEJSVVlzVFVGQlRTeFBRVUZQTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVVMVFpeE5RVUZOTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZEVUN4NVFrRkJlVUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zU1VGQlNTeFpRVUZaTEU5QlFVOHNSVUZCUlN4RFFVTjBSaXhEUVVGRE8wbEJSVVlzZDBOQlFYZERPMGxCUTNoRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzVTBGQlV5eEZRVUZGTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUlRGRUxFbEJRVWtzUTBGQlF6dFJRVU5JTEVsQlFVa3NRMEZCUXp0WlFVTklMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXp0WlFVTnFSQ3cyUkVGQk5rUTdVVUZETDBRc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlZTeEZRVUZGTEVOQlFVTTdXVUZEY0VJc1kwRkJZenRSUVVOb1FpeERRVUZETzBsQlEwZ3NRMEZCUXp0SlFVRkRMRTlCUVU4c1EwRkJWU3hGUVVGRkxFTkJRVU03VVVGRGNFSXNUVUZCVFN4SlFVRkpMR3RDUVVGclFpeERRVUZETERoQ1FVRTRRaXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyeEZMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlZTeEZRVUZGTEVOQlFVTTdTVUZEZWtJc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVU5VTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjBReXhEUVVGRE8wbEJSVVFzU1VGQlNTeE5RVUZOTEVWQlFVVXNRMEZCUXp0UlFVTllMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRTFCUVUwc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE4wTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYmtRc1EwRkJRenRKUVVWRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5PMUZCUTJ4Q0xFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlFVTXNPRUpCUVRoQ0xFTkJRVU1zUTBGQlF6dEpRVVV4UkN4TlFVRk5MR2RDUVVGblFpeEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUTNCRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZEVWl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU55UWl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU4wUWl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZETlVJc1EwRkJRenRKUVVOR0xFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVU0zUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVOT0xIRkZRVUZ4UlN4RFFVTjBSU3hEUVVGRE8xRkJRMFlzVDBGQlR6dEpRVU5VTEVOQlFVTTdTVUZGUkN4TFFVRkxMRlZCUVZVc1QwRkJUeXhEUVVGRExGVkJRWEZDTzFGQlF6RkRMRTFCUVUwc1NVRkJTU3hIUVV0S0xFMUJRVTBzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZEY2tJc1owSkJRV2RDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJUdFpRVU51UXl4TlFVRk5MRk5CUVZNc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUTNwRExFMUJRVTBzVlVGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRk0wTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4TlFVRk5MRmRCUVZjc1IwRkJkMElzUlVGQlJTeERRVUZETzFsQlF6VkRMRXRCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzVlVGQlZTeEpRVUZKTEUxQlFVMHNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGRE4wTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFMUJRVTBzWVVGQllTeERRVU53UXl4TFFVRkxMRVZCUTB3c1EwRkJReXhIUVVGSExFVkJRVVVzVTBGQlV5eERRVUZETEVWQlEyaENMRVZCUVVVN1owSkJRMFlzU1VGQlNUdG5Ra0ZEU2l4NVJFRkJlVVE3WjBKQlEzcEVMREpFUVVFeVJEdG5Ra0ZETTBRc1MwRkJTenRuUWtGRFRDeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVTmlMRU5CUVVNN1dVRkRTaXhEUVVGRE8xbEJSVVFzU1VGQlNTeG5Ra0ZCWjBJc1IwRkJhME1zVTBGQlV5eERRVUZETzFsQlJXaEZMRWxCUVVrc1ZVRkJWU3hGUVVGRkxFTkJRVU03WjBKQlEyWXNWMEZCVnl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1owSkJRM1JFTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCVnl4RlFVRkZMRVZCUVVVN2IwSkJReTlETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhSUVVGUkxFZEJRVWNzVjBGQlZ5eERRVU16UXl4SFFVRkhMRU5CUTBvc1EwRkJReXhSUVVGUkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCVFN4RlFVRkZMRVZCUVVVN2QwSkJRelZDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJUU3hWUVVGVkxFTkJRVU1zVVVGQmJVSTdORUpCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU03ZDBKQlF6VkVMR2RDUVVGblFpeEhRVUZITEVOQlFWRXNRMEZCUXp0M1FrRkROVUlzVDBGQlR5eExRVUZMTEVOQlFVTTdiMEpCUTJZc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRUQ3hEUVVGRE8xbEJSVVFzVFVGQlRTeGhRVUZoTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU03YVVKQlF6ZERMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJRenRwUWtGRGRFSXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRMnBDTEVsQlFVa3NZVUZCWVR0blFrRkRaaXhIUVVGSE8zRkNRVU5CTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzNGQ1FVTXpRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eGhRVUZoTEdkRFFVRm5ReXhEUVVGRExFTkJRVU03V1VGRGJFVXNUVUZCVFN4WFFVRlhMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTTdhVUpCUXpORExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dHBRa0ZEY0VJc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlJXcENMRWRCUVVjN2FVSkJRMEVzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03YVVKQlF6TkNMRWxCUVVrc1EwRkJReXhUUVVGVExGZEJRVmNzSzBKQlFTdENMRU5CUVVNc1EwRkJRenRaUVVNM1JDeEpRVUZKTEdkQ1FVRm5RanRuUWtGRGJFSXNSMEZCUnp0eFFrRkRRU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenR4UWtGRE0wSXNTVUZCU1N4RFFVTklMQ3RDUVVFclFpeFZRVUZWTEVWQlFVVXNVVUZCYTBJc1JVRkJSU3hEUVVOb1JTeERRVUZETzFsQlJVNHNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTTdhVUpCUTNaRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU40UkN4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOV0xFbEJRVWtzVDBGQlR5eEhRVUY1UWl4RlFVRkZMRU5CUVVNN1dVRkRka01zU1VGQlNTeFZRVUZWTEVkQlFYVkNMRVZCUVVVc1EwRkJRenRaUVVONFF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRuUWtGRGJrSXNSMEZCUnp0eFFrRkRRU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenR4UWtGRE0wSXNUMEZCVHl4RFFVRkRMRzlEUVVGdlF5eERRVUZETEVOQlFVTTdaMEpCUTJwRUxFOUJRVThzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZEZEVNc1IwRkJSenR4UWtGRFFTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dHhRa0ZETTBJc1NVRkJTU3hEUVVGRExGTkJRVk1zVDBGQlR5eERRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRMRU5CUVVNN1owSkJRek5ETEZWQlFWVXNSMEZCUnl4MVFrRkJkVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkROVU1zUjBGQlJ6dHhRa0ZEUVN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0eFFrRkRNMElzU1VGQlNTeERRVUZETEZOQlFWTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1kwRkJZeXhEUVVGRExFTkJRVU03V1VGRGNFUXNRMEZCUXp0WlFVTkVMRTlCUVU4N1owSkJRMHdzVDBGQlR6dG5Ra0ZEVUN4VlFVRlZPMmRDUVVOV0xGZEJRVmNzUlVGQlJTeFBRVUZQTzJkQ1FVTndRaXhOUVVGTkxFVkJRVVVzWjBKQlFXZENPMkZCUTNwQ0xFTkJRVU03VVVGRFNpeERRVUZETEVOQlFVTXNRMEZEU0N4RFFVRkRPMUZCUTBZc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU0zUWl4TlFVRk5MRlZCUVZVc1IwRkJSeXhOUVVGTkxFOUJRVThzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZPVU1zVFVGQlRTeGhRVUZoTEVkQlFVYzdVVUZEY0VJc1IwRkJSeXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUXpGRUxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSVHRSUVVONFF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03UzBGRE9VSXNRMEZCUXp0SlFVVjZRaXhOUVVGTkxHdENRVUZyUWl4SFFVRkhPMUZCUTNwQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlExSXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRWFZDTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVTnNSU3hEUVVGRExFMUJRVTBzUlVGQlJUdExRVU5ZTEVOQlFVTTdTVUZGUml4SlFVRkpMR3RDUVVGclFpeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMUZCUXpsQ0xHZENRVUZuUWl4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzY1VKQlFYRkNMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGRGNrTXNUVUZCVFN4RlFVTk9MRlZCUVZVc1JVRkRWaXg1UWtGQmVVSXNRMEZETVVJc1EwRkJRenRSUVVOR0xFMUJRVTBzZVVKQlFYbENMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGRGVrTXNUVUZCVFN4RlFVTk9MSGxDUVVGNVFpeERRVU14UWl4RFFVRkRPMUZCUTBZc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eHhRa0ZCY1VJc1JVRkJSU3g1UWtGQmVVSXNRMEZCUXl4RFFVRkRPMUZCUTJ4RkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlEwNHNWVUZCVlN4aFFVRmhMRU5CUVVNc1RVRkJUU3h0UWtGQmJVSXNjVUpCUVhGQ0xFVkJRVVVzUTBGRGVrVXNRMEZCUXp0UlFVTkdMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRMDRzWjBOQlFXZERMSGxDUVVGNVFpdzJRa0ZCTmtJc1EwRkRka1lzUTBGQlF6dFJRVVZHTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5xUWl4TlFVRk5MRVZCUVVVc1QwRkJUeXhGUVVGRkxGVkJRVlVzUlVGQlJTeFhRVUZYTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pFTEUxQlFVMHNUMEZCVHl4SFFVRjNRaXhEUVVGRExFZEJRVWNzVjBGQlZ5eEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkRiRVVzVDBGQlR5eERRVU5sTEVOQlFVTTdXVUZEZWtJc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOd1FpeFpRVUZaTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTNSRExIbENRVUY1UWl4RFFVRkRMRlZCUVZVc1NVRkJTU3hGUVVGRkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRE5VUXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkRUaXhWUVVGVkxFOUJRVThzUlVGQlJTeE5RVUZOTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzVlVGQlZTeEZRVUZGTEUxQlFVMHNTVUZCU1N4RFFVRkRMRGhDUVVFNFFpeERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUXpWSExFTkJRVU03V1VGRFNpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMHdzUTBGQlF6dEJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlV3c1RVRkJUU3hYUVVGWExFZEJRVWNzU1VGQlNTeFBRVUZQTEVWQlFVVTdTMEZET1VJc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF6dExRVU51UWl4WFFVRlhMRU5CUVVNc2JVUkJRVzFFTEVOQlFVTTdTMEZEYUVVc1RVRkJUU3hEUVVOTUxITkNRVUZ6UWl4RlFVTjBRaXh0UkVGQmJVUXNSVUZEYmtRc2JVSkJRVzFDTEVOQlEzQkNPMHRCUTBFc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMSFZEUVVGMVF5eEZRVUZGTEUxQlFVMHNRMEZCUXp0TFFVTTNSU3hOUVVGTkxFTkJRVU1zY1VKQlFYRkNMRVZCUVVVc2NVTkJRWEZETEVWQlFVVXNTVUZCU1N4RFFVRkRPMHRCUXpGRkxFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCV1N4RlFVRkZMRVZCUVVVN1NVRkROMElzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkRjRUlzUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4alFVRmpMRU5CUVVNc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGRGJrVXNRMEZCUXp0SlFVVkdMRTFCUVUwc1QwRkJUeXhIUVVGSExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTTdTVUZGTlVJc1RVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJRenRKUVVOMFF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVTlFMSGxDUVVGNVFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlF5eEpRVUZKTEZsQlFWa3NUMEZCVHl4RlFVRkZMRU5CUTNSR0xFTkJRVU03U1VGRFJpeDNRMEZCZDBNN1NVRkRlRU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETzBsQlF5OURMRTlCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRPMGxCUTNCRExGRkJRVkVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8wbEJSWEJETEUxQlFVMHNNRUpCUVRCQ0xFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETzBsQlJYcEZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRMDRzT0VSQlFUaEVMRk5CUVZNc1NVRkJTU3hEUVVNMVJTeERRVUZETzBGQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZUQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEpRVUZKTEU5QlFVOHNSVUZCUlR0TFFVTnFReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1MwRkRka0lzVjBGQlZ5eERRVUZETEN0Q1FVRXJRaXhEUVVGRE8wdEJRelZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTdzBRa0ZCTkVJc1EwRkJRenRMUVVOMlJDeE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzWTBGQll5eERRVUZETzB0QlF6RkRMRTFCUVUwc1EwRkRUQ3dyUWtGQkswSXNSVUZETDBJc2EwVkJRV3RGTEVOQlEyNUZPMHRCUTBFc1RVRkJUU3hEUVVOTUxEWkNRVUUyUWl4RlFVTTNRaXh6UlVGQmMwVXNSVUZEZEVVc1MwRkJTeXhEUVVOT08wdEJRMEVzVFVGQlRTeERRVU5NTERCQ1FVRXdRaXhGUVVNeFFpdzBSVUZCTkVVc1JVRkROVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzVDBGQlR5eEZRVUZGTEdGQlFXRXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVU4wUlR0TFFVTkJMRTFCUVUwc1EwRkRUQ3hyUWtGQmEwSXNSVUZEYkVJc01FSkJRVEJDTEVWQlF6RkNMSGREUVVGM1F5eERRVU42UXp0TFFVTkJMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQldTeEZRVUZGTEVWQlFVVTdTVUZETjBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZEY0VJc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeGpRVUZqTEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkRia1VzUTBGQlF6dEpRVVZHTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU03U1VGRk5VSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRekZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUTFBc2VVSkJRWGxDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVsQlFVa3NXVUZCV1N4UFFVRlBMRVZCUVVVc1EwRkRkRVlzUTBGQlF6dEpRVVZHTEUxQlFVMHNSVUZEU2l4SlFVRkpMRVZCUTBvc1MwRkJTeXhGUVVOTUxFdEJRVXNzUlVGRFRDeGhRVUZoTzBsQlEySXNOa1JCUVRaRU8wbEJRemRFTEdkQ1FVRm5RaXhGUVVOb1FpeHBRa0ZCYVVJc1IwRkRiRUlzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTVUZEV2l4TlFVRk5MRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldwRExFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNSMEZCUnl4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk1VVXNTVUZCU1N4UlFVRm5RaXhEUVVGRE8wbEJSWEpDTEVsQlFVa3NRMEZCUXp0UlFVTklMRkZCUVZFc1IwRkJSeXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnNSU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZCUlN4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRE96dFpRVU0zUWl4UlFVRlJMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMjVDTERaRVFVRTJSRHRKUVVNdlJDeERRVUZETzBsQlFVTXNUMEZCVHl4RFFVRlZMRVZCUVVVc1EwRkJRenRSUVVOd1FpeFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJZc1EwRkJRenRKUVVORUxFVkJRVVU3U1VGRFJpd3dRa0ZCTUVJN1NVRkRNVUlzZDBOQlFYZERPMGxCUTNoRExIRkNRVUZ4UWp0SlFVTnlRaXhKUVVGSk8wbEJSVW9zU1VGQlNTeERRVUZETzFGQlEwZ3NTMEZCU3l4TlFVRk5MRWxCUVVrc1NVRkJTU3hQUVVGUExFVkJRVVVzUTBGQlF6dFpRVU16UWl4bFFVRmxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkROVU1zWlVGQlpTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNMVFpeGxRVUZsTEVOQlEySXNTVUZCU1N4RlFVTktMRWxCUVVrc1JVRkRTaXhKUVVGSkxFdEJRVXNzWTBGQll6dG5Ra0ZEY2tJc1EwRkJReXhEUVVGRExHbENRVUZwUWp0blFrRkRia0lzUTBGQlF5eERRVUZETEhsQ1FVRjVRaXhGUVVNM1FpeFJRVUZSTEVWQlExSXNUMEZCVHl4RlFVTlFMR2xDUVVGcFFpeERRVU5zUWl4RFFVRkRPMUZCUTBvc1EwRkJRenRSUVVORUxFVkJRVVVzUTBGQlF5eGhRVUZoTEVOQlFVTXNVMEZCVXl4RlFVRkZMRkZCUVZFc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyNUVMRU5CUVVNN1NVRkJReXhQUVVGUExFZEJRVkVzUlVGQlJTeERRVUZETzFGQlEyeENMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zTWtKQlFUSkNMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE9VTXNRMEZCUXp0SlFVTkVMR1ZCUVdVc1EwRkJReXhKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTEU5QlFVOHNSVUZCUlN4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBGQlF6bEVMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVXdzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFOUJRVThzUlVGQlJUdExRVU53UXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTTdTMEZETTBJc1YwRkJWeXhEUVVGRExHMUVRVUZ0UkN4RFFVRkRPMHRCUTJoRkxFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3hsUVVGbExFVkJRVVVzYjBKQlFXOUNMRU5CUVVNN1MwRkRiRVVzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxEaENRVUU0UWl4RlFVRkZMRTlCUVU4c1EwRkJRenRMUVVOcVJTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVZrc1JVRkJSU3hGUVVGRk8wbEJRemRDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRM0JDTEVWQlFVVXNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1kwRkJZeXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlEyNUZMRU5CUVVNN1NVRkZSaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRPMGxCUlRWQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0SlFVTTVReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVU5RTEhsQ1FVRjVRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRWRCUVVjc1EwRkJReXhKUVVGSkxGbEJRVmtzVDBGQlR5eEZRVUZGTEVOQlEzUkdMRU5CUVVNN1NVRkRSaXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVOb1F5eFJRVUZSTEVOQlFVTXNZVUZCWVN4SFFVRkhMSEZDUVVGeFFpeE5RVUZOTEVWQlFVVXNSVUZCUlR0UlFVTjBSQ3hIUVVGSExFVkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0TFFVTnVRaXhEUVVGRExFTkJRVU03UVVGRFRDeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVk1MRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzVDBGQlR5eEZRVUZGTzB0QlF6VkNMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03UzBGRGJFSXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJRenRMUVVOcVFpeFhRVUZYTEVOQlExWXNiVVZCUVcxRkxFTkJRM0JGTEVOQlFVTTdRVUZGU2l4VFFVRlRMRU5CUVVNc1ZVRkJWU3hEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzBGQlEzSkRMRk5CUVZNc1EwRkJReXhWUVVGVkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdRVUZEY2tNc1UwRkJVeXhEUVVGRExGVkJRVlVzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTnNReXhUUVVGVExFTkJRVU1zVlVGQlZTeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMEZCUTNKRExGTkJRVk1zUTBGQlF5eFZRVUZWTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dEJRVU40UXl4VFFVRlRMRU5CUVVNc1ZVRkJWU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNN1FVRkZla01zVFVGQlRTeERRVUZETEU5QlFVOHNWVUZCVlN4TlFVRk5PMGxCUXpWQ0xFOUJRVThzVTBGQlV5eERRVUZETzBGQlEyNUNMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QkRiMjF0WVc1a0lIMGdabkp2YlNCY0ltTnZiVzFoYm1SbGNsd2lPMXh1YVcxd2IzSjBJSHNnVEc5bloybHVaeXdnZEc5UVlYTmpZV3hEWVhObElIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OXNiMmRuYVc1blhDSTdYRzVwYlhCdmNuUWdleUJsZUdWalUzbHVZeUI5SUdaeWIyMGdYQ0pqYUdsc1pGOXdjbTlqWlhOelhDSTdYRzVwYlhCdmNuUWdabk1nWm5KdmJTQmNJbVp6WENJN1hHNXBiWEJ2Y25RZ2NHRjBhQ0JtY205dElGd2ljR0YwYUZ3aU8xeHVhVzF3YjNKMElIc2dVR3gxWjJsdUxDQnliMnhzZFhBZ2ZTQm1jbTl0SUZ3aWNtOXNiSFZ3WENJN1hHNXBiWEJ2Y25RZ2NtVndiR0ZqWlNCbWNtOXRJRndpUUhKdmJHeDFjQzl3YkhWbmFXNHRjbVZ3YkdGalpWd2lPMXh1YVcxd2IzSjBJSHNnU1c1MFpYSnVZV3hGY25KdmNpd2dVMlZ5YVdGc2FYcGhkR2x2YmtWeWNtOXlJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWWkxa1pXTnZjbUYwYjNKelhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCblpXNWxjbUYwWlUxdlpHVnNSR1Z6YVdkdVJHOWpjeXhjYmlBZ1oyVnVaWEpoZEdWTmIyUmxiRWx1WkdWNFpYTXNYRzRnSUhKbFlXUk5iMlJsYkVacGJHVXNYRzRnSUhKbFlXUk5iMlJsYkVadmJHUmxjbk1zWEc0Z0lIZHlhWFJsUkdWemFXZHVSRzlqY3l4Y2JpQWdkM0pwZEdWSmJtUmxlR1Z6TEZ4dWZTQm1jbTl0SUZ3aUxpOWpiR2xsYm5RdmFXNWtaWGhsYzF3aU8xeHVhVzF3YjNKMElIc2dUVzlrWld3Z2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmxZMjl5WVhSdmNpMTJZV3hwWkdGMGFXOXVYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQmhjSEJ5YjNabFEyOXVkSEpoWTNRc1hHNGdJR1Z1YzNWeVpVbHVabkpoYzNSeWRXTjBkWEpsUW05dmRHVmtMRnh1SUNCcGJuTjBZV3hzUTI5dWRISmhZM1FzWEc0Z0lIQmhZMnRoWjJWRGIyNTBjbUZqZEN4Y2JpQWdZMjl0YldsMFEyaGhhVzVqYjJSbExGeHVJQ0JuWlhSRGIyNTBjbUZqZEZOMFlYSjBRMjl0YldGdVpDeGNiaUFnWTI5dGNHbHNaVmRwZEdoVWMyTnZibVpwWjA5MlpYSnlhV1JsY3l4Y2JuMGdabkp2YlNCY0lpNHZZMnhwTFhWMGFXeHpYQ0k3WEc1cGJYQnZjblFnWENJdUwzTm9ZWEpsWkM5dmRtVnljbWxrWlhOY0lqdGNibWx0Y0c5eWRDQjBjeUJtY205dElGd2lkSGx3WlhOamNtbHdkRndpTzF4dWFXMXdiM0owSUh0Y2JpQWdaWGgwY21GamRFTnZiR3hsWTNScGIyNXpJR0Z6SUdWNFEyOXNiR1ZqZEdsdmJuTXNYRzRnSUZCeWFYWmhkR1ZEYjJ4c1pXTjBhVzl1TEZ4dUlDQjNjbWwwWlVOdmJHeGxZM1JwYjI1ekxGeHVJQ0IzY21sMFpVTnZiR3hsWTNScGIyNUVaWE5wWjI1RWIyTnpMRnh1ZlNCbWNtOXRJRndpTGk5amJHbGxiblF2WTI5c2JHVmpkR2x2Ym5NdmFXNWtaWGhjSWp0Y2JtbHRjRzl5ZENCN0lFTnZkV05vUkVKRVpYTnBaMjVFYjJNc0lFTnlaV0YwWlVsdVpHVjRVbVZ4ZFdWemRDQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZabTl5TFdOdmRXTm9aR0pjSWp0Y2JseHVZMjl1YzNRZ2JHOW5aMlZ5SUQwZ1RHOW5aMmx1Wnk1bWIzSW9YQ0ptWVdKeWFXTmNJaWs3WEc1Y2JtWjFibU4wYVc5dUlISmxjMjlzZG1WQ2RXNWtiR1ZrU25OSmJYQnZjblJ6S0NrNklGQnNkV2RwYmlCN1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2JtRnRaVG9nWENKeVpYTnZiSFpsTFdKMWJtUnNaV1F0YW5NdGFXMXdiM0owYzF3aUxGeHVJQ0FnSUhKbGMyOXNkbVZKWkNoemIzVnlZMlVzSUdsdGNHOXlkR1Z5S1NCN1hHNGdJQ0FnSUNCcFppQW9JV2x0Y0c5eWRHVnlJSHg4SUNGemIzVnlZMlV1YzNSaGNuUnpWMmwwYUNoY0lpNWNJaWtwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElISmxjMjlzZG1Wa1VHRjBhQ0E5SUhCaGRHZ3VjbVZ6YjJ4MlpTaHdZWFJvTG1ScGNtNWhiV1VvYVcxd2IzSjBaWElwTENCemIzVnlZMlVwTzF4dUlDQWdJQ0FnWTI5dWMzUWdZMkZ1Wkdsa1lYUmxjeUE5SUZ0Y2JpQWdJQ0FnSUNBZ2NtVnpiMngyWldSUVlYUm9MRnh1SUNBZ0lDQWdJQ0JnSkh0eVpYTnZiSFpsWkZCaGRHaDlMbXB6WUN4Y2JpQWdJQ0FnSUNBZ2NHRjBhQzVxYjJsdUtISmxjMjlzZG1Wa1VHRjBhQ3dnWENKcGJtUmxlQzVxYzF3aUtTeGNiaUFnSUNBZ0lGMDdYRzVjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWTJGdVpHbGtZWFJsSUc5bUlHTmhibVJwWkdGMFpYTXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHWnpMbVY0YVhOMGMxTjVibU1vWTJGdVpHbGtZWFJsS1NBbUppQm1jeTV6ZEdGMFUzbHVZeWhqWVc1a2FXUmhkR1VwTG1selJtbHNaU2dwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTmhibVJwWkdGMFpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5TEZ4dUlDQjlPMXh1ZlZ4dVhHNWpiMjV6ZENCamIyMXdhV3hsUTI5dGJXRnVaQ0E5SUc1bGR5QkRiMjF0WVc1a0tDbGNiaUFnTG01aGJXVW9YQ0pqYjIxd2FXeGxMV052Ym5SeVlXTjBYQ0lwWEc0Z0lDNWtaWE5qY21sd2RHbHZiaWhjSWtOeVpXRjBaWE1nWVNCbmJHOWlZV3dnWTI5dWRISmhZM1JjSWlsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0WkdWMlhDSXNJRndpWTI5dGNHbHNaWE1nWTI5dWRISmhZM1J6SUhkcGRHaHZkWFFnYldsdWFXWnBZMkYwYVc5dVhDSXNJR1poYkhObEtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxa1pXSjFaMXdpTENCY0ltMWhhMlZ6SUdGMGRHRmphR2x1WnlCa1pXSjFaMmRsY2lCd2IzTnphV0pzWlZ3aUxDQm1ZV3h6WlNsY2JpQWdMbTl3ZEdsdmJpaGNiaUFnSUNCY0lpMHRZMk5oWVhOY0lpeGNiaUFnSUNCY0lrRnFkWE4wY3lCMGFHVWdjR0ZqYTJGblpTQmpiMjF0WVc1a2N5QjBieUJpWlNCa1pYQnNiM2xsWkNCaGN5QmpZMkZoYzF3aUxGeHVJQ0FnSUdaaGJITmxYRzRnSUNsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0Ym1GdFpTQThVM1J5YVc1blBsd2lMQ0JjSW1OdmJuUnlZV04wSUc1aGJXVmNJaXdnWENKbmJHOWlZV3d0WTI5dWRISmhZM1JjSWlsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0WW5WdVpHeGxYQ0lzSUZ3aVFuVnVaR3hsY3lCM2FYUm9JSEp2Ykd4MWNDQnBibk4wWldGa0lHOW1JSFZ6YVc1bklIUnpZMXdpTENCbVlXeHpaU2xjYmlBZ0xtOXdkR2x2YmloY2JpQWdJQ0JjSWkwdGRITXRZMjl1Wm1sbkxXWnBiR1VnUEhOMGNtbHVaejVjSWl4Y2JpQWdJQ0JjSW5KbGJHRjBhWFpsSUhCaGRHZ2dkRzhnZEdobElIUnpJR052Ym1acFp5Qm1hV3hsSUdKaGMyVmtJRzl1SUdOM1pDQnZjaUJoWW5OdmJIVjBaU0J3WVhSb1hDSXNYRzRnSUNBZ1hDSXVMM1J6WTI5dVptbG5MbXB6YjI1Y0lseHVJQ0FwWEc0Z0lDNXZjSFJwYjI0b1hHNGdJQ0FnWENJdExXUmxjMk55YVhCMGFXOXVJRHhUZEhKcGJtYytYQ0lzWEc0Z0lDQWdYQ0pqYjI1MGNtRmpkQ0JrWlhOamNtbHdkR2x2Ymx3aUxGeHVJQ0FnSUZ3aVIyeHZZbUZzSUdOdmJuUnlZV04wSUdsdGNHeGxiV1Z1ZEdGMGFXOXVYQ0pjYmlBZ0tWeHVJQ0F1YjNCMGFXOXVLRndpTFMxemRISnBjQzFqYjI1MGNtRmpkQzF1WVcxbFhDSXNJRndpYzNSeWFYQWdZMjl1ZEhKaFkzUWdibUZ0WlNCbWNtOXRJRzkxZEhCMWRGd2lMQ0JtWVd4elpTbGNiaUFnTG05d2RHbHZiaWhjSWkwdGFXNXdkWFFnUEZOMGNtbHVaejVjSWl3Z1hDSnBibkIxZENCbWIyeGtaWElnWm05eUlHTnZiblJ5WVdOMGMxd2lMQ0JjSW14cFlpOWpiMjUwY21GamRITmNJaWxjYmlBZ0xtOXdkR2x2YmloY0lpMHRiM1YwY0hWMElEeFRkSEpwYm1jK1hDSXNJRndpYjNWMGNIVjBJR1p2YkdSbGNpQm1iM0lnWTI5dWRISmhZM1J6WENJc0lGd2lMaTlqYjI1MGNtRmpkSE5jSWlsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0YzI5MWNtTmxiV0Z3YzF3aUxDQmNJbWx1WTJ4MVpHVnpJSE52ZFhKalpXMWhjSE1nYVc0Z2RHaGxJR052YlhCcGJHVmtJRzkxZEhCMWRGd2lMQ0JtWVd4elpTbGNiaUFnTG05d2RHbHZiaWhjSWkwdGJuQnRjbU5jSWl3Z1hDSnBibU5zZFdSbGN5QXVibkJ0Y21NZ2FXNGdkR2hsSUdOdmJYQnBiR1ZrSUc5MWRIQjFkRndpTENCbVlXeHpaU2xjYmlBZ0xtRmpkR2x2YmloaGMzbHVZeUFvYjNCMGFXOXVjem9nWVc1NUtTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2NHdG5JRDBnU2xOUFRpNXdZWEp6WlNoY2JpQWdJQ0FnSUdaekxuSmxZV1JHYVd4bFUzbHVZeWh3WVhSb0xtcHZhVzRvY0hKdlkyVnpjeTVqZDJRb0tTd2dYQ0p3WVdOcllXZGxMbXB6YjI1Y0lpa3NJRndpZFhSbUxUaGNJaWxjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdiR1YwSUc1d2JYSmpRMjl1ZEdWdWRDQTlJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR052Ym5OMElIWmxjbk5wYjI0Z1BTQndhMmN1ZG1WeWMybHZianRjYmx4dUlDQWdJR3hsZENCN1hHNGdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ0lDQmtaWFlzWEc0Z0lDQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnY0hKbFptVnlMV052Ym5OMFhHNGdJQ0FnSUNCa1pXSjFaeXhjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0J3Y21WbVpYSXRZMjl1YzNSY2JpQWdJQ0FnSUc1aGJXVXNYRzRnSUNBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdjSEpsWm1WeUxXTnZibk4wWEc0Z0lDQWdJQ0JrWlhOamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUc5MWRIQjFkQ3hjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0J3Y21WbVpYSXRZMjl1YzNSY2JpQWdJQ0FnSUdsdWNIVjBMRnh1SUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJSEJ5WldabGNpMWpiMjV6ZEZ4dUlDQWdJQ0FnYzNSeWFYQkRiMjUwY21GamRFNWhiV1VzWEc0Z0lDQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnY0hKbFptVnlMV052Ym5OMFhHNGdJQ0FnSUNCalkyRmhjeXhjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0J3Y21WbVpYSXRZMjl1YzNSY2JpQWdJQ0FnSUdKMWJtUnNaU3hjYmx4dUlDQWdJQ0FnZEhORGIyNW1hV2RHYVd4bExGeHVJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElIQnlaV1psY2kxamIyNXpkRnh1SUNBZ0lDQWdjMjkxY21ObGJXRndjeXhjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0J3Y21WbVpYSXRZMjl1YzNSY2JpQWdJQ0FnSUc1d2JYSmpMRnh1SUNBZ0lIMGdQU0J2Y0hScGIyNXpPMXh1SUNBZ0lHTnZibk4wSUd4dlp5QTlJR3h2WjJkbGNpNW1iM0lvWENKamIyMXdhV3hsTFdOdmJuUnlZV04wWENJcE8xeHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQnBaaUFvYm5CdGNtTXBJSHRjYmlBZ0lDQWdJQ0FnYm5CdGNtTkRiMjUwWlc1MElEMGdTbE5QVGk1d1lYSnpaU2hjYmlBZ0lDQWdJQ0FnSUNCbWN5NXlaV0ZrUm1sc1pWTjVibU1vY0dGMGFDNXFiMmx1S0hCeWIyTmxjM011WTNka0tDa3NJRndpTG01d2JYSmpYQ0lwTENCY0luVjBaaTA0WENJcFhHNGdJQ0FnSUNBZ0lDazdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbVZ3YkdGalpXUWdQU0J1Y0cxeVkwTnZiblJsYm5RdWNtVndiR0ZqWlNoY2JpQWdJQ0FnSUNBZ0lDQXZYRndrWEZ4N0tGdGVmVjByS1Z4Y2ZTOW5MRnh1SUNBZ0lDQWdJQ0FnSUNoZk9pQmhibmtzSUhaaGNrNWhiV1U2SUhOMGNtbHVaeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkbUZzZFdVZ1BTQndjbTlqWlhOekxtVnVkbHQyWVhKT1lXMWxYVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0haaGJIVmxJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1M1lYSnVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0JYWVhKdWFXNW5PaUJGYm5acGNtOXViV1Z1ZENCMllYSnBZV0pzWlNCY0lpUjdkbUZ5VG1GdFpYMWNJaUJwY3lCdWIzUWdjMlYwWUZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdYQ0pjSWp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiSFZsTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdLVHRjYmx4dUlDQWdJQ0FnSUNCdWNHMXlZME52Ym5SbGJuUWdQU0J5WlhCc1lXTmxaRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR05oZEdOb0lIdGNiaUFnSUNBZ0lHeHZaeTVwYm1adktHQk9ieUF1Ym5CdGNtTWdabWxzWlNCbWIzVnVaQ3dnYzJ0cGNIQnBibWNnWTI5d2VXbHVaeUF1Ym5CdGNtTWdkRzhnYjNWMGNIVjBZQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lDQWdZSEoxYm01cGJtY2dkMmwwYUNCdmNIUnBiMjV6T2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0c5d2RHbHZibk1wZlNCbWIzSWdKSHR3YTJjdWJtRnRaWDBnZG1WeWMybHZiaUFrZTNabGNuTnBiMjU5WUZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0IwYzBOdmJtWnBaMFpwYkdVZ1BTQndZWFJvTG1selFXSnpiMngxZEdVb2RITkRiMjVtYVdkR2FXeGxLVnh1SUNBZ0lDQWdQeUIwYzBOdmJtWnBaMFpwYkdWY2JpQWdJQ0FnSURvZ2NHRjBhQzVxYjJsdUtIQnliMk5sYzNNdVkzZGtLQ2tzSUhSelEyOXVabWxuUm1sc1pTazdYRzVjYmlBZ0lDQnZkWFJ3ZFhRZ1BTQnpkSEpwY0VOdmJuUnlZV04wVG1GdFpTQS9JRzkxZEhCMWRDQTZJSEJoZEdndWFtOXBiaWh2ZFhSd2RYUXNJRzVoYldVcE8xeHVJQ0FnSUd4dlp5NXBibVp2S0dCRVpXeGxkR2x1WnlCbGVHbHpkR2x1WnlCdmRYUndkWFFnWm05c1pHVnlJQ2hwWmlCbGVHbHpkSE1wSUhWdVpHVnlJQ1I3YjNWMGNIVjBmV0FwTzF4dUlDQWdJR1Y0WldOVGVXNWpLR0J5YlNBdGNtWWdKSHR2ZFhSd2RYUjlZQ2s3WEc0Z0lDQWdhV1lnS0dKMWJtUnNaU2tnZTF4dUlDQWdJQ0FnYkc5bkxtbHVabThvWUdKMWJtUnNhVzVuSUdOdmJuUnlZV04wSUdaeWIyMGdKSHRwYm5CMWRIMWdLVHRjYmlBZ0lDQWdJR052Ym5OMElIUmxiWEJDZFc1a2JHVkVhWElnUFNCbWN5NXRhMlIwWlcxd1UzbHVZeWhjYmlBZ0lDQWdJQ0FnY0dGMGFDNXFiMmx1S0hCeWIyTmxjM011WTNka0tDa3NJRndpTG1OdmJuUnlZV04wTFdKMWJtUnNaUzFjSWlsY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBibkIxZEVWdWRISjVJRDBnY0dGMGFDNXlaWE52YkhabEtIQnliMk5sYzNNdVkzZGtLQ2tzSUdsdWNIVjBMQ0JjSW1sdVpHVjRMblJ6WENJcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamIyNW1hV2RHYVd4bElEMGdkSE11Y21WaFpFTnZibVpwWjBacGJHVW9kSE5EYjI1bWFXZEdhV3hsTENCMGN5NXplWE11Y21WaFpFWnBiR1VwTzF4dUlDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sblJtbHNaUzVsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RITXVabXhoZEhSbGJrUnBZV2R1YjNOMGFXTk5aWE56WVdkbFZHVjRkQ2hqYjI1bWFXZEdhV3hsTG1WeWNtOXlMbTFsYzNOaFoyVlVaWGgwTENCY0lseGNibHdpS1Z4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3WVhKelpXUkRiMjVtYVdjZ1BTQjBjeTV3WVhKelpVcHpiMjVEYjI1bWFXZEdhV3hsUTI5dWRHVnVkQ2hjYmlBZ0lDQWdJQ0FnSUNCamIyNW1hV2RHYVd4bExtTnZibVpwWnl4Y2JpQWdJQ0FnSUNBZ0lDQjBjeTV6ZVhNc1hHNGdJQ0FnSUNBZ0lDQWdjR0YwYUM1a2FYSnVZVzFsS0hSelEyOXVabWxuUm1sc1pTa3NYRzRnSUNBZ0lDQWdJQ0FnZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnSUNBZ0lIUnpRMjl1Wm1sblJtbHNaVnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNCcFppQW9jR0Z5YzJWa1EyOXVabWxuTG1WeWNtOXljeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmhjbk5sWkVOdmJtWnBaeTVsY25KdmNuTmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvWlhKeWIzSXBJRDArWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhNdVpteGhkSFJsYmtScFlXZHViM04wYVdOTlpYTnpZV2RsVkdWNGRDaGxjbkp2Y2k1dFpYTnpZV2RsVkdWNGRDd2dYQ0pjWEc1Y0lpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWFtOXBiaWhjSWx4Y2Jsd2lLVnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQjBaVzF3UTI5dGNHbHNaWEpQY0hScGIyNXpPaUIwY3k1RGIyMXdhV3hsY2s5d2RHbHZibk1nUFNCN1hHNGdJQ0FnSUNBZ0lDQWdMaTR1Y0dGeWMyVmtRMjl1Wm1sbkxtOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNBZ0lDQWdiM1YwUkdseU9pQjBaVzF3UW5WdVpHeGxSR2x5TEZ4dUlDQWdJQ0FnSUNBZ0lHMXZaSFZzWlRvZ2RITXVUVzlrZFd4bFMybHVaQzVGVTA1bGVIUXNYRzRnSUNBZ0lDQWdJQ0FnWkdWamJHRnlZWFJwYjI0NklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lITnZkWEpqWlUxaGNEb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lDQWdhVzVzYVc1bFUyOTFjbU5sY3pvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdKMWJtUnNaV1JGYm5SeWVWQnZhVzUwSUQwZ2RITmNiaUFnSUNBZ0lDQWdJQ0F1WjJWMFQzVjBjSFYwUm1sc1pVNWhiV1Z6S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTV3WVhKelpXUkRiMjVtYVdjc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk02SUhSbGJYQkRiMjF3YVd4bGNrOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdhVzV3ZFhSRmJuUnllU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDRjBjeTV6ZVhNdWRYTmxRMkZ6WlZObGJuTnBkR2wyWlVacGJHVk9ZVzFsYzF4dUlDQWdJQ0FnSUNBZ0lDbGNiaUFnSUNBZ0lDQWdJQ0F1Wm1sdVpDZ29abWxzWlU1aGJXVXBJRDArSUdacGJHVk9ZVzFsTG1WdVpITlhhWFJvS0Z3aUxtcHpYQ0lwS1R0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvSVdKMWJtUnNaV1JGYm5SeWVWQnZhVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JnUm1GcGJHVmtJSFJ2SUdSbGRHVnliV2x1WlNCMGFHVWdaVzFwZEhSbFpDQmlkVzVrYkdVZ1pXNTBjbmtnWm05eUlDUjdhVzV3ZFhSRmJuUnllWDFnWEc0Z0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdOdmJYQnBiR1ZYYVhSb1ZITmpiMjVtYVdkUGRtVnljbWxrWlhNb2RITkRiMjVtYVdkR2FXeGxMQ0IwWlcxd1EyOXRjR2xzWlhKUGNIUnBiMjV6S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWW5WdVpHeGxaRU52Ym5SeVlXTjBJRDBnWVhkaGFYUWdjbTlzYkhWd0tIdGNiaUFnSUNBZ0lDQWdJQ0JwYm5CMWREb2dZblZ1Wkd4bFpFVnVkSEo1VUc5cGJuUXNYRzRnSUNBZ0lDQWdJQ0FnY0d4MVoybHVjem9nVzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVZ6YjJ4MlpVSjFibVJzWldSS2MwbHRjRzl5ZEhNb0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGNHeGhZMlVvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J3Y21WMlpXNTBRWE56YVdkdWJXVnVkRG9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1pHVnNhVzFwZEdWeWN6b2dXMXdpWENJc0lGd2lYQ0pkTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpYTTZJSHNnWENJakkxWkZVbE5KVDA0akkxd2lPaUIyWlhKemFXOXVMQ0JjSWlNalVFRkRTMEZIUlNNalhDSTZJSEJyWnk1dVlXMWxJSDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLU3hjYmlBZ0lDQWdJQ0FnSUNCZExGeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnYkc5bkxtbHVabThvWEc0Z0lDQWdJQ0FnSUNBZ1lIZHBkR2hwYm1jZ1kyOXVkSEpoWTNRZ2RHOGdKSHR2ZFhSd2RYUjlJSGRwZEdnZ2JtRnRaU0FrZTNSdlVHRnpZMkZzUTJGelpTaHVZVzFsS1gwdWFuTmdYRzRnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJR0oxYm1Sc1pXUkRiMjUwY21GamRDNTNjbWwwWlNoN1hHNGdJQ0FnSUNBZ0lDQWdabWxzWlRvZ1lDUjdiM1YwY0hWMGZTOGtlM1J2VUdGelkyRnNRMkZ6WlNodVlXMWxLWDB1YW5OZ0xGeHVJQ0FnSUNBZ0lDQWdJR1p2Y20xaGREb2dYQ0oxYldSY0lpeGNiaUFnSUNBZ0lDQWdJQ0J1WVcxbE9pQmdKSHQwYjFCaGMyTmhiRU5oYzJVb2JtRnRaU2w5TG1wellDeGNiaUFnSUNBZ0lDQWdJQ0J6YjNWeVkyVnRZWEE2SUhOdmRYSmpaVzFoY0hNZ1B5QmNJbWx1YkdsdVpWd2lJRG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJQ0FnYzI5MWNtTmxiV0Z3VUdGMGFGUnlZVzV6Wm05eWJUb2dLSEpsYkdGMGFYWmxVMjkxY21ObFVHRjBhQ3dnYzI5MWNtTmxiV0Z3VUdGMGFDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lXSnpiMngxZEdWVGIzVnlZMlZRWVhSb0lEMGdjR0YwYUM1eVpYTnZiSFpsS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J3WVhSb0xtUnBjbTVoYldVb2MyOTFjbU5sYldGd1VHRjBhQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYkdGMGFYWmxVMjkxY21ObFVHRjBhRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR0ZpYzI5c2RYUmxVMjkxY21ObFVHRjBhQzV6ZEdGeWRITlhhWFJvS0hSbGJYQkNkVzVrYkdWRWFYSXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQndZWFJvTG5CdmMybDRMbXB2YVc0b1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1hDSXVZblZ1Wkd4bFhDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjR0YwYUZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0xuSmxiR0YwYVhabEtIUmxiWEJDZFc1a2JHVkVhWElzSUdGaWMyOXNkWFJsVTI5MWNtTmxVR0YwYUNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDNXpjR3hwZENod1lYUm9Mbk5sY0NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDNXFiMmx1S0Z3aUwxd2lLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21Wc1lYUnBkbVZUYjNWeVkyVlFZWFJvTzF4dUlDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNCaGQyRnBkQ0JpZFc1a2JHVmtRMjl1ZEhKaFkzUXVZMnh2YzJVb0tUdGNiaUFnSUNBZ0lIMGdabWx1WVd4c2VTQjdYRzRnSUNBZ0lDQWdJR1p6TG5KdFUzbHVZeWgwWlcxd1FuVnVaR3hsUkdseUxDQjdJSEpsWTNWeWMybDJaVG9nZEhKMVpTd2dabTl5WTJVNklIUnlkV1VnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR052YlhCcGJHVlhhWFJvVkhOamIyNW1hV2RQZG1WeWNtbGtaWE1vZEhORGIyNW1hV2RHYVd4bExDQjdYRzRnSUNBZ0lDQWdJRzkxZEVScGNqb2diM1YwY0hWMExGeHVJQ0FnSUNBZ0lDQnRiMlIxYkdVNklIUnpMazF2WkhWc1pVdHBibVF1UlZOT1pYaDBMRnh1SUNBZ0lDQWdJQ0JrWldOc1lYSmhkR2x2YmpvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUhOdmRYSmpaVTFoY0RvZ2MyOTFjbU5sYldGd2N5eGNiaUFnSUNBZ0lDQWdhVzVzYVc1bFUyOTFjbU5sY3pvZ2MyOTFjbU5sYldGd2N5eGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhOamNtbHdkSE1nUFNCN1hHNGdJQ0FnSUNCemRHRnlkRG9nWjJWMFEyOXVkSEpoWTNSVGRHRnlkRU52YlcxaGJtUW9aR1ZpZFdjc0lHTmpZV0Z6S1N4Y2JpQWdJQ0FnSUZ3aWMzUmhjblE2WkdWMlhDSTZJRndpWm1GaWNtbGpMV05vWVdsdVkyOWtaUzF1YjJSbElITjBZWEowSUMwdGRHeHpMbVZ1WVdKc1pXUWdabUZzYzJWY0lpeGNiaUFnSUNBZ0lGd2ljM1JoY25RNmQyRjBZMmhjSWpvZ0oyNXZaR1Z0YjI0Z0xTMWxlR1ZqSUZ3aWJuQnRJSEoxYmlCemRHRnlkRHBrWlhaY0lpY3NYRzRnSUNBZ0lDQmlkV2xzWkRvZ0oyVmphRzhnWENKT2J5QnVaV1ZrSUhSdklHSjFhV3hrSUhSb1pTQmphR0ZwYm1OdlpHVmNJaWNzWEc0Z0lDQWdJQ0JzYVc1ME9pQmNJbVZ6YkdsdWRDQXVJQzB0Wm1sNElDMHRaWGgwSUM1cWMxd2lMRnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQmpiMjV6ZENCamIyNTBjbUZqZEZCaFkydGhaMlVnUFNCd2EyYzdYRzVjYmlBZ0lDQmpiMjUwY21GamRGQmhZMnRoWjJVdWJtRnRaU0E5SUc1aGJXVTdYRzRnSUNBZ1kyOXVkSEpoWTNSUVlXTnJZV2RsTG1SbGMyTnlhWEIwYVc5dUlEMGdaR1Z6WTNKcGNIUnBiMjQ3WEc0Z0lDQWdZMjl1ZEhKaFkzUlFZV05yWVdkbExuTmpjbWx3ZEhNZ1BTQnpZM0pwY0hSek8xeHVYRzRnSUNBZ1pHVnNaWFJsSUdOdmJuUnlZV04wVUdGamEyRm5aUzUwZVhCbE8xeHVJQ0FnSUdSbGJHVjBaU0JqYjI1MGNtRmpkRkJoWTJ0aFoyVXVkSGx3WlhNN1hHNGdJQ0FnWkdWc1pYUmxJR052Ym5SeVlXTjBVR0ZqYTJGblpTNWxlSEJ2Y25Sek8xeHVJQ0FnSUdOdmJuUnlZV04wVUdGamEyRm5aUzV0WVdsdUlEMGdZblZ1Wkd4bFhHNGdJQ0FnSUNBL0lHQWtlM1J2VUdGelkyRnNRMkZ6WlNodVlXMWxLWDB1YW5OZ1hHNGdJQ0FnSUNBNklHQWtlMmx1Y0hWMGZTOXBibVJsZUM1cWMyQTdYRzVjYmlBZ0lDQm1jeTUzY21sMFpVWnBiR1ZUZVc1aktGeHVJQ0FnSUNBZ2NHRjBhQzVxYjJsdUtHOTFkSEIxZEN3Z1hDSndZV05yWVdkbExtcHpiMjVjSWlrc1hHNGdJQ0FnSUNCS1UwOU9Mbk4wY21sdVoybG1lU2hqYjI1MGNtRmpkRkJoWTJ0aFoyVXBYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHbG1JQ2h1Y0cxeVl5a2dabk11ZDNKcGRHVkdhV3hsVTNsdVl5aHdZWFJvTG1wdmFXNG9iM1YwY0hWMExDQmNJaTV1Y0cxeVkxd2lLU3dnYm5CdGNtTXBPMXh1WEc0Z0lDQWdiRzluTG1sdVptOG9ZRWx1YzNSaGJHeHBibWNnWVc1a0lITm9jbWx1YTNkeVlYQndhVzVuSUdSbGNHVnVaR1Z1WTJsbGMyQXBPMXh1SUNBZ0lHVjRaV05UZVc1aktHQnVjRzBnYVc1emRHRnNiR0FzSUhzZ1kzZGtPaUJ2ZFhSd2RYUWdmU2s3WEc0Z0lDQWdaWGhsWTFONWJtTW9ZRzV3YlNCemFISnBibXQzY21Gd1lDd2dleUJqZDJRNklHOTFkSEIxZENCOUtUdGNiaUFnSUNCbGVHVmpVM2x1WXloY0luSnRJQzF5WmlCdWIyUmxYMjF2WkhWc1pYTmNJaXdnZXlCamQyUTZJRzkxZEhCMWRDQjlLVHRjYmlBZ0lDQnNiMmN1YVc1bWJ5aGdaR1ZzWlhScGJtY2dkR1Z0Y0NCbWIyeGtaWEp6WUNrN1hHNGdJQ0FnWlhobFkxTjVibU1vWUhKdElDMXlaaUF1TDJ4cFlpQW1KaUJ5YlNBdGNtWWdMaTlrYVhOMFlDd2dleUJqZDJRNklHOTFkSEIxZENCOUtUdGNiaUFnSUNCc2IyY3VhVzVtYnloY2JpQWdJQ0FnSUdCRGIyNTBjbUZqZENBa2UyNWhiV1Y5SUdOdmJYQnBiR1ZrSUhOMVkyTmxjM05tZFd4c2VTRWdhVzRnSkh0d1lYUm9MbkpsYzI5c2RtVW9iM1YwY0hWMEtYMWdYRzRnSUNBZ0tUdGNiaUFnSUNCcFppQW9aR1YyS1NCN1hHNGdJQ0FnSUNCc2IyY3VhVzVtYnloZ1pHVjJJRzF2WkdVZ1pXNWhZbXhsWkM0Z2FXNXpkR0ZzYkdsdVp5QmtaWEJsYm1SbGJtTnBaWE1nWm05eUlHUmxZblZuWjJsdVoyQXBPMXh1SUNBZ0lDQWdaWGhsWTFONWJtTW9ZRzV3YlNCcGJuTjBZV3hzWUN3Z2UxeHVJQ0FnSUNBZ0lDQmpkMlE2SUc5MWRIQjFkQ3hjYmlBZ0lDQWdJQ0FnWlc1Mk9pQjdJQzR1TG5CeWIyTmxjM011Wlc1MkxDQk9UMFJGWDBWT1Zqb2dYQ0p3Y205a2RXTjBhVzl1WENJZ2ZTeGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNWNibU52Ym5OMElHVjRkSEpoWTNSSmJtUmxlR1Z6SUQwZ2JtVjNJRU52YlcxaGJtUW9LVnh1SUNBdVkyOXRiV0Z1WkNoY0ltVjRkSEpoWTNRdGFXNWtaWGhsYzF3aUtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxbWFXeGxJRnRUZEhKcGJtZGRYQ0lzSUZ3aWRHaGxJRzF2WkdWc0lHWnBiR1ZjSWlsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0Wm05c1pHVnlJRnRUZEhKcGJtZGRYQ0lzSUZ3aWRHaGxJRzF2WkdWc0lHWnZiR1JsY2x3aUtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxdmRYUkVhWElnUEZOMGNtbHVaejVjSWl3Z1hDSjBhR1VnYjNWMFpHbHlMaUJ6YUc5MWJHUWdiV0YwWTJnZ2VXOTFjaUJqYjI1MGNtRmpkQ0JtYjJ4a1pYSmNJaWxjYmlBZ0xtUmxjMk55YVhCMGFXOXVLRnh1SUNBZ0lGd2lRM0psWVhSbGN5QmhJSFJvWlNCS1UwOU9JR2x1WkdWNElHWnBiR1Z6SUhSdklHSmxJSE4xWW0xcGRIUmxaQ0IwYnlCaGJHOXVaeUIzYVhSb0lIUm9aU0JqYjI1MGNtRmpkRndpWEc0Z0lDbGNiaUFnTG1GamRHbHZiaWhoYzNsdVl5QW9iM0IwYVc5dWN6b2dZVzU1S1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnY0d0bklEMGdTbE5QVGk1d1lYSnpaU2hjYmlBZ0lDQWdJR1p6TG5KbFlXUkdhV3hsVTNsdVl5aHdZWFJvTG1wdmFXNG9jSEp2WTJWemN5NWpkMlFvS1N3Z1hDSndZV05yWVdkbExtcHpiMjVjSWlrc0lGd2lkWFJtTFRoY0lpbGNiaUFnSUNBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnZG1WeWMybHZiaUE5SUhCclp5NTJaWEp6YVc5dU8xeHVYRzRnSUNBZ1kyOXVjM1FnYkc5bklEMGdiRzluWjJWeUxtWnZjaWhjSW1WNGRISmhZM1F0YVc1a1pYaGxjMXdpS1R0Y2JpQWdJQ0JzYjJjdVpHVmlkV2NvWEc0Z0lDQWdJQ0JnY25WdWJtbHVaeUIzYVhSb0lHOXdkR2x2Ym5NNklDUjdTbE5QVGk1emRISnBibWRwWm5rb2IzQjBhVzl1Y3lsOUlHWnZjaUFrZTNCclp5NXVZVzFsZlNCMlpYSnphVzl1SUNSN2RtVnljMmx2Ym4xZ1hHNGdJQ0FnS1R0Y2JseHVJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCd2NtVm1aWEl0WTI5dWMzUmNiaUFnSUNCc1pYUWdleUJtYVd4bExDQm1iMnhrWlhJc0lHOTFkRVJwY2lCOUlEMGdiM0IwYVc5dWN6dGNibHh1SUNBZ0lHTnZibk4wSUcxdlpHVnNjem9nWVc1NVcxMGdQU0JiWFR0Y2JpQWdJQ0JwWmlBb1ptbHNaU2tnZTF4dUlDQWdJQ0FnYlc5a1pXeHpMbkIxYzJnb0xpNHVjbVZoWkUxdlpHVnNSbWxzWlNobWFXeGxLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dadmJHUmxjaWtnZTF4dUlDQWdJQ0FnYkc5bkxtbHVabThvWUV4dllXUnBibWNnYlc5a1pXeHpJR1p5YjIwZ0pIdG1iMnhrWlhKOUxpNHVZQ2s3WEc0Z0lDQWdJQ0J0YjJSbGJITXVjSFZ6YUNndUxpNG9ZWGRoYVhRZ2NtVmhaRTF2WkdWc1JtOXNaR1Z5Y3lobWIyeGtaWElwS1NrN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMElISmxjM1ZzZERvZ1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBpQTlJSHQ5TzF4dUlDQWdJR052Ym5OMElHUmxjMmxuYmtSdlkzTTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDRnUFNCN2ZUdGNibHh1SUNBZ0lHbG1JQ2doWm1sc1pTQW1KaUFoWm05c1pHVnlLVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1lFMTFjM1FnY0dGemN5QmhJR1pwYkdVZ2IzSWdZU0JtYjJ4a1pYSmdLVHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYlNCdlppQnRiMlJsYkhNcElIdGNiaUFnSUNBZ0lHeHZaeTUyWlhKaWIzTmxLR0JGZUhSeVlXTjBhVzVuSUdsdVpHVjRaWE1nWm05eUlIUmhZbXhsSUNSN1RXOWtaV3d1ZEdGaWJHVk9ZVzFsS0cwcGZXQXBPMXh1SUNBZ0lDQWdZMjl1YzNRZ2FXNWtaWGhsY3lBOUlHZGxibVZ5WVhSbFRXOWtaV3hKYm1SbGVHVnpLRzBwTzF4dUlDQWdJQ0FnYVc1a1pYaGxjeTVtYjNKRllXTm9LQ2hwYm1SbGVDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCcFppQW9hVzVrWlhndWJtRnRaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxjM1ZzZEZ0cGJtUmxlQzV1WVcxbFhTQTlJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJR2RsYm1WeVlYUmxUVzlrWld4RVpYTnBaMjVFYjJOektHMHNJR1JsYzJsbmJrUnZZM01wTzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCcGJtUmxlR1Z6Vkc5WGNtbDBaU0E5SUU5aWFtVmpkQzUyWVd4MVpYTW9jbVZ6ZFd4MEtUdGNiaUFnSUNCamIyNXpkQ0JrYjJOelZHOVhjbWwwWlNBOUlFOWlhbVZqZEM1MllXeDFaWE1vWkdWemFXZHVSRzlqY3lrN1hHNGdJQ0FnYkc5bkxuWmxjbUp2YzJVb1lFWnZkVzVrSUNSN2FXNWtaWGhsYzFSdlYzSnBkR1V1YkdWdVozUm9mU0JwYm1SbGVHVnpJSFJ2SUdOeVpXRjBaV0FwTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0dCR2IzVnVaQ0FrZTJSdlkzTlViMWR5YVhSbExteGxibWQwYUgwZ1pHVnphV2R1SUdSdlkzTWdkRzhnWTNKbFlYUmxZQ2s3WEc0Z0lDQWdiRzluTG1SbFluVm5LR0JKYm1SbGVHVnpPaUFrZTBwVFQwNHVjM1J5YVc1bmFXWjVLSEpsYzNWc2RDbDlZQ2s3WEc0Z0lDQWdiRzluTG1SbFluVm5LR0JFWlhOcFoyNUViMk56T2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0dSbGMybG5ia1J2WTNNcGZXQXBPMXh1SUNBZ0lIZHlhWFJsU1c1a1pYaGxjeWhwYm1SbGVHVnpWRzlYY21sMFpTd2diM1YwUkdseUtUdGNiaUFnSUNCM2NtbDBaVVJsYzJsbmJrUnZZM01vWkc5amMxUnZWM0pwZEdVc0lHOTFkRVJwY2lrN1hHNGdJSDBwTzF4dVhHNWpiMjV6ZENCbGVIUnlZV04wUTI5c2JHVmpkR2x2Ym5NZ1BTQnVaWGNnUTI5dGJXRnVaQ2dwWEc0Z0lDNWpiMjF0WVc1a0tGd2laWGgwY21GamRDMWpiMnhzWldOMGFXOXVjMXdpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzFtYVd4bElGdFRkSEpwYm1kZFhDSXNJRndpZEdobElHMXZaR1ZzSUdacGJHVmNJaWxjYmlBZ0xtOXdkR2x2YmloY0lpMHRabTlzWkdWeUlGdFRkSEpwYm1kZFhDSXNJRndpZEdobElHMXZaR1ZzSUdadmJHUmxjbHdpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzF2ZFhSRWFYSWdQRk4wY21sdVp6NWNJaXdnWENKMGFHVWdiM1YwWkdseUxpQnphRzkxYkdRZ2JXRjBZMmdnZVc5MWNpQmpiMjUwY21GamRDQm1iMnhrWlhKY0lpbGNiaUFnTG05d2RHbHZiaWhjSWkwdGJYTndTV1J6SUR4VGRISnBibWMrWENJc0lGd2ljMmx1WjJ4bElHMXpjRWxrSUc5eUlITjBjbWx1WjJsbWFXVmtJR0Z5Y21GNVhDSXBYRzRnSUM1dmNIUnBiMjRvWENJdExXMWhhVzVOYzNCSlpDQThVM1J5YVc1blBsd2lMQ0JjSW5OcGJtZHNaU0J0YzNCSlpGd2lLVnh1SUNBdWIzQjBhVzl1S0Z4dUlDQWdJRndpTFMxdmRtVnljbWxrWlhNZ1cxTjBjbWx1WjExY0lpeGNiaUFnSUNCY0luTjBjbWx1WjJsbWFXVmtJRzkyWlhKeWFXUmxJRzlpYW1WamRDQjdjbVZ4ZFdseVpXUlFaV1Z5UTI5MWJuUTZJRzUxYldKbGNpd2diV0Y0VUdWbGNrTnZkVzUwT2lCdWRXMWlaWElzSUdKc2IyTnJWRzlNYVhabE9pQnVkVzFpWlhJc0lHMWxiV0psY2s5dWJIbFNaV0ZrT2lCdWRXMWlaWElzSUcxbGJXSmxjazl1YkhsWGNtbDBaVG9nYm5WdFltVnlMQ0JsYm1SdmNuTmxiV1Z1ZEZCdmJHbGplVG9nSUh0OWZWd2lYRzRnSUNsY2JpQWdMbVJsYzJOeWFYQjBhVzl1S0Z4dUlDQWdJRndpUTNKbFlYUmxjeUJoSUhSb1pTQktVMDlPSUdsdVpHVjRJR1pwYkdWeklIUnZJR0psSUhOMVltMXBkSFJsWkNCMGJ5QmhiRzl1WnlCM2FYUm9JSFJvWlNCamIyNTBjbUZqZEZ3aVhHNGdJQ2xjYmlBZ0xtRmpkR2x2YmloaGMzbHVZeUFvYjNCMGFXOXVjem9nWVc1NUtTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2NHdG5JRDBnU2xOUFRpNXdZWEp6WlNoY2JpQWdJQ0FnSUdaekxuSmxZV1JHYVd4bFUzbHVZeWh3WVhSb0xtcHZhVzRvY0hKdlkyVnpjeTVqZDJRb0tTd2dYQ0p3WVdOcllXZGxMbXB6YjI1Y0lpa3NJRndpZFhSbUxUaGNJaWxjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2RtVnljMmx2YmlBOUlIQnJaeTUyWlhKemFXOXVPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JHOW5JRDBnYkc5bloyVnlMbVp2Y2loY0ltVjRkSEpoWTNRdFkyOXNiR1ZqZEdsdmJuTmNJaWs3WEc0Z0lDQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lDQWdZSEoxYm01cGJtY2dkMmwwYUNCdmNIUnBiMjV6T2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0c5d2RHbHZibk1wZlNCbWIzSWdKSHR3YTJjdWJtRnRaWDBnZG1WeWMybHZiaUFrZTNabGNuTnBiMjU5WUZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnY0hKbFptVnlMV052Ym5OMFhHNGdJQ0FnYkdWMElIc2dabWxzWlN3Z1ptOXNaR1Z5TENCdmRYUkVhWElzSUcxemNFbGtjeXdnYldGcGJrMXpjRWxrSUgwZ1BTQnZjSFJwYjI1ek8xeHVYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lHMXpjRWxrY3lBOUlHMXpjRWxrY3lBL0lFcFRUMDR1Y0dGeWMyVW9iWE53U1dSektTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0Ym1WNGRDMXNhVzVsSUVCMGVYQmxjMk55YVhCMExXVnpiR2x1ZEM5dWJ5MTFiblZ6WldRdGRtRnljMXh1SUNBZ0lDQWdmU0JqWVhSamFDQW9aVG9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnSUNBdkx5QWdaRzhnYm05MGFHbHVaMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdZMkYwWTJnZ0tHVTZJSFZ1YTI1dmQyNHBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJUWlhKcFlXeHBlbUYwYVc5dVJYSnliM0lvWUZWdVlXSnNaU0IwYnlCbGVIUnlZV04wSUcxemNHbGtjem9nSUNSN1pYMWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdGIyUmxiSE02SUdGdWVWdGRJRDBnVzEwN1hHNGdJQ0FnYVdZZ0tHWnBiR1VwSUh0Y2JpQWdJQ0FnSUcxdlpHVnNjeTV3ZFhOb0tDNHVMbkpsWVdSTmIyUmxiRVpwYkdVb1ptbHNaU2twTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNobWIyeGtaWElwSUh0Y2JpQWdJQ0FnSUd4dlp5NXBibVp2S0dCTWIyRmthVzVuSUcxdlpHVnNjeUJtY205dElDUjdabTlzWkdWeWZTNHVMbUFwTzF4dUlDQWdJQ0FnYlc5a1pXeHpMbkIxYzJnb0xpNHVLR0YzWVdsMElISmxZV1JOYjJSbGJFWnZiR1JsY25Nb1ptOXNaR1Z5S1NrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2habWxzWlNBbUppQWhabTlzWkdWeUtWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkR1Z5Ym1Gc1JYSnliM0lvWUUxMWMzUWdjR0Z6Y3lCaElHWnBiR1VnYjNJZ1lTQm1iMnhrWlhKZ0tUdGNibHh1SUNBZ0lHTnZibk4wSUdsdWFtVmpkR0ZpYkdWTmIyUmxiSE1nUFNCdGIyUmxiSE11Wm1sc2RHVnlLRnh1SUNBZ0lDQWdLRzF2WkdWc0tTQTlQbHh1SUNBZ0lDQWdJQ0JOYjJSbGJDNXBjMU5vWVhKbFpDaHRiMlJsYkNrZ2ZIeGNiaUFnSUNBZ0lDQWdUVzlrWld3dWFYTlFjbWwyWVhSbEtHMXZaR1ZzS1NCOGZGeHVJQ0FnSUNBZ0lDQWhJVTF2WkdWc0xtMXBjbkp2Y21Wa1FYUW9iVzlrWld3cFhHNGdJQ0FnS1R0Y2JpQWdJQ0JwWmlBb0lXbHVhbVZqZEdGaWJHVk5iMlJsYkhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCc2IyY3VhVzVtYnloY2JpQWdJQ0FnSUNBZ1lFNXZJSE5vWVhKbFpDd2djSEpwZG1GMFpTd2diM0lnYldseWNtOXlaV1FnYlc5a1pXeHpJR1p2ZFc1a0lIUnZJR1Y0ZEhKaFkzUWdZMjlzYkdWamRHbHZibk5nWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHRnplVzVqSUdaMWJtTjBhVzl1SUdkbGRFTnZiSE1vYlhOd1NXUnpUR2x6ZEQ4NklITjBjbWx1WjF0ZEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHpPaUI3WEc0Z0lDQWdJQ0FnSUdsdVpHVjRaWE02SUVOeVpXRjBaVWx1WkdWNFVtVnhkV1Z6ZEZ0ZE8xeHVJQ0FnSUNBZ0lDQmtaWE5wWjI1RWIyTnpPaUJEYjNWamFFUkNSR1Z6YVdkdVJHOWpXMTA3WEc0Z0lDQWdJQ0FnSUcxcGNuSnZjajg2SUZCeWFYWmhkR1ZEYjJ4c1pXTjBhVzl1TzF4dUlDQWdJQ0FnSUNCamIyeHNaV04wYVc5dWN6b2dVSEpwZG1GMFpVTnZiR3hsWTNScGIyNWJYVHRjYmlBZ0lDQWdJSDFiWFNBOUlHRjNZV2wwSUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ0lDQnBibXBsWTNSaFlteGxUVzlrWld4ekxtMWhjQ2hoYzNsdVl5QW9ZMnhoZW5vcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IwWVdKc1pVNWhiV1VnUFNCTmIyUmxiQzUwWVdKc1pVNWhiV1VvWTJ4aGVub3BPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzFwY25KdmNrMWxkR0VnUFNCTmIyUmxiQzV0YVhKeWIzSmxaRUYwS0dOc1lYcDZLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdWJHOW5LSFJoWW14bFRtRnRaU2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWTI5c2JHVmpkR2x2Ym5NNklGSmxZMjl5WkR4emRISnBibWNzSUdGdWVUNGdQU0I3ZlR0Y2JpQWdJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzF6Y0NCdlppQnRjM0JKWkhOTWFYTjBJSHg4SUcxemNFbGtjeUI4ZkNCYlhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXNiR1ZqZEdsdmJuTmJiWE53WFNBOUlHRjNZV2wwSUdWNFEyOXNiR1ZqZEdsdmJuTW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnNZWHA2TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JiYlhOd0xDQnRZV2x1VFhOd1NXUmRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlBZ0lITm9ZWEpsWkVOdmJITTZJRTlpYW1WamRDNWhjM05wWjI0b2UzMHNJRzkyWlhKeWFXUmxjeTV6YUdGeVpXUkRiMnh6S1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z0lDQndjbWwyWVhSbFEyOXNjem9nVDJKcVpXTjBMbUZ6YzJsbmJpaDdmU3dnYjNabGNuSnBaR1Z6TG5CeWFYWmhkR1ZEYjJ4ektTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJU0Z0YVhKeWIzSk5aWFJoWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJR3hsZENCdGFYSnliM0pEYjJ4c1pXTjBhVzl1T2lCUWNtbDJZWFJsUTI5c2JHVmpkR2x2YmlCOElIVnVaR1ZtYVc1bFpDQTlJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h0YVhKeWIzSk5aWFJoS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjJ4c1pXTjBhVzl1YzF0dFlXbHVUWE53U1dSZElEMGdZMjlzYkdWamRHbHZibk5iYldGcGJrMXpjRWxrWFNCOGZDQjdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lFOWlhbVZqZEM1clpYbHpLR052Ykd4bFkzUnBiMjV6S1M1bWIzSkZZV05vS0NodGMzQTZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjJ4c1pXTjBhVzl1YzF0dFlXbHVUWE53U1dSZExuQnlhWFpoZEdWeklEMGdZMjlzYkdWamRHbHZibk5iWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYlhOd1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUYwdWNISnBkbUYwWlhNL0xtWnBiSFJsY2lnb2NEb2dZVzU1S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hBdWJtRnRaU0FoUFQwZ0tHMXBjbkp2Y2sxbGRHRXVjbVZ6YjJ4MlpYSWdZWE1nYzNSeWFXNW5LU2tnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXbHljbTl5UTI5c2JHVmpkR2x2YmlBOUlIQWdZWE1nWVc1NU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQndjbWwyWVhSbGMwTnZkVzUwSUQwZ1QySnFaV04wTG5aaGJIVmxjeWhqYjJ4c1pXTjBhVzl1Y3lsY2JpQWdJQ0FnSUNBZ0lDQWdJQzV0WVhBb0tHTXBJRDArSUdNdWNISnBkbUYwWlhNcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1Wm14aGRDZ3BMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISnBkbUYwWlhORGIzVnVkQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHeHZaMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVabTl5S0UxdlpHVnNMblJoWW14bFRtRnRaU2hqYkdGNmVpa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDNXBibVp2S0dCR2IzVnVaQ0FrZTNCeWFYWmhkR1Z6UTI5MWJuUjlJSEJ5YVhaaGRHVWdZMjlzYkdWamRHbHZibk1nZEc4Z1kzSmxZWFJsWUNrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MyaGhjbVZrUTI5MWJuUWdQU0JQWW1wbFkzUXVkbUZzZFdWektHTnZiR3hsWTNScGIyNXpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvWXlrZ1BUNGdZeTV6YUdGeVpXUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBdVpteGhkQ2dwTG14bGJtZDBhRHRjYmx4dUlDQWdJQ0FnSUNBZ0lHeHZaMXh1SUNBZ0lDQWdJQ0FnSUNBZ0xtWnZjaWhOYjJSbGJDNTBZV0pzWlU1aGJXVW9ZMnhoZW5vcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG1sdVptOG9ZRVp2ZFc1a0lDUjdjMmhoY21Wa1EyOTFiblI5SUhOb1lYSmxaQ0JqYjJ4c1pXTjBhVzl1Y3lCMGJ5QmpjbVZoZEdWZ0tUdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2JXbHljbTl5UTI5c2JHVmpkR2x2YmlsY2JpQWdJQ0FnSUNBZ0lDQWdJR3h2WjF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1Wm05eUtFMXZaR1ZzTG5SaFlteGxUbUZ0WlNoamJHRjZlaWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzVwYm1adktGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQkdiM1Z1WkNCdmJtVWdiV2x5Y205eUlHTnZiR3hsWTNScGIyNGdKSHR0YVhKeWIzSk5aWFJoUHk1eVpYTnZiSFpsY2lCaGN5QnpkSEpwYm1kOVlGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZMjlzVEdsemRDQTlJRTlpYW1WamRDNTJZV3gxWlhNb1kyOXNiR1ZqZEdsdmJuTXBYRzRnSUNBZ0lDQWdJQ0FnSUNBdWJXRndLQ2hqS1NBOVBpQmJMaTR1S0dNdWNISnBkbUYwWlhNZ2ZId2dXMTBwTENBdUxpNG9ZeTV6YUdGeVpXUWdmSHdnVzEwcFhTbGNiaUFnSUNBZ0lDQWdJQ0FnSUM1bWJHRjBLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2JHVjBJR2x1WkdWNFpYTTZJRU55WldGMFpVbHVaR1Y0VW1WeGRXVnpkRnRkSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJQ0FnYkdWMElHUmxjMmxuYmtSdlkzTTZJRU52ZFdOb1JFSkVaWE5wWjI1RWIyTmJYU0E5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyeE1hWE4wTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiRzluWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzVtYjNJb1RXOWtaV3d1ZEdGaWJHVk9ZVzFsS0dOc1lYcDZLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMblpsY21KdmMyVW9ZR2RsYm1WeVlYUnBibWNnYVc1a1pYaGxjeUJtYjNJZ1kyOXNiR1ZqZEdsdmJuTmdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVaR1Y0WlhNZ1BTQm5aVzVsY21GMFpVMXZaR1ZzU1c1a1pYaGxjeWhqYkdGNmVpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2IyZGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xtWnZjaWhOYjJSbGJDNTBZV0pzWlU1aGJXVW9ZMnhoZW5vcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWFXNW1ieWhnWm05MWJtUWdKSHRwYm1SbGVHVnpMbXhsYm1kMGFIMGdhVzVrWlhobGMyQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHVnphV2R1Ukc5amN5QTlJR2RsYm1WeVlYUmxUVzlrWld4RVpYTnBaMjVFYjJOektHTnNZWHA2S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3h2WjF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1Wm05eUtFMXZaR1ZzTG5SaFlteGxUbUZ0WlNoamJHRjZlaWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzVwYm1adktHQm1iM1Z1WkNBa2UyUmxjMmxuYmtSdlkzTXViR1Z1WjNSb2ZTQmtaWE5wWjI0Z1pHOWpjMkFwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXNWtaWGhsY3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JsYzJsbmJrUnZZM01zWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMnhzWldOMGFXOXVjem9nWTI5c1RHbHpkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHMXBjbkp2Y2pvZ2JXbHljbTl5UTI5c2JHVmpkR2x2Yml4Y2JpQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0I5S1Z4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJqYjJ4ek8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR052YkhNZ1BTQmhkMkZwZENCblpYUkRiMnh6S0NrN1hHNGdJQ0FnWTI5dWMzUWdiMjVzZVUxcGNuSnZjaUE5SUdGM1lXbDBJR2RsZEVOdmJITW9XMjFoYVc1TmMzQkpaRjBwTzF4dVhHNGdJQ0FnWTI5dWMzUWdZMjlzYkdWamRHbHZibk5VYnlBOUlGdGNiaUFnSUNBZ0lDNHVMbTl1YkhsTmFYSnliM0l1Wm1sc2RHVnlLQ2hqS1NBOVBpQmpMbTFwY25KdmNpa3ViV0Z3S0NoaktTQTlQaUJqTG0xcGNuSnZjaWtzWEc0Z0lDQWdJQ0F1TGk1amIyeHpMbTFoY0Nnb1l5a2dQVDRnWXk1amIyeHNaV04wYVc5dWN5a3VabXhoZENncExGeHVJQ0FnSUNBZ0xpNHVZMjlzY3k1bWFXeDBaWElvS0dNcElEMCtJR011YldseWNtOXlLUzV0WVhBb0tHTXBJRDArSUdNdWJXbHljbTl5S1N4Y2JpQWdJQ0JkSUdGeklGQnlhWFpoZEdWRGIyeHNaV04wYVc5dVcxMDdYRzVjYmlBZ0lDQmpiMjV6ZENCMWJtbHhkV1ZDZVVOdmJHeGxZM1JwYjI0Z1BTQmJYRzRnSUNBZ0lDQXVMaTV1WlhjZ1RXRndLRnh1SUNBZ0lDQWdJQ0JqYjJ4c1pXTjBhVzl1YzFSdkxtMWhjQ2dvYVhSbGJUb2dVSEpwZG1GMFpVTnZiR3hsWTNScGIyNHBJRDArSUZ0cGRHVnRMbTVoYldVc0lHbDBaVzFkS1Z4dUlDQWdJQ0FnS1M1MllXeDFaWE1vS1N4Y2JpQWdJQ0JkTzF4dVhHNGdJQ0FnYVdZZ0tIVnVhWEYxWlVKNVEyOXNiR1ZqZEdsdmJpNXNaVzVuZEdncElIdGNiaUFnSUNBZ0lIZHlhWFJsUTI5c2JHVmpkR2x2Ym5Nb2RXNXBjWFZsUW5sRGIyeHNaV04wYVc5dUxDQnZkWFJFYVhJcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYldWMFlVTnZiR3hsWTNScGIyNXpRMjl1Wm1sbklEMGdjR0YwYUM1cWIybHVLRnh1SUNBZ0lDQWdJQ0J2ZFhSRWFYSXNYRzRnSUNBZ0lDQWdJRndpVFVWVVFTMUpUa1pjSWl4Y2JpQWdJQ0FnSUNBZ1hDSmpiMnhzWldOMGFXOXVjMTlqYjI1bWFXY3Vhbk52Ymx3aVhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnWTI5dWRISmhZM1JEYjJ4c1pXTjBhVzl1YzBOdmJtWnBaeUE5SUhCaGRHZ3VhbTlwYmloY2JpQWdJQ0FnSUNBZ2IzVjBSR2x5TEZ4dUlDQWdJQ0FnSUNCY0ltTnZiR3hsWTNScGIyNXpYMk52Ym1acFp5NXFjMjl1WENKY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCbWN5NWpiM0I1Um1sc1pWTjVibU1vYldWMFlVTnZiR3hsWTNScGIyNXpRMjl1Wm1sbkxDQmpiMjUwY21GamRFTnZiR3hsWTNScGIyNXpRMjl1Wm1sbktUdGNiaUFnSUNBZ0lHeHZaeTVwYm1adktGeHVJQ0FnSUNBZ0lDQmdVM1J2Y21Wa0lDUjdZMjlzYkdWamRHbHZibk5VYnk1c1pXNW5kR2g5SUdOdmJHeGxZM1JwYjI1eklIUnZJQ1I3YldWMFlVTnZiR3hsWTNScGIyNXpRMjl1Wm1sbmZXQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnNiMmN1YVc1bWJ5aGNiaUFnSUNBZ0lDQWdZRU52Y0dsbFpDQmpiMnhzWldOMGFXOXVjMTlqYjI1bWFXY2dkRzhnSkh0amIyNTBjbUZqZEVOdmJHeGxZM1JwYjI1elEyOXVabWxuZlNCaGJHOXVaM05wWkdVZ2RHaGxJSEJoWTJ0aFoyVXVhbk52Ym1CY2JpQWdJQ0FnSUNrN1hHNWNiaUFnSUNBZ0lHTnZiSE11Wm05eVJXRmphQ2dvWXlrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQjdJR2x1WkdWNFpYTXNJR1JsYzJsbmJrUnZZM01zSUdOdmJHeGxZM1JwYjI1ekxDQnRhWEp5YjNJZ2ZTQTlJR003WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFJ2U1c1a1pYZzZJRkJ5YVhaaGRHVkRiMnhzWldOMGFXOXVXMTBnUFNCYkxpNHVZMjlzYkdWamRHbHZibk1zSUcxcGNuSnZjbDB1Wm1sc2RHVnlLRnh1SUNBZ0lDQWdJQ0FnSUVKdmIyeGxZVzVjYmlBZ0lDQWdJQ0FnS1NCaGN5QlFjbWwyWVhSbFEyOXNiR1ZqZEdsdmJsdGRPMXh1SUNBZ0lDQWdJQ0IwYjBsdVpHVjRMbVp2Y2tWaFkyZ29LR2twSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0IzY21sMFpVbHVaR1Y0WlhNb2FXNWtaWGhsY3l3Z2IzVjBSR2x5TENCcExtNWhiV1VwTzF4dUlDQWdJQ0FnSUNBZ0lIZHlhWFJsUTI5c2JHVmpkR2x2YmtSbGMybG5ia1J2WTNNb1pHVnphV2R1Ukc5amN5QjhmQ0JiWFN3Z2IzVjBSR2x5TENCcExtNWhiV1VwTzF4dUlDQWdJQ0FnSUNBZ0lHeHZaeTVwYm1adktGeHVJQ0FnSUNBZ0lDQWdJQ0FnWUZOMGIzSmxaQ0FrZTJsdVpHVjRaWE0vTG14bGJtZDBhQ0I4ZkNBd2ZTQnBibVJsZUdWeklHRnVaQ0FrZTJSbGMybG5ia1J2WTNNL0xteGxibWQwYUNCOGZDQXdmU0JrWlhOcFoyNGdaRzlqY3lCMGJ5QmpiMnhzWldOMGFXOXVJQ1I3YVM1dVlXMWxmV0JjYmlBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmlBZ2ZTazdYRzVjYm1OdmJuTjBJR1Z1YzNWeVpVbHVabkpoSUQwZ2JtVjNJRU52YlcxaGJtUW9LVnh1SUNBdWJtRnRaU2hjSW1GM1lXbDBMV2x1Wm5KaFhDSXBYRzRnSUM1a1pYTmpjbWx3ZEdsdmJpaGNJbmRoYVhSeklHWnZjaUIwYUdVZ2FXNW1jbUZ6ZEhKMVkzUjFjbVVnZEc4Z1ltVWdkWEFnWVc1a0lISjFibTVwYm1kY0lpbGNiaUFnTG05d2RHbHZiaWhjYmlBZ0lDQmNJaTB0WTI5dWRHRnBibVZ5SUR4VGRISnBibWMrWENJc1hHNGdJQ0FnWENKa2IyTnJaWElnWTI5dWRHRnBibVZ5SUc1aGJXVWdkRzhnZEdWemRDQW9kWE4xWVd4c2VTQnNZWE4wSUhCbFpYSXBYQ0lzWEc0Z0lDQWdYQ0ppYjI5MExXOXlaeTFqTFhCbFpYSXRNRndpWEc0Z0lDbGNiaUFnTG05d2RHbHZiaWhjSWkwdGRHbHRaVzkxZENBOFUzUnlhVzVuUGx3aUxDQmNJblJwYldWdmRYUWdZbVYwZDJWbGJpQjBaWE4wY3lCcGJpQnRhV3hzYVhObFkyOXVaSE5jSWl3Z1hDSTFNREF3WENJcFhHNGdJQzV2Y0hScGIyNG9YQ0l0TFdGMGRHVnRjSFJ6SUR4VGRISnBibWMrWENJc0lGd2liblZ0WW1WeUlHOW1JR0YwZEdWdGNIUnpJR0psWm05eVpTQm5hWFpwYm1jZ2RYQmNJaXdnWENJeE1Gd2lLVnh1SUNBdVlXTjBhVzl1S0dGemVXNWpJQ2h2Y0hScGIyNXpPaUJoYm5rcElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCd2EyY2dQU0JLVTA5T0xuQmhjbk5sS0Z4dUlDQWdJQ0FnWm5NdWNtVmhaRVpwYkdWVGVXNWpLSEJoZEdndWFtOXBiaWh3Y205alpYTnpMbU4zWkNncExDQmNJbkJoWTJ0aFoyVXVhbk52Ymx3aUtTd2dYQ0oxZEdZdE9Gd2lLVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCMlpYSnphVzl1SUQwZ2NHdG5MblpsY25OcGIyNDdYRzVjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0JzYjJkblpYSXVabTl5S0Z3aVlYZGhhWFF0YVc1bWNtRmNJaWs3WEc0Z0lDQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lDQWdZSEoxYm01cGJtY2dkMmwwYUNCdmNIUnBiMjV6T2lBa2UwcFRUMDR1YzNSeWFXNW5hV1o1S0c5d2RHbHZibk1wZlNCbWIzSWdKSHR3YTJjdWJtRnRaWDBnZG1WeWMybHZiaUFrZTNabGNuTnBiMjU5WUZ4dUlDQWdJQ2s3WEc0Z0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJSEJ5WldabGNpMWpiMjV6ZEZ4dUlDQWdJR3hsZENCN0lHTnZiblJoYVc1bGNpd2dkR2x0Wlc5MWRDd2dZWFIwWlcxd2RITWdmU0E5SUc5d2RHbHZibk03WEc0Z0lDQWdkR2x0Wlc5MWRDQTlJSEJoY25ObFNXNTBLSFJwYldWdmRYUXBJSHg4SURVd01EQTdYRzRnSUNBZ1lYUjBaVzF3ZEhNZ1BTQndZWEp6WlVsdWRDaGhkSFJsYlhCMGN5a2dmSHdnTVRBN1hHNWNiaUFnSUNCaGQyRnBkQ0JsYm5OMWNtVkpibVp5WVhOMGNuVmpkSFZ5WlVKdmIzUmxaQ2hjSW1KdmIzUXRiM0puTFdNdGNHVmxjaTB3WENJc0lIUnBiV1Z2ZFhRc0lHRjBkR1Z0Y0hSektUdGNibHh1SUNBZ0lHeHZaeTVwYm1adktGeHVJQ0FnSUNBZ1lFbHVabkpoYzNSeWRXTjBkWEpsSUdKdmIzUmxaQ0J6ZFdOalpYTnpablZzYkhrZ0tHRmpZMjl5WkdsdVp5QjBieUJqYjI1MFlXbHVaWElnSkh0amIyNTBZV2x1WlhKOUtTRmdYRzRnSUNBZ0tUdGNiaUFnZlNrN1hHNWNibU52Ym5OMElHUmxjR3h2ZVVOdmJuUnlZV04wSUQwZ2JtVjNJRU52YlcxaGJtUW9LVnh1SUNBdWJtRnRaU2hjSW1SbGNHeHZlUzFqYjI1MGNtRmpkRndpS1Z4dUlDQXVaR1Z6WTNKcGNIUnBiMjRvWENKa1pYQnNiM2x6SUhSb1pTQnpaV3hsWTNSbFpDQmpiMjUwY21GamRGd2lLVnh1SUNBdWIzQjBhVzl1S0Z3aUxTMXVZVzFsSUR4VGRISnBibWMrWENJc0lGd2lRMjl1ZEhKaFkzUWdUbUZ0WlNBb1lXNWtJR1p2YkdSbGNpbGNJaWxjYmlBZ0xtOXdkR2x2YmloY0lpMHRhVzV3ZFhRZ1BGTjBjbWx1Wno1Y0lpd2dYQ0pwYm5CMWRDQm1iMnhrWlhKY0lpbGNiaUFnTG05d2RHbHZiaWhjYmlBZ0lDQmNJaTB0WTI5c2JHVmpkR2x2Ym5NdFkyOXVabWxuSUR4VGRISnBibWMrWENJc1hHNGdJQ0FnWENKd1lYUm9JSFJ2SUdOdmJHeGxZM1JwYjI1elgyTnZibVpwWnk1cWMyOXVJSFJ2SUdOdmJtWnBaM1Z5WlNCd2NtbDJZWFJsSUdOdmJHeGxZM1JwYjI1elhDSmNiaUFnS1Z4dUlDQXViM0IwYVc5dUtGeHVJQ0FnSUZ3aUxTMXBibU55WlcxbGJuUldaWEp6YVc5dUlEeFRkSEpwYm1jK1hDSXNYRzRnSUNBZ1hDSW9kSEoxWlNCOElHWmhiSE5sS1NCcFppQnphRzkxYkdRZ2RYTmxJSFpsY25OcGIyNGdiM0lnYzJWeGRXVnVZMlVnZEc4Z2RYQmtZWFJsSUdOdmJuUnlZV04wYzF3aUxGeHVJQ0FnSUdaaGJITmxYRzRnSUNsY2JpQWdMbTl3ZEdsdmJpaGNiaUFnSUNCY0lpMHRkSEpoWTJ0bGNrWnZiR1JsY2lBOFUzUnlhVzVuUGx3aUxGeHVJQ0FnSUZ3aVkyOXVkSEpoWTNRZ2RtVnljMmx2YmlCMGNtRmphMlZ5SUdadmJHUmxjaUFvYzJodmRXeGtJR0psSUdSbGJHVjBaV1FnYjI0Z2FXNW1jbUZ6ZEhKMVkzUjFjbVU2Wkc5M2JpbGNJaXhjYmlBZ0lDQndZWFJvTG1wdmFXNG9jSEp2WTJWemN5NWpkMlFvS1N3Z1hDSjBaWE4wYzF3aUxDQmNJbWx1ZEdWbmNtRjBhVzl1WENJc0lGd2lZMmhoYVc1amIyUmxWSEpoWTJ0bGNuTmNJaWxjYmlBZ0tWeHVJQ0F1YjNCMGFXOXVLRnh1SUNBZ0lGd2lMUzF3WldWeWN5QThVM1J5YVc1blBsd2lMRnh1SUNBZ0lGd2lZMjl0YldFZ2MyVndZWEpoZEdWa0lIQmxaWElnYVdSelhDSXNYRzRnSUNBZ1hDSnZjbWN0WVMxd1pXVnlMVEFzYjNKbkxXSXRjR1ZsY2kwd0xHOXlaeTFqTFhCbFpYSXRNRndpWEc0Z0lDbGNiaUFnTG1GamRHbHZiaWhoYzNsdVl5QW9iM0IwYVc5dWN6b2dZVzU1S1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnY0d0bklEMGdTbE5QVGk1d1lYSnpaU2hjYmlBZ0lDQWdJR1p6TG5KbFlXUkdhV3hsVTNsdVl5aHdZWFJvTG1wdmFXNG9jSEp2WTJWemN5NWpkMlFvS1N3Z1hDSndZV05yWVdkbExtcHpiMjVjSWlrc0lGd2lkWFJtTFRoY0lpbGNiaUFnSUNBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnZG1WeWMybHZiaUE5SUhCclp5NTJaWEp6YVc5dU8xeHVYRzRnSUNBZ1kyOXVjM1FnYkc5bklEMGdiRzluWjJWeUxtWnZjaWhjSW1SbGNHeHZlUzFqYjI1MGNtRmpkRndpS1R0Y2JpQWdJQ0JzYjJjdVpHVmlkV2NvWEc0Z0lDQWdJQ0JnY25WdWJtbHVaeUIzYVhSb0lHOXdkR2x2Ym5NNklDUjdTbE5QVGk1emRISnBibWRwWm5rb2IzQjBhVzl1Y3lsOUlHWnZjaUFrZTNCclp5NXVZVzFsZlNCMlpYSnphVzl1SUNSN2RtVnljMmx2Ym4xZ1hHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSHRjYmlBZ0lDQWdJRzVoYldVc1hHNGdJQ0FnSUNCcGJuQjFkQ3hjYmlBZ0lDQWdJSEJsWlhKekxGeHVJQ0FnSUNBZ2RISmhZMnRsY2tadmJHUmxjaXhjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JBZEhsd1pYTmpjbWx3ZEMxbGMyeHBiblF2Ym04dGRXNTFjMlZrTFhaaGNuTmNiaUFnSUNBZ0lHbHVZM0psYldWdWRGWmxjbk5wYjI0c1hHNGdJQ0FnSUNCamIyeHNaV04wYVc5dWMwTnZibVpwWnl4Y2JpQWdJQ0I5SUQwZ2IzQjBhVzl1Y3p0Y2JpQWdJQ0JqYjI1emRDQndaV1Z5U1dSeklEMGdjR1ZsY25NdWMzQnNhWFFvWENJc1hDSXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1kyOTFiblJRWVhSb0lEMGdjR0YwYUM1eVpYTnZiSFpsS0hCaGRHZ3VhbTlwYmloMGNtRmphMlZ5Um05c1pHVnlMQ0JnSkh0dVlXMWxmUzVqYjNWdWRHQXBLVHRjYmx4dUlDQWdJR3hsZENCelpYRjFaVzVqWlRvZ2JuVnRZbVZ5TzF4dVhHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lITmxjWFZsYm1ObElEMGdjR0Z5YzJWSmJuUW9abk11Y21WaFpFWnBiR1ZUZVc1aktHTnZkVzUwVUdGMGFDa3VkRzlUZEhKcGJtY29YQ0oxZEdZdE9Gd2lLU2s3WEc0Z0lDQWdJQ0JwWmlBb2FYTk9ZVTRvYzJWeGRXVnVZMlVwS1NCelpYRjFaVzVqWlNBOUlERTdYRzRnSUNBZ0lDQmxiSE5sSUhObGNYVmxibU5sSUNzOUlERTdYRzRnSUNBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjV2TFhWdWRYTmxaQzEyWVhKelhHNGdJQ0FnZlNCallYUmphQ0FvWlRvZ2RXNXJibTkzYmlrZ2UxeHVJQ0FnSUNBZ2MyVnhkV1Z1WTJVZ1BTQXhPMXh1SUNBZ0lIMWNiaUFnSUNBdkwxeHVJQ0FnSUM4dklHbG1JQ2hwYm1OeVpXMWxiblJXWlhKemFXOXVLU0I3WEc0Z0lDQWdMeThnSUNCMlpYSnphVzl1SUQwZ2RtVnljMmx2YmlBcklHQXRKSHR6WlhGMVpXNWpaWDFnTzF4dUlDQWdJQzh2SUNBZ0x5OGdjMlZ4ZFdWdVkyVWdQU0F4TzF4dUlDQWdJQzh2SUgxY2JseHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJSEJsWlhJZ2IyWWdjR1ZsY2tsa2N5a2dlMXh1SUNBZ0lDQWdJQ0J3WVdOcllXZGxRMjl1ZEhKaFkzUW9jR1ZsY2l3Z2FXNXdkWFFzSUc1aGJXVXNJSFpsY25OcGIyNHBPMXh1SUNBZ0lDQWdJQ0JwYm5OMFlXeHNRMjl1ZEhKaFkzUW9jR1ZsY2l3Z2JtRnRaU2s3WEc0Z0lDQWdJQ0FnSUdGd2NISnZkbVZEYjI1MGNtRmpkQ2hjYmlBZ0lDQWdJQ0FnSUNCd1pXVnlMRnh1SUNBZ0lDQWdJQ0FnSUc1aGJXVXNYRzRnSUNBZ0lDQWdJQ0FnY0dWbGNpQTlQVDBnWENKdmNtY3RZUzF3WldWeUxUQmNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QmNJblJzY3kxallTMWpaWEowTG5CbGJWd2lYRzRnSUNBZ0lDQWdJQ0FnSUNBNklGd2liM0prWlhKbGNpMTBiSE10WTJFdFkyVnlkQzV3WlcxY0lpeGNiaUFnSUNBZ0lDQWdJQ0J6WlhGMVpXNWpaU3hjYmlBZ0lDQWdJQ0FnSUNCMlpYSnphVzl1TEZ4dUlDQWdJQ0FnSUNBZ0lHTnZiR3hsWTNScGIyNXpRMjl1Wm1sblhHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQm1jeTUzY21sMFpVWnBiR1ZUZVc1aktHTnZkVzUwVUdGMGFDd2djMlZ4ZFdWdVkyVXVkRzlUZEhKcGJtY29LU2s3WEc0Z0lDQWdmU0JqWVhSamFDQW9aWEp5T2lCaGJua3BJSHRjYmlBZ0lDQWdJR3h2Wnk1bGNuSnZjaWhjSWtWeWNtOXlJR1JsY0d4dmVXbHVaeUJqYjI1MGNtRmpkRHBjSWl3Z1pYSnlLVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXRiV2wwUTJoaGFXNWpiMlJsS0c1aGJXVXNJSE5sY1hWbGJtTmxMQ0IyWlhKemFXOXVMQ0JqYjJ4c1pXTjBhVzl1YzBOdmJtWnBaeWs3WEc0Z0lIMHBPMXh1WEc1amIyNXpkQ0JuWlhSRGNubHdkRzlOWVhSbGNtbGhiQ0E5SUc1bGR5QkRiMjF0WVc1a0tDbGNiaUFnTG01aGJXVW9YQ0puWlhRdFkzSjVjSFJ2TFcxaGRHVnlhV0ZzWENJcFhHNGdJQzVrWlhOamNtbHdkR2x2YmloY0ltTnZjR2xsY3lCMGFHVWdZM0o1Y0hSdklHMWhkR1Z5YVdGc0lIUnZJSFJvWlNCelpXeGxZM1JsWkNCbWIyeGtaWEpjSWlsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0Wm05c1pHVnlJRHhUZEhKcGJtYytYQ0lzSUZ3aWIzVjBjSFYwSUdadmJHUmxjbHdpTENCY0ltUnZZMnRsY2k5a2IyTnJaWEl0WkdGMFlWd2lLVnh1SUNBdWIzQjBhVzl1S0Z3aUxTMXZjbWNnVzFOMGNtbHVaMTFjSWl3Z1hDSjBhR1VnYjNKbkwzQmxaWElnZEc4Z1pYaDBjbUZqZENCbWNtOXRYQ0lzSUZ3aWIzSm5MV0ZjSWlsY2JpQWdMbUZqZEdsdmJpaGhjM2x1WXlBb2IzQjBhVzl1Y3pvZ1lXNTVLU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdjR3RuSUQwZ1NsTlBUaTV3WVhKelpTaGNiaUFnSUNBZ0lHWnpMbkpsWVdSR2FXeGxVM2x1WXlod1lYUm9MbXB2YVc0b2NISnZZMlZ6Y3k1amQyUW9LU3dnWENKd1lXTnJZV2RsTG1wemIyNWNJaWtzSUZ3aWRYUm1MVGhjSWlsY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWTI5dWMzUWdkbVZ5YzJsdmJpQTlJSEJyWnk1MlpYSnphVzl1TzF4dVhHNGdJQ0FnWTI5dWMzUWdiRzluSUQwZ2JHOW5aMlZ5TG1admNpaGNJbWRsZEMxamNubHdkRzh0YldGMFpYSnBZV3hjSWlrN1hHNGdJQ0FnYkc5bkxtUmxZblZuS0Z4dUlDQWdJQ0FnWUhKMWJtNXBibWNnZDJsMGFDQnZjSFJwYjI1ek9pQWtlMHBUVDA0dWMzUnlhVzVuYVdaNUtHOXdkR2x2Ym5NcGZTQm1iM0lnSkh0d2EyY3VibUZ0WlgwZ2RtVnljMmx2YmlBa2UzWmxjbk5wYjI1OVlGeHVJQ0FnSUNrN1hHNGdJQ0FnWTI5dWMzUWdleUJtYjJ4a1pYSXNJRzl5WnlCOUlEMGdiM0IwYVc5dWN6dGNiaUFnSUNCbGVHVmpVM2x1WXloZ1pHOWphMlZ5SUdOd0lDUjdiM0puZlRvdmQyVmhkbVZ5TDJOc2FXVnVkQzh1SUNSN1ptOXNaR1Z5ZldBc0lIdGNiaUFnSUNBZ0lHTjNaRG9nY0hKdlkyVnpjeTVqZDJRb0tTeGNiaUFnSUNCOUtUdGNiaUFnZlNrN1hHNWNibU52Ym5OMElHWmhZbkpwWTBOdFpDQTlJRzVsZHlCRGIyMXRZVzVrS0NsY2JpQWdMbTVoYldVb1hDSm1iM0l0Wm1GaWNtbGpYQ0lwWEc0Z0lDNWpiMjF0WVc1a0tGd2labUZpY21salhDSXBYRzRnSUM1a1pYTmpjbWx3ZEdsdmJpaGNiaUFnSUNCY0ltVjRjRzl6WlhNZ2MyVjJaWEpoYkNCamIyMXRZVzVrY3lCMGJ5Qm9aV3h3SUcxaGJtRm5aU0IwYUdVZ1ptRmljbWxqSUdsdVpuSmhjM1J5ZFdOMGRYSmxYQ0pjYmlBZ0tUdGNibHh1Wm1GaWNtbGpRMjFrTG1Ga1pFTnZiVzFoYm1Rb1kyOXRjR2xzWlVOdmJXMWhibVFwTzF4dVptRmljbWxqUTIxa0xtRmtaRU52YlcxaGJtUW9aWGgwY21GamRFbHVaR1Y0WlhNcE8xeHVabUZpY21salEyMWtMbUZrWkVOdmJXMWhibVFvWlc1emRYSmxTVzVtY21FcE8xeHVabUZpY21salEyMWtMbUZrWkVOdmJXMWhibVFvWkdWd2JHOTVRMjl1ZEhKaFkzUXBPMXh1Wm1GaWNtbGpRMjFrTG1Ga1pFTnZiVzFoYm1Rb1oyVjBRM0o1Y0hSdlRXRjBaWEpwWVd3cE8xeHVabUZpY21salEyMWtMbUZrWkVOdmJXMWhibVFvWlhoMGNtRmpkRU52Ykd4bFkzUnBiMjV6S1R0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1puVnVZM1JwYjI0Z1ptRmljbWxqS0NrZ2UxeHVJQ0J5WlhSMWNtNGdabUZpY21salEyMWtPMXh1ZlZ4dUlsMTkiXX0=