@decaf-ts/for-fabric 0.12.6 → 0.12.8

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 (590) hide show
  1. package/README.md +177 -146
  2. package/dist/for-fabric.cjs +2 -3797
  3. package/dist/for-fabric.cjs.map +1 -0
  4. package/dist/for-fabric.js +2 -3901
  5. package/dist/for-fabric.js.map +1 -0
  6. package/lib/cjs/bin/cli.cjs +2 -2
  7. package/lib/cjs/bin/cli.cjs.map +1 -0
  8. package/lib/cjs/cli-module.cjs +107 -3
  9. package/lib/cjs/cli-module.cjs.map +1 -0
  10. package/lib/cjs/cli-utils.cjs +2 -2
  11. package/lib/cjs/cli-utils.cjs.map +1 -0
  12. package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
  13. package/lib/cjs/client/FabricClientAdapter.cjs.map +1 -0
  14. package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
  15. package/lib/cjs/client/FabricClientDispatch.cjs.map +1 -0
  16. package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
  17. package/lib/cjs/client/FabricClientPaginator.cjs.map +1 -0
  18. package/lib/cjs/client/FabricClientRepository.cjs +2 -2
  19. package/lib/cjs/client/FabricClientRepository.cjs.map +1 -0
  20. package/lib/cjs/client/FabricClientStatement.cjs +2 -2
  21. package/lib/cjs/client/FabricClientStatement.cjs.map +1 -0
  22. package/lib/cjs/client/collections/generation.cjs +2 -2
  23. package/lib/cjs/client/collections/generation.cjs.map +1 -0
  24. package/lib/cjs/client/collections/index.cjs +2 -2
  25. package/lib/cjs/client/collections/index.cjs.map +1 -0
  26. package/lib/cjs/client/constants.cjs +2 -2
  27. package/lib/cjs/client/constants.cjs.map +1 -0
  28. package/lib/cjs/client/crypto.cjs +2 -2
  29. package/lib/cjs/client/crypto.cjs.map +1 -0
  30. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
  31. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +1 -0
  32. package/lib/cjs/client/erc20/index.cjs +2 -2
  33. package/lib/cjs/client/erc20/index.cjs.map +1 -0
  34. package/lib/cjs/client/fabric-fs.cjs +2 -2
  35. package/lib/cjs/client/fabric-fs.cjs.map +1 -0
  36. package/lib/cjs/client/fabric-hsm.cjs +2 -2
  37. package/lib/cjs/client/fabric-hsm.cjs.map +1 -0
  38. package/lib/cjs/client/ids/id-extraction.cjs +2 -2
  39. package/lib/cjs/client/ids/id-extraction.cjs.map +1 -0
  40. package/lib/cjs/client/ids/index.cjs +2 -2
  41. package/lib/cjs/client/ids/index.cjs.map +1 -0
  42. package/lib/cjs/client/index.cjs +2 -2
  43. package/lib/cjs/client/index.cjs.map +1 -0
  44. package/lib/cjs/client/indexes/generation.cjs +9 -4
  45. package/lib/cjs/client/indexes/generation.cjs.map +1 -0
  46. package/lib/cjs/client/indexes/index.cjs +2 -2
  47. package/lib/cjs/client/indexes/index.cjs.map +1 -0
  48. package/lib/cjs/client/logging.cjs +2 -2
  49. package/lib/cjs/client/logging.cjs.map +1 -0
  50. package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
  51. package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +1 -0
  52. package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
  53. package/lib/cjs/client/services/FabricIdentityService.cjs.map +1 -0
  54. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
  55. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +1 -0
  56. package/lib/cjs/client/services/constants.cjs +2 -2
  57. package/lib/cjs/client/services/constants.cjs.map +1 -0
  58. package/lib/cjs/client/services/index.cjs +2 -2
  59. package/lib/cjs/client/services/index.cjs.map +1 -0
  60. package/lib/cjs/client/types.cjs +2 -2
  61. package/lib/cjs/client/types.cjs.map +1 -0
  62. package/lib/cjs/client/utils.cjs +2 -2
  63. package/lib/cjs/client/utils.cjs.map +1 -0
  64. package/lib/cjs/contract/Address.cjs +2 -2
  65. package/lib/cjs/contract/Address.cjs.map +1 -0
  66. package/lib/cjs/contract/AddressContract.cjs +2 -2
  67. package/lib/cjs/contract/AddressContract.cjs.map +1 -0
  68. package/lib/cjs/contract/AuditContract.cjs +2 -2
  69. package/lib/cjs/contract/AuditContract.cjs.map +1 -0
  70. package/lib/cjs/contract/BatchContract.cjs +2 -2
  71. package/lib/cjs/contract/BatchContract.cjs.map +1 -0
  72. package/lib/cjs/contract/MarketContract.cjs +2 -2
  73. package/lib/cjs/contract/MarketContract.cjs.map +1 -0
  74. package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
  75. package/lib/cjs/contract/OtherAuditContract.cjs.map +1 -0
  76. package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
  77. package/lib/cjs/contract/OtherBatchContract.cjs.map +1 -0
  78. package/lib/cjs/contract/OtherLeafletContract.cjs +72 -0
  79. package/lib/cjs/contract/OtherLeafletContract.cjs.map +1 -0
  80. package/lib/cjs/contract/OtherLeafletFileContract.cjs +76 -0
  81. package/lib/cjs/contract/OtherLeafletFileContract.cjs.map +1 -0
  82. package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
  83. package/lib/cjs/contract/OtherMarketContract.cjs.map +1 -0
  84. package/lib/cjs/contract/OtherProductContract.cjs +2 -2
  85. package/lib/cjs/contract/OtherProductContract.cjs.map +1 -0
  86. package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
  87. package/lib/cjs/contract/OtherProductImageContract.cjs.map +1 -0
  88. package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
  89. package/lib/cjs/contract/OtherProductSharedContract.cjs.map +1 -0
  90. package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
  91. package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +1 -0
  92. package/lib/cjs/contract/Product.cjs +2 -2
  93. package/lib/cjs/contract/Product.cjs.map +1 -0
  94. package/lib/cjs/contract/ProductContract.cjs +2 -2
  95. package/lib/cjs/contract/ProductContract.cjs.map +1 -0
  96. package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
  97. package/lib/cjs/contract/ProductStrengthContract.cjs.map +1 -0
  98. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
  99. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +1 -0
  100. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
  101. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +1 -0
  102. package/lib/cjs/contract/User.cjs +2 -2
  103. package/lib/cjs/contract/User.cjs.map +1 -0
  104. package/lib/cjs/contract/UserContract.cjs +2 -2
  105. package/lib/cjs/contract/UserContract.cjs.map +1 -0
  106. package/lib/cjs/contract/index.cjs +20 -20
  107. package/lib/cjs/contract/index.cjs.map +1 -0
  108. package/lib/cjs/contract/logging-context.cjs +2 -2
  109. package/lib/cjs/contract/logging-context.cjs.map +1 -0
  110. package/lib/cjs/contract/models/Audit.cjs +2 -2
  111. package/lib/cjs/contract/models/Audit.cjs.map +1 -0
  112. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
  113. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +1 -0
  114. package/lib/cjs/contract/models/BaseModel.cjs +2 -2
  115. package/lib/cjs/contract/models/BaseModel.cjs.map +1 -0
  116. package/lib/cjs/contract/models/Batch.cjs +2 -2
  117. package/lib/cjs/contract/models/Batch.cjs.map +1 -0
  118. package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
  119. package/lib/cjs/contract/models/GtinOwner.cjs.map +1 -0
  120. package/lib/cjs/contract/models/History.cjs +2 -2
  121. package/lib/cjs/contract/models/History.cjs.map +1 -0
  122. package/lib/cjs/contract/models/Leaflet.cjs +2 -2
  123. package/lib/cjs/contract/models/Leaflet.cjs.map +1 -0
  124. package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
  125. package/lib/cjs/contract/models/LeafletFile.cjs.map +1 -0
  126. package/lib/cjs/contract/models/Market.cjs +2 -2
  127. package/lib/cjs/contract/models/Market.cjs.map +1 -0
  128. package/lib/cjs/contract/models/OtherAudit.cjs +3 -3
  129. package/lib/cjs/contract/models/OtherAudit.cjs.map +1 -0
  130. package/lib/cjs/contract/models/OtherBatchShared.cjs +137 -28
  131. package/lib/cjs/contract/models/OtherBatchShared.cjs.map +1 -0
  132. package/lib/cjs/contract/models/OtherLeaflet.cjs +3 -3
  133. package/lib/cjs/contract/models/OtherLeaflet.cjs.map +1 -0
  134. package/lib/cjs/contract/models/OtherLeafletFile.cjs +3 -3
  135. package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +1 -0
  136. package/lib/cjs/contract/models/OtherMarket.cjs +3 -3
  137. package/lib/cjs/contract/models/OtherMarket.cjs.map +1 -0
  138. package/lib/cjs/contract/models/OtherProduct.cjs +3 -3
  139. package/lib/cjs/contract/models/OtherProduct.cjs.map +1 -0
  140. package/lib/cjs/contract/models/OtherProductImage.cjs +3 -3
  141. package/lib/cjs/contract/models/OtherProductImage.cjs.map +1 -0
  142. package/lib/cjs/contract/models/OtherProductShared.cjs +3 -3
  143. package/lib/cjs/contract/models/OtherProductShared.cjs.map +1 -0
  144. package/lib/cjs/contract/models/OtherProductStrength.cjs +3 -5
  145. package/lib/cjs/contract/models/OtherProductStrength.cjs.map +1 -0
  146. package/lib/cjs/contract/models/Product.cjs +2 -2
  147. package/lib/cjs/contract/models/Product.cjs.map +1 -0
  148. package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
  149. package/lib/cjs/contract/models/ProductStrength.cjs.map +1 -0
  150. package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
  151. package/lib/cjs/contract/models/SegregatedDocument.cjs.map +1 -0
  152. package/lib/cjs/contract/models/constants.cjs +2 -2
  153. package/lib/cjs/contract/models/constants.cjs.map +1 -0
  154. package/lib/cjs/contract/models/decorators-private.cjs +2 -2
  155. package/lib/cjs/contract/models/decorators-private.cjs.map +1 -0
  156. package/lib/cjs/contract/models/decorators.cjs +2 -2
  157. package/lib/cjs/contract/models/decorators.cjs.map +1 -0
  158. package/lib/cjs/contract/models/gtin.cjs +2 -2
  159. package/lib/cjs/contract/models/gtin.cjs.map +1 -0
  160. package/lib/cjs/contract/models/history-dec.cjs +2 -2
  161. package/lib/cjs/contract/models/history-dec.cjs.map +1 -0
  162. package/lib/cjs/contract/trackedModels/History.cjs +81 -0
  163. package/lib/cjs/contract/trackedModels/History.cjs.map +1 -0
  164. package/lib/cjs/contract/trackedModels/OtherAudit.cjs +124 -0
  165. package/lib/cjs/contract/trackedModels/OtherAudit.cjs.map +1 -0
  166. package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs +121 -0
  167. package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs.map +1 -0
  168. package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs +71 -0
  169. package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs.map +1 -0
  170. package/lib/cjs/contract/trackedModels/OtherMarket.cjs +90 -0
  171. package/lib/cjs/contract/trackedModels/OtherMarket.cjs.map +1 -0
  172. package/lib/cjs/contract/trackedModels/OtherProduct.cjs +83 -0
  173. package/lib/cjs/contract/trackedModels/OtherProduct.cjs.map +1 -0
  174. package/lib/cjs/contract/trackedModels/OtherProductImage.cjs +65 -0
  175. package/lib/cjs/contract/trackedModels/OtherProductImage.cjs.map +1 -0
  176. package/lib/cjs/contract/trackedModels/OtherProductShared.cjs +105 -0
  177. package/lib/cjs/contract/trackedModels/OtherProductShared.cjs.map +1 -0
  178. package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs +91 -0
  179. package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs.map +1 -0
  180. package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
  181. package/lib/cjs/contracts/ContractAdapter.cjs.map +1 -0
  182. package/lib/cjs/contracts/ContractContext.cjs +2 -2
  183. package/lib/cjs/contracts/ContractContext.cjs.map +1 -0
  184. package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
  185. package/lib/cjs/contracts/FabricContractDispatch.cjs.map +1 -0
  186. package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
  187. package/lib/cjs/contracts/FabricContractPaginator.cjs.map +1 -0
  188. package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
  189. package/lib/cjs/contracts/FabricContractRepository.cjs.map +1 -0
  190. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
  191. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +1 -0
  192. package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
  193. package/lib/cjs/contracts/FabricContractSequence.cjs.map +1 -0
  194. package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
  195. package/lib/cjs/contracts/FabricContractStatement.cjs.map +1 -0
  196. package/lib/cjs/contracts/MigrationContract.cjs +2 -2
  197. package/lib/cjs/contracts/MigrationContract.cjs.map +1 -0
  198. package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
  199. package/lib/cjs/contracts/PrivateSequence.cjs.map +1 -0
  200. package/lib/cjs/contracts/auth/decorators.cjs +2 -2
  201. package/lib/cjs/contracts/auth/decorators.cjs.map +1 -0
  202. package/lib/cjs/contracts/auth/index.cjs +2 -2
  203. package/lib/cjs/contracts/auth/index.cjs.map +1 -0
  204. package/lib/cjs/contracts/bootstrap.cjs +14 -0
  205. package/lib/cjs/contracts/bootstrap.cjs.map +1 -0
  206. package/lib/cjs/contracts/crud/crud-contract.cjs +3 -2
  207. package/lib/cjs/contracts/crud/crud-contract.cjs.map +1 -0
  208. package/lib/cjs/contracts/crud/index.cjs +2 -2
  209. package/lib/cjs/contracts/crud/index.cjs.map +1 -0
  210. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
  211. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +1 -0
  212. package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
  213. package/lib/cjs/contracts/erc20/erc20contract.cjs.map +1 -0
  214. package/lib/cjs/contracts/erc20/index.cjs +2 -2
  215. package/lib/cjs/contracts/erc20/index.cjs.map +1 -0
  216. package/lib/cjs/contracts/erc20/models.cjs +2 -2
  217. package/lib/cjs/contracts/erc20/models.cjs.map +1 -0
  218. package/lib/cjs/contracts/fabric-overrides.cjs +65 -0
  219. package/lib/cjs/contracts/fabric-overrides.cjs.map +1 -0
  220. package/lib/cjs/contracts/index.cjs +3 -2
  221. package/lib/cjs/contracts/index.cjs.map +1 -0
  222. package/lib/cjs/contracts/logging.cjs +2 -2
  223. package/lib/cjs/contracts/logging.cjs.map +1 -0
  224. package/lib/cjs/contracts/overrides.cjs +2 -2
  225. package/lib/cjs/contracts/overrides.cjs.map +1 -0
  226. package/lib/cjs/contracts/types.cjs +2 -2
  227. package/lib/cjs/contracts/types.cjs.map +1 -0
  228. package/lib/cjs/contracts/uuid.cjs +2 -2
  229. package/lib/cjs/contracts/uuid.cjs.map +1 -0
  230. package/lib/cjs/index.cjs +2 -2
  231. package/lib/cjs/index.cjs.map +1 -0
  232. package/lib/cjs/shared/ClientSerializer.cjs +2 -2
  233. package/lib/cjs/shared/ClientSerializer.cjs.map +1 -0
  234. package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
  235. package/lib/cjs/shared/DeterministicSerializer.cjs.map +1 -0
  236. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
  237. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +1 -0
  238. package/lib/cjs/shared/constants.cjs +2 -2
  239. package/lib/cjs/shared/constants.cjs.map +1 -0
  240. package/lib/cjs/shared/decorators.cjs +2 -2
  241. package/lib/cjs/shared/decorators.cjs.map +1 -0
  242. package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
  243. package/lib/cjs/shared/erc20/erc20-constants.cjs.map +1 -0
  244. package/lib/cjs/shared/erc20/index.cjs +2 -2
  245. package/lib/cjs/shared/erc20/index.cjs.map +1 -0
  246. package/lib/cjs/shared/errors.cjs +2 -2
  247. package/lib/cjs/shared/errors.cjs.map +1 -0
  248. package/lib/cjs/shared/events.cjs +2 -2
  249. package/lib/cjs/shared/events.cjs.map +1 -0
  250. package/lib/cjs/shared/fabric-types.cjs +2 -2
  251. package/lib/cjs/shared/fabric-types.cjs.map +1 -0
  252. package/lib/cjs/shared/index.cjs +2 -2
  253. package/lib/cjs/shared/index.cjs.map +1 -0
  254. package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
  255. package/lib/cjs/shared/interfaces/Checkable.cjs.map +1 -0
  256. package/lib/cjs/shared/interfaces/index.cjs +2 -2
  257. package/lib/cjs/shared/interfaces/index.cjs.map +1 -0
  258. package/lib/cjs/shared/math.cjs +2 -2
  259. package/lib/cjs/shared/math.cjs.map +1 -0
  260. package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
  261. package/lib/cjs/shared/model/FabricBaseModel.cjs.map +1 -0
  262. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
  263. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +1 -0
  264. package/lib/cjs/shared/model/Identity.cjs +2 -2
  265. package/lib/cjs/shared/model/Identity.cjs.map +1 -0
  266. package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
  267. package/lib/cjs/shared/model/IdentityCredentials.cjs.map +1 -0
  268. package/lib/cjs/shared/model/index.cjs +2 -2
  269. package/lib/cjs/shared/model/index.cjs.map +1 -0
  270. package/lib/cjs/shared/overrides/Model.cjs +2 -2
  271. package/lib/cjs/shared/overrides/Model.cjs.map +1 -0
  272. package/lib/cjs/shared/overrides/index.cjs +2 -2
  273. package/lib/cjs/shared/overrides/index.cjs.map +1 -0
  274. package/lib/cjs/shared/overrides/overrides.cjs +2 -2
  275. package/lib/cjs/shared/overrides/overrides.cjs.map +1 -0
  276. package/lib/cjs/shared/types.cjs +2 -2
  277. package/lib/cjs/shared/types.cjs.map +1 -0
  278. package/lib/cjs/version.cjs +3 -3
  279. package/lib/cjs/version.cjs.map +1 -0
  280. package/lib/esm/bin/cli.js +1 -1
  281. package/lib/esm/bin/cli.js.map +1 -0
  282. package/lib/esm/cli-module.js +106 -2
  283. package/lib/esm/cli-module.js.map +1 -0
  284. package/lib/esm/cli-utils.js +1 -1
  285. package/lib/esm/cli-utils.js.map +1 -0
  286. package/lib/esm/client/FabricClientAdapter.js +1 -1
  287. package/lib/esm/client/FabricClientAdapter.js.map +1 -0
  288. package/lib/esm/client/FabricClientDispatch.js +1 -1
  289. package/lib/esm/client/FabricClientDispatch.js.map +1 -0
  290. package/lib/esm/client/FabricClientPaginator.js +1 -1
  291. package/lib/esm/client/FabricClientPaginator.js.map +1 -0
  292. package/lib/esm/client/FabricClientRepository.js +1 -1
  293. package/lib/esm/client/FabricClientRepository.js.map +1 -0
  294. package/lib/esm/client/FabricClientStatement.js +1 -1
  295. package/lib/esm/client/FabricClientStatement.js.map +1 -0
  296. package/lib/esm/client/collections/generation.js +1 -1
  297. package/lib/esm/client/collections/generation.js.map +1 -0
  298. package/lib/esm/client/collections/index.js +1 -1
  299. package/lib/esm/client/collections/index.js.map +1 -0
  300. package/lib/esm/client/constants.js +1 -1
  301. package/lib/esm/client/constants.js.map +1 -0
  302. package/lib/esm/client/crypto.js +1 -1
  303. package/lib/esm/client/crypto.js.map +1 -0
  304. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  305. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -0
  306. package/lib/esm/client/erc20/index.js +1 -1
  307. package/lib/esm/client/erc20/index.js.map +1 -0
  308. package/lib/esm/client/fabric-fs.js +1 -1
  309. package/lib/esm/client/fabric-fs.js.map +1 -0
  310. package/lib/esm/client/fabric-hsm.js +1 -1
  311. package/lib/esm/client/fabric-hsm.js.map +1 -0
  312. package/lib/esm/client/ids/id-extraction.js +1 -1
  313. package/lib/esm/client/ids/id-extraction.js.map +1 -0
  314. package/lib/esm/client/ids/index.js +1 -1
  315. package/lib/esm/client/ids/index.js.map +1 -0
  316. package/lib/esm/client/index.js +1 -1
  317. package/lib/esm/client/index.js.map +1 -0
  318. package/lib/esm/client/indexes/generation.js +8 -3
  319. package/lib/esm/client/indexes/generation.js.map +1 -0
  320. package/lib/esm/client/indexes/index.js +1 -1
  321. package/lib/esm/client/indexes/index.js.map +1 -0
  322. package/lib/esm/client/logging.js +1 -1
  323. package/lib/esm/client/logging.js.map +1 -0
  324. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  325. package/lib/esm/client/services/FabricEnrollmentService.js.map +1 -0
  326. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  327. package/lib/esm/client/services/FabricIdentityService.js.map +1 -0
  328. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  329. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +1 -0
  330. package/lib/esm/client/services/constants.js +1 -1
  331. package/lib/esm/client/services/constants.js.map +1 -0
  332. package/lib/esm/client/services/index.js +1 -1
  333. package/lib/esm/client/services/index.js.map +1 -0
  334. package/lib/esm/client/types.js +1 -1
  335. package/lib/esm/client/types.js.map +1 -0
  336. package/lib/esm/client/utils.js +1 -1
  337. package/lib/esm/client/utils.js.map +1 -0
  338. package/lib/esm/contract/Address.js +1 -1
  339. package/lib/esm/contract/Address.js.map +1 -0
  340. package/lib/esm/contract/AddressContract.js +1 -1
  341. package/lib/esm/contract/AddressContract.js.map +1 -0
  342. package/lib/esm/contract/AuditContract.js +1 -1
  343. package/lib/esm/contract/AuditContract.js.map +1 -0
  344. package/lib/esm/contract/BatchContract.js +1 -1
  345. package/lib/esm/contract/BatchContract.js.map +1 -0
  346. package/lib/esm/contract/MarketContract.js +1 -1
  347. package/lib/esm/contract/MarketContract.js.map +1 -0
  348. package/lib/esm/contract/OtherAuditContract.js +1 -1
  349. package/lib/esm/contract/OtherAuditContract.js.map +1 -0
  350. package/lib/esm/contract/OtherBatchContract.js +1 -1
  351. package/lib/esm/contract/OtherBatchContract.js.map +1 -0
  352. package/lib/esm/contract/OtherLeafletContract.js +63 -0
  353. package/lib/esm/contract/OtherLeafletContract.js.map +1 -0
  354. package/lib/esm/contract/OtherLeafletFileContract.js +67 -0
  355. package/lib/esm/contract/OtherLeafletFileContract.js.map +1 -0
  356. package/lib/esm/contract/OtherMarketContract.js +1 -1
  357. package/lib/esm/contract/OtherMarketContract.js.map +1 -0
  358. package/lib/esm/contract/OtherProductContract.js +1 -1
  359. package/lib/esm/contract/OtherProductContract.js.map +1 -0
  360. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  361. package/lib/esm/contract/OtherProductImageContract.js.map +1 -0
  362. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  363. package/lib/esm/contract/OtherProductSharedContract.js.map +1 -0
  364. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  365. package/lib/esm/contract/OtherProductStrengthContract.js.map +1 -0
  366. package/lib/esm/contract/Product.js +1 -1
  367. package/lib/esm/contract/Product.js.map +1 -0
  368. package/lib/esm/contract/ProductContract.js +1 -1
  369. package/lib/esm/contract/ProductContract.js.map +1 -0
  370. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  371. package/lib/esm/contract/ProductStrengthContract.js.map +1 -0
  372. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  373. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +1 -0
  374. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  375. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +1 -0
  376. package/lib/esm/contract/User.js +1 -1
  377. package/lib/esm/contract/User.js.map +1 -0
  378. package/lib/esm/contract/UserContract.js +1 -1
  379. package/lib/esm/contract/UserContract.js.map +1 -0
  380. package/lib/esm/contract/index.js +19 -19
  381. package/lib/esm/contract/index.js.map +1 -0
  382. package/lib/esm/contract/logging-context.js +1 -1
  383. package/lib/esm/contract/logging-context.js.map +1 -0
  384. package/lib/esm/contract/models/Audit.js +1 -1
  385. package/lib/esm/contract/models/Audit.js.map +1 -0
  386. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  387. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +1 -0
  388. package/lib/esm/contract/models/BaseModel.js +1 -1
  389. package/lib/esm/contract/models/BaseModel.js.map +1 -0
  390. package/lib/esm/contract/models/Batch.js +1 -1
  391. package/lib/esm/contract/models/Batch.js.map +1 -0
  392. package/lib/esm/contract/models/GtinOwner.js +1 -1
  393. package/lib/esm/contract/models/GtinOwner.js.map +1 -0
  394. package/lib/esm/contract/models/History.js +1 -1
  395. package/lib/esm/contract/models/History.js.map +1 -0
  396. package/lib/esm/contract/models/Leaflet.js +1 -1
  397. package/lib/esm/contract/models/Leaflet.js.map +1 -0
  398. package/lib/esm/contract/models/LeafletFile.js +1 -1
  399. package/lib/esm/contract/models/LeafletFile.js.map +1 -0
  400. package/lib/esm/contract/models/Market.js +1 -1
  401. package/lib/esm/contract/models/Market.js.map +1 -0
  402. package/lib/esm/contract/models/OtherAudit.js +2 -2
  403. package/lib/esm/contract/models/OtherAudit.js.map +1 -0
  404. package/lib/esm/contract/models/OtherBatchShared.js +139 -31
  405. package/lib/esm/contract/models/OtherBatchShared.js.map +1 -0
  406. package/lib/esm/contract/models/OtherLeaflet.js +2 -2
  407. package/lib/esm/contract/models/OtherLeaflet.js.map +1 -0
  408. package/lib/esm/contract/models/OtherLeafletFile.js +2 -2
  409. package/lib/esm/contract/models/OtherLeafletFile.js.map +1 -0
  410. package/lib/esm/contract/models/OtherMarket.js +2 -2
  411. package/lib/esm/contract/models/OtherMarket.js.map +1 -0
  412. package/lib/esm/contract/models/OtherProduct.js +2 -2
  413. package/lib/esm/contract/models/OtherProduct.js.map +1 -0
  414. package/lib/esm/contract/models/OtherProductImage.js +2 -2
  415. package/lib/esm/contract/models/OtherProductImage.js.map +1 -0
  416. package/lib/esm/contract/models/OtherProductShared.js +2 -2
  417. package/lib/esm/contract/models/OtherProductShared.js.map +1 -0
  418. package/lib/esm/contract/models/OtherProductStrength.js +2 -4
  419. package/lib/esm/contract/models/OtherProductStrength.js.map +1 -0
  420. package/lib/esm/contract/models/Product.js +1 -1
  421. package/lib/esm/contract/models/Product.js.map +1 -0
  422. package/lib/esm/contract/models/ProductStrength.js +1 -1
  423. package/lib/esm/contract/models/ProductStrength.js.map +1 -0
  424. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  425. package/lib/esm/contract/models/SegregatedDocument.js.map +1 -0
  426. package/lib/esm/contract/models/constants.js +1 -1
  427. package/lib/esm/contract/models/constants.js.map +1 -0
  428. package/lib/esm/contract/models/decorators-private.js +1 -1
  429. package/lib/esm/contract/models/decorators-private.js.map +1 -0
  430. package/lib/esm/contract/models/decorators.js +1 -1
  431. package/lib/esm/contract/models/decorators.js.map +1 -0
  432. package/lib/esm/contract/models/gtin.js +1 -1
  433. package/lib/esm/contract/models/gtin.js.map +1 -0
  434. package/lib/esm/contract/models/history-dec.js +1 -1
  435. package/lib/esm/contract/models/history-dec.js.map +1 -0
  436. package/lib/esm/contract/trackedModels/History.js +72 -0
  437. package/lib/esm/contract/trackedModels/History.js.map +1 -0
  438. package/lib/esm/contract/trackedModels/OtherAudit.js +115 -0
  439. package/lib/esm/contract/trackedModels/OtherAudit.js.map +1 -0
  440. package/lib/esm/contract/trackedModels/OtherLeaflet.js +112 -0
  441. package/lib/esm/contract/trackedModels/OtherLeaflet.js.map +1 -0
  442. package/lib/esm/contract/trackedModels/OtherLeafletFile.js +62 -0
  443. package/lib/esm/contract/trackedModels/OtherLeafletFile.js.map +1 -0
  444. package/lib/esm/contract/trackedModels/OtherMarket.js +81 -0
  445. package/lib/esm/contract/trackedModels/OtherMarket.js.map +1 -0
  446. package/lib/esm/contract/trackedModels/OtherProduct.js +74 -0
  447. package/lib/esm/contract/trackedModels/OtherProduct.js.map +1 -0
  448. package/lib/esm/contract/trackedModels/OtherProductImage.js +56 -0
  449. package/lib/esm/contract/trackedModels/OtherProductImage.js.map +1 -0
  450. package/lib/esm/contract/trackedModels/OtherProductShared.js +96 -0
  451. package/lib/esm/contract/trackedModels/OtherProductShared.js.map +1 -0
  452. package/lib/esm/contract/trackedModels/OtherProductStrength.js +82 -0
  453. package/lib/esm/contract/trackedModels/OtherProductStrength.js.map +1 -0
  454. package/lib/esm/contracts/ContractAdapter.js +1 -1
  455. package/lib/esm/contracts/ContractAdapter.js.map +1 -0
  456. package/lib/esm/contracts/ContractContext.js +1 -1
  457. package/lib/esm/contracts/ContractContext.js.map +1 -0
  458. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  459. package/lib/esm/contracts/FabricContractDispatch.js.map +1 -0
  460. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  461. package/lib/esm/contracts/FabricContractPaginator.js.map +1 -0
  462. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  463. package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
  464. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  465. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  466. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  467. package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
  468. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  469. package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
  470. package/lib/esm/contracts/MigrationContract.js +1 -1
  471. package/lib/esm/contracts/MigrationContract.js.map +1 -0
  472. package/lib/esm/contracts/PrivateSequence.js +1 -1
  473. package/lib/esm/contracts/PrivateSequence.js.map +1 -0
  474. package/lib/esm/contracts/auth/decorators.js +1 -1
  475. package/lib/esm/contracts/auth/decorators.js.map +1 -0
  476. package/lib/esm/contracts/auth/index.js +1 -1
  477. package/lib/esm/contracts/auth/index.js.map +1 -0
  478. package/lib/esm/contracts/bootstrap.js +11 -0
  479. package/lib/esm/contracts/bootstrap.js.map +1 -0
  480. package/lib/esm/contracts/crud/crud-contract.js +2 -1
  481. package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
  482. package/lib/esm/contracts/crud/index.js +1 -1
  483. package/lib/esm/contracts/crud/index.js.map +1 -0
  484. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  485. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
  486. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  487. package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
  488. package/lib/esm/contracts/erc20/index.js +1 -1
  489. package/lib/esm/contracts/erc20/index.js.map +1 -0
  490. package/lib/esm/contracts/erc20/models.js +1 -1
  491. package/lib/esm/contracts/erc20/models.js.map +1 -0
  492. package/lib/esm/contracts/fabric-overrides.js +61 -0
  493. package/lib/esm/contracts/fabric-overrides.js.map +1 -0
  494. package/lib/esm/contracts/index.js +2 -1
  495. package/lib/esm/contracts/index.js.map +1 -0
  496. package/lib/esm/contracts/logging.js +1 -1
  497. package/lib/esm/contracts/logging.js.map +1 -0
  498. package/lib/esm/contracts/overrides.js +1 -1
  499. package/lib/esm/contracts/overrides.js.map +1 -0
  500. package/lib/esm/contracts/types.js +1 -1
  501. package/lib/esm/contracts/types.js.map +1 -0
  502. package/lib/esm/contracts/uuid.js +1 -1
  503. package/lib/esm/contracts/uuid.js.map +1 -0
  504. package/lib/esm/index.js +1 -1
  505. package/lib/esm/index.js.map +1 -0
  506. package/lib/esm/shared/ClientSerializer.js +1 -1
  507. package/lib/esm/shared/ClientSerializer.js.map +1 -0
  508. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  509. package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
  510. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  511. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
  512. package/lib/esm/shared/constants.js +1 -1
  513. package/lib/esm/shared/constants.js.map +1 -0
  514. package/lib/esm/shared/decorators.js +1 -1
  515. package/lib/esm/shared/decorators.js.map +1 -0
  516. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  517. package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
  518. package/lib/esm/shared/erc20/index.js +1 -1
  519. package/lib/esm/shared/erc20/index.js.map +1 -0
  520. package/lib/esm/shared/errors.js +1 -1
  521. package/lib/esm/shared/errors.js.map +1 -0
  522. package/lib/esm/shared/events.js +1 -1
  523. package/lib/esm/shared/events.js.map +1 -0
  524. package/lib/esm/shared/fabric-types.js +1 -1
  525. package/lib/esm/shared/fabric-types.js.map +1 -0
  526. package/lib/esm/shared/index.js +1 -1
  527. package/lib/esm/shared/index.js.map +1 -0
  528. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  529. package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
  530. package/lib/esm/shared/interfaces/index.js +1 -1
  531. package/lib/esm/shared/interfaces/index.js.map +1 -0
  532. package/lib/esm/shared/math.js +1 -1
  533. package/lib/esm/shared/math.js.map +1 -0
  534. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  535. package/lib/esm/shared/model/FabricBaseModel.js.map +1 -0
  536. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  537. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
  538. package/lib/esm/shared/model/Identity.js +1 -1
  539. package/lib/esm/shared/model/Identity.js.map +1 -0
  540. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  541. package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
  542. package/lib/esm/shared/model/index.js +1 -1
  543. package/lib/esm/shared/model/index.js.map +1 -0
  544. package/lib/esm/shared/overrides/Model.js +1 -1
  545. package/lib/esm/shared/overrides/Model.js.map +1 -0
  546. package/lib/esm/shared/overrides/index.js +1 -1
  547. package/lib/esm/shared/overrides/index.js.map +1 -0
  548. package/lib/esm/shared/overrides/overrides.js +1 -1
  549. package/lib/esm/shared/overrides/overrides.js.map +1 -0
  550. package/lib/esm/shared/types.js +1 -1
  551. package/lib/esm/shared/types.js.map +1 -0
  552. package/lib/esm/version.js +2 -2
  553. package/lib/esm/version.js.map +1 -0
  554. package/lib/types/contract/OtherLeafletContract.d.cts +18 -0
  555. package/lib/types/contract/OtherLeafletContract.d.mts +18 -0
  556. package/lib/types/contract/OtherLeafletFileContract.d.cts +17 -0
  557. package/lib/types/contract/OtherLeafletFileContract.d.mts +17 -0
  558. package/lib/types/contract/index.d.cts +1 -0
  559. package/lib/types/contract/index.d.mts +1 -0
  560. package/lib/types/contract/models/OtherBatchShared.d.cts +43 -6
  561. package/lib/types/contract/models/OtherBatchShared.d.mts +43 -6
  562. package/lib/types/contract/trackedModels/History.d.cts +9 -0
  563. package/lib/types/contract/trackedModels/History.d.mts +9 -0
  564. package/lib/types/contract/trackedModels/OtherAudit.d.cts +15 -0
  565. package/lib/types/contract/trackedModels/OtherAudit.d.mts +15 -0
  566. package/lib/types/contract/trackedModels/OtherLeaflet.d.cts +16 -0
  567. package/lib/types/contract/trackedModels/OtherLeaflet.d.mts +16 -0
  568. package/lib/types/contract/trackedModels/OtherLeafletFile.d.cts +10 -0
  569. package/lib/types/contract/trackedModels/OtherLeafletFile.d.mts +10 -0
  570. package/lib/types/contract/trackedModels/OtherMarket.d.cts +13 -0
  571. package/lib/types/contract/trackedModels/OtherMarket.d.mts +13 -0
  572. package/lib/types/contract/trackedModels/OtherProduct.d.cts +12 -0
  573. package/lib/types/contract/trackedModels/OtherProduct.d.mts +12 -0
  574. package/lib/types/contract/trackedModels/OtherProductImage.d.cts +9 -0
  575. package/lib/types/contract/trackedModels/OtherProductImage.d.mts +9 -0
  576. package/lib/types/contract/trackedModels/OtherProductShared.d.cts +18 -0
  577. package/lib/types/contract/trackedModels/OtherProductShared.d.mts +18 -0
  578. package/lib/types/contract/trackedModels/OtherProductStrength.d.cts +12 -0
  579. package/lib/types/contract/trackedModels/OtherProductStrength.d.mts +12 -0
  580. package/lib/types/contracts/bootstrap.d.cts +10 -0
  581. package/lib/types/contracts/bootstrap.d.mts +10 -0
  582. package/lib/types/contracts/crud/crud-contract.d.cts +1 -0
  583. package/lib/types/contracts/crud/crud-contract.d.mts +1 -0
  584. package/lib/types/contracts/fabric-overrides.d.cts +1 -0
  585. package/lib/types/contracts/fabric-overrides.d.mts +1 -0
  586. package/lib/types/contracts/index.d.cts +1 -0
  587. package/lib/types/contracts/index.d.mts +1 -0
  588. package/lib/types/version.d.cts +1 -1
  589. package/lib/types/version.d.mts +1 -1
  590. package/package.json +31 -5
@@ -363,5 +363,5 @@ class CryptoUtils {
363
363
  }
364
364
  }
365
365
  exports.CryptoUtils = CryptoUtils;
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUVoQyxNQUFNLENBQU4sSUFBWSxhQVlYO0FBWkQsV0FBWSxhQUFhO0lBQ3ZCLDZCQUFZLENBQUE7SUFDWixtQ0FBa0IsQ0FBQTtJQUNsQix1Q0FBc0IsQ0FBQTtJQUN0Qiw0Q0FBMkIsQ0FBQTtJQUMzQiw0REFBMkMsQ0FBQTtJQUMzQyw4REFBNkMsQ0FBQTtJQUM3QyxnRUFBK0MsQ0FBQTtJQUMvQyxzRkFBcUUsQ0FBQTtJQUNyRSwwRkFBeUUsQ0FBQTtJQUN6RSw0RkFBMkUsQ0FBQTtJQUMzRSwrRkFBOEUsQ0FBQTtBQUNoRixDQUFDLEVBWlcsYUFBYSxLQUFiLGFBQWEsUUFZeEI7QUFPRCxNQUFNLENBQU4sSUFBWSxNQVFYO0FBUkQsV0FBWSxNQUFNO0lBQ2hCLDBCQUFnQixDQUFBO0lBQ2hCLGtEQUFpQixDQUFBO0lBQ2pCLDhDQUFjLENBQUE7SUFDZCw4REFBc0IsQ0FBQTtJQUN0QixnRUFBdUIsQ0FBQTtJQUN2QiwrQkFBcUIsQ0FBQTtJQUNyQixrQ0FBd0IsQ0FBQTtBQUMxQixDQUFDLEVBUlcsTUFBTSxLQUFOLE1BQU0sUUFRakI7QUFFRCxNQUFNLE9BQU8sV0FBVztJQU90QixZQUFvQixRQUF1QjtRQUF2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QUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUN4RCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsU0FBbUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUN0RCxTQUFTLENBQUMsR0FBRyxFQUNiLFVBQVUsQ0FDWCxDQUFDO1FBQ0YsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDckIsYUFBMEIsRUFDMUIsU0FBb0I7UUFFcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLENBQ3hELEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxTQUFtQixFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQ3RELFNBQVMsQ0FBQyxHQUFHLEVBQ2IsYUFBYSxDQUNkLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHg1MDkgZnJvbSBcIkBwZWN1bGlhci94NTA5XCI7XG5pbXBvcnQgeyBDcnlwdG8sIENyeXB0b0tleSB9IGZyb20gXCJAcGVjdWxpYXIvd2ViY3J5cHRvXCI7XG5pbXBvcnQgeyBzdHJpbmdGb3JtYXQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBpc0Jyb3dzZXIsIE1pbmlMb2dnZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuY29uc3QgY3J5cHRvID0gbmV3IENyeXB0bygpO1xueDUwOS5jcnlwdG9Qcm92aWRlci5zZXQoY3J5cHRvKTtcblxuZXhwb3J0IGVudW0gQkFTRV9BTFBIQUJFVCB7XG4gIEJBU0UyID0gXCIwMVwiLFxuICBCQVNFOCA9IFwiMDEyMzQ1NjdcIixcbiAgQkFTRTExID0gXCIwMTIzNDU2Nzg5YVwiLFxuICBCQVNFMTYgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIixcbiAgQkFTRTMyID0gXCIwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWlwiLFxuICBCQVNFMzJfWiA9IFwieWJuZHJmZzhlamttY3BxeG90MXV3aXN6YTM0NWg3NjlcIixcbiAgQkFTRTM2ID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIixcbiAgQkFTRTU4ID0gXCIxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6XCIsXG4gIEJBU0U2MiA9IFwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcIixcbiAgQkFTRTY0ID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCIsXG4gIEJBU0U2NyA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXy4hflwiLFxufVxuXG5leHBvcnQgdHlwZSBrZXlPYmplY3QgPSB7XG4gIGl2OiBBcnJheUJ1ZmZlcjtcbiAga2V5OiBDcnlwdG9LZXk7XG59O1xuXG5leHBvcnQgZW51bSBDUllQVE8ge1xuICBIQVNIID0gXCJTSEEtMjU2XCIsXG4gIElURVJBVElPTlMgPSAxMDAwLFxuICBLRVlMRU5HVEggPSA0OCxcbiAgREVSSVZFRF9JVl9MRU5HVEggPSAxNixcbiAgREVSSVZFRF9LRVlfTEVOR1RIID0gMzIsIC8vIEJlY2F1c2UgU0hBLTI1NiB1c2VkIGhhcyBhIG5hdGl2ZSBzaXplIG9mIDMyIGJ5dGVzXG4gIEFMR09SWVRITSA9IFwiQUVTLUdDTVwiLFxuICBLRVlfQUxHT1JZVEhNID0gXCJQQktERjJcIixcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VFbmNvZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlTWFwOiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGVhZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaUZhY3RvcjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxwaGFiZXQ6IEJBU0VfQUxQSEFCRVQpIHtcbiAgICBpZiAodGhpcy5hbHBoYWJldC5sZW5ndGggPj0gMjU1KSB0aHJvdyBuZXcgRXJyb3IoXCJBbHBoYWJldCB0b28gbG9uZ1wiKTtcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5iYXNlTWFwLmxlbmd0aDsgaisrKSB0aGlzLmJhc2VNYXBbal0gPSAyNTU7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFscGhhYmV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB4ID0gYWxwaGFiZXQuY2hhckF0KGkpO1xuICAgICAgY29uc3QgeGMgPSB4LmNoYXJDb2RlQXQoMCk7XG4gICAgICBpZiAodGhpcy5iYXNlTWFwW3hjXSAhPT0gMjU1KSB0aHJvdyBuZXcgRXJyb3IoeCArIFwiIGlzIGFtYmlndW91c1wiKTtcblxuICAgICAgdGhpcy5iYXNlTWFwW3hjXSA9IGk7XG4gICAgfVxuXG4gICAgdGhpcy5iYXNlID0gdGhpcy5hbHBoYWJldC5sZW5ndGg7XG4gICAgdGhpcy5sZWFkZXIgPSB0aGlzLmFscGhhYmV0LmNoYXJBdCgwKTtcbiAgICB0aGlzLmZhY3RvciA9IE1hdGgubG9nKHRoaXMuYmFzZSkgLyBNYXRoLmxvZygyNTYpOyAvLyBsb2coQkFTRSkgLyBsb2coMjU2KSwgcm91bmRlZCB1cFxuICAgIHRoaXMuaUZhY3RvciA9IE1hdGgubG9nKDI1NikgLyBNYXRoLmxvZyh0aGlzLmJhc2UpOyAvLyBsb2coMjU2KSAvIGxvZyhCQVNFKSwgcm91bmRlZCB1cFxuICB9XG5cbiAgZW5jb2RlKHNvdXJjZTogVWludDhBcnJheSB8IERhdGFWaWV3IHwgYW55W10gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgc291cmNlID0gQnVmZmVyLmZyb20oc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhzb3VyY2UpKSB7XG4gICAgICBzb3VyY2UgPSBuZXcgVWludDhBcnJheShcbiAgICAgICAgc291cmNlLmJ1ZmZlcixcbiAgICAgICAgc291cmNlLmJ5dGVPZmZzZXQsXG4gICAgICAgIHNvdXJjZS5ieXRlTGVuZ3RoXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICBzb3VyY2UgPSBVaW50OEFycmF5LmZyb20oc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCI7XG5cbiAgICAvLyBTa2lwICYgY291bnQgbGVhZGluZyB6ZXJvZXMuXG4gICAgbGV0IHplcm9lcyA9IDA7XG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgbGV0IHBiZWdpbiA9IDA7XG4gICAgY29uc3QgcGVuZCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgd2hpbGUgKHBiZWdpbiAhPT0gcGVuZCAmJiBzb3VyY2VbcGJlZ2luXSA9PT0gMCkge1xuICAgICAgcGJlZ2luKys7XG4gICAgICB6ZXJvZXMrKztcbiAgICB9XG4gICAgLy8gQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGluIGJpZy1lbmRpYW4gYmFzZTU4IHJlcHJlc2VudGF0aW9uLlxuICAgIGNvbnN0IHNpemUgPSAoKHBlbmQgLSBwYmVnaW4pICogdGhpcy5pRmFjdG9yICsgMSkgPj4+IDA7XG4gICAgY29uc3QgYjU4ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gICAgLy8gUHJvY2VzcyB0aGUgYnl0ZXMuXG4gICAgd2hpbGUgKHBiZWdpbiAhPT0gcGVuZCkge1xuICAgICAgbGV0IGNhcnJ5ID0gc291cmNlW3BiZWdpbl07XG4gICAgICAvLyBBcHBseSBcImI1OCA9IGI1OCAqIDI1NiArIGNoXCIuXG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgaXQxID0gc2l6ZSAtIDE7XG4gICAgICAgIChjYXJyeSAhPT0gMCB8fCBpIDwgbGVuZ3RoKSAmJiBpdDEgIT09IC0xO1xuICAgICAgICBpdDEtLSwgaSsrXG4gICAgICApIHtcbiAgICAgICAgY2FycnkgKz0gKDI1NiAqIGI1OFtpdDFdKSA+Pj4gMDtcbiAgICAgICAgYjU4W2l0MV0gPSBjYXJyeSAlIHRoaXMuYmFzZSA+Pj4gMDtcbiAgICAgICAgY2FycnkgPSAoY2FycnkgLyB0aGlzLmJhc2UpID4+PiAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJOb24temVybyBjYXJyeVwiKTtcblxuICAgICAgbGVuZ3RoID0gaTtcbiAgICAgIHBiZWdpbisrO1xuICAgIH1cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzIGluIGJhc2U1OCByZXN1bHQuXG4gICAgbGV0IGl0MiA9IHNpemUgLSBsZW5ndGg7XG4gICAgd2hpbGUgKGl0MiAhPT0gc2l6ZSAmJiBiNThbaXQyXSA9PT0gMCkgaXQyKys7XG5cbiAgICAvLyBUcmFuc2xhdGUgdGhlIHJlc3VsdCBpbnRvIGEgc3RyaW5nLlxuICAgIGxldCBzdHIgPSB0aGlzLmxlYWRlci5yZXBlYXQoemVyb2VzKTtcbiAgICBmb3IgKDsgaXQyIDwgc2l6ZTsgKytpdDIpIHtcbiAgICAgIHN0ciArPSB0aGlzLmFscGhhYmV0LmNoYXJBdChiNThbaXQyXSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBwcml2YXRlIGRlY29kZVVuc2FmZShzb3VyY2U6IHN0cmluZyk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xuICAgIGlmIChzb3VyY2UubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7XG5cbiAgICBsZXQgcHN6ID0gMDtcbiAgICAvLyBTa2lwIGFuZCBjb3VudCBsZWFkaW5nICcxJ3MuXG4gICAgbGV0IHplcm9lcyA9IDA7XG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgd2hpbGUgKHNvdXJjZVtwc3pdID09PSB0aGlzLmxlYWRlcikge1xuICAgICAgemVyb2VzKys7XG4gICAgICBwc3orKztcbiAgICB9XG4gICAgLy8gQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGluIGJpZy1lbmRpYW4gYmFzZTI1NiByZXByZXNlbnRhdGlvbi5cbiAgICBjb25zdCBzaXplID0gKChzb3VyY2UubGVuZ3RoIC0gcHN6KSAqIHRoaXMuZmFjdG9yICsgMSkgPj4+IDA7IC8vIGxvZyg1OCkgLyBsb2coMjU2KSwgcm91bmRlZCB1cC5cbiAgICBjb25zdCBiMjU2ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gICAgLy8gUHJvY2VzcyB0aGUgY2hhcmFjdGVycy5cbiAgICB3aGlsZSAoc291cmNlW3Bzel0pIHtcbiAgICAgIC8vIERlY29kZSBjaGFyYWN0ZXJcbiAgICAgIGxldCBjYXJyeSA9IHRoaXMuYmFzZU1hcFtzb3VyY2UuY2hhckNvZGVBdChwc3opXTtcbiAgICAgIC8vIEludmFsaWQgY2hhcmFjdGVyXG4gICAgICBpZiAoY2FycnkgPT09IDI1NSkgcmV0dXJuO1xuXG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgaXQzID0gc2l6ZSAtIDE7XG4gICAgICAgIChjYXJyeSAhPT0gMCB8fCBpIDwgbGVuZ3RoKSAmJiBpdDMgIT09IC0xO1xuICAgICAgICBpdDMtLSwgaSsrXG4gICAgICApIHtcbiAgICAgICAgY2FycnkgKz0gKHRoaXMuYmFzZSAqIGIyNTZbaXQzXSkgPj4+IDA7XG4gICAgICAgIGIyNTZbaXQzXSA9IGNhcnJ5ICUgMjU2ID4+PiAwO1xuICAgICAgICBjYXJyeSA9IChjYXJyeSAvIDI1NikgPj4+IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHRocm93IG5ldyBFcnJvcihcIk5vbi16ZXJvIGNhcnJ5XCIpO1xuXG4gICAgICBsZW5ndGggPSBpO1xuICAgICAgcHN6Kys7XG4gICAgfVxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXMgaW4gYjI1Ni5cbiAgICBsZXQgaXQ0ID0gc2l6ZSAtIGxlbmd0aDtcbiAgICB3aGlsZSAoaXQ0ICE9PSBzaXplICYmIGIyNTZbaXQ0XSA9PT0gMCkgaXQ0Kys7XG5cbiAgICBjb25zdCB2Y2ggPSBuZXcgVWludDhBcnJheSh6ZXJvZXMgKyAoc2l6ZSAtIGl0NCkpO1xuICAgIGxldCBqID0gemVyb2VzO1xuICAgIHdoaWxlIChpdDQgIT09IHNpemUpIHZjaFtqKytdID0gYjI1NltpdDQrK107XG5cbiAgICByZXR1cm4gdmNoO1xuICB9XG5cbiAgZGVjb2RlKHNvdXJjZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVmZmVyID0gdGhpcy5kZWNvZGVVbnNhZmUoc291cmNlKTtcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gYnVmZmVyO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vbi1iYXNlXCIgKyB0aGlzLmJhc2UgKyBcIiBjaGFyYWN0ZXJcIik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyeXB0b1V0aWxzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgYjU4ZW5jb2RlciA9IG5ldyBCYXNlRW5jb2RlcihCQVNFX0FMUEhBQkVULkJBU0U1OCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGxvZ2dlciA9IG5ldyBNaW5pTG9nZ2VyKENyeXB0b1V0aWxzLm5hbWUpO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICBzdGF0aWMgZmFicmljSWRGcm9tQ2VydGlmaWNhdGUoY2VydGlmaWNhdGU6IHN0cmluZykge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKHN0cmluZ0Zvcm1hdChcIlBhcnNpbmcgY2VydGlmaWNhdGU6IHswfVwiLCBjZXJ0aWZpY2F0ZSkpO1xuICAgIGNvbnN0IGNlcnQgPSBuZXcgeDUwOS5YNTA5Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpO1xuICAgIGNvbnN0IHsgc3ViamVjdCwgaXNzdWVyIH0gPSBjZXJ0O1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgc3RyaW5nRm9ybWF0KFxuICAgICAgICBcIkNlcnRpZmljYXRlIHBhcnNlZCB3aXRoIHN1YmplY3QgezB9IGFuZCBpc3N1ZXIgezF9XCIsXG4gICAgICAgIHN1YmplY3QsXG4gICAgICAgIGlzc3VlclxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIGB4NTA5OjovJHtzdWJqZWN0LnJlcGxhY2VBbGwoXCIsIFwiLCBcIi9cIil9OjovJHtpc3N1ZXIucmVwbGFjZUFsbChcIiwgXCIsIFwiL1wiKX1gO1xuICB9XG5cbiAgc3RhdGljIGVuY29kZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYjU4ZW5jb2Rlci5lbmNvZGUoc3RyKTtcbiAgfVxuICBzdGF0aWMgZGVjb2RlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5iNThlbmNvZGVyLmRlY29kZShzdHIpO1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShkZWNvZGVkKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIHN0cmluZ1RvQXJyYXlCdWZmZXIoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIoc3RyLmxlbmd0aCk7XG4gICAgY29uc3QgYnVmVmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgZm9yIChsZXQgaSA9IDAsIHN0ckxlbiA9IHN0ci5sZW5ndGg7IGkgPCBzdHJMZW47IGkrKykge1xuICAgICAgYnVmVmlld1tpXSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgZXh0cmFjdEtleShcbiAgICB0eXBlOiBcInByaXZhdGVcIiB8IFwicHVibGljXCIsXG4gICAgcGVtOiBCdWZmZXIgfCBzdHJpbmcsXG4gICAgdXNhZ2VzPzogYW55W11cbiAgKSB7XG4gICAgY29uc3Qgc3VidGxlID0gY3J5cHRvLnN1YnRsZTtcblxuICAgIGNvbnN0IHN0ciA9IHBlbVxuICAgICAgLnRvU3RyaW5nKFwidXRmOFwiKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIG5ldyBSZWdFeHAoYC0tLS0tQkVHSU4gKCR7dHlwZS50b1VwcGVyQ2FzZSgpfSBLRVl8Q0VSVElGSUNBVEUpLS0tLS1gKSxcbiAgICAgICAgXCJcIlxuICAgICAgKVxuICAgICAgLnJlcGxhY2VBbGwoXCJcXG5cIiwgXCJcIilcbiAgICAgIC5yZXBsYWNlKFxuICAgICAgICBuZXcgUmVnRXhwKGAtLS0tLUVORCAoJHt0eXBlLnRvVXBwZXJDYXNlKCl9IEtFWXxDRVJUSUZJQ0FURSktLS0tLWApLFxuICAgICAgICBcIlwiXG4gICAgICApO1xuICAgIGNvbnN0IGRlY29kZWQgPSBCdWZmZXIuZnJvbShzdHIsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwiYmluYXJ5XCIpO1xuICAgIGNvbnN0IGJpbmFyeURlciA9IHRoaXMuc3RyaW5nVG9BcnJheUJ1ZmZlcihkZWNvZGVkKTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCBzdWJ0bGUuaW1wb3J0S2V5KFxuICAgICAgXCJwa2NzOFwiLFxuICAgICAgYmluYXJ5RGVyLFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkVDRFNBXCIsXG4gICAgICAgIG5hbWVkQ3VydmU6IFwiUC0yNTZcIixcbiAgICAgIH0sXG4gICAgICB0cnVlLFxuICAgICAgdXNhZ2VzID8gdXNhZ2VzIDogW1wic2lnblwiXVxuICAgICk7XG5cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGV4dHJhY3RQcml2YXRlS2V5KHBlbTogQnVmZmVyIHwgc3RyaW5nLCB1c2FnZXM/OiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmV4dHJhY3RLZXkoXCJwcml2YXRlXCIsIHBlbSwgdXNhZ2VzKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBleHRyYWN0UHVibGljS2V5KHBlbTogQnVmZmVyIHwgc3RyaW5nLCB1c2FnZXM/OiBhbnlbXSkge1xuICAgIHJldHVybiB0aGlzLmV4dHJhY3RLZXkoXCJwdWJsaWNcIiwgcGVtLCB1c2FnZXMpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ24ocHJpdmF0ZUtleTogc3RyaW5nLCBkYXRhOiBCdWZmZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZXh0cmFjdFByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG4gICAgY29uc3QgYnVmZiA9IChhd2FpdCBjcnlwdG8uc3VidGxlLnNpZ24oXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiRUNEU0FcIixcbiAgICAgICAgaGFzaDogXCJTSEEtMjU2XCIsXG4gICAgICB9LFxuICAgICAga2V5LFxuICAgICAgZGF0YSBhcyBhbnlcbiAgICApKSBhcyBBcnJheUJ1ZmZlcjtcblxuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGJ1ZmYpKVxuICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgLmpvaW4oXCJcIik7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdmVyaWZ5KFxuICAgIGNlcnRpZmljYXRlOiBzdHJpbmcsXG4gICAgc2lnbmF0dXJlOiBCdWZmZXIgfCBzdHJpbmcsXG4gICAgZGF0YTogQnVmZmVyIHwgc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNlcnQgPSBuZXcgeDUwOS5YNTA5Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpO1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IGNlcnQucHVibGljS2V5LmV4cG9ydCgpO1xuICAgIHNpZ25hdHVyZSA9IChcbiAgICAgIHR5cGVvZiBzaWduYXR1cmUgPT09IFwic3RyaW5nXCIgPyBCdWZmZXIuZnJvbShzaWduYXR1cmUsIFwiaGV4XCIpIDogc2lnbmF0dXJlXG4gICAgKSBhcyBCdWZmZXI7XG4gICAgZGF0YSA9ICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEJ1ZmZlci5mcm9tKGRhdGEpIDogZGF0YSkgYXMgQnVmZmVyO1xuICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnZlcmlmeShcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJFQ0RTQVwiLFxuICAgICAgICBoYXNoOiBcIlNIQS0yNTZcIixcbiAgICAgIH0sXG4gICAgICBrZXksXG4gICAgICBzaWduYXR1cmUgYXMgYW55LFxuICAgICAgZGF0YSBhcyBhbnlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGVuY3J5cHQoY2VydGlmaWNhdGU6IHN0cmluZywgZGF0YTogc3RyaW5nIHwgQnVmZmVyKSB7XG4gICAgY29uc3QgY2VydCA9IG5ldyB4NTA5Llg1MDlDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgY2VydC5wdWJsaWNLZXkuZXhwb3J0KCk7XG4gICAgZGF0YSA9ICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEJ1ZmZlci5mcm9tKGRhdGEpIDogZGF0YSkgYXMgQnVmZmVyO1xuICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCB0aGlzLmdldFN1YnRsZUNyeXB0bygpLmVuY3J5cHQoXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiRUNEU0FcIixcbiAgICAgIH0sXG4gICAgICBrZXksXG4gICAgICBkYXRhXG4gICAgKTtcblxuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGJ1ZmYpKVxuICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgLmpvaW4oXCJcIik7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRTdWJ0bGVDcnlwdG8oKSB7XG4gICAgcmV0dXJuIGlzQnJvd3NlcigpXG4gICAgICA/IChnbG9iYWxUaGlzIGFzIGFueSkud2luZG93LmNyeXB0by5zdWJ0bGVcbiAgICAgIDogY3J5cHRvLnN1YnRsZTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkZWNyeXB0KHByaXZhdGVLZXk6IHN0cmluZywgZGF0YTogc3RyaW5nIHwgQnVmZmVyKSB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5leHRyYWN0UHJpdmF0ZUtleShwcml2YXRlS2V5KTtcbiAgICBkYXRhID0gKFxuICAgICAgdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBCdWZmZXIuZnJvbShkYXRhLCBcImhleFwiKSA6IGRhdGFcbiAgICApIGFzIEJ1ZmZlcjtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJ0bGVDcnlwdG8oKS5kZWNyeXB0KFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkVDRFNBXCIsXG4gICAgICB9LFxuICAgICAga2V5LFxuICAgICAgZGF0YVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBnZXQgYSByYW5kb20gbWFzdGVyIGtleVxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gSWYgZGF0YSBpcyBub3QgcGFzc2VkLCBhIHJhbmRvbSBBcnJheUJ1ZmZlciB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBkYXRhIGVuY3J5dGlvbiBkYXRhXG4gICAqXG4gICAqIEBmdW5jdGlvbiBnZXRNYXN0ZXJcbiAgICovXG4gIHN0YXRpYyBhc3luYyBnZXRNYXN0ZXIoZGF0YT86IEFycmF5QnVmZmVyKTogUHJvbWlzZTxrZXlPYmplY3Q+IHtcbiAgICBjb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGdlbkdlbmVzaXMgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgZGF0YSA9IHRleHRFbmNvZGVyLmVuY29kZShnZW5HZW5lc2lzKS5idWZmZXI7XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0ZWRLZXkgPSBhd2FpdCB0aGlzLmdldFN1YnRsZUNyeXB0bygpLmltcG9ydEtleShcbiAgICAgIFwicmF3XCIsXG4gICAgICBkYXRhLFxuICAgICAgQ1JZUFRPLktFWV9BTEdPUllUSE0gYXMgc3RyaW5nLFxuICAgICAgZmFsc2UsXG4gICAgICBbXCJkZXJpdmVCaXRzXCJdXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGltcG9ydGVkS2V5LFxuICAgICAgaXY6IGRhdGEhLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBkZXJpdmUgYSBrZXkgZnJvbSBhbm90aGVyIGtleVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2FsdFxuICAgKiBAcGFyYW0ge0NyeXB0b0tleX0ga2V5IE9yaWdpbmFsIGtleVxuICAgKlxuICAgKiBAZnVuY3Rpb24gZ2V0RGVyaXZhdGlvbktleVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGdldERlcml2YXRpb25LZXkoc2FsdDogc3RyaW5nLCBrZXk6IENyeXB0b0tleSkge1xuICAgIGNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgY29uc3Qgc2FsdEJ1ZmZlciA9IHRleHRFbmNvZGVyLmVuY29kZShzYWx0KTtcbiAgICBjb25zdCBzYWx0SGFzaGVkID0gYXdhaXQgdGhpcy5nZXRTdWJ0bGVDcnlwdG8oKS5kaWdlc3QoXG4gICAgICBcIlNIQS0yNTZcIixcbiAgICAgIHNhbHRCdWZmZXJcbiAgICApO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIG5hbWU6IENSWVBUTy5LRVlfQUxHT1JZVEhNIGFzIHN0cmluZyxcbiAgICAgIGhhc2g6IENSWVBUTy5IQVNILFxuICAgICAgc2FsdDogc2FsdEhhc2hlZCxcbiAgICAgIGl0ZXJhdGlvbnM6IENSWVBUTy5JVEVSQVRJT05TLFxuICAgIH07XG4gICAgY29uc3QgZGVyaXZhdGlvbiA9IGF3YWl0IHRoaXMuZ2V0U3VidGxlQ3J5cHRvKCkuZGVyaXZlQml0cyhcbiAgICAgIHBhcmFtcyxcbiAgICAgIGtleSxcbiAgICAgIENSWVBUTy5LRVlMRU5HVEggKiA4XG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5nZXRLZXkoZGVyaXZhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBnZXQgdGhlIGtleSBhbmQgSVYgZnJvbSB0aGUgQ3J5dG9LZXkgYXJyYXlcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gZGVyaXZhdGlvblxuICAgKlxuICAgKiBAZnVuY3Rpb24gZ2V0S2V5XG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZ2V0S2V5KGRlcml2YXRpb246IEFycmF5QnVmZmVyKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IGl2bGVuID0gMTY7XG4gICAgY29uc3Qga2V5bGVuID0gMzI7XG4gICAgY29uc3QgZGVyaXZlZEtleSA9IGRlcml2YXRpb24uc2xpY2UoMCwga2V5bGVuKTtcbiAgICBjb25zdCBpdiA9IGRlcml2YXRpb24uc2xpY2Uoa2V5bGVuKTtcbiAgICBjb25zdCBpbXBvcnRlZEVuY3J5cHRpb25LZXkgPSBhd2FpdCB0aGlzLmdldFN1YnRsZUNyeXB0bygpLmltcG9ydEtleShcbiAgICAgIFwicmF3XCIsXG4gICAgICBkZXJpdmVkS2V5LFxuICAgICAgeyBuYW1lOiBDUllQVE8uQUxHT1JZVEhNIGFzIHN0cmluZyB9LFxuICAgICAgZmFsc2UsXG4gICAgICBbXCJlbmNyeXB0XCIsIFwiZGVjcnlwdFwiXVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogaW1wb3J0ZWRFbmNyeXB0aW9uS2V5LFxuICAgICAgaXY6IGl2LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBkZWNyeXB0IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHRcbiAgICogQHBhcmFtIHtrZXlPYmplY3R9IGtleU9iamVjdFxuICAgKlxuICAgKiBAZnVuY3Rpb24gZW5jcnlwdFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGVuY3J5cHRQaW4oXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGtleU9iamVjdDoga2V5T2JqZWN0XG4gICk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICBjb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgIGNvbnN0IHRleHRCdWZmZXIgPSB0ZXh0RW5jb2Rlci5lbmNvZGUodGV4dCk7XG4gICAgY29uc3QgZW5jcnlwdGVkVGV4dCA9IGF3YWl0IHRoaXMuZ2V0U3VidGxlQ3J5cHRvKCkuZW5jcnlwdChcbiAgICAgIHsgbmFtZTogQ1JZUFRPLkFMR09SWVRITSBhcyBzdHJpbmcsIGl2OiBrZXlPYmplY3QuaXYgfSxcbiAgICAgIGtleU9iamVjdC5rZXksXG4gICAgICB0ZXh0QnVmZmVyXG4gICAgKTtcbiAgICByZXR1cm4gZW5jcnlwdGVkVGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIGRlY3J5cHQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlclNvdXJjZX0gZW5jcnlwdGVkVGV4dFxuICAgKiBAcGFyYW0ge2tleU9iamVjdH0ga2V5T2JqZWN0XG4gICAqXG4gICAqIEBmdW5jdGlvbiBkZWNyeXB0XG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZGVjcnlwdFBpbihcbiAgICBlbmNyeXB0ZWRUZXh0OiBBcnJheUJ1ZmZlcixcbiAgICBrZXlPYmplY3Q6IGtleU9iamVjdFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG4gICAgY29uc3QgZGVjcnlwdGVkVGV4dCA9IGF3YWl0IHRoaXMuZ2V0U3VidGxlQ3J5cHRvKCkuZGVjcnlwdChcbiAgICAgIHsgbmFtZTogQ1JZUFRPLkFMR09SWVRITSBhcyBzdHJpbmcsIGl2OiBrZXlPYmplY3QuaXYgfSxcbiAgICAgIGtleU9iamVjdC5rZXksXG4gICAgICBlbmNyeXB0ZWRUZXh0XG4gICAgKTtcbiAgICByZXR1cm4gdGV4dERlY29kZXIuZGVjb2RlKGRlY3J5cHRlZFRleHQpO1xuICB9XG59XG4iXX0=
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3J5cHRvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUF1QztBQUN2QyxtREFBNkM7QUFDN0MseUVBQThEO0FBQzlELCtDQUEwRDtBQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFNLEVBQUUsQ0FBQztBQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUVoQyxDQUFDLFVBQVUsYUFBYTtJQUNwQixhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzlCLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDcEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUN4QyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsa0JBQWtCLENBQUM7SUFDN0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGtDQUFrQyxDQUFDO0lBQzdELGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxrQ0FBa0MsQ0FBQztJQUMvRCxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsc0NBQXNDLENBQUM7SUFDakUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLDREQUE0RCxDQUFDO0lBQ3ZGLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxnRUFBZ0UsQ0FBQztJQUMzRixhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsa0VBQWtFLENBQUM7SUFDN0YsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLHFFQUFxRSxDQUFDO0FBQ3BHLENBQUMsQ0FBQyxDQUFDLHFCQUFhLElBQUksQ0FBQyxxQkFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFMUMsQ0FBQyxVQUFVLE1BQU07SUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzNCLE1B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RUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0o7QUFuTEQsa0NBbUxDO0FBQ0Qsc3ZpQ0FBc3ZpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHg1MDkgZnJvbSBcIkBwZWN1bGlhci94NTA5XCI7XG5pbXBvcnQgeyBDcnlwdG8gfSBmcm9tIFwiQHBlY3VsaWFyL3dlYmNyeXB0b1wiO1xuaW1wb3J0IHsgc3RyaW5nRm9ybWF0IH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgaXNCcm93c2VyLCBNaW5pTG9nZ2VyIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5jb25zdCBjcnlwdG8gPSBuZXcgQ3J5cHRvKCk7XG54NTA5LmNyeXB0b1Byb3ZpZGVyLnNldChjcnlwdG8pO1xuZXhwb3J0IHZhciBCQVNFX0FMUEhBQkVUO1xuKGZ1bmN0aW9uIChCQVNFX0FMUEhBQkVUKSB7XG4gICAgQkFTRV9BTFBIQUJFVFtcIkJBU0UyXCJdID0gXCIwMVwiO1xuICAgIEJBU0VfQUxQSEFCRVRbXCJCQVNFOFwiXSA9IFwiMDEyMzQ1NjdcIjtcbiAgICBCQVNFX0FMUEhBQkVUW1wiQkFTRTExXCJdID0gXCIwMTIzNDU2Nzg5YVwiO1xuICAgIEJBU0VfQUxQSEFCRVRbXCJCQVNFMTZcIl0gPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgICBCQVNFX0FMUEhBQkVUW1wiQkFTRTMyXCJdID0gXCIwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWlwiO1xuICAgIEJBU0VfQUxQSEFCRVRbXCJCQVNFMzJfWlwiXSA9IFwieWJuZHJmZzhlamttY3BxeG90MXV3aXN6YTM0NWg3NjlcIjtcbiAgICBCQVNFX0FMUEhBQkVUW1wiQkFTRTM2XCJdID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcbiAgICBCQVNFX0FMUEhBQkVUW1wiQkFTRTU4XCJdID0gXCIxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6XCI7XG4gICAgQkFTRV9BTFBIQUJFVFtcIkJBU0U2MlwiXSA9IFwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcIjtcbiAgICBCQVNFX0FMUEhBQkVUW1wiQkFTRTY0XCJdID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCI7XG4gICAgQkFTRV9BTFBIQUJFVFtcIkJBU0U2N1wiXSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXy4hflwiO1xufSkoQkFTRV9BTFBIQUJFVCB8fCAoQkFTRV9BTFBIQUJFVCA9IHt9KSk7XG5leHBvcnQgdmFyIENSWVBUTztcbihmdW5jdGlvbiAoQ1JZUFRPKSB7XG4gICAgQ1JZUFRPW1wiSEFTSFwiXSA9IFwiU0hBLTI1NlwiO1xuICAgIENSWVBUT1tDUllQVE9bXCJJVEVSQVRJT05TXCJdID0gMTAwMF0gPSBcIklURVJBVElPTlNcIjtcbiAgICBDUllQVE9bQ1JZUFRPW1wiS0VZTEVOR1RIXCJdID0gNDhdID0gXCJLRVlMRU5HVEhcIjtcbiAgICBDUllQVE9bQ1JZUFRPW1wiREVSSVZFRF9JVl9MRU5HVEhcIl0gPSAxNl0gPSBcIkRFUklWRURfSVZfTEVOR1RIXCI7XG4gICAgQ1JZUFRPW0NSWVBUT1tcIkRFUklWRURfS0VZX0xFTkdUSFwiXSA9IDMyXSA9IFwiREVSSVZFRF9LRVlfTEVOR1RIXCI7XG4gICAgQ1JZUFRPW1wiQUxHT1JZVEhNXCJdID0gXCJBRVMtR0NNXCI7XG4gICAgQ1JZUFRPW1wiS0VZX0FMR09SWVRITVwiXSA9IFwiUEJLREYyXCI7XG59KShDUllQVE8gfHwgKENSWVBUTyA9IHt9KSk7XG5leHBvcnQgY2xhc3MgQmFzZUVuY29kZXIge1xuICAgIGNvbnN0cnVjdG9yKGFscGhhYmV0KSB7XG4gICAgICAgIHRoaXMuYWxwaGFiZXQgPSBhbHBoYWJldDtcbiAgICAgICAgdGhpcy5iYXNlTWFwID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTtcbiAgICAgICAgaWYgKHRoaXMuYWxwaGFiZXQubGVuZ3RoID49IDI1NSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFscGhhYmV0IHRvbyBsb25nXCIpO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuYmFzZU1hcC5sZW5ndGg7IGorKylcbiAgICAgICAgICAgIHRoaXMuYmFzZU1hcFtqXSA9IDI1NTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgeCA9IGFscGhhYmV0LmNoYXJBdChpKTtcbiAgICAgICAgICAgIGNvbnN0IHhjID0geC5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgICAgaWYgKHRoaXMuYmFzZU1hcFt4Y10gIT09IDI1NSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoeCArIFwiIGlzIGFtYmlndW91c1wiKTtcbiAgICAgICAgICAgIHRoaXMuYmFzZU1hcFt4Y10gPSBpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmFzZSA9IHRoaXMuYWxwaGFiZXQubGVuZ3RoO1xuICAgICAgICB0aGlzLmxlYWRlciA9IHRoaXMuYWxwaGFiZXQuY2hhckF0KDApO1xuICAgICAgICB0aGlzLmZhY3RvciA9IE1hdGgubG9nKHRoaXMuYmFzZSkgLyBNYXRoLmxvZygyNTYpOyAvLyBsb2coQkFTRSkgLyBsb2coMjU2KSwgcm91bmRlZCB1cFxuICAgICAgICB0aGlzLmlGYWN0b3IgPSBNYXRoLmxvZygyNTYpIC8gTWF0aC5sb2codGhpcy5iYXNlKTsgLy8gbG9nKDI1NikgLyBsb2coQkFTRSksIHJvdW5kZWQgdXBcbiAgICB9XG4gICAgZW5jb2RlKHNvdXJjZSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgc291cmNlID0gQnVmZmVyLmZyb20oc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoc291cmNlKSkge1xuICAgICAgICAgICAgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoc291cmNlLmJ1ZmZlciwgc291cmNlLmJ5dGVPZmZzZXQsIHNvdXJjZS5ieXRlTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHNvdXJjZSA9IFVpbnQ4QXJyYXkuZnJvbShzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2UubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIC8vIFNraXAgJiBjb3VudCBsZWFkaW5nIHplcm9lcy5cbiAgICAgICAgbGV0IHplcm9lcyA9IDA7XG4gICAgICAgIGxldCBsZW5ndGggPSAwO1xuICAgICAgICBsZXQgcGJlZ2luID0gMDtcbiAgICAgICAgY29uc3QgcGVuZCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChwYmVnaW4gIT09IHBlbmQgJiYgc291cmNlW3BiZWdpbl0gPT09IDApIHtcbiAgICAgICAgICAgIHBiZWdpbisrO1xuICAgICAgICAgICAgemVyb2VzKys7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGluIGJpZy1lbmRpYW4gYmFzZTU4IHJlcHJlc2VudGF0aW9uLlxuICAgICAgICBjb25zdCBzaXplID0gKChwZW5kIC0gcGJlZ2luKSAqIHRoaXMuaUZhY3RvciArIDEpID4+PiAwO1xuICAgICAgICBjb25zdCBiNTggPSBuZXcgVWludDhBcnJheShzaXplKTtcbiAgICAgICAgLy8gUHJvY2VzcyB0aGUgYnl0ZXMuXG4gICAgICAgIHdoaWxlIChwYmVnaW4gIT09IHBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjYXJyeSA9IHNvdXJjZVtwYmVnaW5dO1xuICAgICAgICAgICAgLy8gQXBwbHkgXCJiNTggPSBiNTggKiAyNTYgKyBjaFwiLlxuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaXQxID0gc2l6ZSAtIDE7IChjYXJyeSAhPT0gMCB8fCBpIDwgbGVuZ3RoKSAmJiBpdDEgIT09IC0xOyBpdDEtLSwgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FycnkgKz0gKDI1NiAqIGI1OFtpdDFdKSA+Pj4gMDtcbiAgICAgICAgICAgICAgICBiNThbaXQxXSA9IGNhcnJ5ICUgdGhpcy5iYXNlID4+PiAwO1xuICAgICAgICAgICAgICAgIGNhcnJ5ID0gKGNhcnJ5IC8gdGhpcy5iYXNlKSA+Pj4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjYXJyeSAhPT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb24temVybyBjYXJyeVwiKTtcbiAgICAgICAgICAgIGxlbmd0aCA9IGk7XG4gICAgICAgICAgICBwYmVnaW4rKztcbiAgICAgICAgfVxuICAgICAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzIGluIGJhc2U1OCByZXN1bHQuXG4gICAgICAgIGxldCBpdDIgPSBzaXplIC0gbGVuZ3RoO1xuICAgICAgICB3aGlsZSAoaXQyICE9PSBzaXplICYmIGI1OFtpdDJdID09PSAwKVxuICAgICAgICAgICAgaXQyKys7XG4gICAgICAgIC8vIFRyYW5zbGF0ZSB0aGUgcmVzdWx0IGludG8gYSBzdHJpbmcuXG4gICAgICAgIGxldCBzdHIgPSB0aGlzLmxlYWRlci5yZXBlYXQoemVyb2VzKTtcbiAgICAgICAgZm9yICg7IGl0MiA8IHNpemU7ICsraXQyKSB7XG4gICAgICAgICAgICBzdHIgKz0gdGhpcy5hbHBoYWJldC5jaGFyQXQoYjU4W2l0Ml0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIGRlY29kZVVuc2FmZShzb3VyY2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgICAgIGxldCBwc3ogPSAwO1xuICAgICAgICAvLyBTa2lwIGFuZCBjb3VudCBsZWFkaW5nICcxJ3MuXG4gICAgICAgIGxldCB6ZXJvZXMgPSAwO1xuICAgICAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICAgICAgd2hpbGUgKHNvdXJjZVtwc3pdID09PSB0aGlzLmxlYWRlcikge1xuICAgICAgICAgICAgemVyb2VzKys7XG4gICAgICAgICAgICBwc3orKztcbiAgICAgICAgfVxuICAgICAgICAvLyBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgaW4gYmlnLWVuZGlhbiBiYXNlMjU2IHJlcHJlc2VudGF0aW9uLlxuICAgICAgICBjb25zdCBzaXplID0gKChzb3VyY2UubGVuZ3RoIC0gcHN6KSAqIHRoaXMuZmFjdG9yICsgMSkgPj4+IDA7IC8vIGxvZyg1OCkgLyBsb2coMjU2KSwgcm91bmRlZCB1cC5cbiAgICAgICAgY29uc3QgYjI1NiA9IG5ldyBVaW50OEFycmF5KHNpemUpO1xuICAgICAgICAvLyBQcm9jZXNzIHRoZSBjaGFyYWN0ZXJzLlxuICAgICAgICB3aGlsZSAoc291cmNlW3Bzel0pIHtcbiAgICAgICAgICAgIC8vIERlY29kZSBjaGFyYWN0ZXJcbiAgICAgICAgICAgIGxldCBjYXJyeSA9IHRoaXMuYmFzZU1hcFtzb3VyY2UuY2hhckNvZGVBdChwc3opXTtcbiAgICAgICAgICAgIC8vIEludmFsaWQgY2hhcmFjdGVyXG4gICAgICAgICAgICBpZiAoY2FycnkgPT09IDI1NSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpdDMgPSBzaXplIC0gMTsgKGNhcnJ5ICE9PSAwIHx8IGkgPCBsZW5ndGgpICYmIGl0MyAhPT0gLTE7IGl0My0tLCBpKyspIHtcbiAgICAgICAgICAgICAgICBjYXJyeSArPSAodGhpcy5iYXNlICogYjI1NltpdDNdKSA+Pj4gMDtcbiAgICAgICAgICAgICAgICBiMjU2W2l0M10gPSBjYXJyeSAlIDI1NiA+Pj4gMDtcbiAgICAgICAgICAgICAgICBjYXJyeSA9IChjYXJyeSAvIDI1NikgPj4+IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FycnkgIT09IDApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm9uLXplcm8gY2FycnlcIik7XG4gICAgICAgICAgICBsZW5ndGggPSBpO1xuICAgICAgICAgICAgcHN6Kys7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lcyBpbiBiMjU2LlxuICAgICAgICBsZXQgaXQ0ID0gc2l6ZSAtIGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGl0NCAhPT0gc2l6ZSAmJiBiMjU2W2l0NF0gPT09IDApXG4gICAgICAgICAgICBpdDQrKztcbiAgICAgICAgY29uc3QgdmNoID0gbmV3IFVpbnQ4QXJyYXkoemVyb2VzICsgKHNpemUgLSBpdDQpKTtcbiAgICAgICAgbGV0IGogPSB6ZXJvZXM7XG4gICAgICAgIHdoaWxlIChpdDQgIT09IHNpemUpXG4gICAgICAgICAgICB2Y2hbaisrXSA9IGIyNTZbaXQ0KytdO1xuICAgICAgICByZXR1cm4gdmNoO1xuICAgIH1cbiAgICBkZWNvZGUoc291cmNlKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuZGVjb2RlVW5zYWZlKHNvdXJjZSk7XG4gICAgICAgIGlmIChidWZmZXIpXG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb24tYmFzZVwiICsgdGhpcy5iYXNlICsgXCIgY2hhcmFjdGVyXCIpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDcnlwdG9VdGlscyB7XG4gICAgc3RhdGljIHsgdGhpcy5iNThlbmNvZGVyID0gbmV3IEJhc2VFbmNvZGVyKEJBU0VfQUxQSEFCRVQuQkFTRTU4KTsgfVxuICAgIHN0YXRpYyB7IHRoaXMubG9nZ2VyID0gbmV3IE1pbmlMb2dnZXIoQ3J5cHRvVXRpbHMubmFtZSk7IH1cbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuICAgIHN0YXRpYyBmYWJyaWNJZEZyb21DZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhzdHJpbmdGb3JtYXQoXCJQYXJzaW5nIGNlcnRpZmljYXRlOiB7MH1cIiwgY2VydGlmaWNhdGUpKTtcbiAgICAgICAgY29uc3QgY2VydCA9IG5ldyB4NTA5Llg1MDlDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7XG4gICAgICAgIGNvbnN0IHsgc3ViamVjdCwgaXNzdWVyIH0gPSBjZXJ0O1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhzdHJpbmdGb3JtYXQoXCJDZXJ0aWZpY2F0ZSBwYXJzZWQgd2l0aCBzdWJqZWN0IHswfSBhbmQgaXNzdWVyIHsxfVwiLCBzdWJqZWN0LCBpc3N1ZXIpKTtcbiAgICAgICAgcmV0dXJuIGB4NTA5OjovJHtzdWJqZWN0LnJlcGxhY2VBbGwoXCIsIFwiLCBcIi9cIil9OjovJHtpc3N1ZXIucmVwbGFjZUFsbChcIiwgXCIsIFwiL1wiKX1gO1xuICAgIH1cbiAgICBzdGF0aWMgZW5jb2RlKHN0cikge1xuICAgICAgICByZXR1cm4gdGhpcy5iNThlbmNvZGVyLmVuY29kZShzdHIpO1xuICAgIH1cbiAgICBzdGF0aWMgZGVjb2RlKHN0cikge1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5iNThlbmNvZGVyLmRlY29kZShzdHIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGVjb2RlZCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHN0YXRpYyBzdHJpbmdUb0FycmF5QnVmZmVyKHN0cikge1xuICAgICAgICBjb25zdCBidWYgPSBuZXcgQXJyYXlCdWZmZXIoc3RyLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgc3RyTGVuID0gc3RyLmxlbmd0aDsgaSA8IHN0ckxlbjsgaSsrKSB7XG4gICAgICAgICAgICBidWZWaWV3W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGV4dHJhY3RLZXkodHlwZSwgcGVtLCB1c2FnZXMpIHtcbiAgICAgICAgY29uc3Qgc3VidGxlID0gY3J5cHRvLnN1YnRsZTtcbiAgICAgICAgY29uc3Qgc3RyID0gcGVtXG4gICAgICAgICAgICAudG9TdHJpbmcoXCJ1dGY4XCIpXG4gICAgICAgICAgICAucmVwbGFjZShuZXcgUmVnRXhwKGAtLS0tLUJFR0lOICgke3R5cGUudG9VcHBlckNhc2UoKX0gS0VZfENFUlRJRklDQVRFKS0tLS0tYCksIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZUFsbChcIlxcblwiLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgLS0tLS1FTkQgKCR7dHlwZS50b1VwcGVyQ2FzZSgpfSBLRVl8Q0VSVElGSUNBVEUpLS0tLS1gKSwgXCJcIik7XG4gICAgICAgIGNvbnN0IGRlY29kZWQgPSBCdWZmZXIuZnJvbShzdHIsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwiYmluYXJ5XCIpO1xuICAgICAgICBjb25zdCBiaW5hcnlEZXIgPSB0aGlzLnN0cmluZ1RvQXJyYXlCdWZmZXIoZGVjb2RlZCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHN1YnRsZS5pbXBvcnRLZXkoXCJwa2NzOFwiLCBiaW5hcnlEZXIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiRUNEU0FcIixcbiAgICAgICAgICAgIG5hbWVkQ3VydmU6IFwiUC0yNTZcIixcbiAgICAgICAgfSwgdHJ1ZSwgdXNhZ2VzID8gdXNhZ2VzIDogW1wic2lnblwiXSk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBleHRyYWN0UHJpdmF0ZUtleShwZW0sIHVzYWdlcykge1xuICAgICAgICByZXR1cm4gdGhpcy5leHRyYWN0S2V5KFwicHJpdmF0ZVwiLCBwZW0sIHVzYWdlcyk7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBleHRyYWN0UHVibGljS2V5KHBlbSwgdXNhZ2VzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RLZXkoXCJwdWJsaWNcIiwgcGVtLCB1c2FnZXMpO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgc2lnbihwcml2YXRlS2V5LCBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZXh0cmFjdFByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSAoYXdhaXQgY3J5cHRvLnN1YnRsZS5zaWduKHtcbiAgICAgICAgICAgIG5hbWU6IFwiRUNEU0FcIixcbiAgICAgICAgICAgIGhhc2g6IFwiU0hBLTI1NlwiLFxuICAgICAgICB9LCBrZXksIGRhdGEpKTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYnVmZikpXG4gICAgICAgICAgICAubWFwKChiKSA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIikpXG4gICAgICAgICAgICAuam9pbihcIlwiKTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIHZlcmlmeShjZXJ0aWZpY2F0ZSwgc2lnbmF0dXJlLCBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGNlcnQgPSBuZXcgeDUwOS5YNTA5Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBjZXJ0LnB1YmxpY0tleS5leHBvcnQoKTtcbiAgICAgICAgc2lnbmF0dXJlID0gKHR5cGVvZiBzaWduYXR1cmUgPT09IFwic3RyaW5nXCIgPyBCdWZmZXIuZnJvbShzaWduYXR1cmUsIFwiaGV4XCIpIDogc2lnbmF0dXJlKTtcbiAgICAgICAgZGF0YSA9ICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEJ1ZmZlci5mcm9tKGRhdGEpIDogZGF0YSk7XG4gICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnZlcmlmeSh7XG4gICAgICAgICAgICBuYW1lOiBcIkVDRFNBXCIsXG4gICAgICAgICAgICBoYXNoOiBcIlNIQS0yNTZcIixcbiAgICAgICAgfSwga2V5LCBzaWduYXR1cmUsIGRhdGEpO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgZW5jcnlwdChjZXJ0aWZpY2F0ZSwgZGF0YSkge1xuICAgICAgICBjb25zdCBjZXJ0ID0gbmV3IHg1MDkuWDUwOUNlcnRpZmljYXRlKGNlcnRpZmljYXRlKTtcbiAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgY2VydC5wdWJsaWNLZXkuZXhwb3J0KCk7XG4gICAgICAgIGRhdGEgPSAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBCdWZmZXIuZnJvbShkYXRhKSA6IGRhdGEpO1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgdGhpcy5nZXRTdWJ0bGVDcnlwdG8oKS5lbmNyeXB0KHtcbiAgICAgICAgICAgIG5hbWU6IFwiRUNEU0FcIixcbiAgICAgICAgfSwga2V5LCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYnVmZikpXG4gICAgICAgICAgICAubWFwKChiKSA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIikpXG4gICAgICAgICAgICAuam9pbihcIlwiKTtcbiAgICB9XG4gICAgc3RhdGljIGdldFN1YnRsZUNyeXB0bygpIHtcbiAgICAgICAgcmV0dXJuIGlzQnJvd3NlcigpXG4gICAgICAgICAgICA/IGdsb2JhbFRoaXMud2luZG93LmNyeXB0by5zdWJ0bGVcbiAgICAgICAgICAgIDogY3J5cHRvLnN1YnRsZTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGRlY3J5cHQocHJpdmF0ZUtleSwgZGF0YSkge1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmV4dHJhY3RQcml2YXRlS2V5KHByaXZhdGVLZXkpO1xuICAgICAgICBkYXRhID0gKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiID8gQnVmZmVyLmZyb20oZGF0YSwgXCJoZXhcIikgOiBkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3VidGxlQ3J5cHRvKCkuZGVjcnlwdCh7XG4gICAgICAgICAgICBuYW1lOiBcIkVDRFNBXCIsXG4gICAgICAgIH0sIGtleSwgZGF0YSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gZ2V0IGEgcmFuZG9tIG1hc3RlciBrZXlcbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJZiBkYXRhIGlzIG5vdCBwYXNzZWQsIGEgcmFuZG9tIEFycmF5QnVmZmVyIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBkYXRhIGVuY3J5dGlvbiBkYXRhXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb24gZ2V0TWFzdGVyXG4gICAgICovXG4gICAgc3RhdGljIGFzeW5jIGdldE1hc3RlcihkYXRhKSB7XG4gICAgICAgIGNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGdlbkdlbmVzaXMgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgICAgICAgZGF0YSA9IHRleHRFbmNvZGVyLmVuY29kZShnZW5HZW5lc2lzKS5idWZmZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW1wb3J0ZWRLZXkgPSBhd2FpdCB0aGlzLmdldFN1YnRsZUNyeXB0bygpLmltcG9ydEtleShcInJhd1wiLCBkYXRhLCBDUllQVE8uS0VZX0FMR09SWVRITSwgZmFsc2UsIFtcImRlcml2ZUJpdHNcIl0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2V5OiBpbXBvcnRlZEtleSxcbiAgICAgICAgICAgIGl2OiBkYXRhLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIGRlcml2ZSBhIGtleSBmcm9tIGFub3RoZXIga2V5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2FsdFxuICAgICAqIEBwYXJhbSB7Q3J5cHRvS2V5fSBrZXkgT3JpZ2luYWwga2V5XG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb24gZ2V0RGVyaXZhdGlvbktleVxuICAgICAqL1xuICAgIHN0YXRpYyBhc3luYyBnZXREZXJpdmF0aW9uS2V5KHNhbHQsIGtleSkge1xuICAgICAgICBjb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBzYWx0QnVmZmVyID0gdGV4dEVuY29kZXIuZW5jb2RlKHNhbHQpO1xuICAgICAgICBjb25zdCBzYWx0SGFzaGVkID0gYXdhaXQgdGhpcy5nZXRTdWJ0bGVDcnlwdG8oKS5kaWdlc3QoXCJTSEEtMjU2XCIsIHNhbHRCdWZmZXIpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBuYW1lOiBDUllQVE8uS0VZX0FMR09SWVRITSxcbiAgICAgICAgICAgIGhhc2g6IENSWVBUTy5IQVNILFxuICAgICAgICAgICAgc2FsdDogc2FsdEhhc2hlZCxcbiAgICAgICAgICAgIGl0ZXJhdGlvbnM6IENSWVBUTy5JVEVSQVRJT05TLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkZXJpdmF0aW9uID0gYXdhaXQgdGhpcy5nZXRTdWJ0bGVDcnlwdG8oKS5kZXJpdmVCaXRzKHBhcmFtcywga2V5LCBDUllQVE8uS0VZTEVOR1RIICogOCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEtleShkZXJpdmF0aW9uKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBnZXQgdGhlIGtleSBhbmQgSVYgZnJvbSB0aGUgQ3J5dG9LZXkgYXJyYXlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGRlcml2YXRpb25cbiAgICAgKlxuICAgICAqIEBmdW5jdGlvbiBnZXRLZXlcbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgZ2V0S2V5KGRlcml2YXRpb24pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICBjb25zdCBpdmxlbiA9IDE2O1xuICAgICAgICBjb25zdCBrZXlsZW4gPSAzMjtcbiAgICAgICAgY29uc3QgZGVyaXZlZEtleSA9IGRlcml2YXRpb24uc2xpY2UoMCwga2V5bGVuKTtcbiAgICAgICAgY29uc3QgaXYgPSBkZXJpdmF0aW9uLnNsaWNlKGtleWxlbik7XG4gICAgICAgIGNvbnN0IGltcG9ydGVkRW5jcnlwdGlvbktleSA9IGF3YWl0IHRoaXMuZ2V0U3VidGxlQ3J5cHRvKCkuaW1wb3J0S2V5KFwicmF3XCIsIGRlcml2ZWRLZXksIHsgbmFtZTogQ1JZUFRPLkFMR09SWVRITSB9LCBmYWxzZSwgW1wiZW5jcnlwdFwiLCBcImRlY3J5cHRcIl0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2V5OiBpbXBvcnRlZEVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICBpdjogaXYsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gZGVjcnlwdCBkYXRhXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICAgICAqIEBwYXJhbSB7a2V5T2JqZWN0fSBrZXlPYmplY3RcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvbiBlbmNyeXB0XG4gICAgICovXG4gICAgc3RhdGljIGFzeW5jIGVuY3J5cHRQaW4odGV4dCwga2V5T2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IHRleHRCdWZmZXIgPSB0ZXh0RW5jb2Rlci5lbmNvZGUodGV4dCk7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFRleHQgPSBhd2FpdCB0aGlzLmdldFN1YnRsZUNyeXB0bygpLmVuY3J5cHQoeyBuYW1lOiBDUllQVE8uQUxHT1JZVEhNLCBpdjoga2V5T2JqZWN0Lml2IH0sIGtleU9iamVjdC5rZXksIHRleHRCdWZmZXIpO1xuICAgICAgICByZXR1cm4gZW5jcnlwdGVkVGV4dDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBkZWNyeXB0IGRhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QnVmZmVyU291cmNlfSBlbmNyeXB0ZWRUZXh0XG4gICAgICogQHBhcmFtIHtrZXlPYmplY3R9IGtleU9iamVjdFxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uIGRlY3J5cHRcbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgZGVjcnlwdFBpbihlbmNyeXB0ZWRUZXh0LCBrZXlPYmplY3QpIHtcbiAgICAgICAgY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkVGV4dCA9IGF3YWl0IHRoaXMuZ2V0U3VidGxlQ3J5cHRvKCkuZGVjcnlwdCh7IG5hbWU6IENSWVBUTy5BTEdPUllUSE0sIGl2OiBrZXlPYmplY3QuaXYgfSwga2V5T2JqZWN0LmtleSwgZW5jcnlwdGVkVGV4dCk7XG4gICAgICAgIHJldHVybiB0ZXh0RGVjb2Rlci5kZWNvZGUoZGVjcnlwdGVkVGV4dCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTNKNWNIUnZMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMMk5zYVdWdWRDOWpjbmx3ZEc4dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVsQlFVa3NUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU4yUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGaExFMUJRVTBzY1VKQlFYRkNMRU5CUVVNN1FVRkRlRVFzVDBGQlR5eEZRVUZGTEZsQlFWa3NSVUZCUlN4TlFVRk5MR2REUVVGblF5eERRVUZETzBGQlF6bEVMRTlCUVU4c1JVRkJSU3hUUVVGVExFVkJRVVVzVlVGQlZTeEZRVUZGTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU03UVVGRk1VUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVU0xUWl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVVm9ReXhOUVVGTkxFTkJRVTRzU1VGQldTeGhRVmxZTzBGQldrUXNWMEZCV1N4aFFVRmhPMGxCUTNaQ0xEWkNRVUZaTEVOQlFVRTdTVUZEV2l4dFEwRkJhMElzUTBGQlFUdEpRVU5zUWl4MVEwRkJjMElzUTBGQlFUdEpRVU4wUWl3MFEwRkJNa0lzUTBGQlFUdEpRVU16UWl3MFJFRkJNa01zUTBGQlFUdEpRVU16UXl3NFJFRkJOa01zUTBGQlFUdEpRVU0zUXl4blJVRkJLME1zUTBGQlFUdEpRVU12UXl4elJrRkJjVVVzUTBGQlFUdEpRVU55UlN3d1JrRkJlVVVzUTBGQlFUdEpRVU42UlN3MFJrRkJNa1VzUTBGQlFUdEpRVU16UlN3clJrRkJPRVVzUTBGQlFUdEJRVU5vUml4RFFVRkRMRVZCV2xjc1lVRkJZU3hMUVVGaUxHRkJRV0VzVVVGWmVFSTdRVUZQUkN4TlFVRk5MRU5CUVU0c1NVRkJXU3hOUVZGWU8wRkJVa1FzVjBGQldTeE5RVUZOTzBsQlEyaENMREJDUVVGblFpeERRVUZCTzBsQlEyaENMR3RFUVVGcFFpeERRVUZCTzBsQlEycENMRGhEUVVGakxFTkJRVUU3U1VGRFpDdzRSRUZCYzBJc1EwRkJRVHRKUVVOMFFpeG5SVUZCZFVJc1EwRkJRVHRKUVVOMlFpd3JRa0ZCY1VJc1EwRkJRVHRKUVVOeVFpeHJRMEZCZDBJc1EwRkJRVHRCUVVNeFFpeERRVUZETEVWQlVsY3NUVUZCVFN4TFFVRk9MRTFCUVUwc1VVRlJha0k3UVVGRlJDeE5RVUZOTEU5QlFVOHNWMEZCVnp0SlFVOTBRaXhaUVVGdlFpeFJRVUYxUWp0UlFVRjJRaXhoUVVGUkxFZEJRVklzVVVGQlVTeERRVUZsTzFGQlRqRkNMRmxCUVU4c1IwRkJaU3hKUVVGSkxGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVOTZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjN1dVRkJSU3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03VVVGRmRFVXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlJYQkZMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZEZWtNc1RVRkJUU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNM1FpeE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6TkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4SFFVRkhPMmRDUVVGRkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMR1ZCUVdVc1EwRkJReXhEUVVGRE8xbEJSVzVGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzWkNMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRMnBETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRkRU1zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNiVU5CUVcxRE8xRkJRM1JHTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRzFEUVVGdFF6dEpRVU42Uml4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExFMUJRVGhETzFGQlEyNUVMRWxCUVVrc1QwRkJUeXhOUVVGTkxFdEJRVXNzVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZETDBJc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRMMElzUTBGQlF6dGhRVUZOTEVsQlFVa3NWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzUkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGRGNrSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkRZaXhOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVU5xUWl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVOc1FpeERRVUZETzFGQlEwb3NRMEZCUXp0aFFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTJwRExFMUJRVTBzUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRMjVETEVOQlFVTTdVVUZGUkN4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF6dFpRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRPMUZCUlc1RExDdENRVUVyUWp0UlFVTXZRaXhKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWml4SlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFppeEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRaaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUXpOQ0xFOUJRVThzVFVGQlRTeExRVUZMTEVsQlFVa3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZETDBNc1RVRkJUU3hGUVVGRkxFTkJRVU03V1VGRFZDeE5RVUZOTEVWQlFVVXNRMEZCUXp0UlFVTllMRU5CUVVNN1VVRkRSQ3cyUkVGQk5rUTdVVUZETjBRc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVONFJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5xUXl4eFFrRkJjVUk3VVVGRGNrSXNUMEZCVHl4TlFVRk5MRXRCUVVzc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRGRrSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlF6TkNMR2REUVVGblF6dFpRVU5vUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRFZpeExRVU5GTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRMnhDTEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVONlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkRWaXhEUVVGRE8yZENRVU5FTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRMmhETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRMjVETEV0QlFVc3NSMEZCUnl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUTNCRExFTkJRVU03V1VGRFJDeEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMmRDUVVGRkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF6dFpRVVZ1UkN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMWdzVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZEV0N4RFFVRkRPMUZCUTBRc2QwTkJRWGRETzFGQlEzaERMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTTdVVUZEZUVJc1QwRkJUeXhIUVVGSExFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRE8xbEJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZGTjBNc2MwTkJRWE5ETzFGQlEzUkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRM0pETEU5QlFVOHNSMEZCUnl4SFFVRkhMRWxCUVVrc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzFsQlEzcENMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU40UXl4RFFVRkRPMUZCUTBRc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVOHNXVUZCV1N4RFFVRkRMRTFCUVdNN1VVRkRha01zU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNN1dVRkJSU3hQUVVGUExFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUld4RUxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTmFMQ3RDUVVFclFqdFJRVU12UWl4SlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFppeEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRaaXhQUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03V1VGRGJrTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1dVRkRWQ3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5TTEVOQlFVTTdVVUZEUkN3NFJFRkJPRVE3VVVGRE9VUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhyUTBGQmEwTTdVVUZEYUVjc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRiRU1zTUVKQlFUQkNPMUZCUXpGQ0xFOUJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRia0lzYlVKQlFXMUNPMWxCUTI1Q0xFbEJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJwRUxHOUNRVUZ2UWp0WlFVTndRaXhKUVVGSkxFdEJRVXNzUzBGQlN5eEhRVUZITzJkQ1FVRkZMRTlCUVU4N1dVRkZNVUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTFZc1MwRkRSU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVTnNRaXhEUVVGRExFdEJRVXNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZEZWtNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlExWXNRMEZCUXp0blFrRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0blFrRkRka01zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTTVRaXhMUVVGTExFZEJRVWNzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRemxDTEVOQlFVTTdXVUZEUkN4SlFVRkpMRXRCUVVzc1MwRkJTeXhEUVVGRE8yZENRVUZGTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0WlFVVnVSQ3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzFsQlExZ3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRVaXhEUVVGRE8xRkJRMFFzSzBKQlFTdENPMUZCUXk5Q0xFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNN1VVRkRlRUlzVDBGQlR5eEhRVUZITEV0QlFVc3NTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETzFsQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkZPVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRiRVFzU1VGQlNTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTJZc1QwRkJUeXhIUVVGSExFdEJRVXNzU1VGQlNUdFpRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlRWRExFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVMRTFCUVUwc1EwRkJReXhOUVVGak8xRkJRMjVDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZWtNc1NVRkJTU3hOUVVGTk8xbEJRVVVzVDBGQlR5eE5RVUZOTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhaUVVGWkxFTkJRVU1zUTBGQlF6dEpRVU42UkN4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRVThzVjBGQlZ6dGhRVU5GTEdWQlFWVXNSMEZCUnl4SlFVRkpMRmRCUVZjc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdZVUZEYmtRc1YwRkJUU3hIUVVGSExFbEJRVWtzVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1JTeG5Ra0ZCZFVJc1EwRkJRenRKUVVWNFFpeE5RVUZOTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zVjBGQmJVSTdVVUZEYUVRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RFFVRkRMREJDUVVFd1FpeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRla1VzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlEyNUVMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVTm1MRmxCUVZrc1EwRkRWaXh2UkVGQmIwUXNSVUZEY0VRc1QwRkJUeXhGUVVOUUxFMUJRVTBzUTBGRFVDeERRVU5HTEVOQlFVTTdVVUZEUml4UFFVRlBMRlZCUVZVc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVOeVJpeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGWE8xRkJRM1pDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEY2tNc1EwRkJRenRKUVVORUxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCVnp0UlFVTjJRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU0xUXl4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxGZEJRVmNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOcVJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVVFzVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVmM3VVVGRGNFTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM0JETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTnlSQ3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4RFFVRkRPMUZCUTBRc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVOHNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRemRDTEVsQlFUQkNMRVZCUXpGQ0xFZEJRVzlDTEVWQlEzQkNMRTFCUVdNN1VVRkZaQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUlRkQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVkQlFVYzdZVUZEV2l4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRE8yRkJRMmhDTEU5QlFVOHNRMEZEVGl4SlFVRkpMRTFCUVUwc1EwRkJReXhsUVVGbExFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNkMEpCUVhkQ0xFTkJRVU1zUlVGRGNrVXNSVUZCUlN4RFFVTklPMkZCUTBFc1ZVRkJWU3hEUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTTdZVUZEY0VJc1QwRkJUeXhEUVVOT0xFbEJRVWtzVFVGQlRTeERRVUZETEdGQlFXRXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3gzUWtGQmQwSXNRMEZCUXl4RlFVTnVSU3hGUVVGRkxFTkJRMGdzUTBGQlF6dFJRVU5LTEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU01UkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hOUVVGTkxFTkJRVU1zVTBGQlV5eERRVU5vUXl4UFFVRlBMRVZCUTFBc1UwRkJVeXhGUVVOVU8xbEJRMFVzU1VGQlNTeEZRVUZGTEU5QlFVODdXVUZEWWl4VlFVRlZMRVZCUVVVc1QwRkJUenRUUVVOd1FpeEZRVU5FTEVsQlFVa3NSVUZEU2l4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkRNMElzUTBGQlF6dFJRVVZHTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVWRUxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUjBGQmIwSXNSVUZCUlN4TlFVRmpPMUZCUTJwRkxFOUJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEycEVMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFZEJRVzlDTEVWQlFVVXNUVUZCWXp0UlFVTm9SU3hQUVVGUExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU5vUkN4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCYTBJc1JVRkJSU3hKUVVGWk8xRkJRMmhFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM0pFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZEY0VNN1dVRkRSU3hKUVVGSkxFVkJRVVVzVDBGQlR6dFpRVU5pTEVsQlFVa3NSVUZCUlN4VFFVRlRPMU5CUTJoQ0xFVkJRMFFzUjBGQlJ5eEZRVU5JTEVsQlFWY3NRMEZEV2l4RFFVRm5RaXhEUVVGRE8xRkJSV3hDTEU5QlFVOHNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTndReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU16UXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRMnBDTEZkQlFXMUNMRVZCUTI1Q0xGTkJRVEJDTEVWQlF6RkNMRWxCUVhGQ08xRkJSWEpDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTnVSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03VVVGRE1VTXNVMEZCVXl4SFFVRkhMRU5CUTFZc1QwRkJUeXhUUVVGVExFdEJRVXNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVOb1JTeERRVUZETzFGQlExb3NTVUZCU1N4SFFVRkhMRU5CUVVNc1QwRkJUeXhKUVVGSkxFdEJRVXNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVZjc1EwRkJRenRSUVVOMlJTeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVONlFqdFpRVU5GTEVsQlFVa3NSVUZCUlN4UFFVRlBPMWxCUTJJc1NVRkJTU3hGUVVGRkxGTkJRVk03VTBGRGFFSXNSVUZEUkN4SFFVRkhMRVZCUTBnc1UwRkJaMElzUlVGRGFFSXNTVUZCVnl4RFFVTmFMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJiVUlzUlVGQlJTeEpRVUZ4UWp0UlFVTTNSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGJrUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMUZCUXpGRExFbEJRVWtzUjBGQlJ5eERRVUZETEU5QlFVOHNTVUZCU1N4TFFVRkxMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZYTEVOQlFVTTdVVUZEZGtVc1RVRkJUU3hKUVVGSkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVNdlF6dFpRVU5GTEVsQlFVa3NSVUZCUlN4UFFVRlBPMU5CUTJRc1JVRkRSQ3hIUVVGSExFVkJRMGdzU1VGQlNTeERRVU5NTEVOQlFVTTdVVUZGUml4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1lVRkRjRU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZETTBNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVlBMRTFCUVUwc1EwRkJReXhsUVVGbE8xRkJRelZDTEU5QlFVOHNVMEZCVXl4RlFVRkZPMWxCUTJoQ0xFTkJRVU1zUTBGQlJTeFZRVUZyUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRUdFpRVU14UXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU53UWl4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCYTBJc1JVRkJSU3hKUVVGeFFqdFJRVU0xUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU55UkN4SlFVRkpMRWRCUVVjc1EwRkRUQ3hQUVVGUExFbEJRVWtzUzBGQlN5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRMnBFTEVOQlFVTTdVVUZEV2l4UFFVRlBMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlEyNURPMWxCUTBVc1NVRkJTU3hGUVVGRkxFOUJRVTg3VTBGRFpDeEZRVU5FTEVkQlFVY3NSVUZEU0N4SlFVRkpMRU5CUTB3c1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlJEczdPenM3T3pzN1QwRlJSenRKUVVOSUxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVd0Q08xRkJRM1pETEUxQlFVMHNWMEZCVnl4SFFVRkhMRWxCUVVrc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRGRFTXNTVUZCU1N4SlFVRkpMRXRCUVVzc1UwRkJVeXhGUVVGRkxFTkJRVU03V1VGRGRrSXNUVUZCVFN4VlFVRlZMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFsQlEzWkRMRWxCUVVrc1IwRkJSeXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNdlF5eERRVUZETzFGQlJVUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVTjRSQ3hMUVVGTExFVkJRMHdzU1VGQlNTeEZRVU5LTEUxQlFVMHNRMEZCUXl4aFFVRjFRaXhGUVVNNVFpeExRVUZMTEVWQlEwd3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkRaaXhEUVVGRE8xRkJSVVlzVDBGQlR6dFpRVU5NTEVkQlFVY3NSVUZCUlN4WFFVRlhPMWxCUTJoQ0xFVkJRVVVzUlVGQlJTeEpRVUZMTzFOQlExWXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZSRHM3T3pzN096dFBRVTlITzBsQlEwZ3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SlFVRlpMRVZCUVVVc1IwRkJZenRSUVVONFJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRmRCUVZjc1JVRkJSU3hEUVVGRE8xRkJRM1JETEUxQlFVMHNWVUZCVlN4SFFVRkhMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETlVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVOd1JDeFRRVUZUTEVWQlExUXNWVUZCVlN4RFFVTllMRU5CUVVNN1VVRkRSaXhOUVVGTkxFMUJRVTBzUjBGQlJ6dFpRVU5pTEVsQlFVa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1lVRkJkVUk3V1VGRGNFTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSk8xbEJRMnBDTEVsQlFVa3NSVUZCUlN4VlFVRlZPMWxCUTJoQ0xGVkJRVlVzUlVGQlJTeE5RVUZOTEVOQlFVTXNWVUZCVlR0VFFVTTVRaXhEUVVGRE8xRkJRMFlzVFVGQlRTeFZRVUZWTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVU40UkN4TlFVRk5MRVZCUTA0c1IwRkJSeXhGUVVOSUxFMUJRVTBzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVTnlRaXhEUVVGRE8xRkJRMFlzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wbEJRMnBETEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRjFRanRSUVVONlF5dzJSRUZCTmtRN1VVRkROMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJwQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnNRaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU12UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNCRExFMUJRVTBzY1VKQlFYRkNMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVTnNSU3hMUVVGTExFVkJRMHdzVlVGQlZTeEZRVU5XTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhUUVVGdFFpeEZRVUZGTEVWQlEzQkRMRXRCUVVzc1JVRkRUQ3hEUVVGRExGTkJRVk1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZEZGtJc1EwRkJRenRSUVVOR0xFOUJRVTg3V1VGRFRDeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08xbEJRekZDTEVWQlFVVXNSVUZCUlN4RlFVRkZPMU5CUTFBc1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlEzSkNMRWxCUVZrc1JVRkRXaXhUUVVGdlFqdFJRVVZ3UWl4TlFVRk5MRmRCUVZjc1IwRkJSeXhKUVVGSkxGZEJRVmNzUlVGQlJTeERRVUZETzFGQlEzUkRMRTFCUVUwc1ZVRkJWU3hIUVVGSExGZEJRVmNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkROVU1zVFVGQlRTeGhRVUZoTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVU40UkN4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zVTBGQmJVSXNSVUZCUlN4RlFVRkZMRVZCUVVVc1UwRkJVeXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVU4wUkN4VFFVRlRMRU5CUVVNc1IwRkJSeXhGUVVOaUxGVkJRVlVzUTBGRFdDeERRVUZETzFGQlEwWXNUMEZCVHl4aFFVRmhMRU5CUVVNN1NVRkRka0lzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEZWQlFWVXNRMEZEY2tJc1lVRkJNRUlzUlVGRE1VSXNVMEZCYjBJN1VVRkZjRUlzVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4WFFVRlhMRVZCUVVVc1EwRkJRenRSUVVOMFF5eE5RVUZOTEdGQlFXRXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlEzaEVMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eFRRVUZ0UWl4RlFVRkZMRVZCUVVVc1JVRkJSU3hUUVVGVExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlEzUkVMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRMklzWVVGQllTeERRVU5rTEVOQlFVTTdVVUZEUml4UFFVRlBMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTVUZETTBNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklIZzFNRGtnWm5KdmJTQmNJa0J3WldOMWJHbGhjaTk0TlRBNVhDSTdYRzVwYlhCdmNuUWdleUJEY25sd2RHOHNJRU55ZVhCMGIwdGxlU0I5SUdaeWIyMGdYQ0pBY0dWamRXeHBZWEl2ZDJWaVkzSjVjSFJ2WENJN1hHNXBiWEJ2Y25RZ2V5QnpkSEpwYm1kR2IzSnRZWFFnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVwYlhCdmNuUWdleUJwYzBKeWIzZHpaWElzSUUxcGJtbE1iMmRuWlhJZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyeHZaMmRwYm1kY0lqdGNibHh1WTI5dWMzUWdZM0o1Y0hSdklEMGdibVYzSUVOeWVYQjBieWdwTzF4dWVEVXdPUzVqY25sd2RHOVFjbTkyYVdSbGNpNXpaWFFvWTNKNWNIUnZLVHRjYmx4dVpYaHdiM0owSUdWdWRXMGdRa0ZUUlY5QlRGQklRVUpGVkNCN1hHNGdJRUpCVTBVeUlEMGdYQ0l3TVZ3aUxGeHVJQ0JDUVZORk9DQTlJRndpTURFeU16UTFOamRjSWl4Y2JpQWdRa0ZUUlRFeElEMGdYQ0l3TVRJek5EVTJOemc1WVZ3aUxGeHVJQ0JDUVZORk1UWWdQU0JjSWpBeE1qTTBOVFkzT0RsaFltTmtaV1pjSWl4Y2JpQWdRa0ZUUlRNeUlEMGdYQ0l3TVRJek5EVTJOemc1UVVKRFJFVkdSMGhLUzAxT1VGRlNVMVJXVjFoWldsd2lMRnh1SUNCQ1FWTkZNekpmV2lBOUlGd2llV0p1WkhKbVp6aGxhbXR0WTNCeGVHOTBNWFYzYVhONllUTTBOV2czTmpsY0lpeGNiaUFnUWtGVFJUTTJJRDBnWENJd01USXpORFUyTnpnNVlXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwY0lpeGNiaUFnUWtGVFJUVTRJRDBnWENJeE1qTTBOVFkzT0RsQlFrTkVSVVpIU0VwTFRFMU9VRkZTVTFSVlZsZFlXVnBoWW1Oa1pXWm5hR2xxYTIxdWIzQnhjbk4wZFhaM2VIbDZYQ0lzWEc0Z0lFSkJVMFUyTWlBOUlGd2lNREV5TXpRMU5qYzRPV0ZpWTJSbFptZG9hV3ByYkcxdWIzQnhjbk4wZFhaM2VIbDZRVUpEUkVWR1IwaEpTa3RNVFU1UFVGRlNVMVJWVmxkWVdWcGNJaXhjYmlBZ1FrRlRSVFkwSUQwZ1hDSkJRa05FUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldtRmlZMlJsWm1kb2FXcHJiRzF1YjNCeGNuTjBkWFozZUhsNk1ERXlNelExTmpjNE9Tc3ZYQ0lzWEc0Z0lFSkJVMFUyTnlBOUlGd2lRVUpEUkVWR1IwaEpTa3RNVFU1UFVGRlNVMVJWVmxkWVdWcGhZbU5rWldabmFHbHFhMnh0Ym05d2NYSnpkSFYyZDNoNWVqQXhNak0wTlRZM09Ea3RYeTRoZmx3aUxGeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQnJaWGxQWW1wbFkzUWdQU0I3WEc0Z0lHbDJPaUJCY25KaGVVSjFabVpsY2p0Y2JpQWdhMlY1T2lCRGNubHdkRzlMWlhrN1hHNTlPMXh1WEc1bGVIQnZjblFnWlc1MWJTQkRVbGxRVkU4Z2UxeHVJQ0JJUVZOSUlEMGdYQ0pUU0VFdE1qVTJYQ0lzWEc0Z0lFbFVSVkpCVkVsUFRsTWdQU0F4TURBd0xGeHVJQ0JMUlZsTVJVNUhWRWdnUFNBME9DeGNiaUFnUkVWU1NWWkZSRjlKVmw5TVJVNUhWRWdnUFNBeE5peGNiaUFnUkVWU1NWWkZSRjlMUlZsZlRFVk9SMVJJSUQwZ016SXNJQzh2SUVKbFkyRjFjMlVnVTBoQkxUSTFOaUIxYzJWa0lHaGhjeUJoSUc1aGRHbDJaU0J6YVhwbElHOW1JRE15SUdKNWRHVnpYRzRnSUVGTVIwOVNXVlJJVFNBOUlGd2lRVVZUTFVkRFRWd2lMRnh1SUNCTFJWbGZRVXhIVDFKWlZFaE5JRDBnWENKUVFrdEVSakpjSWl4Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFSmhjMlZGYm1OdlpHVnlJSHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCaVlYTmxUV0Z3T2lCVmFXNTBPRUZ5Y21GNUlEMGdibVYzSUZWcGJuUTRRWEp5WVhrb01qVTJLVHRjYmlBZ2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCaVlYTmxPaUJ1ZFcxaVpYSTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnYkdWaFpHVnlPaUJ6ZEhKcGJtYzdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWm1GamRHOXlPaUJ1ZFcxaVpYSTdYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnYVVaaFkzUnZjam9nYm5WdFltVnlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJ5YVhaaGRHVWdZV3h3YUdGaVpYUTZJRUpCVTBWZlFVeFFTRUZDUlZRcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1aGJIQm9ZV0psZEM1c1pXNW5kR2dnUGowZ01qVTFLU0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pCYkhCb1lXSmxkQ0IwYjI4Z2JHOXVaMXdpS1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z2RHaHBjeTVpWVhObFRXRndMbXhsYm1kMGFEc2dhaXNyS1NCMGFHbHpMbUpoYzJWTllYQmJhbDBnUFNBeU5UVTdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR0ZzY0doaFltVjBMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0I0SUQwZ1lXeHdhR0ZpWlhRdVkyaGhja0YwS0drcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnZUdNZ1BTQjRMbU5vWVhKRGIyUmxRWFFvTUNrN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1aVlYTmxUV0Z3VzNoalhTQWhQVDBnTWpVMUtTQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb2VDQXJJRndpSUdseklHRnRZbWxuZFc5MWMxd2lLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NWlZWE5sVFdGd1czaGpYU0E5SUdrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NWlZWE5sSUQwZ2RHaHBjeTVoYkhCb1lXSmxkQzVzWlc1bmRHZzdYRzRnSUNBZ2RHaHBjeTVzWldGa1pYSWdQU0IwYUdsekxtRnNjR2hoWW1WMExtTm9ZWEpCZENnd0tUdGNiaUFnSUNCMGFHbHpMbVpoWTNSdmNpQTlJRTFoZEdndWJHOW5LSFJvYVhNdVltRnpaU2tnTHlCTllYUm9MbXh2WnlneU5UWXBPeUF2THlCc2IyY29Ra0ZUUlNrZ0x5QnNiMmNvTWpVMktTd2djbTkxYm1SbFpDQjFjRnh1SUNBZ0lIUm9hWE11YVVaaFkzUnZjaUE5SUUxaGRHZ3ViRzluS0RJMU5pa2dMeUJOWVhSb0xteHZaeWgwYUdsekxtSmhjMlVwT3lBdkx5QnNiMmNvTWpVMktTQXZJR3h2WnloQ1FWTkZLU3dnY205MWJtUmxaQ0IxY0Z4dUlDQjlYRzVjYmlBZ1pXNWpiMlJsS0hOdmRYSmpaVG9nVldsdWREaEJjbkpoZVNCOElFUmhkR0ZXYVdWM0lId2dZVzU1VzEwZ2ZDQnpkSEpwYm1jcElIdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlITnZkWEpqWlNBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4dUlDQWdJQ0FnYzI5MWNtTmxJRDBnUW5WbVptVnlMbVp5YjIwb2MyOTFjbU5sS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0VGeWNtRjVRblZtWm1WeUxtbHpWbWxsZHloemIzVnlZMlVwS1NCN1hHNGdJQ0FnSUNCemIzVnlZMlVnUFNCdVpYY2dWV2x1ZERoQmNuSmhlU2hjYmlBZ0lDQWdJQ0FnYzI5MWNtTmxMbUoxWm1abGNpeGNiaUFnSUNBZ0lDQWdjMjkxY21ObExtSjVkR1ZQWm1aelpYUXNYRzRnSUNBZ0lDQWdJSE52ZFhKalpTNWllWFJsVEdWdVozUm9YRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoemIzVnlZMlVwS1NCN1hHNGdJQ0FnSUNCemIzVnlZMlVnUFNCVmFXNTBPRUZ5Y21GNUxtWnliMjBvYzI5MWNtTmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYzI5MWNtTmxMbXhsYm1kMGFDQTlQVDBnTUNrZ2NtVjBkWEp1SUZ3aVhDSTdYRzVjYmlBZ0lDQXZMeUJUYTJsd0lDWWdZMjkxYm5RZ2JHVmhaR2x1WnlCNlpYSnZaWE11WEc0Z0lDQWdiR1YwSUhwbGNtOWxjeUE5SURBN1hHNGdJQ0FnYkdWMElHeGxibWQwYUNBOUlEQTdYRzRnSUNBZ2JHVjBJSEJpWldkcGJpQTlJREE3WEc0Z0lDQWdZMjl1YzNRZ2NHVnVaQ0E5SUhOdmRYSmpaUzVzWlc1bmRHZzdYRzRnSUNBZ2QyaHBiR1VnS0hCaVpXZHBiaUFoUFQwZ2NHVnVaQ0FtSmlCemIzVnlZMlZiY0dKbFoybHVYU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdjR0psWjJsdUt5czdYRzRnSUNBZ0lDQjZaWEp2WlhNckt6dGNiaUFnSUNCOVhHNGdJQ0FnTHk4Z1FXeHNiMk5oZEdVZ1pXNXZkV2RvSUhOd1lXTmxJR2x1SUdKcFp5MWxibVJwWVc0Z1ltRnpaVFU0SUhKbGNISmxjMlZ1ZEdGMGFXOXVMbHh1SUNBZ0lHTnZibk4wSUhOcGVtVWdQU0FvS0hCbGJtUWdMU0J3WW1WbmFXNHBJQ29nZEdocGN5NXBSbUZqZEc5eUlDc2dNU2tnUGo0K0lEQTdYRzRnSUNBZ1kyOXVjM1FnWWpVNElEMGdibVYzSUZWcGJuUTRRWEp5WVhrb2MybDZaU2s3WEc0Z0lDQWdMeThnVUhKdlkyVnpjeUIwYUdVZ1lubDBaWE11WEc0Z0lDQWdkMmhwYkdVZ0tIQmlaV2RwYmlBaFBUMGdjR1Z1WkNrZ2UxeHVJQ0FnSUNBZ2JHVjBJR05oY25KNUlEMGdjMjkxY21ObFczQmlaV2RwYmwwN1hHNGdJQ0FnSUNBdkx5QkJjSEJzZVNCY0ltSTFPQ0E5SUdJMU9DQXFJREkxTmlBcklHTm9YQ0l1WEc0Z0lDQWdJQ0JzWlhRZ2FTQTlJREE3WEc0Z0lDQWdJQ0JtYjNJZ0tGeHVJQ0FnSUNBZ0lDQnNaWFFnYVhReElEMGdjMmw2WlNBdElERTdYRzRnSUNBZ0lDQWdJQ2hqWVhKeWVTQWhQVDBnTUNCOGZDQnBJRHdnYkdWdVozUm9LU0FtSmlCcGRERWdJVDA5SUMweE8xeHVJQ0FnSUNBZ0lDQnBkREV0TFN3Z2FTc3JYRzRnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnWTJGeWNua2dLejBnS0RJMU5pQXFJR0kxT0Z0cGRERmRLU0ErUGo0Z01EdGNiaUFnSUNBZ0lDQWdZalU0VzJsME1WMGdQU0JqWVhKeWVTQWxJSFJvYVhNdVltRnpaU0ErUGo0Z01EdGNiaUFnSUNBZ0lDQWdZMkZ5Y25rZ1BTQW9ZMkZ5Y25rZ0x5QjBhR2x6TG1KaGMyVXBJRDQrUGlBd08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLR05oY25KNUlDRTlQU0F3S1NCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKT2IyNHRlbVZ5YnlCallYSnllVndpS1R0Y2JseHVJQ0FnSUNBZ2JHVnVaM1JvSUQwZ2FUdGNiaUFnSUNBZ0lIQmlaV2RwYmlzck8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlCVGEybHdJR3hsWVdScGJtY2dlbVZ5YjJWeklHbHVJR0poYzJVMU9DQnlaWE4xYkhRdVhHNGdJQ0FnYkdWMElHbDBNaUE5SUhOcGVtVWdMU0JzWlc1bmRHZzdYRzRnSUNBZ2QyaHBiR1VnS0dsME1pQWhQVDBnYzJsNlpTQW1KaUJpTlRoYmFYUXlYU0E5UFQwZ01Da2dhWFF5S3lzN1hHNWNiaUFnSUNBdkx5QlVjbUZ1YzJ4aGRHVWdkR2hsSUhKbGMzVnNkQ0JwYm5SdklHRWdjM1J5YVc1bkxseHVJQ0FnSUd4bGRDQnpkSElnUFNCMGFHbHpMbXhsWVdSbGNpNXlaWEJsWVhRb2VtVnliMlZ6S1R0Y2JpQWdJQ0JtYjNJZ0tEc2dhWFF5SUR3Z2MybDZaVHNnS3l0cGRESXBJSHRjYmlBZ0lDQWdJSE4wY2lBclBTQjBhR2x6TG1Gc2NHaGhZbVYwTG1Ob1lYSkJkQ2hpTlRoYmFYUXlYU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCemRISTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR1JsWTI5a1pWVnVjMkZtWlNoemIzVnlZMlU2SUhOMGNtbHVaeWs2SUZWcGJuUTRRWEp5WVhrZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lHbG1JQ2h6YjNWeVkyVXViR1Z1WjNSb0lEMDlQU0F3S1NCeVpYUjFjbTRnYm1WM0lGVnBiblE0UVhKeVlYa29NQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2NITjZJRDBnTUR0Y2JpQWdJQ0F2THlCVGEybHdJR0Z1WkNCamIzVnVkQ0JzWldGa2FXNW5JQ2N4SjNNdVhHNGdJQ0FnYkdWMElIcGxjbTlsY3lBOUlEQTdYRzRnSUNBZ2JHVjBJR3hsYm1kMGFDQTlJREE3WEc0Z0lDQWdkMmhwYkdVZ0tITnZkWEpqWlZ0d2MzcGRJRDA5UFNCMGFHbHpMbXhsWVdSbGNpa2dlMXh1SUNBZ0lDQWdlbVZ5YjJWekt5czdYRzRnSUNBZ0lDQndjM29yS3p0Y2JpQWdJQ0I5WEc0Z0lDQWdMeThnUVd4c2IyTmhkR1VnWlc1dmRXZG9JSE53WVdObElHbHVJR0pwWnkxbGJtUnBZVzRnWW1GelpUSTFOaUJ5WlhCeVpYTmxiblJoZEdsdmJpNWNiaUFnSUNCamIyNXpkQ0J6YVhwbElEMGdLQ2h6YjNWeVkyVXViR1Z1WjNSb0lDMGdjSE42S1NBcUlIUm9hWE11Wm1GamRHOXlJQ3NnTVNrZ1BqNCtJREE3SUM4dklHeHZaeWcxT0NrZ0x5QnNiMmNvTWpVMktTd2djbTkxYm1SbFpDQjFjQzVjYmlBZ0lDQmpiMjV6ZENCaU1qVTJJRDBnYm1WM0lGVnBiblE0UVhKeVlYa29jMmw2WlNrN1hHNGdJQ0FnTHk4Z1VISnZZMlZ6Y3lCMGFHVWdZMmhoY21GamRHVnljeTVjYmlBZ0lDQjNhR2xzWlNBb2MyOTFjbU5sVzNCemVsMHBJSHRjYmlBZ0lDQWdJQzh2SUVSbFkyOWtaU0JqYUdGeVlXTjBaWEpjYmlBZ0lDQWdJR3hsZENCallYSnllU0E5SUhSb2FYTXVZbUZ6WlUxaGNGdHpiM1Z5WTJVdVkyaGhja052WkdWQmRDaHdjM29wWFR0Y2JpQWdJQ0FnSUM4dklFbHVkbUZzYVdRZ1kyaGhjbUZqZEdWeVhHNGdJQ0FnSUNCcFppQW9ZMkZ5Y25rZ1BUMDlJREkxTlNrZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnSUNCc1pYUWdhU0E5SURBN1hHNGdJQ0FnSUNCbWIzSWdLRnh1SUNBZ0lDQWdJQ0JzWlhRZ2FYUXpJRDBnYzJsNlpTQXRJREU3WEc0Z0lDQWdJQ0FnSUNoallYSnllU0FoUFQwZ01DQjhmQ0JwSUR3Z2JHVnVaM1JvS1NBbUppQnBkRE1nSVQwOUlDMHhPMXh1SUNBZ0lDQWdJQ0JwZERNdExTd2dhU3NyWEc0Z0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ1kyRnljbmtnS3owZ0tIUm9hWE11WW1GelpTQXFJR0l5TlRaYmFYUXpYU2tnUGo0K0lEQTdYRzRnSUNBZ0lDQWdJR0l5TlRaYmFYUXpYU0E5SUdOaGNuSjVJQ1VnTWpVMklENCtQaUF3TzF4dUlDQWdJQ0FnSUNCallYSnllU0E5SUNoallYSnllU0F2SURJMU5pa2dQajQrSURBN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9ZMkZ5Y25rZ0lUMDlJREFwSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSWs1dmJpMTZaWEp2SUdOaGNuSjVYQ0lwTzF4dVhHNGdJQ0FnSUNCc1pXNW5kR2dnUFNCcE8xeHVJQ0FnSUNBZ2NITjZLeXM3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJRk5yYVhBZ2JHVmhaR2x1WnlCNlpYSnZaWE1nYVc0Z1lqSTFOaTVjYmlBZ0lDQnNaWFFnYVhRMElEMGdjMmw2WlNBdElHeGxibWQwYUR0Y2JpQWdJQ0IzYUdsc1pTQW9hWFEwSUNFOVBTQnphWHBsSUNZbUlHSXlOVFpiYVhRMFhTQTlQVDBnTUNrZ2FYUTBLeXM3WEc1Y2JpQWdJQ0JqYjI1emRDQjJZMmdnUFNCdVpYY2dWV2x1ZERoQmNuSmhlU2g2WlhKdlpYTWdLeUFvYzJsNlpTQXRJR2wwTkNrcE8xeHVJQ0FnSUd4bGRDQnFJRDBnZW1WeWIyVnpPMXh1SUNBZ0lIZG9hV3hsSUNocGREUWdJVDA5SUhOcGVtVXBJSFpqYUZ0cUt5dGRJRDBnWWpJMU5sdHBkRFFySzEwN1hHNWNiaUFnSUNCeVpYUjFjbTRnZG1Ob08xeHVJQ0I5WEc1Y2JpQWdaR1ZqYjJSbEtITnZkWEpqWlRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnWTI5dWMzUWdZblZtWm1WeUlEMGdkR2hwY3k1a1pXTnZaR1ZWYm5OaFptVW9jMjkxY21ObEtUdGNiaUFnSUNCcFppQW9ZblZtWm1WeUtTQnlaWFIxY200Z1luVm1abVZ5TzF4dUlDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNJazV2YmkxaVlYTmxYQ0lnS3lCMGFHbHpMbUpoYzJVZ0t5QmNJaUJqYUdGeVlXTjBaWEpjSWlrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUVOeWVYQjBiMVYwYVd4eklIdGNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dZalU0Wlc1amIyUmxjaUE5SUc1bGR5QkNZWE5sUlc1amIyUmxjaWhDUVZORlgwRk1VRWhCUWtWVUxrSkJVMFUxT0NrN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklISmxZV1J2Ym14NUlHeHZaMmRsY2lBOUlHNWxkeUJOYVc1cFRHOW5aMlZ5S0VOeWVYQjBiMVYwYVd4ekxtNWhiV1VwTzF4dUlDQndjbWwyWVhSbElHTnZibk4wY25WamRHOXlLQ2tnZTMxY2JseHVJQ0J6ZEdGMGFXTWdabUZpY21salNXUkdjbTl0UTJWeWRHbG1hV05oZEdVb1kyVnlkR2xtYVdOaGRHVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIUm9hWE11Ykc5bloyVnlMbVJsWW5WbktITjBjbWx1WjBadmNtMWhkQ2hjSWxCaGNuTnBibWNnWTJWeWRHbG1hV05oZEdVNklIc3dmVndpTENCalpYSjBhV1pwWTJGMFpTa3BPMXh1SUNBZ0lHTnZibk4wSUdObGNuUWdQU0J1WlhjZ2VEVXdPUzVZTlRBNVEyVnlkR2xtYVdOaGRHVW9ZMlZ5ZEdsbWFXTmhkR1VwTzF4dUlDQWdJR052Ym5OMElIc2djM1ZpYW1WamRDd2dhWE56ZFdWeUlIMGdQU0JqWlhKME8xeHVJQ0FnSUhSb2FYTXViRzluWjJWeUxtUmxZblZuS0Z4dUlDQWdJQ0FnYzNSeWFXNW5SbTl5YldGMEtGeHVJQ0FnSUNBZ0lDQmNJa05sY25ScFptbGpZWFJsSUhCaGNuTmxaQ0IzYVhSb0lITjFZbXBsWTNRZ2V6QjlJR0Z1WkNCcGMzTjFaWElnZXpGOVhDSXNYRzRnSUNBZ0lDQWdJSE4xWW1wbFkzUXNYRzRnSUNBZ0lDQWdJR2x6YzNWbGNseHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJR0I0TlRBNU9qb3ZKSHR6ZFdKcVpXTjBMbkpsY0d4aFkyVkJiR3dvWENJc0lGd2lMQ0JjSWk5Y0lpbDlPam92Skh0cGMzTjFaWEl1Y21Wd2JHRmpaVUZzYkNoY0lpd2dYQ0lzSUZ3aUwxd2lLWDFnTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdWdVkyOWtaU2h6ZEhJNklITjBjbWx1WnlrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlqVTRaVzVqYjJSbGNpNWxibU52WkdVb2MzUnlLVHRjYmlBZ2ZWeHVJQ0J6ZEdGMGFXTWdaR1ZqYjJSbEtITjBjam9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQmpiMjV6ZENCa1pXTnZaR1ZrSUQwZ2RHaHBjeTVpTlRobGJtTnZaR1Z5TG1SbFkyOWtaU2h6ZEhJcE8xeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJRzVsZHlCVVpYaDBSR1ZqYjJSbGNpZ3BMbVJsWTI5a1pTaGtaV052WkdWa0tUdGNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJSE4wY21sdVoxUnZRWEp5WVhsQ2RXWm1aWElvYzNSeU9pQnpkSEpwYm1jcElIdGNiaUFnSUNCamIyNXpkQ0JpZFdZZ1BTQnVaWGNnUVhKeVlYbENkV1ptWlhJb2MzUnlMbXhsYm1kMGFDazdYRzRnSUNBZ1kyOXVjM1FnWW5WbVZtbGxkeUE5SUc1bGR5QlZhVzUwT0VGeWNtRjVLR0oxWmlrN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJSE4wY2t4bGJpQTlJSE4wY2k1c1pXNW5kR2c3SUdrZ1BDQnpkSEpNWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnWW5WbVZtbGxkMXRwWFNBOUlITjBjaTVqYUdGeVEyOWtaVUYwS0drcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZblZtTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nWVhONWJtTWdaWGgwY21GamRFdGxlU2hjYmlBZ0lDQjBlWEJsT2lCY0luQnlhWFpoZEdWY0lpQjhJRndpY0hWaWJHbGpYQ0lzWEc0Z0lDQWdjR1Z0T2lCQ2RXWm1aWElnZkNCemRISnBibWNzWEc0Z0lDQWdkWE5oWjJWelB6b2dZVzU1VzExY2JpQWdLU0I3WEc0Z0lDQWdZMjl1YzNRZ2MzVmlkR3hsSUQwZ1kzSjVjSFJ2TG5OMVluUnNaVHRjYmx4dUlDQWdJR052Ym5OMElITjBjaUE5SUhCbGJWeHVJQ0FnSUNBZ0xuUnZVM1J5YVc1bktGd2lkWFJtT0Z3aUtWeHVJQ0FnSUNBZ0xuSmxjR3hoWTJVb1hHNGdJQ0FnSUNBZ0lHNWxkeUJTWldkRmVIQW9ZQzB0TFMwdFFrVkhTVTRnS0NSN2RIbHdaUzUwYjFWd2NHVnlRMkZ6WlNncGZTQkxSVmw4UTBWU1ZFbEdTVU5CVkVVcExTMHRMUzFnS1N4Y2JpQWdJQ0FnSUNBZ1hDSmNJbHh1SUNBZ0lDQWdLVnh1SUNBZ0lDQWdMbkpsY0d4aFkyVkJiR3dvWENKY1hHNWNJaXdnWENKY0lpbGNiaUFnSUNBZ0lDNXlaWEJzWVdObEtGeHVJQ0FnSUNBZ0lDQnVaWGNnVW1WblJYaHdLR0F0TFMwdExVVk9SQ0FvSkh0MGVYQmxMblJ2VlhCd1pYSkRZWE5sS0NsOUlFdEZXWHhEUlZKVVNVWkpRMEZVUlNrdExTMHRMV0FwTEZ4dUlDQWdJQ0FnSUNCY0lsd2lYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUdSbFkyOWtaV1FnUFNCQ2RXWm1aWEl1Wm5KdmJTaHpkSElzSUZ3aVltRnpaVFkwWENJcExuUnZVM1J5YVc1bktGd2lZbWx1WVhKNVhDSXBPMXh1SUNBZ0lHTnZibk4wSUdKcGJtRnllVVJsY2lBOUlIUm9hWE11YzNSeWFXNW5WRzlCY25KaGVVSjFabVpsY2loa1pXTnZaR1ZrS1R0Y2JpQWdJQ0JqYjI1emRDQnJaWGtnUFNCaGQyRnBkQ0J6ZFdKMGJHVXVhVzF3YjNKMFMyVjVLRnh1SUNBZ0lDQWdYQ0p3YTJOek9Gd2lMRnh1SUNBZ0lDQWdZbWx1WVhKNVJHVnlMRnh1SUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0J1WVcxbE9pQmNJa1ZEUkZOQlhDSXNYRzRnSUNBZ0lDQWdJRzVoYldWa1EzVnlkbVU2SUZ3aVVDMHlOVFpjSWl4Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCMGNuVmxMRnh1SUNBZ0lDQWdkWE5oWjJWeklEOGdkWE5oWjJWeklEb2dXMXdpYzJsbmJsd2lYVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2EyVjVPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR0Z6ZVc1aklHVjRkSEpoWTNSUWNtbDJZWFJsUzJWNUtIQmxiVG9nUW5WbVptVnlJSHdnYzNSeWFXNW5MQ0IxYzJGblpYTS9PaUJoYm5sYlhTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVY0ZEhKaFkzUkxaWGtvWENKd2NtbDJZWFJsWENJc0lIQmxiU3dnZFhOaFoyVnpLVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJoYzNsdVl5QmxlSFJ5WVdOMFVIVmliR2xqUzJWNUtIQmxiVG9nUW5WbVptVnlJSHdnYzNSeWFXNW5MQ0IxYzJGblpYTS9PaUJoYm5sYlhTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVY0ZEhKaFkzUkxaWGtvWENKd2RXSnNhV05jSWl3Z2NHVnRMQ0IxYzJGblpYTXBPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR0Z6ZVc1aklITnBaMjRvY0hKcGRtRjBaVXRsZVRvZ2MzUnlhVzVuTENCa1lYUmhPaUJDZFdabVpYSXBPaUJRY205dGFYTmxQSE4wY21sdVp6NGdlMXh1SUNBZ0lHTnZibk4wSUd0bGVTQTlJR0YzWVdsMElIUm9hWE11WlhoMGNtRmpkRkJ5YVhaaGRHVkxaWGtvY0hKcGRtRjBaVXRsZVNrN1hHNGdJQ0FnWTI5dWMzUWdZblZtWmlBOUlDaGhkMkZwZENCamNubHdkRzh1YzNWaWRHeGxMbk5wWjI0b1hHNGdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lHNWhiV1U2SUZ3aVJVTkVVMEZjSWl4Y2JpQWdJQ0FnSUNBZ2FHRnphRG9nWENKVFNFRXRNalUyWENJc1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2EyVjVMRnh1SUNBZ0lDQWdaR0YwWVNCaGN5QmhibmxjYmlBZ0lDQXBLU0JoY3lCQmNuSmhlVUoxWm1abGNqdGNibHh1SUNBZ0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHNWxkeUJWYVc1ME9FRnljbUY1S0dKMVptWXBLVnh1SUNBZ0lDQWdMbTFoY0Nnb1lpa2dQVDRnWWk1MGIxTjBjbWx1WnlneE5pa3VjR0ZrVTNSaGNuUW9NaXdnWENJd1hDSXBLVnh1SUNBZ0lDQWdMbXB2YVc0b1hDSmNJaWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWVhONWJtTWdkbVZ5YVdaNUtGeHVJQ0FnSUdObGNuUnBabWxqWVhSbE9pQnpkSEpwYm1jc1hHNGdJQ0FnYzJsbmJtRjBkWEpsT2lCQ2RXWm1aWElnZkNCemRISnBibWNzWEc0Z0lDQWdaR0YwWVRvZ1FuVm1abVZ5SUh3Z2MzUnlhVzVuWEc0Z0lDazZJRkJ5YjIxcGMyVThZbTl2YkdWaGJqNGdlMXh1SUNBZ0lHTnZibk4wSUdObGNuUWdQU0J1WlhjZ2VEVXdPUzVZTlRBNVEyVnlkR2xtYVdOaGRHVW9ZMlZ5ZEdsbWFXTmhkR1VwTzF4dUlDQWdJR052Ym5OMElHdGxlU0E5SUdGM1lXbDBJR05sY25RdWNIVmliR2xqUzJWNUxtVjRjRzl5ZENncE8xeHVJQ0FnSUhOcFoyNWhkSFZ5WlNBOUlDaGNiaUFnSUNBZ0lIUjVjR1Z2WmlCemFXZHVZWFIxY21VZ1BUMDlJRndpYzNSeWFXNW5YQ0lnUHlCQ2RXWm1aWEl1Wm5KdmJTaHphV2R1WVhSMWNtVXNJRndpYUdWNFhDSXBJRG9nYzJsbmJtRjBkWEpsWEc0Z0lDQWdLU0JoY3lCQ2RXWm1aWEk3WEc0Z0lDQWdaR0YwWVNBOUlDaDBlWEJsYjJZZ1pHRjBZU0E5UFQwZ1hDSnpkSEpwYm1kY0lpQS9JRUoxWm1abGNpNW1jbTl0S0dSaGRHRXBJRG9nWkdGMFlTa2dZWE1nUW5WbVptVnlPMXh1SUNBZ0lISmxkSFZ5YmlCamNubHdkRzh1YzNWaWRHeGxMblpsY21sbWVTaGNiaUFnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdibUZ0WlRvZ1hDSkZRMFJUUVZ3aUxGeHVJQ0FnSUNBZ0lDQm9ZWE5vT2lCY0lsTklRUzB5TlRaY0lpeGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQnJaWGtzWEc0Z0lDQWdJQ0J6YVdkdVlYUjFjbVVnWVhNZ1lXNTVMRnh1SUNBZ0lDQWdaR0YwWVNCaGN5QmhibmxjYmlBZ0lDQXBPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR0Z6ZVc1aklHVnVZM0o1Y0hRb1kyVnlkR2xtYVdOaGRHVTZJSE4wY21sdVp5d2daR0YwWVRvZ2MzUnlhVzVuSUh3Z1FuVm1abVZ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdZMlZ5ZENBOUlHNWxkeUI0TlRBNUxsZzFNRGxEWlhKMGFXWnBZMkYwWlNoalpYSjBhV1pwWTJGMFpTazdYRzRnSUNBZ1kyOXVjM1FnYTJWNUlEMGdZWGRoYVhRZ1kyVnlkQzV3ZFdKc2FXTkxaWGt1Wlhod2IzSjBLQ2s3WEc0Z0lDQWdaR0YwWVNBOUlDaDBlWEJsYjJZZ1pHRjBZU0E5UFQwZ1hDSnpkSEpwYm1kY0lpQS9JRUoxWm1abGNpNW1jbTl0S0dSaGRHRXBJRG9nWkdGMFlTa2dZWE1nUW5WbVptVnlPMXh1SUNBZ0lHTnZibk4wSUdKMVptWWdQU0JoZDJGcGRDQjBhR2x6TG1kbGRGTjFZblJzWlVOeWVYQjBieWdwTG1WdVkzSjVjSFFvWEc0Z0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUc1aGJXVTZJRndpUlVORVUwRmNJaXhjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0JyWlhrc1hHNGdJQ0FnSUNCa1lYUmhYRzRnSUNBZ0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHNWxkeUJWYVc1ME9FRnljbUY1S0dKMVptWXBLVnh1SUNBZ0lDQWdMbTFoY0Nnb1lpa2dQVDRnWWk1MGIxTjBjbWx1WnlneE5pa3VjR0ZrVTNSaGNuUW9NaXdnWENJd1hDSXBLVnh1SUNBZ0lDQWdMbXB2YVc0b1hDSmNJaWs3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJuWlhSVGRXSjBiR1ZEY25sd2RHOG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHbHpRbkp2ZDNObGNpZ3BYRzRnSUNBZ0lDQS9JQ2huYkc5aVlXeFVhR2x6SUdGeklHRnVlU2t1ZDJsdVpHOTNMbU55ZVhCMGJ5NXpkV0owYkdWY2JpQWdJQ0FnSURvZ1kzSjVjSFJ2TG5OMVluUnNaVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJoYzNsdVl5QmtaV055ZVhCMEtIQnlhWFpoZEdWTFpYazZJSE4wY21sdVp5d2daR0YwWVRvZ2MzUnlhVzVuSUh3Z1FuVm1abVZ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdhMlY1SUQwZ1lYZGhhWFFnZEdocGN5NWxlSFJ5WVdOMFVISnBkbUYwWlV0bGVTaHdjbWwyWVhSbFMyVjVLVHRjYmlBZ0lDQmtZWFJoSUQwZ0tGeHVJQ0FnSUNBZ2RIbHdaVzltSUdSaGRHRWdQVDA5SUZ3aWMzUnlhVzVuWENJZ1B5QkNkV1ptWlhJdVpuSnZiU2hrWVhSaExDQmNJbWhsZUZ3aUtTQTZJR1JoZEdGY2JpQWdJQ0FwSUdGeklFSjFabVpsY2p0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1blpYUlRkV0owYkdWRGNubHdkRzhvS1M1a1pXTnllWEIwS0Z4dUlDQWdJQ0FnZTF4dUlDQWdJQ0FnSUNCdVlXMWxPaUJjSWtWRFJGTkJYQ0lzWEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnYTJWNUxGeHVJQ0FnSUNBZ1pHRjBZVnh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhOMWJXMWhjbmtnVlhScGJDQm1kVzVqZEdsdmJpQjBieUJuWlhRZ1lTQnlZVzVrYjIwZ2JXRnpkR1Z5SUd0bGVWeHVJQ0FnS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1NXWWdaR0YwWVNCcGN5QnViM1FnY0dGemMyVmtMQ0JoSUhKaGJtUnZiU0JCY25KaGVVSjFabVpsY2lCM2FXeHNJR0psSUdkbGJtVnlZWFJsWkZ4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRnljbUY1UW5WbVptVnlmU0JrWVhSaElHVnVZM0o1ZEdsdmJpQmtZWFJoWEc0Z0lDQXFYRzRnSUNBcUlFQm1kVzVqZEdsdmJpQm5aWFJOWVhOMFpYSmNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QmhjM2x1WXlCblpYUk5ZWE4wWlhJb1pHRjBZVDg2SUVGeWNtRjVRblZtWm1WeUtUb2dVSEp2YldselpUeHJaWGxQWW1wbFkzUStJSHRjYmlBZ0lDQmpiMjV6ZENCMFpYaDBSVzVqYjJSbGNpQTlJRzVsZHlCVVpYaDBSVzVqYjJSbGNpZ3BPMXh1SUNBZ0lHbG1JQ2hrWVhSaElEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2RsYmtkbGJtVnphWE1nUFNCamNubHdkRzh1Y21GdVpHOXRWVlZKUkNncE8xeHVJQ0FnSUNBZ1pHRjBZU0E5SUhSbGVIUkZibU52WkdWeUxtVnVZMjlrWlNoblpXNUhaVzVsYzJsektTNWlkV1ptWlhJN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdhVzF3YjNKMFpXUkxaWGtnUFNCaGQyRnBkQ0IwYUdsekxtZGxkRk4xWW5Sc1pVTnllWEIwYnlncExtbHRjRzl5ZEV0bGVTaGNiaUFnSUNBZ0lGd2ljbUYzWENJc1hHNGdJQ0FnSUNCa1lYUmhMRnh1SUNBZ0lDQWdRMUpaVUZSUExrdEZXVjlCVEVkUFVsbFVTRTBnWVhNZ2MzUnlhVzVuTEZ4dUlDQWdJQ0FnWm1Gc2MyVXNYRzRnSUNBZ0lDQmJYQ0prWlhKcGRtVkNhWFJ6WENKZFhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0JyWlhrNklHbHRjRzl5ZEdWa1MyVjVMRnh1SUNBZ0lDQWdhWFk2SUdSaGRHRWhMRnh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhOMWJXMWhjbmtnVlhScGJDQm1kVzVqZEdsdmJpQjBieUJrWlhKcGRtVWdZU0JyWlhrZ1puSnZiU0JoYm05MGFHVnlJR3RsZVZ4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyRnNkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwTnllWEIwYjB0bGVYMGdhMlY1SUU5eWFXZHBibUZzSUd0bGVWeHVJQ0FnS2x4dUlDQWdLaUJBWm5WdVkzUnBiMjRnWjJWMFJHVnlhWFpoZEdsdmJrdGxlVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR0Z6ZVc1aklHZGxkRVJsY21sMllYUnBiMjVMWlhrb2MyRnNkRG9nYzNSeWFXNW5MQ0JyWlhrNklFTnllWEIwYjB0bGVTa2dlMXh1SUNBZ0lHTnZibk4wSUhSbGVIUkZibU52WkdWeUlEMGdibVYzSUZSbGVIUkZibU52WkdWeUtDazdYRzRnSUNBZ1kyOXVjM1FnYzJGc2RFSjFabVpsY2lBOUlIUmxlSFJGYm1OdlpHVnlMbVZ1WTI5a1pTaHpZV3gwS1R0Y2JpQWdJQ0JqYjI1emRDQnpZV3gwU0dGemFHVmtJRDBnWVhkaGFYUWdkR2hwY3k1blpYUlRkV0owYkdWRGNubHdkRzhvS1M1a2FXZGxjM1FvWEc0Z0lDQWdJQ0JjSWxOSVFTMHlOVFpjSWl4Y2JpQWdJQ0FnSUhOaGJIUkNkV1ptWlhKY2JpQWdJQ0FwTzF4dUlDQWdJR052Ym5OMElIQmhjbUZ0Y3lBOUlIdGNiaUFnSUNBZ0lHNWhiV1U2SUVOU1dWQlVUeTVMUlZsZlFVeEhUMUpaVkVoTklHRnpJSE4wY21sdVp5eGNiaUFnSUNBZ0lHaGhjMmc2SUVOU1dWQlVUeTVJUVZOSUxGeHVJQ0FnSUNBZ2MyRnNkRG9nYzJGc2RFaGhjMmhsWkN4Y2JpQWdJQ0FnSUdsMFpYSmhkR2x2Ym5NNklFTlNXVkJVVHk1SlZFVlNRVlJKVDA1VExGeHVJQ0FnSUgwN1hHNGdJQ0FnWTI5dWMzUWdaR1Z5YVhaaGRHbHZiaUE5SUdGM1lXbDBJSFJvYVhNdVoyVjBVM1ZpZEd4bFEzSjVjSFJ2S0NrdVpHVnlhWFpsUW1sMGN5aGNiaUFnSUNBZ0lIQmhjbUZ0Y3l4Y2JpQWdJQ0FnSUd0bGVTeGNiaUFnSUNBZ0lFTlNXVkJVVHk1TFJWbE1SVTVIVkVnZ0tpQTRYRzRnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW5aWFJMWlhrb1pHVnlhWFpoZEdsdmJpazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhOMWJXMWhjbmtnVlhScGJDQm1kVzVqZEdsdmJpQjBieUJuWlhRZ2RHaGxJR3RsZVNCaGJtUWdTVllnWm5KdmJTQjBhR1VnUTNKNWRHOUxaWGtnWVhKeVlYbGNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRCY25KaGVVSjFabVpsY24wZ1pHVnlhWFpoZEdsdmJseHVJQ0FnS2x4dUlDQWdLaUJBWm5WdVkzUnBiMjRnWjJWMFMyVjVYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdZWE41Ym1NZ1oyVjBTMlY1S0dSbGNtbDJZWFJwYjI0NklFRnljbUY1UW5WbVptVnlLU0I3WEc0Z0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1YnkxMWJuVnpaV1F0ZG1GeWMxeHVJQ0FnSUdOdmJuTjBJR2wyYkdWdUlEMGdNVFk3WEc0Z0lDQWdZMjl1YzNRZ2EyVjViR1Z1SUQwZ016STdYRzRnSUNBZ1kyOXVjM1FnWkdWeWFYWmxaRXRsZVNBOUlHUmxjbWwyWVhScGIyNHVjMnhwWTJVb01Dd2dhMlY1YkdWdUtUdGNiaUFnSUNCamIyNXpkQ0JwZGlBOUlHUmxjbWwyWVhScGIyNHVjMnhwWTJVb2EyVjViR1Z1S1R0Y2JpQWdJQ0JqYjI1emRDQnBiWEJ2Y25SbFpFVnVZM0o1Y0hScGIyNUxaWGtnUFNCaGQyRnBkQ0IwYUdsekxtZGxkRk4xWW5Sc1pVTnllWEIwYnlncExtbHRjRzl5ZEV0bGVTaGNiaUFnSUNBZ0lGd2ljbUYzWENJc1hHNGdJQ0FnSUNCa1pYSnBkbVZrUzJWNUxGeHVJQ0FnSUNBZ2V5QnVZVzFsT2lCRFVsbFFWRTh1UVV4SFQxSlpWRWhOSUdGeklITjBjbWx1WnlCOUxGeHVJQ0FnSUNBZ1ptRnNjMlVzWEc0Z0lDQWdJQ0JiWENKbGJtTnllWEIwWENJc0lGd2laR1ZqY25sd2RGd2lYVnh1SUNBZ0lDazdYRzRnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUd0bGVUb2dhVzF3YjNKMFpXUkZibU55ZVhCMGFXOXVTMlY1TEZ4dUlDQWdJQ0FnYVhZNklHbDJMRnh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhOMWJXMWhjbmtnVlhScGJDQm1kVzVqZEdsdmJpQjBieUJrWldOeWVYQjBJR1JoZEdGY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUmxlSFJjYmlBZ0lDb2dRSEJoY21GdElIdHJaWGxQWW1wbFkzUjlJR3RsZVU5aWFtVmpkRnh1SUNBZ0tseHVJQ0FnS2lCQVpuVnVZM1JwYjI0Z1pXNWpjbmx3ZEZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdGemVXNWpJR1Z1WTNKNWNIUlFhVzRvWEc0Z0lDQWdkR1Y0ZERvZ2MzUnlhVzVuTEZ4dUlDQWdJR3RsZVU5aWFtVmpkRG9nYTJWNVQySnFaV04wWEc0Z0lDazZJRkJ5YjIxcGMyVThRWEp5WVhsQ2RXWm1aWEkrSUh0Y2JpQWdJQ0JqYjI1emRDQjBaWGgwUlc1amIyUmxjaUE5SUc1bGR5QlVaWGgwUlc1amIyUmxjaWdwTzF4dUlDQWdJR052Ym5OMElIUmxlSFJDZFdabVpYSWdQU0IwWlhoMFJXNWpiMlJsY2k1bGJtTnZaR1VvZEdWNGRDazdYRzRnSUNBZ1kyOXVjM1FnWlc1amNubHdkR1ZrVkdWNGRDQTlJR0YzWVdsMElIUm9hWE11WjJWMFUzVmlkR3hsUTNKNWNIUnZLQ2t1Wlc1amNubHdkQ2hjYmlBZ0lDQWdJSHNnYm1GdFpUb2dRMUpaVUZSUExrRk1SMDlTV1ZSSVRTQmhjeUJ6ZEhKcGJtY3NJR2wyT2lCclpYbFBZbXBsWTNRdWFYWWdmU3hjYmlBZ0lDQWdJR3RsZVU5aWFtVmpkQzVyWlhrc1hHNGdJQ0FnSUNCMFpYaDBRblZtWm1WeVhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaVzVqY25sd2RHVmtWR1Y0ZER0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjM1Z0YldGeWVTQlZkR2xzSUdaMWJtTjBhVzl1SUhSdklHUmxZM0o1Y0hRZ1pHRjBZVnh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTBKMVptWmxjbE52ZFhKalpYMGdaVzVqY25sd2RHVmtWR1Y0ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMnRsZVU5aWFtVmpkSDBnYTJWNVQySnFaV04wWEc0Z0lDQXFYRzRnSUNBcUlFQm1kVzVqZEdsdmJpQmtaV055ZVhCMFhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1lYTjVibU1nWkdWamNubHdkRkJwYmloY2JpQWdJQ0JsYm1OeWVYQjBaV1JVWlhoME9pQkJjbkpoZVVKMVptWmxjaXhjYmlBZ0lDQnJaWGxQWW1wbFkzUTZJR3RsZVU5aWFtVmpkRnh1SUNBcE9pQlFjbTl0YVhObFBITjBjbWx1Wno0Z2UxeHVJQ0FnSUdOdmJuTjBJSFJsZUhSRVpXTnZaR1Z5SUQwZ2JtVjNJRlJsZUhSRVpXTnZaR1Z5S0NrN1hHNGdJQ0FnWTI5dWMzUWdaR1ZqY25sd2RHVmtWR1Y0ZENBOUlHRjNZV2wwSUhSb2FYTXVaMlYwVTNWaWRHeGxRM0o1Y0hSdktDa3VaR1ZqY25sd2RDaGNiaUFnSUNBZ0lIc2dibUZ0WlRvZ1ExSlpVRlJQTGtGTVIwOVNXVlJJVFNCaGN5QnpkSEpwYm1jc0lHbDJPaUJyWlhsUFltcGxZM1F1YVhZZ2ZTeGNiaUFnSUNBZ0lHdGxlVTlpYW1WamRDNXJaWGtzWEc0Z0lDQWdJQ0JsYm1OeWVYQjBaV1JVWlhoMFhHNGdJQ0FnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR1Y0ZEVSbFkyOWtaWEl1WkdWamIyUmxLR1JsWTNKNWNIUmxaRlJsZUhRcE8xeHVJQ0I5WEc1OVhHNGlYWDA9Il19
366
+ //# sourceMappingURL=crypto.js.map
367
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["crypto.js"],"names":[],"mappings":"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"}