@decaf-ts/for-fabric 0.13.30 → 0.13.31-experimental.0

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 (563) hide show
  1. package/dist/for-fabric.cjs +3999 -2
  2. package/dist/for-fabric.js +4109 -2
  3. package/lib/cjs/bin/cli.cjs +2 -2
  4. package/lib/cjs/cli-module.cjs +2 -2
  5. package/lib/cjs/cli-utils.cjs +2 -2
  6. package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
  7. package/lib/cjs/client/FabricClientContext.cjs +2 -2
  8. package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
  9. package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
  10. package/lib/cjs/client/FabricClientRepository.cjs +2 -2
  11. package/lib/cjs/client/FabricClientStatement.cjs +2 -2
  12. package/lib/cjs/client/collections/generation.cjs +2 -2
  13. package/lib/cjs/client/collections/index.cjs +2 -2
  14. package/lib/cjs/client/constants.cjs +2 -2
  15. package/lib/cjs/client/crypto.cjs +2 -2
  16. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
  17. package/lib/cjs/client/erc20/index.cjs +2 -2
  18. package/lib/cjs/client/fabric-fs.cjs +8 -7
  19. package/lib/cjs/client/fabric-hsm.cjs +2 -2
  20. package/lib/cjs/client/ids/id-extraction.cjs +2 -2
  21. package/lib/cjs/client/ids/index.cjs +2 -2
  22. package/lib/cjs/client/index.cjs +2 -2
  23. package/lib/cjs/client/indexes/generation.cjs +2 -2
  24. package/lib/cjs/client/indexes/index.cjs +2 -2
  25. package/lib/cjs/client/logging.cjs +2 -2
  26. package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
  27. package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
  28. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
  29. package/lib/cjs/client/services/constants.cjs +2 -2
  30. package/lib/cjs/client/services/index.cjs +2 -2
  31. package/lib/cjs/client/types.cjs +2 -2
  32. package/lib/cjs/client/utils.cjs +2 -2
  33. package/lib/cjs/contract/Address.cjs +2 -2
  34. package/lib/cjs/contract/AddressContract.cjs +2 -2
  35. package/lib/cjs/contract/AuditContract.cjs +2 -2
  36. package/lib/cjs/contract/BatchContract.cjs +2 -2
  37. package/lib/cjs/contract/MarketContract.cjs +2 -2
  38. package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
  39. package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
  40. package/lib/cjs/contract/OtherLeafletContract.cjs +2 -2
  41. package/lib/cjs/contract/OtherLeafletFileContract.cjs +2 -2
  42. package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
  43. package/lib/cjs/contract/OtherProductContract.cjs +2 -2
  44. package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
  45. package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
  46. package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
  47. package/lib/cjs/contract/Product.cjs +2 -2
  48. package/lib/cjs/contract/ProductContract.cjs +2 -2
  49. package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
  50. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
  51. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
  52. package/lib/cjs/contract/User.cjs +2 -2
  53. package/lib/cjs/contract/UserContract.cjs +2 -2
  54. package/lib/cjs/contract/index.cjs +2 -2
  55. package/lib/cjs/contract/logging-context.cjs +2 -2
  56. package/lib/cjs/contract/models/Audit.cjs +2 -2
  57. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
  58. package/lib/cjs/contract/models/BaseModel.cjs +2 -2
  59. package/lib/cjs/contract/models/Batch.cjs +2 -2
  60. package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
  61. package/lib/cjs/contract/models/History.cjs +2 -2
  62. package/lib/cjs/contract/models/Leaflet.cjs +2 -2
  63. package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
  64. package/lib/cjs/contract/models/Market.cjs +2 -2
  65. package/lib/cjs/contract/models/OtherAudit.cjs +2 -2
  66. package/lib/cjs/contract/models/OtherBatchShared.cjs +2 -2
  67. package/lib/cjs/contract/models/OtherLeaflet.cjs +2 -2
  68. package/lib/cjs/contract/models/OtherLeafletFile.cjs +2 -2
  69. package/lib/cjs/contract/models/OtherMarket.cjs +2 -2
  70. package/lib/cjs/contract/models/OtherProduct.cjs +2 -2
  71. package/lib/cjs/contract/models/OtherProductImage.cjs +2 -2
  72. package/lib/cjs/contract/models/OtherProductShared.cjs +2 -2
  73. package/lib/cjs/contract/models/OtherProductStrength.cjs +2 -2
  74. package/lib/cjs/contract/models/Product.cjs +2 -2
  75. package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
  76. package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
  77. package/lib/cjs/contract/models/constants.cjs +2 -2
  78. package/lib/cjs/contract/models/decorators-private.cjs +2 -2
  79. package/lib/cjs/contract/models/decorators.cjs +2 -2
  80. package/lib/cjs/contract/models/gtin.cjs +2 -2
  81. package/lib/cjs/contract/models/history-dec.cjs +2 -2
  82. package/lib/cjs/contract/trackedModels/History.cjs +2 -2
  83. package/lib/cjs/contract/trackedModels/OtherAudit.cjs +2 -2
  84. package/lib/cjs/contract/trackedModels/OtherBatchShared.cjs +2 -2
  85. package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs +2 -2
  86. package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs +2 -2
  87. package/lib/cjs/contract/trackedModels/OtherMarket.cjs +2 -2
  88. package/lib/cjs/contract/trackedModels/OtherProduct.cjs +2 -2
  89. package/lib/cjs/contract/trackedModels/OtherProductImage.cjs +2 -2
  90. package/lib/cjs/contract/trackedModels/OtherProductShared.cjs +2 -2
  91. package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs +2 -2
  92. package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
  93. package/lib/cjs/contracts/ContractContext.cjs +2 -2
  94. package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
  95. package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
  96. package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
  97. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
  98. package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
  99. package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
  100. package/lib/cjs/contracts/MigrationContract.cjs +4 -3
  101. package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
  102. package/lib/cjs/contracts/auth/decorators.cjs +2 -2
  103. package/lib/cjs/contracts/auth/index.cjs +2 -2
  104. package/lib/cjs/contracts/bootstrap.cjs +2 -2
  105. package/lib/cjs/contracts/crud/crud-contract.cjs +2 -2
  106. package/lib/cjs/contracts/crud/index.cjs +2 -2
  107. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
  108. package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
  109. package/lib/cjs/contracts/erc20/index.cjs +2 -2
  110. package/lib/cjs/contracts/erc20/models.cjs +2 -2
  111. package/lib/cjs/contracts/fabric-overrides.cjs +2 -2
  112. package/lib/cjs/contracts/index.cjs +2 -2
  113. package/lib/cjs/contracts/logging.cjs +2 -2
  114. package/lib/cjs/contracts/overrides.cjs +2 -2
  115. package/lib/cjs/contracts/types.cjs +2 -2
  116. package/lib/cjs/contracts/uuid.cjs +2 -2
  117. package/lib/cjs/index.cjs +2 -2
  118. package/lib/cjs/shared/ClientSerializer.cjs +2 -2
  119. package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
  120. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
  121. package/lib/cjs/shared/constants.cjs +2 -2
  122. package/lib/cjs/shared/decorators.cjs +2 -2
  123. package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
  124. package/lib/cjs/shared/erc20/index.cjs +2 -2
  125. package/lib/cjs/shared/errors.cjs +2 -2
  126. package/lib/cjs/shared/events.cjs +2 -2
  127. package/lib/cjs/shared/fabric-types.cjs +2 -2
  128. package/lib/cjs/shared/index.cjs +2 -2
  129. package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
  130. package/lib/cjs/shared/interfaces/index.cjs +2 -2
  131. package/lib/cjs/shared/math.cjs +2 -2
  132. package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
  133. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
  134. package/lib/cjs/shared/model/Identity.cjs +2 -2
  135. package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
  136. package/lib/cjs/shared/model/index.cjs +2 -2
  137. package/lib/cjs/shared/overrides/Model.cjs +2 -2
  138. package/lib/cjs/shared/overrides/index.cjs +2 -2
  139. package/lib/cjs/shared/overrides/overrides.cjs +2 -2
  140. package/lib/cjs/shared/types.cjs +2 -2
  141. package/lib/cjs/version.cjs +5 -5
  142. package/lib/esm/bin/cli.js +1 -1
  143. package/lib/esm/cli-module.js +1 -1
  144. package/lib/esm/cli-utils.js +1 -1
  145. package/lib/esm/client/FabricClientAdapter.js +1 -1
  146. package/lib/esm/client/FabricClientContext.js +1 -1
  147. package/lib/esm/client/FabricClientDispatch.js +1 -1
  148. package/lib/esm/client/FabricClientPaginator.js +1 -1
  149. package/lib/esm/client/FabricClientRepository.js +1 -1
  150. package/lib/esm/client/FabricClientStatement.js +1 -1
  151. package/lib/esm/client/collections/generation.js +1 -1
  152. package/lib/esm/client/collections/index.js +1 -1
  153. package/lib/esm/client/constants.js +1 -1
  154. package/lib/esm/client/crypto.js +1 -1
  155. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  156. package/lib/esm/client/erc20/index.js +1 -1
  157. package/lib/esm/client/fabric-fs.js +7 -6
  158. package/lib/esm/client/fabric-hsm.js +1 -1
  159. package/lib/esm/client/ids/id-extraction.js +1 -1
  160. package/lib/esm/client/ids/index.js +1 -1
  161. package/lib/esm/client/index.js +1 -1
  162. package/lib/esm/client/indexes/generation.js +1 -1
  163. package/lib/esm/client/indexes/index.js +1 -1
  164. package/lib/esm/client/logging.js +1 -1
  165. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  166. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  167. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  168. package/lib/esm/client/services/constants.js +1 -1
  169. package/lib/esm/client/services/index.js +1 -1
  170. package/lib/esm/client/types.js +1 -1
  171. package/lib/esm/client/utils.js +1 -1
  172. package/lib/esm/contract/Address.js +1 -1
  173. package/lib/esm/contract/AddressContract.js +1 -1
  174. package/lib/esm/contract/AuditContract.js +1 -1
  175. package/lib/esm/contract/BatchContract.js +1 -1
  176. package/lib/esm/contract/MarketContract.js +1 -1
  177. package/lib/esm/contract/OtherAuditContract.js +1 -1
  178. package/lib/esm/contract/OtherBatchContract.js +1 -1
  179. package/lib/esm/contract/OtherLeafletContract.js +1 -1
  180. package/lib/esm/contract/OtherLeafletFileContract.js +1 -1
  181. package/lib/esm/contract/OtherMarketContract.js +1 -1
  182. package/lib/esm/contract/OtherProductContract.js +1 -1
  183. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  184. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  185. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  186. package/lib/esm/contract/Product.js +1 -1
  187. package/lib/esm/contract/ProductContract.js +1 -1
  188. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  189. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  190. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  191. package/lib/esm/contract/User.js +1 -1
  192. package/lib/esm/contract/UserContract.js +1 -1
  193. package/lib/esm/contract/index.js +1 -1
  194. package/lib/esm/contract/logging-context.js +1 -1
  195. package/lib/esm/contract/models/Audit.js +1 -1
  196. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  197. package/lib/esm/contract/models/BaseModel.js +1 -1
  198. package/lib/esm/contract/models/Batch.js +1 -1
  199. package/lib/esm/contract/models/GtinOwner.js +1 -1
  200. package/lib/esm/contract/models/History.js +1 -1
  201. package/lib/esm/contract/models/Leaflet.js +1 -1
  202. package/lib/esm/contract/models/LeafletFile.js +1 -1
  203. package/lib/esm/contract/models/Market.js +1 -1
  204. package/lib/esm/contract/models/OtherAudit.js +1 -1
  205. package/lib/esm/contract/models/OtherBatchShared.js +1 -1
  206. package/lib/esm/contract/models/OtherLeaflet.js +1 -1
  207. package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
  208. package/lib/esm/contract/models/OtherMarket.js +1 -1
  209. package/lib/esm/contract/models/OtherProduct.js +1 -1
  210. package/lib/esm/contract/models/OtherProductImage.js +1 -1
  211. package/lib/esm/contract/models/OtherProductShared.js +1 -1
  212. package/lib/esm/contract/models/OtherProductStrength.js +1 -1
  213. package/lib/esm/contract/models/Product.js +1 -1
  214. package/lib/esm/contract/models/ProductStrength.js +1 -1
  215. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  216. package/lib/esm/contract/models/constants.js +1 -1
  217. package/lib/esm/contract/models/decorators-private.js +1 -1
  218. package/lib/esm/contract/models/decorators.js +1 -1
  219. package/lib/esm/contract/models/gtin.js +1 -1
  220. package/lib/esm/contract/models/history-dec.js +1 -1
  221. package/lib/esm/contract/trackedModels/History.js +1 -1
  222. package/lib/esm/contract/trackedModels/OtherAudit.js +1 -1
  223. package/lib/esm/contract/trackedModels/OtherBatchShared.js +1 -1
  224. package/lib/esm/contract/trackedModels/OtherLeaflet.js +1 -1
  225. package/lib/esm/contract/trackedModels/OtherLeafletFile.js +1 -1
  226. package/lib/esm/contract/trackedModels/OtherMarket.js +1 -1
  227. package/lib/esm/contract/trackedModels/OtherProduct.js +1 -1
  228. package/lib/esm/contract/trackedModels/OtherProductImage.js +1 -1
  229. package/lib/esm/contract/trackedModels/OtherProductShared.js +1 -1
  230. package/lib/esm/contract/trackedModels/OtherProductStrength.js +1 -1
  231. package/lib/esm/contracts/ContractAdapter.js +1 -1
  232. package/lib/esm/contracts/ContractContext.js +1 -1
  233. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  234. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  235. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  236. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  237. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  238. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  239. package/lib/esm/contracts/MigrationContract.js +3 -2
  240. package/lib/esm/contracts/PrivateSequence.js +1 -1
  241. package/lib/esm/contracts/auth/decorators.js +1 -1
  242. package/lib/esm/contracts/auth/index.js +1 -1
  243. package/lib/esm/contracts/bootstrap.js +1 -1
  244. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  245. package/lib/esm/contracts/crud/index.js +1 -1
  246. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  247. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  248. package/lib/esm/contracts/erc20/index.js +1 -1
  249. package/lib/esm/contracts/erc20/models.js +1 -1
  250. package/lib/esm/contracts/fabric-overrides.js +1 -1
  251. package/lib/esm/contracts/index.js +1 -1
  252. package/lib/esm/contracts/logging.js +1 -1
  253. package/lib/esm/contracts/overrides.js +1 -1
  254. package/lib/esm/contracts/types.js +1 -1
  255. package/lib/esm/contracts/uuid.js +1 -1
  256. package/lib/esm/index.js +1 -1
  257. package/lib/esm/shared/ClientSerializer.js +1 -1
  258. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  259. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  260. package/lib/esm/shared/constants.js +1 -1
  261. package/lib/esm/shared/decorators.js +1 -1
  262. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  263. package/lib/esm/shared/erc20/index.js +1 -1
  264. package/lib/esm/shared/errors.js +1 -1
  265. package/lib/esm/shared/events.js +1 -1
  266. package/lib/esm/shared/fabric-types.js +1 -1
  267. package/lib/esm/shared/index.js +1 -1
  268. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  269. package/lib/esm/shared/interfaces/index.js +1 -1
  270. package/lib/esm/shared/math.js +1 -1
  271. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  272. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  273. package/lib/esm/shared/model/Identity.js +1 -1
  274. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  275. package/lib/esm/shared/model/index.js +1 -1
  276. package/lib/esm/shared/overrides/Model.js +1 -1
  277. package/lib/esm/shared/overrides/index.js +1 -1
  278. package/lib/esm/shared/overrides/overrides.js +1 -1
  279. package/lib/esm/shared/types.js +1 -1
  280. package/lib/esm/version.js +4 -4
  281. package/lib/types/version.d.cts +3 -3
  282. package/lib/types/version.d.mts +3 -3
  283. package/package.json +1 -1
  284. package/dist/for-fabric.cjs.map +0 -1
  285. package/dist/for-fabric.js.map +0 -1
  286. package/lib/cjs/bin/cli.cjs.map +0 -1
  287. package/lib/cjs/cli-module.cjs.map +0 -1
  288. package/lib/cjs/cli-utils.cjs.map +0 -1
  289. package/lib/cjs/client/FabricClientAdapter.cjs.map +0 -1
  290. package/lib/cjs/client/FabricClientContext.cjs.map +0 -1
  291. package/lib/cjs/client/FabricClientDispatch.cjs.map +0 -1
  292. package/lib/cjs/client/FabricClientPaginator.cjs.map +0 -1
  293. package/lib/cjs/client/FabricClientRepository.cjs.map +0 -1
  294. package/lib/cjs/client/FabricClientStatement.cjs.map +0 -1
  295. package/lib/cjs/client/collections/generation.cjs.map +0 -1
  296. package/lib/cjs/client/collections/index.cjs.map +0 -1
  297. package/lib/cjs/client/constants.cjs.map +0 -1
  298. package/lib/cjs/client/crypto.cjs.map +0 -1
  299. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +0 -1
  300. package/lib/cjs/client/erc20/index.cjs.map +0 -1
  301. package/lib/cjs/client/fabric-fs.cjs.map +0 -1
  302. package/lib/cjs/client/fabric-hsm.cjs.map +0 -1
  303. package/lib/cjs/client/ids/id-extraction.cjs.map +0 -1
  304. package/lib/cjs/client/ids/index.cjs.map +0 -1
  305. package/lib/cjs/client/index.cjs.map +0 -1
  306. package/lib/cjs/client/indexes/generation.cjs.map +0 -1
  307. package/lib/cjs/client/indexes/index.cjs.map +0 -1
  308. package/lib/cjs/client/logging.cjs.map +0 -1
  309. package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +0 -1
  310. package/lib/cjs/client/services/FabricIdentityService.cjs.map +0 -1
  311. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +0 -1
  312. package/lib/cjs/client/services/constants.cjs.map +0 -1
  313. package/lib/cjs/client/services/index.cjs.map +0 -1
  314. package/lib/cjs/client/types.cjs.map +0 -1
  315. package/lib/cjs/client/utils.cjs.map +0 -1
  316. package/lib/cjs/contract/Address.cjs.map +0 -1
  317. package/lib/cjs/contract/AddressContract.cjs.map +0 -1
  318. package/lib/cjs/contract/AuditContract.cjs.map +0 -1
  319. package/lib/cjs/contract/BatchContract.cjs.map +0 -1
  320. package/lib/cjs/contract/MarketContract.cjs.map +0 -1
  321. package/lib/cjs/contract/OtherAuditContract.cjs.map +0 -1
  322. package/lib/cjs/contract/OtherBatchContract.cjs.map +0 -1
  323. package/lib/cjs/contract/OtherLeafletContract.cjs.map +0 -1
  324. package/lib/cjs/contract/OtherLeafletFileContract.cjs.map +0 -1
  325. package/lib/cjs/contract/OtherMarketContract.cjs.map +0 -1
  326. package/lib/cjs/contract/OtherProductContract.cjs.map +0 -1
  327. package/lib/cjs/contract/OtherProductImageContract.cjs.map +0 -1
  328. package/lib/cjs/contract/OtherProductSharedContract.cjs.map +0 -1
  329. package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +0 -1
  330. package/lib/cjs/contract/Product.cjs.map +0 -1
  331. package/lib/cjs/contract/ProductContract.cjs.map +0 -1
  332. package/lib/cjs/contract/ProductStrengthContract.cjs.map +0 -1
  333. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +0 -1
  334. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +0 -1
  335. package/lib/cjs/contract/User.cjs.map +0 -1
  336. package/lib/cjs/contract/UserContract.cjs.map +0 -1
  337. package/lib/cjs/contract/index.cjs.map +0 -1
  338. package/lib/cjs/contract/logging-context.cjs.map +0 -1
  339. package/lib/cjs/contract/models/Audit.cjs.map +0 -1
  340. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +0 -1
  341. package/lib/cjs/contract/models/BaseModel.cjs.map +0 -1
  342. package/lib/cjs/contract/models/Batch.cjs.map +0 -1
  343. package/lib/cjs/contract/models/GtinOwner.cjs.map +0 -1
  344. package/lib/cjs/contract/models/History.cjs.map +0 -1
  345. package/lib/cjs/contract/models/Leaflet.cjs.map +0 -1
  346. package/lib/cjs/contract/models/LeafletFile.cjs.map +0 -1
  347. package/lib/cjs/contract/models/Market.cjs.map +0 -1
  348. package/lib/cjs/contract/models/OtherAudit.cjs.map +0 -1
  349. package/lib/cjs/contract/models/OtherBatchShared.cjs.map +0 -1
  350. package/lib/cjs/contract/models/OtherLeaflet.cjs.map +0 -1
  351. package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +0 -1
  352. package/lib/cjs/contract/models/OtherMarket.cjs.map +0 -1
  353. package/lib/cjs/contract/models/OtherProduct.cjs.map +0 -1
  354. package/lib/cjs/contract/models/OtherProductImage.cjs.map +0 -1
  355. package/lib/cjs/contract/models/OtherProductShared.cjs.map +0 -1
  356. package/lib/cjs/contract/models/OtherProductStrength.cjs.map +0 -1
  357. package/lib/cjs/contract/models/Product.cjs.map +0 -1
  358. package/lib/cjs/contract/models/ProductStrength.cjs.map +0 -1
  359. package/lib/cjs/contract/models/SegregatedDocument.cjs.map +0 -1
  360. package/lib/cjs/contract/models/constants.cjs.map +0 -1
  361. package/lib/cjs/contract/models/decorators-private.cjs.map +0 -1
  362. package/lib/cjs/contract/models/decorators.cjs.map +0 -1
  363. package/lib/cjs/contract/models/gtin.cjs.map +0 -1
  364. package/lib/cjs/contract/models/history-dec.cjs.map +0 -1
  365. package/lib/cjs/contract/trackedModels/History.cjs.map +0 -1
  366. package/lib/cjs/contract/trackedModels/OtherAudit.cjs.map +0 -1
  367. package/lib/cjs/contract/trackedModels/OtherBatchShared.cjs.map +0 -1
  368. package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs.map +0 -1
  369. package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs.map +0 -1
  370. package/lib/cjs/contract/trackedModels/OtherMarket.cjs.map +0 -1
  371. package/lib/cjs/contract/trackedModels/OtherProduct.cjs.map +0 -1
  372. package/lib/cjs/contract/trackedModels/OtherProductImage.cjs.map +0 -1
  373. package/lib/cjs/contract/trackedModels/OtherProductShared.cjs.map +0 -1
  374. package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs.map +0 -1
  375. package/lib/cjs/contracts/ContractAdapter.cjs.map +0 -1
  376. package/lib/cjs/contracts/ContractContext.cjs.map +0 -1
  377. package/lib/cjs/contracts/FabricContractDispatch.cjs.map +0 -1
  378. package/lib/cjs/contracts/FabricContractPaginator.cjs.map +0 -1
  379. package/lib/cjs/contracts/FabricContractRepository.cjs.map +0 -1
  380. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +0 -1
  381. package/lib/cjs/contracts/FabricContractSequence.cjs.map +0 -1
  382. package/lib/cjs/contracts/FabricContractStatement.cjs.map +0 -1
  383. package/lib/cjs/contracts/MigrationContract.cjs.map +0 -1
  384. package/lib/cjs/contracts/PrivateSequence.cjs.map +0 -1
  385. package/lib/cjs/contracts/auth/decorators.cjs.map +0 -1
  386. package/lib/cjs/contracts/auth/index.cjs.map +0 -1
  387. package/lib/cjs/contracts/bootstrap.cjs.map +0 -1
  388. package/lib/cjs/contracts/crud/crud-contract.cjs.map +0 -1
  389. package/lib/cjs/contracts/crud/index.cjs.map +0 -1
  390. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +0 -1
  391. package/lib/cjs/contracts/erc20/erc20contract.cjs.map +0 -1
  392. package/lib/cjs/contracts/erc20/index.cjs.map +0 -1
  393. package/lib/cjs/contracts/erc20/models.cjs.map +0 -1
  394. package/lib/cjs/contracts/fabric-overrides.cjs.map +0 -1
  395. package/lib/cjs/contracts/index.cjs.map +0 -1
  396. package/lib/cjs/contracts/logging.cjs.map +0 -1
  397. package/lib/cjs/contracts/overrides.cjs.map +0 -1
  398. package/lib/cjs/contracts/types.cjs.map +0 -1
  399. package/lib/cjs/contracts/uuid.cjs.map +0 -1
  400. package/lib/cjs/index.cjs.map +0 -1
  401. package/lib/cjs/shared/ClientSerializer.cjs.map +0 -1
  402. package/lib/cjs/shared/DeterministicSerializer.cjs.map +0 -1
  403. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +0 -1
  404. package/lib/cjs/shared/constants.cjs.map +0 -1
  405. package/lib/cjs/shared/decorators.cjs.map +0 -1
  406. package/lib/cjs/shared/erc20/erc20-constants.cjs.map +0 -1
  407. package/lib/cjs/shared/erc20/index.cjs.map +0 -1
  408. package/lib/cjs/shared/errors.cjs.map +0 -1
  409. package/lib/cjs/shared/events.cjs.map +0 -1
  410. package/lib/cjs/shared/fabric-types.cjs.map +0 -1
  411. package/lib/cjs/shared/index.cjs.map +0 -1
  412. package/lib/cjs/shared/interfaces/Checkable.cjs.map +0 -1
  413. package/lib/cjs/shared/interfaces/index.cjs.map +0 -1
  414. package/lib/cjs/shared/math.cjs.map +0 -1
  415. package/lib/cjs/shared/model/FabricBaseModel.cjs.map +0 -1
  416. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +0 -1
  417. package/lib/cjs/shared/model/Identity.cjs.map +0 -1
  418. package/lib/cjs/shared/model/IdentityCredentials.cjs.map +0 -1
  419. package/lib/cjs/shared/model/index.cjs.map +0 -1
  420. package/lib/cjs/shared/overrides/Model.cjs.map +0 -1
  421. package/lib/cjs/shared/overrides/index.cjs.map +0 -1
  422. package/lib/cjs/shared/overrides/overrides.cjs.map +0 -1
  423. package/lib/cjs/shared/types.cjs.map +0 -1
  424. package/lib/cjs/version.cjs.map +0 -1
  425. package/lib/esm/bin/cli.js.map +0 -1
  426. package/lib/esm/cli-module.js.map +0 -1
  427. package/lib/esm/cli-utils.js.map +0 -1
  428. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  429. package/lib/esm/client/FabricClientContext.js.map +0 -1
  430. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  431. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  432. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  433. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  434. package/lib/esm/client/collections/generation.js.map +0 -1
  435. package/lib/esm/client/collections/index.js.map +0 -1
  436. package/lib/esm/client/constants.js.map +0 -1
  437. package/lib/esm/client/crypto.js.map +0 -1
  438. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  439. package/lib/esm/client/erc20/index.js.map +0 -1
  440. package/lib/esm/client/fabric-fs.js.map +0 -1
  441. package/lib/esm/client/fabric-hsm.js.map +0 -1
  442. package/lib/esm/client/ids/id-extraction.js.map +0 -1
  443. package/lib/esm/client/ids/index.js.map +0 -1
  444. package/lib/esm/client/index.js.map +0 -1
  445. package/lib/esm/client/indexes/generation.js.map +0 -1
  446. package/lib/esm/client/indexes/index.js.map +0 -1
  447. package/lib/esm/client/logging.js.map +0 -1
  448. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  449. package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
  450. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
  451. package/lib/esm/client/services/constants.js.map +0 -1
  452. package/lib/esm/client/services/index.js.map +0 -1
  453. package/lib/esm/client/types.js.map +0 -1
  454. package/lib/esm/client/utils.js.map +0 -1
  455. package/lib/esm/contract/Address.js.map +0 -1
  456. package/lib/esm/contract/AddressContract.js.map +0 -1
  457. package/lib/esm/contract/AuditContract.js.map +0 -1
  458. package/lib/esm/contract/BatchContract.js.map +0 -1
  459. package/lib/esm/contract/MarketContract.js.map +0 -1
  460. package/lib/esm/contract/OtherAuditContract.js.map +0 -1
  461. package/lib/esm/contract/OtherBatchContract.js.map +0 -1
  462. package/lib/esm/contract/OtherLeafletContract.js.map +0 -1
  463. package/lib/esm/contract/OtherLeafletFileContract.js.map +0 -1
  464. package/lib/esm/contract/OtherMarketContract.js.map +0 -1
  465. package/lib/esm/contract/OtherProductContract.js.map +0 -1
  466. package/lib/esm/contract/OtherProductImageContract.js.map +0 -1
  467. package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
  468. package/lib/esm/contract/OtherProductStrengthContract.js.map +0 -1
  469. package/lib/esm/contract/Product.js.map +0 -1
  470. package/lib/esm/contract/ProductContract.js.map +0 -1
  471. package/lib/esm/contract/ProductStrengthContract.js.map +0 -1
  472. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  473. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
  474. package/lib/esm/contract/User.js.map +0 -1
  475. package/lib/esm/contract/UserContract.js.map +0 -1
  476. package/lib/esm/contract/index.js.map +0 -1
  477. package/lib/esm/contract/logging-context.js.map +0 -1
  478. package/lib/esm/contract/models/Audit.js.map +0 -1
  479. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
  480. package/lib/esm/contract/models/BaseModel.js.map +0 -1
  481. package/lib/esm/contract/models/Batch.js.map +0 -1
  482. package/lib/esm/contract/models/GtinOwner.js.map +0 -1
  483. package/lib/esm/contract/models/History.js.map +0 -1
  484. package/lib/esm/contract/models/Leaflet.js.map +0 -1
  485. package/lib/esm/contract/models/LeafletFile.js.map +0 -1
  486. package/lib/esm/contract/models/Market.js.map +0 -1
  487. package/lib/esm/contract/models/OtherAudit.js.map +0 -1
  488. package/lib/esm/contract/models/OtherBatchShared.js.map +0 -1
  489. package/lib/esm/contract/models/OtherLeaflet.js.map +0 -1
  490. package/lib/esm/contract/models/OtherLeafletFile.js.map +0 -1
  491. package/lib/esm/contract/models/OtherMarket.js.map +0 -1
  492. package/lib/esm/contract/models/OtherProduct.js.map +0 -1
  493. package/lib/esm/contract/models/OtherProductImage.js.map +0 -1
  494. package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
  495. package/lib/esm/contract/models/OtherProductStrength.js.map +0 -1
  496. package/lib/esm/contract/models/Product.js.map +0 -1
  497. package/lib/esm/contract/models/ProductStrength.js.map +0 -1
  498. package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
  499. package/lib/esm/contract/models/constants.js.map +0 -1
  500. package/lib/esm/contract/models/decorators-private.js.map +0 -1
  501. package/lib/esm/contract/models/decorators.js.map +0 -1
  502. package/lib/esm/contract/models/gtin.js.map +0 -1
  503. package/lib/esm/contract/models/history-dec.js.map +0 -1
  504. package/lib/esm/contract/trackedModels/History.js.map +0 -1
  505. package/lib/esm/contract/trackedModels/OtherAudit.js.map +0 -1
  506. package/lib/esm/contract/trackedModels/OtherBatchShared.js.map +0 -1
  507. package/lib/esm/contract/trackedModels/OtherLeaflet.js.map +0 -1
  508. package/lib/esm/contract/trackedModels/OtherLeafletFile.js.map +0 -1
  509. package/lib/esm/contract/trackedModels/OtherMarket.js.map +0 -1
  510. package/lib/esm/contract/trackedModels/OtherProduct.js.map +0 -1
  511. package/lib/esm/contract/trackedModels/OtherProductImage.js.map +0 -1
  512. package/lib/esm/contract/trackedModels/OtherProductShared.js.map +0 -1
  513. package/lib/esm/contract/trackedModels/OtherProductStrength.js.map +0 -1
  514. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  515. package/lib/esm/contracts/ContractContext.js.map +0 -1
  516. package/lib/esm/contracts/FabricContractDispatch.js.map +0 -1
  517. package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
  518. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  519. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  520. package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
  521. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  522. package/lib/esm/contracts/MigrationContract.js.map +0 -1
  523. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  524. package/lib/esm/contracts/auth/decorators.js.map +0 -1
  525. package/lib/esm/contracts/auth/index.js.map +0 -1
  526. package/lib/esm/contracts/bootstrap.js.map +0 -1
  527. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  528. package/lib/esm/contracts/crud/index.js.map +0 -1
  529. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  530. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  531. package/lib/esm/contracts/erc20/index.js.map +0 -1
  532. package/lib/esm/contracts/erc20/models.js.map +0 -1
  533. package/lib/esm/contracts/fabric-overrides.js.map +0 -1
  534. package/lib/esm/contracts/index.js.map +0 -1
  535. package/lib/esm/contracts/logging.js.map +0 -1
  536. package/lib/esm/contracts/overrides.js.map +0 -1
  537. package/lib/esm/contracts/types.js.map +0 -1
  538. package/lib/esm/contracts/uuid.js.map +0 -1
  539. package/lib/esm/index.js.map +0 -1
  540. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  541. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  542. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  543. package/lib/esm/shared/constants.js.map +0 -1
  544. package/lib/esm/shared/decorators.js.map +0 -1
  545. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  546. package/lib/esm/shared/erc20/index.js.map +0 -1
  547. package/lib/esm/shared/errors.js.map +0 -1
  548. package/lib/esm/shared/events.js.map +0 -1
  549. package/lib/esm/shared/fabric-types.js.map +0 -1
  550. package/lib/esm/shared/index.js.map +0 -1
  551. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  552. package/lib/esm/shared/interfaces/index.js.map +0 -1
  553. package/lib/esm/shared/math.js.map +0 -1
  554. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  555. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  556. package/lib/esm/shared/model/Identity.js.map +0 -1
  557. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  558. package/lib/esm/shared/model/index.js.map +0 -1
  559. package/lib/esm/shared/overrides/Model.js.map +0 -1
  560. package/lib/esm/shared/overrides/index.js.map +0 -1
  561. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  562. package/lib/esm/shared/types.js.map +0 -1
  563. package/lib/esm/version.js.map +0 -1
@@ -335,5 +335,5 @@ class FabricContractSequence extends core_1.Sequence {
335
335
  }
336
336
  }
337
337
  exports.FabricContractSequence = FabricContractSequence;
338
- //# sourceMappingURL=FabricContractSequence.js.map
339
- //# sourceMappingURL=FabricContractSequence.js.map
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RTZXF1ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdHMvRmFicmljQ29udHJhY3RTZXF1ZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUlMLFFBQVEsRUFDUixhQUFhLEVBRWIsTUFBTSxFQUNOLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFFBQVE7SUFDbEQ7OztPQUdHO0lBQ0gsWUFBWSxPQUF3QixFQUFFLE9BQStCO1FBQ25FLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ00sS0FBSyxDQUFDLE9BQU8sQ0FDcEIsR0FBRyxJQUE2QjtRQUVoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ25CLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FDbEQsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLElBQUksYUFBa0IsQ0FBQztRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUksR0FBNkIsQ0FBQyxzQkFBc0IsQ0FDdkUsTUFBTSxDQUFD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Q2hGLDhGQUE4RjtRQUM5RixNQUFNLFdBQVcsR0FBSSxHQUE2QixDQUFDLHNCQUFzQixDQUN2RSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUNmLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQztRQUVELDBGQUEwRjtRQUMxRixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ2xFLEdBQUcsQ0FBQyxJQUFJLENBQ04sd0JBQXdCLEdBQUcsQ0FBQyxFQUFFLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLDRCQUE0QixXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNwSSxDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIENvbnRleHQsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgU2VxdWVuY2UsXG4gIFNlcXVlbmNlTW9kZWwsXG4gIFNlcXVlbmNlT3B0aW9ucyxcbiAgU2VyaWFsLFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0Q29udGV4dCB9IGZyb20gXCIuL0NvbnRyYWN0Q29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgfSBmcm9tIFwiLi9Db250cmFjdEFkYXB0ZXJcIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIGZyYW1ld29yayBmb3IgZ2VuZXJhdGluZyBzZXF1ZW50aWFsIHZhbHVlcyAobGlrZSBwcmltYXJ5IGtleXMpIGluIHRoZSBwZXJzaXN0ZW5jZSBsYXllci5cbiAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGNsYXNzIGhhbmRsZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyBzZXF1ZW5jZXMgYXJlIHN0b3JlZCBhbmQgaW5jcmVtZW50ZWQgaW4gZGlmZmVyZW50XG4gKiBkYXRhYmFzZSBzeXN0ZW1zLlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0b3JcbiAqIEBjbGFzcyBTZXF1ZW5jZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGEgc3BlY2lmaWMgZGF0YWJhc2VcbiAqIGNsYXNzIFBvc3RncmVzU2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gKiAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge1xuICogICAgIHN1cGVyKG9wdGlvbnMpO1xuICogICB9XG4gKlxuICogICBhc3luYyBuZXh0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IG5leHQgdmFsdWUgZnJvbSBQb3N0Z3JlU1FMIHNlcXVlbmNlXG4gKiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLmV4ZWN1dG9yLnJhdyhgU0VMRUNUIG5leHR2YWwoJyR7dGhpcy5vcHRpb25zLm5hbWV9JylgKTtcbiAqICAgICByZXR1cm4gcGFyc2VJbnQocmVzdWx0LnJvd3NbMF0ubmV4dHZhbCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgY3VycmVudCB2YWx1ZSBmcm9tIFBvc3RncmVTUUwgc2VxdWVuY2VcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZXhlY3V0b3IucmF3KGBTRUxFQ1QgY3VycnZhbCgnJHt0aGlzLm9wdGlvbnMubmFtZX0nKWApO1xuICogICAgIHJldHVybiBwYXJzZUludChyZXN1bHQucm93c1swXS5jdXJydmFsKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgYSByYW5nZSBvZiB2YWx1ZXNcbiAqICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gKiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gKiAgICAgICB2YWx1ZXMucHVzaChhd2FpdCB0aGlzLm5leHQoKSk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB2YWx1ZXM7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBVc2FnZVxuICogY29uc3Qgc2VxdWVuY2UgPSBuZXcgUG9zdGdyZXNTZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICd1c2VyX2lkX3NlcScsXG4gKiAgIGV4ZWN1dG9yOiBkYkV4ZWN1dG9yXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0NvbnRyYWN0U2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBzZXF1ZW5jZSBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBQcm90ZWN0ZWQgY29uc3RydWN0b3IgdGhhdCBpbml0aWFsaXplcyB0aGUgc2VxdWVuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2VxdWVuY2VPcHRpb25zLCBhZGFwdGVyOiBBZGFwdGVyPGFueSwgYW55LCBhbnk+KSB7XG4gICAgc3VwZXIob3B0aW9ucywgYWRhcHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgR2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UgZnJvbSBzdG9yYWdlLiBJZiB0aGUgc2VxdWVuY2VcbiAgICogZG9lc24ndCBleGlzdCB5ZXQsIGl0IHJldHVybnMgdGhlIGNvbmZpZ3VyZWQgc3RhcnRpbmcgdmFsdWUuXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWVcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGN1cnJlbnQoXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBPcGVyYXRpb25LZXlzLlJFQUQsIHRydWUpXG4gICAgKS5mb3IodGhpcy5jdXJyZW50KTtcbiAgICBsZXQgY2FjaGVkQ3VycmVudDogYW55O1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhcnRXaXRoIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgYWRhcHRlck1ldGEgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihcbiAgICAgIFN0cmluZyhuYW1lKVxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGNhY2hlZEN1cnJlbnQgPSBjdHguZ2V0RnJvbUNoaWxkcmVuKG5hbWUgYXMgYW55KTtcbiAgICAgIGlmIChjYWNoZWRDdXJyZW50ICE9PSB1bmRlZmluZWQgJiYgY2FjaGVkQ3VycmVudCAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UoY2FjaGVkQ3VycmVudCk7XG4gICAgICBjb25zdCBzZXF1ZW5jZTogU2VxdWVuY2VNb2RlbCA9IGF3YWl0IHRoaXMucmVwby5yZWFkKG5hbWUgYXMgc3RyaW5nLCBjdHgpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIC8vIElmIHRoZSBzZXF1ZW5jZSBpcyBzdXBwb3NlZCB0byBsaXZlIGluIHByaXZhdGUvc2hhcmVkIGNvbGxlY3Rpb25zLFxuICAgICAgICAvLyByZWFkIGl0IGZyb20gdGhvc2UgY29sbGVjdGlvbnMgdXNpbmcgdGhlIGFkYXB0ZXIgKG5vdCB0aGUgc3R1YiBkaXJlY3RseSkuXG4gICAgICAgIGlmIChhZGFwdGVyTWV0YT8uY29sbGVjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXIgYXMgdW5rbm93biBhcyBGYWJyaWNDb250cmFjdEFkYXB0ZXI7XG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKFNlcXVlbmNlTW9kZWwgYXMgYW55KTtcbiAgICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkoXG4gICAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgICBbU3RyaW5nKG5hbWUpXVxuICAgICAgICAgICk7XG4gICAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgYWRhcHRlck1ldGEuY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByaXZhdGVBZGFwdGVyID0gYWRhcHRlci5mb3JQcml2YXRlKGNvbCk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IChwcml2YXRlQWRhcHRlciBhcyBhbnkpLnJlYWRTdGF0ZShcbiAgICAgICAgICAgICAgICBwdWJsaWNLZXksXG4gICAgICAgICAgICAgICAgY3R4IGFzIGFueVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAocmF3ICYmIHJhdy5jdXJyZW50ICE9PSB1bmRlZmluZWQgJiYgcmF3LmN1cnJlbnQgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UocmF3LmN1cnJlbnQgYXMgYW55KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoIHRvIHJlZ3VsYXIgc3RhcnRXaXRoIGZhbGxiYWNrIGZvciBhbnkgcGFyc2UvSU8gZXJyb3JzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgICAgYFRyeWluZyB0byByZXNvbHZlIGN1cnJlbnQgc2VxdWVuY2UgJHtuYW1lfSB2YWx1ZSBmcm9tIGNvbnRleHQgdHJlZWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNhY2hlZEN1cnJlbnQgPSBjdHguZ2V0RnJvbUNoaWxkcmVuKG5hbWUgYXMgYW55KTtcbiAgICAgICAgICBpZiAoY2FjaGVkQ3VycmVudCAhPT0gdW5kZWZpbmVkICYmIGNhY2hlZEN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgICAgICAgYFJldHJpZXZlZCBjYWNoZWQgY3VycmVudCB2YWx1ZSBmb3Igc2VxdWVuY2UgJHtuYW1lfTogJHtjYWNoZWRDdXJyZW50fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGlmIChjYWNoZWRDdXJyZW50ID09PSB1bmRlZmluZWQgfHwgY2FjaGVkQ3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIGxvZy5pbmZvKGBObyBjYWNoZWQgdmFsdWUgZm9yIHNlcXVlbmNlICR7bmFtZX0gaW4gY29udGV4dGApO1xuICAgICAgICAgIGNhY2hlZEN1cnJlbnQgPSBzdGFydFdpdGg7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShjYWNoZWRDdXJyZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIGluaXRpYWwgdmFsdWUgZm9yIHNlcXVlbmNlICR7c3RhcnRXaXRofTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluY3JlbWVudHMgdGhlIHNlcXVlbmNlIHZhbHVlXG4gICAqIEBzdW1tYXJ5IEluY3JlYXNlcyB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZSBieSB0aGUgc3BlY2lmaWVkIGFtb3VudCBhbmQgcGVyc2lzdHNcbiAgICogdGhlIG5ldyB2YWx1ZSB0byBzdG9yYWdlLiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggbnVtZXJpYyBhbmQgQmlnSW50IHNlcXVlbmNlIHR5cGVzLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IGJpZ2ludH0gY3VycmVudCAtIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW2NvdW50XSAtIE9wdGlvbmFsIGFtb3VudCB0byBpbmNyZW1lbnQgYnksIGRlZmF1bHRzIHRvIHRoZSBzZXF1ZW5jZSdzIGluY3JlbWVudEJ5IHZhbHVlXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBzZXF1ZW5jZSB2YWx1ZSBhZnRlciBpbmNyZW1lbnRpbmdcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBpbmNyZW1lbnQoXG4gICAgY291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBjdHg6IENvbnRleHQ8YW55PlxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMuaW5jcmVtZW50KTtcbiAgICBjb25zdCB7IHR5cGUsIGluY3JlbWVudEJ5LCBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgaWYgKCFuYW1lKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNlcXVlbmNlIG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gICAgbG9nLmluZm8oYE9idGFpbmluZyBzZXF1ZW5jZSBsb2NrIGZvciBzZXF1ZW5jZSAke25hbWV9YCk7XG4gICAgLy8gcmV0dXJuIEZhYnJpY0NvbnRyYWN0U2VxdWVuY2UubG9jay5leGVjdXRlKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0b0luY3JlbWVudEJ5ID0gY291bnQgfHwgaW5jcmVtZW50Qnk7XG4gICAgaWYgKHRvSW5jcmVtZW50QnkgJSBpbmNyZW1lbnRCeSAhPT0gMClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgVmFsdWUgdG8gaW5jcmVtZW50IGRvZXMgbm90IGNvbnNpZGVyIHRoZSBpbmNyZW1lbnRCeSBzZXR0aW5nOiAke2luY3JlbWVudEJ5fWBcbiAgICAgICk7XG4gICAgY29uc3QgdHlwZU5hbWUgPVxuICAgICAgdHlwZW9mIHR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiAodHlwZSBhcyBhbnkpPy5uYW1lXG4gICAgICAgID8gKHR5cGUgYXMgYW55KS5uYW1lXG4gICAgICAgIDogdHlwZTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBhd2FpdCB0aGlzLmN1cnJlbnQoY3R4KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJldHVybkFuZENhY2hlKHJlczogU2VxdWVuY2VNb2RlbCB8IFByb21pc2U8U2VxdWVuY2VNb2RlbD4pIHtcbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSByZXMgPSBhd2FpdCByZXM7XG4gICAgICBsb2dcbiAgICAgICAgLmZvcihyZXR1cm5BbmRDYWNoZSlcbiAgICAgICAgLmluZm8oYFN0b3JpbmcgbmV3ICR7bmFtZX0gc2VxIHZhbHVlIGluIGNhY2hlOiAke3Jlcy5jdXJyZW50fWApO1xuICAgICAgY3R4LmNhY2hlLnB1dChuYW1lIGFzIHN0cmluZywgcmVzLmN1cnJlbnQpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb25zdCBwZXJmb3JtVXBzZXJ0ID0gYXN5bmMgKFxuICAgICAgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICAgKTogUHJvbWlzZTxTZXF1ZW5jZU1vZGVsPiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmV0dXJuQW5kQ2FjaGUoXG4gICAgICAgICAgdGhpcy5yZXBvLnVwZGF0ZShuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLCBjdHgpXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJldHVybkFuZENhY2hlKFxuICAgICAgICAgICAgdGhpcy5yZXBvLmNyZWF0ZShcbiAgICAgICAgICAgICAgbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSxcbiAgICAgICAgICAgICAgY3R4XG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBpbmNyZW1lbnRTZXJpYWwgPSBhc3luYyAoXG4gICAgICBiYXNlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4gPT4ge1xuICAgICAgc3dpdGNoICh0eXBlTmFtZSkge1xuICAgICAgICBjYXNlIE51bWJlci5uYW1lOlxuICAgICAgICAgIHJldHVybiAodGhpcy5wYXJzZShiYXNlKSBhcyBudW1iZXIpICsgdG9JbmNyZW1lbnRCeTtcbiAgICAgICAgY2FzZSBCaWdJbnQubmFtZTpcbiAgICAgICAgICByZXR1cm4gKHRoaXMucGFyc2UoYmFzZSkgYXMgYmlnaW50KSArIEJpZ0ludCh0b0luY3JlbWVudEJ5KTtcbiAgICAgICAgY2FzZSBTdHJpbmcubmFtZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShiYXNlKTtcbiAgICAgICAgY2FzZSBcInNlcmlhbFwiOlxuICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgICBTZXJpYWwuaW5zdGFuY2UuZ2VuZXJhdGUoYmFzZSBhcyBzdHJpbmcpXG4gICAgICAgICAgKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIENoZWNrIGlmIG1vZGVsIGlzIGZ1bGx5IHNlZ3JlZ2F0ZWQg4oCUIHNlcXVlbmNlIGdvZXMgT05MWSB0byBwcml2YXRlIGNvbGxlY3Rpb25zLlxuICAgIC8vIFByZWZlciB0aGUgZXhwbGljaXQgcGVyLXNlcXVlbmNlIG1ldGFkYXRhIHdoZW4gYXZhaWxhYmxlOyBvdGhlcndpc2UgZmFsbCBiYWNrIHRvXG4gICAgLy8gdGhlIGNvbnRleHQncyByZWdpc3RlcmVkIHJlYWQgY29sbGVjdGlvbnMgKGNvdmVycyBlYXJseSBwayBnZW5lcmF0aW9uIHBhdGhzKS5cbiAgICBjb25zdCBhZGFwdGVyTWV0YSA9IChjdHggYXMgRmFicmljQ29udHJhY3RDb250ZXh0KS5nZXRTZXF1ZW5jZVNlZ3JlZ2F0aW9uKFxuICAgICAgbmFtZVxuICAgICk7XG4gICAgY29uc3QgZmFsbGJhY2tDb2xsZWN0aW9ucyA9IChjdHggYXMgRmFicmljQ29udHJhY3RDb250ZXh0KVxuICAgICAgLmdldFJlYWRDb2xsZWN0aW9ucygpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IGVmZmVjdGl2ZUNvbGxlY3Rpb25zID1cbiAgICAgIGFkYXB0ZXJNZXRhPy5jb2xsZWN0aW9ucz8ubGVuZ3RoID8gYWRhcHRlck1ldGEuY29sbGVjdGlvbnMgOiBmYWxsYmFja0NvbGxlY3Rpb25zO1xuICAgIGNvbnN0IGVmZmVjdGl2ZUZ1bGx5U2VncmVnYXRlZCA9XG4gICAgICAoYWRhcHRlck1ldGE/LmZ1bGx5U2VncmVnYXRlZCA/PyAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuaXNGdWxseVNlZ3JlZ2F0ZWQpICYmXG4gICAgICBlZmZlY3RpdmVDb2xsZWN0aW9ucy5sZW5ndGggPiAwO1xuXG4gICAgbGV0IG5leHQ6IGFueTtcbiAgICBpZiAodHlwZU5hbWUgPT09IFwidXVpZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgYHV1aWQgcGsgZ2VuZXJhdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB1c2luZyBAdXVpZCBhbmQgYSBkZXRlcm1pbmlzdGljIHNlZWRgXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0ID0gYXdhaXQgaW5jcmVtZW50U2VyaWFsKGN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGVmZmVjdGl2ZUZ1bGx5U2VncmVnYXRlZCkge1xuICAgICAgY29uc3Qgc2VxTW9kZWwgPSBuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pO1xuICAgICAgYXdhaXQgdGhpcy53cml0ZVNlcXVlbmNlVG9Db2xsZWN0aW9ucyhcbiAgICAgICAgY3R4LFxuICAgICAgICBzZXFNb2RlbCxcbiAgICAgICAgZWZmZWN0aXZlQ29sbGVjdGlvbnNcbiAgICAgICk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBTZXF1ZW5jZS5pbmNyZW1lbnQgKHByaXZhdGUtb25seSkgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudFZhbHVlIGFzIGFueX0gbmV4dD0ke25leHQgYXMgYW55fWBcbiAgICAgICk7XG4gICAgICBjdHguY2FjaGUucHV0KG5hbWUgYXMgc3RyaW5nLCBuZXh0KTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH1cblxuICAgIGNvbnN0IHNlcSA9IGF3YWl0IHBlcmZvcm1VcHNlcnQobmV4dCk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYFNlcXVlbmNlLmluY3JlbWVudCAke25hbWV9IGN1cnJlbnQ9JHtjdXJyZW50VmFsdWUgYXMgYW55fSBuZXh0PSR7bmV4dCBhcyBhbnl9YFxuICAgICk7XG5cbiAgICAvLyBSZXBsaWNhdGUgc2VxdWVuY2UgdG8gc2VncmVnYXRlZCBjb2xsZWN0aW9ucyBpZiBtb2RlbCB1c2VzIHByaXZhdGUvc2hhcmVkIGRhdGEuXG4gICAgLy8gV2hlbiBtZXRhZGF0YSBpc24ndCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byB0aGUgY29udGV4dCdzIHJlZ2lzdGVyZWQgcmVhZCBjb2xsZWN0aW9ucy5cbiAgICBpZiAoZWZmZWN0aXZlQ29sbGVjdGlvbnMubGVuZ3RoKSB7XG4gICAgICBhd2FpdCB0aGlzLndyaXRlU2VxdWVuY2VUb0NvbGxlY3Rpb25zKGN0eCwgc2VxLCBlZmZlY3RpdmVDb2xsZWN0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcS5jdXJyZW50IGFzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgICAvLyB9LCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRW5zdXJlcyB0aGUgc2VxdWVuY2UgZXhpc3RzIGFuZCBpcyBhdCBsZWFzdCBhIGdpdmVuIHZhbHVlXG4gICAqIEBzdW1tYXJ5IEZhYnJpYyBuZWVkcyB0byByZXNwZWN0IHNlZ3JlZ2F0ZWQvcHJpdmF0ZS9zaGFyZWQgc3RvcmFnZSBydWxlcyB3aGVuIGNyZWF0aW5nXG4gICAqIHNlcXVlbmNlcyAoZm9yIGV4YW1wbGUgZm9yIHBlcnNpc3RlbnQgQHZlcnNpb24odHJ1ZSkgYW5kIEBzZXF1ZW5jZSgpKS5cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGVuc3VyZUF0TGVhc3QoXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuVVBEQVRFLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuZW5zdXJlQXRMZWFzdCk7XG4gICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgaWYgKCFuYW1lKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNlcXVlbmNlIG5hbWUgaXMgcmVxdWlyZWRcIik7XG5cbiAgICBjb25zdCBkZXNpcmVkID0gdGhpcy5wYXJzZSh2YWx1ZSk7XG5cbiAgICBjb25zdCBncmVhdGVyVGhhbiA9IChcbiAgICAgIGE6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAgIGI6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICAgICk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhID09PSBcImJpZ2ludFwiIHx8IHR5cGVvZiBiID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQoYSBhcyBhbnkpID4gQmlnSW50KGIgYXMgYW55KTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgYiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gTnVtYmVyKGEpID4gTnVtYmVyKGIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFN0cmluZyhhKSA+IFN0cmluZyhiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWRhcHRlck1ldGEgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihcbiAgICAgIFN0cmluZyhuYW1lKVxuICAgICk7XG4gICAgY29uc3QgaXNGdWxseVNlZ3JlZ2F0ZWQgPVxuICAgICAgYWRhcHRlck1ldGEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWRhcHRlck1ldGEuZnVsbHlTZWdyZWdhdGVkICYmXG4gICAgICBhZGFwdGVyTWV0YS5jb2xsZWN0aW9ucy5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgcmVhZEV4aXN0aW5nID0gYXN5bmMgKCk6IFByb21pc2U8U2VxdWVuY2VNb2RlbCB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby5yZWFkKG5hbWUgYXMgc3RyaW5nLCBjdHgpO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgd3JpdGVQcml2YXRlID0gYXN5bmMgKFxuICAgICAgc2VxTW9kZWw6IFNlcXVlbmNlTW9kZWwsXG4gICAgICBjb2xsZWN0aW9uczogc3RyaW5nW11cbiAgICApID0+IHtcbiAgICAgIGF3YWl0IHRoaXMud3JpdGVTZXF1ZW5jZVRvQ29sbGVjdGlvbnMoY3R4LCBzZXFNb2RlbCwgY29sbGVjdGlvbnMpO1xuICAgICAgY3R4LmNhY2hlLnB1dChuYW1lIGFzIHN0cmluZywgc2VxTW9kZWwuY3VycmVudCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwc2VydFB1YmxpYyA9IGFzeW5jIChuZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlcG8udXBkYXRlKFxuICAgICAgICAgIG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IG5leHQgfSksXG4gICAgICAgICAgY3R4XG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby5jcmVhdGUoXG4gICAgICAgICAgICBuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRFeGlzdGluZygpO1xuICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgIGNvbnN0IHNlcU1vZGVsID0gbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogZGVzaXJlZCB9KTtcbiAgICAgIGlmIChpc0Z1bGx5U2VncmVnYXRlZCkge1xuICAgICAgICBhd2FpdCB3cml0ZVByaXZhdGUoc2VxTW9kZWwsIGFkYXB0ZXJNZXRhIS5jb2xsZWN0aW9ucyk7XG4gICAgICAgIHJldHVybiBkZXNpcmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IHVwc2VydFB1YmxpYyhkZXNpcmVkKTtcbiAgICAgIGF3YWl0IHRoaXMucmVwbGljYXRlVG9TZWdyZWdhdGVkQ29sbGVjdGlvbnMoY3R4LCBjcmVhdGVkKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlKGNyZWF0ZWQuY3VycmVudCBhcyBhbnkpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnBhcnNlKGV4aXN0aW5nLmN1cnJlbnQgYXMgYW55KTtcbiAgICBpZiAoIWdyZWF0ZXJUaGFuKGRlc2lyZWQsIGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG5cbiAgICBjb25zdCBzZXFNb2RlbCA9IG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IGRlc2lyZWQgfSk7XG4gICAgaWYgKGlzRnVsbHlTZWdyZWdhdGVkKSB7XG4gICAgICBhd2FpdCB3cml0ZVByaXZhdGUoc2VxTW9kZWwsIGFkYXB0ZXJNZXRhIS5jb2xsZWN0aW9ucyk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBTZXF1ZW5jZS5lbnN1cmVBdExlYXN0IChwcml2YXRlLW9ubHkpICR7bmFtZX0gY3VycmVudD0ke2N1cnJlbnQgYXMgYW55fSBkZXNpcmVkPSR7ZGVzaXJlZCBhcyBhbnl9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiBkZXNpcmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cHNlcnRQdWJsaWMoZGVzaXJlZCk7XG4gICAgYXdhaXQgdGhpcy5yZXBsaWNhdGVUb1NlZ3JlZ2F0ZWRDb2xsZWN0aW9ucyhjdHgsIHVwZGF0ZWQpO1xuICAgIHJldHVybiB0aGlzLnBhcnNlKHVwZGF0ZWQuY3VycmVudCBhcyBhbnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBsaWNhdGVzIHRoZSBzZXF1ZW5jZSB0byBhbGwgc2VncmVnYXRlZCBjb2xsZWN0aW9uc1xuICAgKiBAc3VtbWFyeSBXaGVuIGEgbW9kZWwgdXNlcyBwcml2YXRlRGF0YSBvciBzaGFyZWREYXRhIGRlY29yYXRvcnMsIGl0cyBzZXF1ZW5jZSBtdXN0IGJlXG4gICAqIHJlcGxpY2F0ZWQgdG8gYWxsIGNvbGxlY3Rpb25zIHRoZSBtb2RlbCBpcyBzdG9yZWQgaW4uIFRoaXMgZW5zdXJlcyBjbGllbnRzIHdpdGggYWNjZXNzXG4gICAqIHRvIG9ubHkgb25lIGNvbGxlY3Rpb24gY2FuIHN0aWxsIHJlYWQgdGhlIG1vZGVsJ3Mgc2VxdWVuY2UsIHdoaWxlIGNsaWVudHMgd2l0aG91dFxuICAgKiBhY2Nlc3MgdG8gYW55IGNvbGxlY3Rpb24gd29uJ3Qgc2VlIHRoZSBzZXF1ZW5jZSBvbiB0aGUgcHVibGljIGNoYWluLlxuICAgKiBAcGFyYW0ge0NvbnRleHQ8YW55Pn0gY3R4IC0gVGhlIGV4ZWN1dGlvbiBjb250ZXh0XG4gICAqIEBwYXJhbSB7U2VxdWVuY2VNb2RlbH0gc2VxIC0gVGhlIHNlcXVlbmNlIG1vZGVsIHRvIHJlcGxpY2F0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB3cml0ZVNlcXVlbmNlVG9Db2xsZWN0aW9ucyhcbiAgICBjdHg6IENvbnRleHQ8YW55PixcbiAgICBzZXE6IFNlcXVlbmNlTW9kZWwsXG4gICAgY29sbGVjdGlvbnM6IHN0cmluZ1tdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMud3JpdGVTZXF1ZW5jZVRvQ29sbGVjdGlvbnMpO1xuICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXIgYXMgdW5rbm93biBhcyBGYWJyaWNDb250cmFjdEFkYXB0ZXI7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKFNlcXVlbmNlTW9kZWwgYXMgYW55KTtcbiAgICBjb25zdCBjb21wb3NlZEtleSA9IChjdHggYXMgRmFicmljQ29udHJhY3RDb250ZXh0KS5zdHViLmNyZWF0ZUNvbXBvc2l0ZUtleShcbiAgICAgIHRhYmxlTmFtZSxcbiAgICAgIFtTdHJpbmcoc2VxLmlkKV1cbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcml2YXRlQWRhcHRlciA9IGFkYXB0ZXIuZm9yUHJpdmF0ZShjb2xsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcmVjb3JkID0ge1xuICAgICAgICAgIFtDb3VjaERCS2V5cy5UQUJMRV06IHRhYmxlTmFtZSxcbiAgICAgICAgICBpZDogc2VxLmlkLFxuICAgICAgICAgIGN1cnJlbnQ6IHNlcS5jdXJyZW50LFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBwcml2YXRlQWRhcHRlcltcInB1dFN0YXRlXCJdKGNvbXBvc2VkS2V5LCByZWNvcmQsIGN0eCBhcyBhbnkpO1xuICAgICAgICBsb2cuZGVidWcoYFNlcXVlbmNlICR7c2VxLmlkfSB3cml0dGVuIHRvIGNvbGxlY3Rpb24gJHtjb2xsZWN0aW9ufWApO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICBsb2cud2FybihcbiAgICAgICAgICBgRmFpbGVkIHRvIHdyaXRlIHNlcXVlbmNlICR7c2VxLmlkfSB0byBjb2xsZWN0aW9uICR7Y29sbGVjdGlvbn06ICR7ZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXBsaWNhdGVUb1NlZ3JlZ2F0ZWRDb2xsZWN0aW9ucyhcbiAgICBjdHg6IENvbnRleHQ8YW55PixcbiAgICBzZXE6IFNlcXVlbmNlTW9kZWxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVXNlIGFkYXB0ZXIgbWV0YWRhdGEgaW5zdGVhZCBvZiBjdHguZ2V0UmVhZENvbGxlY3Rpb25zKCkgYmVjYXVzZSB0aGUgU2VxdWVuY2VcbiAgICAvLyBjcmVhdGVzIGl0cyBvd24gY29udGV4dCB2aWEgbG9nQ3R4LCBsb3NpbmcgY29sbGVjdGlvbnMgc2V0IGJ5IGV4dHJhY3RTZWdyZWdhdGVkQ29sbGVjdGlvbnMuXG4gICAgY29uc3QgYWRhcHRlck1ldGEgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihcbiAgICAgIFN0cmluZyhzZXEuaWQpXG4gICAgKTtcblxuICAgIGlmICghYWRhcHRlck1ldGEgfHwgIWFkYXB0ZXJNZXRhLmNvbGxlY3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE9ubHkgcmVwbGljYXRlIGZvciBub24tZnVsbHktc2VncmVnYXRlZCBtb2RlbHMgKGZ1bGx5IHNlZ3JlZ2F0ZWQgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5KVxuICAgIGlmIChhZGFwdGVyTWV0YS5mdWxseVNlZ3JlZ2F0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsb2cgPSBjdHgubG9nZ2VyLmZvcih0aGlzLnJlcGxpY2F0ZVRvU2VncmVnYXRlZENvbGxlY3Rpb25zKTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGBSZXBsaWNhdGluZyBzZXF1ZW5jZSAke3NlcS5pZH0gdG8gJHthZGFwdGVyTWV0YS5jb2xsZWN0aW9ucy5sZW5ndGh9IHNlZ3JlZ2F0ZWQgY29sbGVjdGlvbnM6ICR7YWRhcHRlck1ldGEuY29sbGVjdGlvbnMuam9pbihcIiwgXCIpfWBcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy53cml0ZVNlcXVlbmNlVG9Db2xsZWN0aW9ucyhjdHgsIHNlcSwgYWRhcHRlck1ldGEuY29sbGVjdGlvbnMpO1xuICB9XG59XG4iXX0=
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RTZXF1ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZhYnJpY0NvbnRyYWN0U2VxdWVuY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQXVGO0FBQ3ZGLHlFQUF1RDtBQUN2RCx5Q0FBb0Y7QUFDcEYsdURBQW9EO0FBQ3BEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLGVBQVE7SUFDaEQ7OztPQUdHO0lBQ0gsWUFBWSxPQUFPLEVBQUUsT0FBTztRQUN4QixLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLDZCQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRixJQUFJLGFBQWEsQ0FBQztRQUNsQixNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQztZQUNELGFBQWEsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksYUFBYSxLQUFLLFNBQVMsSUFBSSxhQUFhLEtBQUssSUFBSTtnQkFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0s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RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNsRSxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsRUFBRSxPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSw0QkFBNEIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlJLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Q0FDSjtBQTFSRCx3REEwUkM7QUFDRCw4OG1DQUE4OG1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgTm90Rm91bmRFcnJvciwgT3BlcmF0aW9uS2V5cywgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgU2VxdWVuY2UsIFNlcXVlbmNlTW9kZWwsIFNlcmlhbCwgVW5zdXBwb3J0ZWRFcnJvciwgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3Igc2VxdWVuY2UgZ2VuZXJhdGlvblxuICogQHN1bW1hcnkgUHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIGdlbmVyYXRpbmcgc2VxdWVudGlhbCB2YWx1ZXMgKGxpa2UgcHJpbWFyeSBrZXlzKSBpbiB0aGUgcGVyc2lzdGVuY2UgbGF5ZXIuXG4gKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBjbGFzcyBoYW5kbGUgdGhlIHNwZWNpZmljcyBvZiBob3cgc2VxdWVuY2VzIGFyZSBzdG9yZWQgYW5kIGluY3JlbWVudGVkIGluIGRpZmZlcmVudFxuICogZGF0YWJhc2Ugc3lzdGVtcy5cbiAqIEBwYXJhbSB7U2VxdWVuY2VPcHRpb25zfSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgc2VxdWVuY2UgZ2VuZXJhdG9yXG4gKiBAY2xhc3MgU2VxdWVuY2VcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBFeGFtcGxlIGltcGxlbWVudGF0aW9uIGZvciBhIHNwZWNpZmljIGRhdGFiYXNlXG4gKiBjbGFzcyBQb3N0Z3Jlc1NlcXVlbmNlIGV4dGVuZHMgU2VxdWVuY2Uge1xuICogICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMpIHtcbiAqICAgICBzdXBlcihvcHRpb25zKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICogICAgIC8vIEltcGxlbWVudGF0aW9uIHRvIGdldCBuZXh0IHZhbHVlIGZyb20gUG9zdGdyZVNRTCBzZXF1ZW5jZVxuICogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMub3B0aW9ucy5leGVjdXRvci5yYXcoYFNFTEVDVCBuZXh0dmFsKCcke3RoaXMub3B0aW9ucy5uYW1lfScpYCk7XG4gKiAgICAgcmV0dXJuIHBhcnNlSW50KHJlc3VsdC5yb3dzWzBdLm5leHR2YWwpO1xuICogICB9XG4gKlxuICogICBhc3luYyBjdXJyZW50KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IGN1cnJlbnQgdmFsdWUgZnJvbSBQb3N0Z3JlU1FMIHNlcXVlbmNlXG4gKiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLmV4ZWN1dG9yLnJhdyhgU0VMRUNUIGN1cnJ2YWwoJyR7dGhpcy5vcHRpb25zLm5hbWV9JylgKTtcbiAqICAgICByZXR1cm4gcGFyc2VJbnQocmVzdWx0LnJvd3NbMF0uY3VycnZhbCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIHJhbmdlKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgcmFuZ2Ugb2YgdmFsdWVzXG4gKiAgICAgY29uc3QgdmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuICogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICogICAgICAgdmFsdWVzLnB1c2goYXdhaXQgdGhpcy5uZXh0KCkpO1xuICogICAgIH1cbiAqICAgICByZXR1cm4gdmFsdWVzO1xuICogICB9XG4gKiB9XG4gKlxuICogLy8gVXNhZ2VcbiAqIGNvbnN0IHNlcXVlbmNlID0gbmV3IFBvc3RncmVzU2VxdWVuY2Uoe1xuICogICBuYW1lOiAndXNlcl9pZF9zZXEnLFxuICogICBleGVjdXRvcjogZGJFeGVjdXRvclxuICogfSk7XG4gKlxuICogY29uc3QgbmV4dElkID0gYXdhaXQgc2VxdWVuY2UubmV4dCgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDb250cmFjdFNlcXVlbmNlIGV4dGVuZHMgU2VxdWVuY2Uge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHNlcXVlbmNlIGluc3RhbmNlXG4gICAgICogQHN1bW1hcnkgUHJvdGVjdGVkIGNvbnN0cnVjdG9yIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIHNlcXVlbmNlIHdpdGggdGhlIHByb3ZpZGVkIG9wdGlvbnNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBhZGFwdGVyKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMsIGFkYXB0ZXIpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZVxuICAgICAqIEBzdW1tYXJ5IEdldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlIGZyb20gc3RvcmFnZS4gSWYgdGhlIHNlcXVlbmNlXG4gICAgICogZG9lc24ndCBleGlzdCB5ZXQsIGl0IHJldHVybnMgdGhlIGNvbmZpZ3VyZWQgc3RhcnRpbmcgdmFsdWUuXG4gICAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZVxuICAgICAqL1xuICAgIGFzeW5jIGN1cnJlbnQoLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCwgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgT3BlcmF0aW9uS2V5cy5SRUFELCB0cnVlKSkuZm9yKHRoaXMuY3VycmVudCk7XG4gICAgICAgIGxldCBjYWNoZWRDdXJyZW50O1xuICAgICAgICBjb25zdCB7IG5hbWUsIHN0YXJ0V2l0aCB9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBhZGFwdGVyTWV0YSA9IGN0eC5nZXRTZXF1ZW5jZVNlZ3JlZ2F0aW9uKFN0cmluZyhuYW1lKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjYWNoZWRDdXJyZW50ID0gY3R4LmdldEZyb21DaGlsZHJlbihuYW1lKTtcbiAgICAgICAgICAgIGlmIChjYWNoZWRDdXJyZW50ICE9PSB1bmRlZmluZWQgJiYgY2FjaGVkQ3VycmVudCAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShjYWNoZWRDdXJyZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHNlcXVlbmNlID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQobmFtZSwgY3R4KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlKHNlcXVlbmNlLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2VxdWVuY2UgaXMgc3VwcG9zZWQgdG8gbGl2ZSBpbiBwcml2YXRlL3NoYXJlZCBjb2xsZWN0aW9ucyxcbiAgICAgICAgICAgICAgICAvLyByZWFkIGl0IGZyb20gdGhvc2UgY29sbGVjdGlvbnMgdXNpbmcgdGhlIGFkYXB0ZXIgKG5vdCB0aGUgc3R1YiBkaXJlY3RseSkuXG4gICAgICAgICAgICAgICAgaWYgKGFkYXB0ZXJNZXRhPy5jb2xsZWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShTZXF1ZW5jZU1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHVibGljS2V5ID0gY3R4LnN0dWIuY3JlYXRlQ29tcG9zaXRlS2V5KHRhYmxlTmFtZSwgW1N0cmluZyhuYW1lKV0pO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBhZGFwdGVyTWV0YS5jb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcml2YXRlQWRhcHRlciA9IGFkYXB0ZXIuZm9yUHJpdmF0ZShjb2wpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IHByaXZhdGVBZGFwdGVyLnJlYWRTdGF0ZShwdWJsaWNLZXksIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhdyAmJiByYXcuY3VycmVudCAhPT0gdW5kZWZpbmVkICYmIHJhdy5jdXJyZW50ICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShyYXcuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byByZWd1bGFyIHN0YXJ0V2l0aCBmYWxsYmFjayBmb3IgYW55IHBhcnNlL0lPIGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgVHJ5aW5nIHRvIHJlc29sdmUgY3VycmVudCBzZXF1ZW5jZSAke25hbWV9IHZhbHVlIGZyb20gY29udGV4dCB0cmVlYCk7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlZEN1cnJlbnQgPSBjdHguZ2V0RnJvbUNoaWxkcmVuKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkQ3VycmVudCAhPT0gdW5kZWZpbmVkICYmIGNhY2hlZEN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgUmV0cmlldmVkIGNhY2hlZCBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2NhY2hlZEN1cnJlbnR9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmYWxsIHRocm91Z2hcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlZEN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjYWNoZWRDdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKGBObyBjYWNoZWQgdmFsdWUgZm9yIHNlcXVlbmNlICR7bmFtZX0gaW4gY29udGV4dGApO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZWRDdXJyZW50ID0gc3RhcnRXaXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShjYWNoZWRDdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBpbml0aWFsIHZhbHVlIGZvciBzZXF1ZW5jZSAke3N0YXJ0V2l0aH06ICR7ZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIGN1cnJlbnQgdmFsdWUgZm9yIHNlcXVlbmNlICR7bmFtZX06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5jcmVtZW50cyB0aGUgc2VxdWVuY2UgdmFsdWVcbiAgICAgKiBAc3VtbWFyeSBJbmNyZWFzZXMgdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWUgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQgYW5kIHBlcnNpc3RzXG4gICAgICogdGhlIG5ldyB2YWx1ZSB0byBzdG9yYWdlLiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggbnVtZXJpYyBhbmQgQmlnSW50IHNlcXVlbmNlIHR5cGVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50fSBjdXJyZW50IC0gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtjb3VudF0gLSBPcHRpb25hbCBhbW91bnQgdG8gaW5jcmVtZW50IGJ5LCBkZWZhdWx0cyB0byB0aGUgc2VxdWVuY2UncyBpbmNyZW1lbnRCeSB2YWx1ZVxuICAgICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBzZXF1ZW5jZSB2YWx1ZSBhZnRlciBpbmNyZW1lbnRpbmdcbiAgICAgKi9cbiAgICBhc3luYyBpbmNyZW1lbnQoY291bnQsIGN0eCkge1xuICAgICAgICBjb25zdCBsb2cgPSBjdHgubG9nZ2VyLmZvcih0aGlzLmluY3JlbWVudCk7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaW5jcmVtZW50QnksIG5hbWUgfSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTZXF1ZW5jZSBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICBsb2cuaW5mbyhgT2J0YWluaW5nIHNlcXVlbmNlIGxvY2sgZm9yIHNlcXVlbmNlICR7bmFtZX1gKTtcbiAgICAgICAgLy8gcmV0dXJuIEZhYnJpY0NvbnRyYWN0U2VxdWVuY2UubG9jay5leGVjdXRlKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdG9JbmNyZW1lbnRCeSA9IGNvdW50IHx8IGluY3JlbWVudEJ5O1xuICAgICAgICBpZiAodG9JbmNyZW1lbnRCeSAlIGluY3JlbWVudEJ5ICE9PSAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFZhbHVlIHRvIGluY3JlbWVudCBkb2VzIG5vdCBjb25zaWRlciB0aGUgaW5jcmVtZW50Qnkgc2V0dGluZzogJHtpbmNyZW1lbnRCeX1gKTtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGU/Lm5hbWVcbiAgICAgICAgICAgID8gdHlwZS5uYW1lXG4gICAgICAgICAgICA6IHR5cGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGF3YWl0IHRoaXMuY3VycmVudChjdHgpO1xuICAgICAgICBhc3luYyBmdW5jdGlvbiByZXR1cm5BbmRDYWNoZShyZXMpIHtcbiAgICAgICAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgICAgICAgICAgIHJlcyA9IGF3YWl0IHJlcztcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAgIC5mb3IocmV0dXJuQW5kQ2FjaGUpXG4gICAgICAgICAgICAgICAgLmluZm8oYFN0b3JpbmcgbmV3ICR7bmFtZX0gc2VxIHZhbHVlIGluIGNhY2hlOiAke3Jlcy5jdXJyZW50fWApO1xuICAgICAgICAgICAgY3R4LmNhY2hlLnB1dChuYW1lLCByZXMuY3VycmVudCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBlcmZvcm1VcHNlcnQgPSBhc3luYyAobmV4dCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcmV0dXJuQW5kQ2FjaGUodGhpcy5yZXBvLnVwZGF0ZShuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLCBjdHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXR1cm5BbmRDYWNoZSh0aGlzLnJlcG8uY3JlYXRlKG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IG5leHQgfSksIGN0eCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpbmNyZW1lbnRTZXJpYWwgPSBhc3luYyAoYmFzZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTnVtYmVyLm5hbWU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlKGJhc2UpICsgdG9JbmNyZW1lbnRCeTtcbiAgICAgICAgICAgICAgICBjYXNlIEJpZ0ludC5uYW1lOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShiYXNlKSArIEJpZ0ludCh0b0luY3JlbWVudEJ5KTtcbiAgICAgICAgICAgICAgICBjYXNlIFN0cmluZy5uYW1lOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShiYXNlKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwic2VyaWFsXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoU2VyaWFsLmluc3RhbmNlLmdlbmVyYXRlKGJhc2UpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIENoZWNrIGlmIG1vZGVsIGlzIGZ1bGx5IHNlZ3JlZ2F0ZWQg4oCUIHNlcXVlbmNlIGdvZXMgT05MWSB0byBwcml2YXRlIGNvbGxlY3Rpb25zLlxuICAgICAgICAvLyBQcmVmZXIgdGhlIGV4cGxpY2l0IHBlci1zZXF1ZW5jZSBtZXRhZGF0YSB3aGVuIGF2YWlsYWJsZTsgb3RoZXJ3aXNlIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB0aGUgY29udGV4dCdzIHJlZ2lzdGVyZWQgcmVhZCBjb2xsZWN0aW9ucyAoY292ZXJzIGVhcmx5IHBrIGdlbmVyYXRpb24gcGF0aHMpLlxuICAgICAgICBjb25zdCBhZGFwdGVyTWV0YSA9IGN0eC5nZXRTZXF1ZW5jZVNlZ3JlZ2F0aW9uKG5hbWUpO1xuICAgICAgICBjb25zdCBmYWxsYmFja0NvbGxlY3Rpb25zID0gY3R4XG4gICAgICAgICAgICAuZ2V0UmVhZENvbGxlY3Rpb25zKClcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUNvbGxlY3Rpb25zID0gYWRhcHRlck1ldGE/LmNvbGxlY3Rpb25zPy5sZW5ndGggPyBhZGFwdGVyTWV0YS5jb2xsZWN0aW9ucyA6IGZhbGxiYWNrQ29sbGVjdGlvbnM7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUZ1bGx5U2VncmVnYXRlZCA9IChhZGFwdGVyTWV0YT8uZnVsbHlTZWdyZWdhdGVkID8/IGN0eC5pc0Z1bGx5U2VncmVnYXRlZCkgJiZcbiAgICAgICAgICAgIGVmZmVjdGl2ZUNvbGxlY3Rpb25zLmxlbmd0aCA+IDA7XG4gICAgICAgIGxldCBuZXh0O1xuICAgICAgICBpZiAodHlwZU5hbWUgPT09IFwidXVpZFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihgdXVpZCBwayBnZW5lcmF0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIHVzaW5nIEB1dWlkIGFuZCBhIGRldGVybWluaXN0aWMgc2VlZGApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IGF3YWl0IGluY3JlbWVudFNlcmlhbChjdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlZmZlY3RpdmVGdWxseVNlZ3JlZ2F0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcU1vZGVsID0gbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMud3JpdGVTZXF1ZW5jZVRvQ29sbGVjdGlvbnMoY3R4LCBzZXFNb2RlbCwgZWZmZWN0aXZlQ29sbGVjdGlvbnMpO1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBTZXF1ZW5jZS5pbmNyZW1lbnQgKHByaXZhdGUtb25seSkgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudFZhbHVlfSBuZXh0PSR7bmV4dH1gKTtcbiAgICAgICAgICAgIGN0eC5jYWNoZS5wdXQobmFtZSwgbmV4dCk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXEgPSBhd2FpdCBwZXJmb3JtVXBzZXJ0KG5leHQpO1xuICAgICAgICBsb2cuZGVidWcoYFNlcXVlbmNlLmluY3JlbWVudCAke25hbWV9IGN1cnJlbnQ9JHtjdXJyZW50VmFsdWV9IG5leHQ9JHtuZXh0fWApO1xuICAgICAgICAvLyBSZXBsaWNhdGUgc2VxdWVuY2UgdG8gc2VncmVnYXRlZCBjb2xsZWN0aW9ucyBpZiBtb2RlbCB1c2VzIHByaXZhdGUvc2hhcmVkIGRhdGEuXG4gICAgICAgIC8vIFdoZW4gbWV0YWRhdGEgaXNuJ3QgYXZhaWxhYmxlLCBmYWxsIGJhY2sgdG8gdGhlIGNvbnRleHQncyByZWdpc3RlcmVkIHJlYWQgY29sbGVjdGlvbnMuXG4gICAgICAgIGlmIChlZmZlY3RpdmVDb2xsZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMud3JpdGVTZXF1ZW5jZVRvQ29sbGVjdGlvbnMoY3R4LCBzZXEsIGVmZmVjdGl2ZUNvbGxlY3Rpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VxLmN1cnJlbnQ7XG4gICAgICAgIC8vIH0sIG5hbWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW5zdXJlcyB0aGUgc2VxdWVuY2UgZXhpc3RzIGFuZCBpcyBhdCBsZWFzdCBhIGdpdmVuIHZhbHVlXG4gICAgICogQHN1bW1hcnkgRmFicmljIG5lZWRzIHRvIHJlc3BlY3Qgc2VncmVnYXRlZC9wcml2YXRlL3NoYXJlZCBzdG9yYWdlIHJ1bGVzIHdoZW4gY3JlYXRpbmdcbiAgICAgKiBzZXF1ZW5jZXMgKGZvciBleGFtcGxlIGZvciBwZXJzaXN0ZW50IEB2ZXJzaW9uKHRydWUpIGFuZCBAc2VxdWVuY2UoKSkuXG4gICAgICovXG4gICAgYXN5bmMgZW5zdXJlQXRMZWFzdCh2YWx1ZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCwgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgT3BlcmF0aW9uS2V5cy5VUERBVEUsIHRydWUpKS5mb3IodGhpcy5lbnN1cmVBdExlYXN0KTtcbiAgICAgICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiU2VxdWVuY2UgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICAgICAgY29uc3QgZGVzaXJlZCA9IHRoaXMucGFyc2UodmFsdWUpO1xuICAgICAgICBjb25zdCBncmVhdGVyVGhhbiA9IChhLCBiKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09IFwiYmlnaW50XCIgfHwgdHlwZW9mIGIgPT09IFwiYmlnaW50XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQmlnSW50KGEpID4gQmlnSW50KGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBiID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihhKSA+IE51bWJlcihiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcoYSkgPiBTdHJpbmcoYik7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFkYXB0ZXJNZXRhID0gY3R4LmdldFNlcXVlbmNlU2VncmVnYXRpb24oU3RyaW5nKG5hbWUpKTtcbiAgICAgICAgY29uc3QgaXNGdWxseVNlZ3JlZ2F0ZWQgPSBhZGFwdGVyTWV0YSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBhZGFwdGVyTWV0YS5mdWxseVNlZ3JlZ2F0ZWQgJiZcbiAgICAgICAgICAgIGFkYXB0ZXJNZXRhLmNvbGxlY3Rpb25zLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IHJlYWRFeGlzdGluZyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby5yZWFkKG5hbWUsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB3cml0ZVByaXZhdGUgPSBhc3luYyAoc2VxTW9kZWwsIGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlU2VxdWVuY2VUb0NvbGxlY3Rpb25zKGN0eCwgc2VxTW9kZWwsIGNvbGxlY3Rpb25zKTtcbiAgICAgICAgICAgIGN0eC5jYWNoZS5wdXQobmFtZSwgc2VxTW9kZWwuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVwc2VydFB1YmxpYyA9IGFzeW5jIChuZXh0KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlcG8udXBkYXRlKG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IG5leHQgfSksIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvLmNyZWF0ZShuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLCBjdHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRFeGlzdGluZygpO1xuICAgICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBzZXFNb2RlbCA9IG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IGRlc2lyZWQgfSk7XG4gICAgICAgICAgICBpZiAoaXNGdWxseVNlZ3JlZ2F0ZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZVByaXZhdGUoc2VxTW9kZWwsIGFkYXB0ZXJNZXRhLmNvbGxlY3Rpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVzaXJlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB1cHNlcnRQdWJsaWMoZGVzaXJlZCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlcGxpY2F0ZVRvU2VncmVnYXRlZENvbGxlY3Rpb25zKGN0eCwgY3JlYXRlZCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShjcmVhdGVkLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnBhcnNlKGV4aXN0aW5nLmN1cnJlbnQpO1xuICAgICAgICBpZiAoIWdyZWF0ZXJUaGFuKGRlc2lyZWQsIGN1cnJlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXFNb2RlbCA9IG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IGRlc2lyZWQgfSk7XG4gICAgICAgIGlmIChpc0Z1bGx5U2VncmVnYXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVQcml2YXRlKHNlcU1vZGVsLCBhZGFwdGVyTWV0YS5jb2xsZWN0aW9ucyk7XG4gICAgICAgICAgICBsb2cuZGVidWcoYFNlcXVlbmNlLmVuc3VyZUF0TGVhc3QgKHByaXZhdGUtb25seSkgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudH0gZGVzaXJlZD0ke2Rlc2lyZWR9YCk7XG4gICAgICAgICAgICByZXR1cm4gZGVzaXJlZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdXBzZXJ0UHVibGljKGRlc2lyZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlcGxpY2F0ZVRvU2VncmVnYXRlZENvbGxlY3Rpb25zKGN0eCwgdXBkYXRlZCk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlKHVwZGF0ZWQuY3VycmVudCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXBsaWNhdGVzIHRoZSBzZXF1ZW5jZSB0byBhbGwgc2VncmVnYXRlZCBjb2xsZWN0aW9uc1xuICAgICAqIEBzdW1tYXJ5IFdoZW4gYSBtb2RlbCB1c2VzIHByaXZhdGVEYXRhIG9yIHNoYXJlZERhdGEgZGVjb3JhdG9ycywgaXRzIHNlcXVlbmNlIG11c3QgYmVcbiAgICAgKiByZXBsaWNhdGVkIHRvIGFsbCBjb2xsZWN0aW9ucyB0aGUgbW9kZWwgaXMgc3RvcmVkIGluLiBUaGlzIGVuc3VyZXMgY2xpZW50cyB3aXRoIGFjY2Vzc1xuICAgICAqIHRvIG9ubHkgb25lIGNvbGxlY3Rpb24gY2FuIHN0aWxsIHJlYWQgdGhlIG1vZGVsJ3Mgc2VxdWVuY2UsIHdoaWxlIGNsaWVudHMgd2l0aG91dFxuICAgICAqIGFjY2VzcyB0byBhbnkgY29sbGVjdGlvbiB3b24ndCBzZWUgdGhlIHNlcXVlbmNlIG9uIHRoZSBwdWJsaWMgY2hhaW4uXG4gICAgICogQHBhcmFtIHtDb250ZXh0PGFueT59IGN0eCAtIFRoZSBleGVjdXRpb24gY29udGV4dFxuICAgICAqIEBwYXJhbSB7U2VxdWVuY2VNb2RlbH0gc2VxIC0gVGhlIHNlcXVlbmNlIG1vZGVsIHRvIHJlcGxpY2F0ZVxuICAgICAqL1xuICAgIGFzeW5jIHdyaXRlU2VxdWVuY2VUb0NvbGxlY3Rpb25zKGN0eCwgc2VxLCBjb2xsZWN0aW9ucykge1xuICAgICAgICBjb25zdCBsb2cgPSBjdHgubG9nZ2VyLmZvcih0aGlzLndyaXRlU2VxdWVuY2VUb0NvbGxlY3Rpb25zKTtcbiAgICAgICAgY29uc3QgYWRhcHRlciA9IHRoaXMuYWRhcHRlcjtcbiAgICAgICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKFNlcXVlbmNlTW9kZWwpO1xuICAgICAgICBjb25zdCBjb21wb3NlZEtleSA9IGN0eC5zdHViLmNyZWF0ZUNvbXBvc2l0ZUtleSh0YWJsZU5hbWUsIFtTdHJpbmcoc2VxLmlkKV0pO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJpdmF0ZUFkYXB0ZXIgPSBhZGFwdGVyLmZvclByaXZhdGUoY29sbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0ge1xuICAgICAgICAgICAgICAgICAgICBbQ291Y2hEQktleXMuVEFCTEVdOiB0YWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGlkOiBzZXEuaWQsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHNlcS5jdXJyZW50LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXdhaXQgcHJpdmF0ZUFkYXB0ZXJbXCJwdXRTdGF0ZVwiXShjb21wb3NlZEtleSwgcmVjb3JkLCBjdHgpO1xuICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgU2VxdWVuY2UgJHtzZXEuaWR9IHdyaXR0ZW4gdG8gY29sbGVjdGlvbiAke2NvbGxlY3Rpb259YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGxvZy53YXJuKGBGYWlsZWQgdG8gd3JpdGUgc2VxdWVuY2UgJHtzZXEuaWR9IHRvIGNvbGxlY3Rpb24gJHtjb2xsZWN0aW9ufTogJHtlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlcGxpY2F0ZVRvU2VncmVnYXRlZENvbGxlY3Rpb25zKGN0eCwgc2VxKSB7XG4gICAgICAgIC8vIFVzZSBhZGFwdGVyIG1ldGFkYXRhIGluc3RlYWQgb2YgY3R4LmdldFJlYWRDb2xsZWN0aW9ucygpIGJlY2F1c2UgdGhlIFNlcXVlbmNlXG4gICAgICAgIC8vIGNyZWF0ZXMgaXRzIG93biBjb250ZXh0IHZpYSBsb2dDdHgsIGxvc2luZyBjb2xsZWN0aW9ucyBzZXQgYnkgZXh0cmFjdFNlZ3JlZ2F0ZWRDb2xsZWN0aW9ucy5cbiAgICAgICAgY29uc3QgYWRhcHRlck1ldGEgPSBjdHguZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihTdHJpbmcoc2VxLmlkKSk7XG4gICAgICAgIGlmICghYWRhcHRlck1ldGEgfHwgIWFkYXB0ZXJNZXRhLmNvbGxlY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgcmVwbGljYXRlIGZvciBub24tZnVsbHktc2VncmVnYXRlZCBtb2RlbHMgKGZ1bGx5IHNlZ3JlZ2F0ZWQgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5KVxuICAgICAgICBpZiAoYWRhcHRlck1ldGEuZnVsbHlTZWdyZWdhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9nID0gY3R4LmxvZ2dlci5mb3IodGhpcy5yZXBsaWNhdGVUb1NlZ3JlZ2F0ZWRDb2xsZWN0aW9ucyk7XG4gICAgICAgIGxvZy5pbmZvKGBSZXBsaWNhdGluZyBzZXF1ZW5jZSAke3NlcS5pZH0gdG8gJHthZGFwdGVyTWV0YS5jb2xsZWN0aW9ucy5sZW5ndGh9IHNlZ3JlZ2F0ZWQgY29sbGVjdGlvbnM6ICR7YWRhcHRlck1ldGEuY29sbGVjdGlvbnMuam9pbihcIiwgXCIpfWApO1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlU2VxdWVuY2VUb0NvbGxlY3Rpb25zKGN0eCwgc2VxLCBhZGFwdGVyTWV0YS5jb2xsZWN0aW9ucyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUm1GaWNtbGpRMjl1ZEhKaFkzUlRaWEYxWlc1alpTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDNOeVl5OWpiMjUwY21GamRITXZSbUZpY21salEyOXVkSEpoWTNSVFpYRjFaVzVqWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRMHdzWVVGQllTeEZRVU5pTEdGQlFXRXNSVUZEWWl4aFFVRmhMRWRCUTJRc1RVRkJUU3g1UWtGQmVVSXNRMEZCUXp0QlFVTnFReXhQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGRGRrUXNUMEZCVHl4RlFVbE1MRkZCUVZFc1JVRkRVaXhoUVVGaExFVkJSV0lzVFVGQlRTeEZRVU5PTEdkQ1FVRm5RaXhIUVVOcVFpeE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSM2hDTEU5QlFVOHNSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3gxUWtGQmRVSXNRMEZCUXp0QlFVVndSRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPMGRCTmtOSE8wRkJRMGdzVFVGQlRTeFBRVUZQTEhOQ1FVRjFRaXhUUVVGUkxGRkJRVkU3U1VGRGJFUTdPenRQUVVkSE8wbEJRMGdzV1VGQldTeFBRVUYzUWl4RlFVRkZMRTlCUVN0Q08xRkJRMjVGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRE1VSXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTAwc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGRGNFSXNSMEZCUnl4SlFVRTJRanRSUVVWb1F5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRMjVDTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkRiRVFzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM0JDTEVsQlFVa3NZVUZCYTBJc1EwRkJRenRSUVVOMlFpeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRk5CUVZNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEZWtNc1RVRkJUU3hYUVVGWExFZEJRVWtzUjBGQk5rSXNRMEZCUXl4elFrRkJjMElzUTBGRGRrVXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOaUxFTkJRVU03VVVGRFJpeEpRVUZKTEVOQlFVTTdXVUZEU0N4aFFVRmhMRWRCUVVjc1IwRkJSeXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZYTEVOQlFVTXNRMEZCUXp0WlFVTnFSQ3hKUVVGSkxHRkJRV0VzUzBGQlN5eFRRVUZUTEVsQlFVa3NZVUZCWVN4TFFVRkxMRWxCUVVrN1owSkJRM1pFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFpRVU51UXl4TlFVRk5MRkZCUVZFc1IwRkJhMElzVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGakxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZETVVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRXdRaXhEUVVGRExFTkJRVU03VVVGRGVrUXNRMEZCUXp0UlFVRkRMRTlCUVU4c1EwRkJUU3hGUVVGRkxFTkJRVU03V1VGRGFFSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1lVRkJZU3hGUVVGRkxFTkJRVU03WjBKQlF5OUNMSEZGUVVGeFJUdG5Ra0ZEY2tVc05FVkJRVFJGTzJkQ1FVTTFSU3hKUVVGSkxGZEJRVmNzUlVGQlJTeFhRVUZYTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNN2IwSkJRM0pETEUxQlFVMHNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVFeVF5eERRVUZETzI5Q1FVTnFSU3hOUVVGTkxGTkJRVk1zUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMR0ZCUVc5Q0xFTkJRVU1zUTBGQlF6dHZRa0ZEZUVRc1RVRkJUU3hUUVVGVExFZEJRVWtzUjBGQk5rSXNRMEZCUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlEzUkZMRk5CUVZNc1JVRkRWQ3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVTm1MRU5CUVVNN2IwSkJRMFlzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03ZDBKQlF6RkRMRWxCUVVrc1EwRkJRenMwUWtGRFNDeE5RVUZOTEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZET3pSQ1FVTXZReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eE5RVUZQTEdOQlFYTkNMRU5CUVVNc1UwRkJVeXhEUVVOcVJDeFRRVUZUTEVWQlExUXNSMEZCVlN4RFFVTllMRU5CUVVNN05FSkJRMFlzU1VGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhUUVVGVExFbEJRVWtzUjBGQlJ5eERRVUZETEU5QlFVOHNTMEZCU3l4SlFVRkpPMmREUVVNeFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRV01zUTBGQlF5eERRVUZETzNkQ1FVTXhReXhEUVVGRE8zZENRVUZETEU5QlFVOHNSMEZCVVN4RlFVRkZMRU5CUVVNN05FSkJRMnhDTEVsQlFVa3NSMEZCUnl4WlFVRlpMR0ZCUVdFN1owTkJRVVVzVTBGQlV6czBRa0ZETTBNc2NVVkJRWEZGTzNkQ1FVTjJSU3hEUVVGRE8yOUNRVU5JTEVOQlFVTTdaMEpCUTBnc1EwRkJRenRuUWtGRFJDeEpRVUZKTEVOQlFVTTdiMEpCUTBnc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeHpRMEZCYzBNc1NVRkJTU3d3UWtGQk1FSXNRMEZEY2tVc1EwRkJRenR2UWtGRFJpeGhRVUZoTEVkQlFVY3NSMEZCUnl4RFFVRkRMR1ZCUVdVc1EwRkJReXhKUVVGWExFTkJRVU1zUTBGQlF6dHZRa0ZEYWtRc1NVRkJTU3hoUVVGaExFdEJRVXNzVTBGQlV5eEpRVUZKTEdGQlFXRXNTMEZCU3l4SlFVRkpMRVZCUVVVc1EwRkJRenQzUWtGRE1VUXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3dyUTBGQkswTXNTVUZCU1N4TFFVRkxMR0ZCUVdFc1JVRkJSU3hEUVVONFJTeERRVUZETzI5Q1FVTktMRU5CUVVNN2IwSkJRMFFzTmtSQlFUWkVPMmRDUVVNdlJDeERRVUZETzJkQ1FVRkRMRTlCUVU4c1EwRkJWU3hGUVVGRkxFTkJRVU03YjBKQlEzQkNMR1ZCUVdVN1owSkJRMnBDTEVOQlFVTTdaMEpCUTBRc1NVRkJTU3hoUVVGaExFdEJRVXNzVTBGQlV5eEpRVUZKTEdGQlFXRXNTMEZCU3l4SlFVRkpMRVZCUVVVc1EwRkJRenR2UWtGRE1VUXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhuUTBGQlowTXNTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJRenR2UWtGRE5VUXNZVUZCWVN4SFFVRkhMRk5CUVZNc1EwRkJRenRuUWtGRE5VSXNRMEZCUXp0blFrRkRSQ3hKUVVGSkxFTkJRVU03YjBKQlEwZ3NUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzJkQ1FVTnVReXhEUVVGRE8yZENRVUZETEU5QlFVOHNRMEZCVFN4RlFVRkZMRU5CUVVNN2IwSkJRMmhDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUTNKQ0xEaERRVUU0UXl4VFFVRlRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRMmhGTEVOQlFVTTdaMEpCUTBvc1EwRkJRenRaUVVOSUxFTkJRVU03V1VGRFJDeE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVTnlRaXhwUkVGQmFVUXNTVUZCU1N4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVNNVJDeERRVUZETzFGQlEwb3NRMEZCUXp0SlFVTklMRU5CUVVNN1NVRkZSRHM3T3pzN096dFBRVTlITzBsQlEyZENMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRMmhETEV0QlFYbENMRVZCUTNwQ0xFZEJRV2xDTzFGQlJXcENMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVU16UXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xRkJRMnBFTEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUVVVc1RVRkJUU3hKUVVGSkxHRkJRV0VzUTBGQlF5d3lRa0ZCTWtJc1EwRkJReXhEUVVGRE8xRkJRMmhGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2QwTkJRWGRETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRla1FzTWtSQlFUSkVPMUZCUXpORUxFMUJRVTBzWVVGQllTeEhRVUZITEV0QlFVc3NTVUZCU1N4WFFVRlhMRU5CUVVNN1VVRkRNME1zU1VGQlNTeGhRVUZoTEVkQlFVY3NWMEZCVnl4TFFVRkxMRU5CUVVNN1dVRkRia01zVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZEY2tJc2FVVkJRV2xGTEZkQlFWY3NSVUZCUlN4RFFVTXZSU3hEUVVGRE8xRkJRMG9zVFVGQlRTeFJRVUZSTEVkQlExb3NUMEZCVHl4SlFVRkpMRXRCUVVzc1ZVRkJWU3hKUVVGTExFbEJRVmtzUlVGQlJTeEpRVUZKTzFsQlF5OURMRU5CUVVNc1EwRkJSU3hKUVVGWkxFTkJRVU1zU1VGQlNUdFpRVU53UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJRMWdzVFVGQlRTeFpRVUZaTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJUZERMRXRCUVVzc1ZVRkJWU3hqUVVGakxFTkJRVU1zUjBGQk1rTTdXVUZEZGtVc1NVRkJTU3hIUVVGSExGbEJRVmtzVDBGQlR6dG5Ra0ZCUlN4SFFVRkhMRWRCUVVjc1RVRkJUU3hIUVVGSExFTkJRVU03V1VGRE5VTXNSMEZCUnp0cFFrRkRRU3hIUVVGSExFTkJRVU1zWTBGQll5eERRVUZETzJsQ1FVTnVRaXhKUVVGSkxFTkJRVU1zWlVGQlpTeEpRVUZKTEhkQ1FVRjNRaXhIUVVGSExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTnNSU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRmpMRVZCUVVVc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFsQlF6TkRMRTlCUVU4c1IwRkJSeXhEUVVGRE8xRkJRMklzUTBGQlF6dFJRVVZFTEUxQlFVMHNZVUZCWVN4SFFVRkhMRXRCUVVzc1JVRkRla0lzU1VGQk9FSXNSVUZEVGl4RlFVRkZPMWxCUXpGQ0xFbEJRVWtzUTBGQlF6dG5Ra0ZEU0N4UFFVRlBMRTFCUVUwc1kwRkJZeXhEUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUTNSRkxFTkJRVU03V1VGRFNpeERRVUZETzFsQlFVTXNUMEZCVHl4RFFVRk5MRVZCUVVVc1EwRkJRenRuUWtGRGFFSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1lVRkJZU3hGUVVGRkxFTkJRVU03YjBKQlF5OUNMRTlCUVU4c1RVRkJUU3hqUVVGakxFTkJRM3BDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVOa0xFbEJRVWtzWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZET1VNc1IwRkJSeXhEUVVOS0xFTkJRMFlzUTBGQlF6dG5Ra0ZEU2l4RFFVRkRPMmRDUVVORUxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlExWXNRMEZCUXp0UlFVTklMRU5CUVVNc1EwRkJRenRSUVVWR0xFMUJRVTBzWlVGQlpTeEhRVUZITEV0QlFVc3NSVUZETTBJc1NVRkJPRUlzUlVGRFN5eEZRVUZGTzFsQlEzSkRMRkZCUVZFc1VVRkJVU3hGUVVGRkxFTkJRVU03WjBKQlEycENMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWs3YjBKQlEyUXNUMEZCVVN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQldTeEhRVUZITEdGQlFXRXNRMEZCUXp0blFrRkRkRVFzUzBGQlN5eE5RVUZOTEVOQlFVTXNTVUZCU1R0dlFrRkRaQ3hQUVVGUkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRlpMRWRCUVVjc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzJkQ1FVTTVSQ3hMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTzI5Q1FVTmtMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRNVUlzUzBGQlN5eFJRVUZSTzI5Q1FVTllMRTlCUVU4c1RVRkJUU3hQUVVGUExFTkJRVU1zVDBGQlR5eERRVU14UWl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZqTEVOQlFVTXNRMEZEZWtNc1EwRkJRenRuUWtGRFNqdHZRa0ZEUlN4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1dVRkRia1FzUTBGQlF6dFJRVU5JTEVOQlFVTXNRMEZCUXp0UlFVVkdMR3RHUVVGclJqdFJRVU5zUml4dFJrRkJiVVk3VVVGRGJrWXNaMFpCUVdkR08xRkJRMmhHTEUxQlFVMHNWMEZCVnl4SFFVRkpMRWRCUVRaQ0xFTkJRVU1zYzBKQlFYTkNMRU5CUTNaRkxFbEJRVWtzUTBGRFRDeERRVUZETzFGQlEwWXNUVUZCVFN4dFFrRkJiVUlzUjBGQlNTeEhRVUUyUWp0aFFVTjJSQ3hyUWtGQmEwSXNSVUZCUlR0aFFVTndRaXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEYmtJc1RVRkJUU3h2UWtGQmIwSXNSMEZEZUVJc1YwRkJWeXhGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRE8xRkJRMjVHTEUxQlFVMHNkMEpCUVhkQ0xFZEJRelZDTEVOQlFVTXNWMEZCVnl4RlFVRkZMR1ZCUVdVc1NVRkJTeXhIUVVFMlFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRE8xbEJRMnhHTEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGYkVNc1NVRkJTU3hKUVVGVExFTkJRVU03VVVGRFpDeEpRVUZKTEZGQlFWRXNTMEZCU3l4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVONFFpeE5RVUZOTEVsQlFVa3NaMEpCUVdkQ0xFTkJRM2hDTERKRlFVRXlSU3hEUVVNMVJTeERRVUZETzFGQlEwb3NRMEZCUXp0aFFVRk5MRU5CUVVNN1dVRkRUaXhKUVVGSkxFZEJRVWNzVFVGQlRTeGxRVUZsTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkROME1zUTBGQlF6dFJRVVZFTEVsQlFVa3NkMEpCUVhkQ0xFVkJRVVVzUTBGQlF6dFpRVU0zUWl4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEYUVVc1RVRkJUU3hKUVVGSkxFTkJRVU1zTUVKQlFUQkNMRU5CUTI1RExFZEJRVWNzUlVGRFNDeFJRVUZSTEVWQlExSXNiMEpCUVc5Q0xFTkJRM0pDTEVOQlFVTTdXVUZEUml4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVOUUxIRkRRVUZ4UXl4SlFVRkpMRmxCUVZrc1dVRkJiVUlzVTBGQlV5eEpRVUZYTEVWQlFVVXNRMEZETDBZc1EwRkJRenRaUVVOR0xFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVdNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVOa0xFTkJRVU03VVVGRlJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4TlFVRk5MR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU4wUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVOUUxITkNRVUZ6UWl4SlFVRkpMRmxCUVZrc1dVRkJiVUlzVTBGQlV5eEpRVUZYTEVWQlFVVXNRMEZEYUVZc1EwRkJRenRSUVVWR0xHdEdRVUZyUmp0UlFVTnNSaXg1UmtGQmVVWTdVVUZEZWtZc1NVRkJTU3h2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOb1F5eE5RVUZOTEVsQlFVa3NRMEZCUXl3d1FrRkJNRUlzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRzlDUVVGdlFpeERRVUZETEVOQlFVTTdVVUZEZUVVc1EwRkJRenRSUVVWRUxFOUJRVThzUjBGQlJ5eERRVUZETEU5QlFXMURMRU5CUVVNN1VVRkRMME1zV1VGQldUdEpRVU5rTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwMHNTMEZCU3l4RFFVRkRMR0ZCUVdFc1EwRkRNVUlzUzBGQkswSXNSVUZETDBJc1IwRkJSeXhKUVVFMlFqdFJRVVZvUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlEyNUNMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNZVUZCWVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGRGNFUXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzFGQlF6RkNMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTzFsQlFVVXNUVUZCVFN4SlFVRkpMR0ZCUVdFc1EwRkJReXd5UWtGQk1rSXNRMEZCUXl4RFFVRkRPMUZCUldoRkxFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRmJFTXNUVUZCVFN4WFFVRlhMRWRCUVVjc1EwRkRiRUlzUTBGQk1rSXNSVUZETTBJc1EwRkJNa0lzUlVGRGJFSXNSVUZCUlR0WlFVTllMRWxCUVVrc1QwRkJUeXhEUVVGRExFdEJRVXNzVVVGQlVTeEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRkZCUVZFc1JVRkJSU3hEUVVGRE8yZENRVU51UkN4UFFVRlBMRTFCUVUwc1EwRkJReXhEUVVGUkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCVVN4RFFVRkRMRU5CUVVNN1dVRkROME1zUTBGQlF6dFpRVU5FTEVsQlFVa3NUMEZCVHl4RFFVRkRMRXRCUVVzc1VVRkJVU3hKUVVGSkxFOUJRVThzUTBGQlF5eExRVUZMTEZGQlFWRXNSVUZCUlN4RFFVRkRPMmRDUVVOdVJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETDBJc1EwRkJRenRaUVVORUxFOUJRVThzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UWl4RFFVRkRMRU5CUVVNN1VVRkZSaXhOUVVGTkxGZEJRVmNzUjBGQlNTeEhRVUUyUWl4RFFVRkRMSE5DUVVGelFpeERRVU4yUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRMklzUTBGQlF6dFJRVU5HTEUxQlFVMHNhVUpCUVdsQ0xFZEJRM0pDTEZkQlFWY3NTMEZCU3l4VFFVRlRPMWxCUTNwQ0xGZEJRVmNzUTBGQlF5eGxRVUZsTzFsQlF6TkNMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnlReXhOUVVGTkxGbEJRVmtzUjBGQlJ5eExRVUZMTEVsQlFYZERMRVZCUVVVN1dVRkRiRVVzU1VGQlNTeERRVUZETzJkQ1FVTklMRTlCUVU4c1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRmpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGJrUXNRMEZCUXp0WlFVRkRMRTlCUVU4c1EwRkJUU3hGUVVGRkxFTkJRVU03WjBKQlEyaENMRWxCUVVrc1EwRkJReXhaUVVGWkxHRkJRV0U3YjBKQlFVVXNUMEZCVHl4VFFVRlRMRU5CUVVNN1owSkJRMnBFTEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUTFZc1EwRkJRenRSUVVOSUxFTkJRVU1zUTBGQlF6dFJRVVZHTEUxQlFVMHNXVUZCV1N4SFFVRkhMRXRCUVVzc1JVRkRlRUlzVVVGQmRVSXNSVUZEZGtJc1YwRkJjVUlzUlVGRGNrSXNSVUZCUlR0WlFVTkdMRTFCUVUwc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdXVUZEYkVVc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCWXl4RlFVRkZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4RFFVRkRMRU5CUVVNN1VVRkZSaXhOUVVGTkxGbEJRVmtzUjBGQlJ5eExRVUZMTEVWQlFVVXNTVUZCT0VJc1JVRkJSU3hGUVVGRk8xbEJRelZFTEVsQlFVa3NRMEZCUXp0blFrRkRTQ3hQUVVGUExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUXpOQ0xFbEJRVWtzWVVGQllTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZET1VNc1IwRkJSeXhEUVVOS0xFTkJRVU03V1VGRFNpeERRVUZETzFsQlFVTXNUMEZCVHl4RFFVRk5MRVZCUVVVc1EwRkJRenRuUWtGRGFFSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1lVRkJZU3hGUVVGRkxFTkJRVU03YjBKQlF5OUNMRTlCUVU4c1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZETTBJc1NVRkJTU3hoUVVGaExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVU01UXl4SFFVRkhMRU5CUTBvc1EwRkJRenRuUWtGRFNpeERRVUZETzJkQ1FVTkVMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRMVlzUTBGQlF6dFJRVU5JTEVOQlFVTXNRMEZCUXp0UlFVVkdMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzV1VGQldTeEZRVUZGTEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzFsQlEyUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hoUVVGaExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEyNUZMRWxCUVVrc2FVSkJRV2xDTEVWQlFVVXNRMEZCUXp0blFrRkRkRUlzVFVGQlRTeFpRVUZaTEVOQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dG5Ra0ZEZGtRc1QwRkJUeXhQUVVGUExFTkJRVU03V1VGRGFrSXNRMEZCUXp0WlFVTkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMWxCUXpWRExFMUJRVTBzU1VGQlNTeERRVUZETEdkRFFVRm5ReXhEUVVGRExFZEJRVWNzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTXhSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVdNc1EwRkJReXhEUVVGRE8xRkJRelZETEVOQlFVTTdVVUZGUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRmpMRU5CUVVNc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEyNURMRTlCUVU4c1QwRkJUeXhEUVVGRE8xRkJRMnBDTEVOQlFVTTdVVUZGUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEYmtVc1NVRkJTU3hwUWtGQmFVSXNSVUZCUlN4RFFVRkRPMWxCUTNSQ0xFMUJRVTBzV1VGQldTeERRVUZETEZGQlFWRXNSVUZCUlN4WFFVRlpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03V1VGRGRrUXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3g1UTBGQmVVTXNTVUZCU1N4WlFVRlpMRTlCUVdNc1dVRkJXU3hQUVVGakxFVkJRVVVzUTBGRGNFY3NRMEZCUXp0WlFVTkdMRTlCUVU4c1QwRkJUeXhEUVVGRE8xRkJRMnBDTEVOQlFVTTdVVUZGUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhOUVVGTkxGbEJRVmtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTTFReXhOUVVGTkxFbEJRVWtzUTBGQlF5eG5RMEZCWjBNc1EwRkJReXhIUVVGSExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRmpMRU5CUVVNc1EwRkJRenRKUVVNMVF5eERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFN5eExRVUZMTEVOQlFVTXNNRUpCUVRCQ0xFTkJRM1JETEVkQlFXbENMRVZCUTJwQ0xFZEJRV3RDTEVWQlEyeENMRmRCUVhGQ08xRkJSWEpDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl3d1FrRkJNRUlzUTBGQlF5eERRVUZETzFGQlF6VkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUV5UXl4RFFVRkRPMUZCUTJwRkxFMUJRVTBzVTBGQlV5eEhRVUZITEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1lVRkJiMElzUTBGQlF5eERRVUZETzFGQlEzaEVMRTFCUVUwc1YwRkJWeXhIUVVGSkxFZEJRVFpDTEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVU40UlN4VFFVRlRMRVZCUTFRc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUTJwQ0xFTkJRVU03VVVGRlJpeExRVUZMTEUxQlFVMHNWVUZCVlN4SlFVRkpMRmRCUVZjc1JVRkJSU3hEUVVGRE8xbEJRM0pETEVsQlFVa3NRMEZCUXp0blFrRkRTQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8yZENRVU4wUkN4TlFVRk5MRTFCUVUwc1IwRkJSenR2UWtGRFlpeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hUUVVGVE8yOUNRVU01UWl4RlFVRkZMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlExWXNUMEZCVHl4RlFVRkZMRWRCUVVjc1EwRkJReXhQUVVGUE8ybENRVU55UWl4RFFVRkRPMmRDUVVOR0xFMUJRVTBzWTBGQll5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRmRCUVZjc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlZTeERRVUZETEVOQlFVTTdaMEpCUTJ4RkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4SFFVRkhMRU5CUVVNc1JVRkJSU3d3UWtGQk1FSXNWVUZCVlN4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOMFJTeERRVUZETzFsQlFVTXNUMEZCVHl4RFFVRlZMRVZCUVVVc1EwRkJRenRuUWtGRGNFSXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkRUaXcwUWtGQk5FSXNSMEZCUnl4RFFVRkRMRVZCUVVVc2EwSkJRV3RDTEZWQlFWVXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkRka1VzUTBGQlF6dFpRVU5LTEVOQlFVTTdVVUZEU0N4RFFVRkRPMGxCUTBnc1EwRkJRenRKUVVWUExFdEJRVXNzUTBGQlF5eG5RMEZCWjBNc1EwRkROVU1zUjBGQmFVSXNSVUZEYWtJc1IwRkJhMEk3VVVGRmJFSXNaMFpCUVdkR08xRkJRMmhHTERoR1FVRTRSanRSUVVNNVJpeE5RVUZOTEZkQlFWY3NSMEZCU1N4SFFVRTJRaXhEUVVGRExITkNRVUZ6UWl4RFFVTjJSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVTm1MRU5CUVVNN1VVRkZSaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFpRVU53UkN4UFFVRlBPMUZCUTFRc1EwRkJRenRSUVVWRUxEQkdRVUV3Ump0UlFVTXhSaXhKUVVGSkxGZEJRVmNzUTBGQlF5eGxRVUZsTEVWQlFVVXNRMEZCUXp0WlFVTm9ReXhQUVVGUE8xRkJRMVFzUTBGQlF6dFJRVVZFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4blEwRkJaME1zUTBGQlF5eERRVUZETzFGQlEyeEZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRMDRzZDBKQlFYZENMRWRCUVVjc1EwRkJReXhGUVVGRkxFOUJRVThzVjBGQlZ5eERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRFJDUVVFMFFpeFhRVUZYTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVU53U1N4RFFVRkRPMUZCUlVZc1RVRkJUU3hKUVVGSkxFTkJRVU1zTUVKQlFUQkNMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFhRVUZYTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1NVRkRNMFVzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0Y2JpQWdTVzUwWlhKdVlXeEZjbkp2Y2l4Y2JpQWdUbTkwUm05MWJtUkZjbkp2Y2l4Y2JpQWdUM0JsY21GMGFXOXVTMlY1Y3l4Y2JuMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWtZaTFrWldOdmNtRjBiM0p6WENJN1hHNXBiWEJ2Y25RZ2V5Qk5iMlJsYkNCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHVmpiM0poZEc5eUxYWmhiR2xrWVhScGIyNWNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFRmtZWEIwWlhJc1hHNGdJRU52Ym5SbGVIUXNYRzRnSUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5Wnl4Y2JpQWdVMlZ4ZFdWdVkyVXNYRzRnSUZObGNYVmxibU5sVFc5a1pXd3NYRzRnSUZObGNYVmxibU5sVDNCMGFXOXVjeXhjYmlBZ1UyVnlhV0ZzTEZ4dUlDQlZibk4xY0hCdmNuUmxaRVZ5Y205eUxGeHVmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMk52Y21WY0lqdGNibWx0Y0c5eWRDQjdJRVpoWW5KcFkwTnZiblJ5WVdOMFEyOXVkR1Y0ZENCOUlHWnliMjBnWENJdUwwTnZiblJ5WVdOMFEyOXVkR1Y0ZEZ3aU8xeHVhVzF3YjNKMElIUjVjR1VnZXlCR1lXSnlhV05EYjI1MGNtRmpkRUZrWVhCMFpYSWdmU0JtY205dElGd2lMaTlEYjI1MGNtRmpkRUZrWVhCMFpYSmNJanRjYm1sdGNHOXlkQ0I3SUVOdmRXTm9SRUpMWlhseklIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OW1iM0l0WTI5MVkyaGtZbHdpTzF4dVhHNHZLaXBjYmlBcUlFQmtaWE5qY21sd2RHbHZiaUJCWW5OMGNtRmpkQ0JpWVhObElHTnNZWE56SUdadmNpQnpaWEYxWlc1alpTQm5aVzVsY21GMGFXOXVYRzRnS2lCQWMzVnRiV0Z5ZVNCUWNtOTJhV1JsY3lCaElHWnlZVzFsZDI5eWF5Qm1iM0lnWjJWdVpYSmhkR2x1WnlCelpYRjFaVzUwYVdGc0lIWmhiSFZsY3lBb2JHbHJaU0J3Y21sdFlYSjVJR3RsZVhNcElHbHVJSFJvWlNCd1pYSnphWE4wWlc1alpTQnNZWGxsY2k1Y2JpQXFJRWx0Y0d4bGJXVnVkR0YwYVc5dWN5QnZaaUIwYUdseklHTnNZWE56SUdoaGJtUnNaU0IwYUdVZ2MzQmxZMmxtYVdOeklHOW1JR2h2ZHlCelpYRjFaVzVqWlhNZ1lYSmxJSE4wYjNKbFpDQmhibVFnYVc1amNtVnRaVzUwWldRZ2FXNGdaR2xtWm1WeVpXNTBYRzRnS2lCa1lYUmhZbUZ6WlNCemVYTjBaVzF6TGx4dUlDb2dRSEJoY21GdElIdFRaWEYxWlc1alpVOXdkR2x2Ym5OOUlHOXdkR2x2Ym5NZ0xTQkRiMjVtYVdkMWNtRjBhVzl1SUc5d2RHbHZibk1nWm05eUlIUm9aU0J6WlhGMVpXNWpaU0JuWlc1bGNtRjBiM0pjYmlBcUlFQmpiR0Z6Y3lCVFpYRjFaVzVqWlZ4dUlDb2dRR1Y0WVcxd2JHVmNiaUFxSUdCZ1lIUjVjR1Z6WTNKcGNIUmNiaUFxSUM4dklFVjRZVzF3YkdVZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnWm05eUlHRWdjM0JsWTJsbWFXTWdaR0YwWVdKaGMyVmNiaUFxSUdOc1lYTnpJRkJ2YzNSbmNtVnpVMlZ4ZFdWdVkyVWdaWGgwWlc1a2N5QlRaWEYxWlc1alpTQjdYRzRnS2lBZ0lHTnZibk4wY25WamRHOXlLRzl3ZEdsdmJuTTZJRk5sY1hWbGJtTmxUM0IwYVc5dWN5a2dlMXh1SUNvZ0lDQWdJSE4xY0dWeUtHOXdkR2x2Ym5NcE8xeHVJQ29nSUNCOVhHNGdLbHh1SUNvZ0lDQmhjM2x1WXlCdVpYaDBLQ2s2SUZCeWIyMXBjMlU4Ym5WdFltVnlQaUI3WEc0Z0tpQWdJQ0FnTHk4Z1NXMXdiR1Z0Wlc1MFlYUnBiMjRnZEc4Z1oyVjBJRzVsZUhRZ2RtRnNkV1VnWm5KdmJTQlFiM04wWjNKbFUxRk1JSE5sY1hWbGJtTmxYRzRnS2lBZ0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnZEdocGN5NXZjSFJwYjI1ekxtVjRaV04xZEc5eUxuSmhkeWhnVTBWTVJVTlVJRzVsZUhSMllXd29KeVI3ZEdocGN5NXZjSFJwYjI1ekxtNWhiV1Y5SnlsZ0tUdGNiaUFxSUNBZ0lDQnlaWFIxY200Z2NHRnljMlZKYm5Rb2NtVnpkV3gwTG5KdmQzTmJNRjB1Ym1WNGRIWmhiQ2s3WEc0Z0tpQWdJSDFjYmlBcVhHNGdLaUFnSUdGemVXNWpJR04xY25KbGJuUW9LVG9nVUhKdmJXbHpaVHh1ZFcxaVpYSStJSHRjYmlBcUlDQWdJQ0F2THlCSmJYQnNaVzFsYm5SaGRHbHZiaUIwYnlCblpYUWdZM1Z5Y21WdWRDQjJZV3gxWlNCbWNtOXRJRkJ2YzNSbmNtVlRVVXdnYzJWeGRXVnVZMlZjYmlBcUlDQWdJQ0JqYjI1emRDQnlaWE4xYkhRZ1BTQmhkMkZwZENCMGFHbHpMbTl3ZEdsdmJuTXVaWGhsWTNWMGIzSXVjbUYzS0dCVFJVeEZRMVFnWTNWeWNuWmhiQ2duSkh0MGFHbHpMbTl3ZEdsdmJuTXVibUZ0WlgwbktXQXBPMXh1SUNvZ0lDQWdJSEpsZEhWeWJpQndZWEp6WlVsdWRDaHlaWE4xYkhRdWNtOTNjMXN3WFM1amRYSnlkbUZzS1R0Y2JpQXFJQ0FnZlZ4dUlDcGNiaUFxSUNBZ1lYTjVibU1nY21GdVoyVW9ZMjkxYm5RNklHNTFiV0psY2lrNklGQnliMjFwYzJVOGJuVnRZbVZ5VzEwK0lIdGNiaUFxSUNBZ0lDQXZMeUJKYlhCc1pXMWxiblJoZEdsdmJpQjBieUJuWlhRZ1lTQnlZVzVuWlNCdlppQjJZV3gxWlhOY2JpQXFJQ0FnSUNCamIyNXpkQ0IyWVd4MVpYTTZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNGdLaUFnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmpiM1Z1ZERzZ2FTc3JLU0I3WEc0Z0tpQWdJQ0FnSUNCMllXeDFaWE11Y0hWemFDaGhkMkZwZENCMGFHbHpMbTVsZUhRb0tTazdYRzRnS2lBZ0lDQWdmVnh1SUNvZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlhNN1hHNGdLaUFnSUgxY2JpQXFJSDFjYmlBcVhHNGdLaUF2THlCVmMyRm5aVnh1SUNvZ1kyOXVjM1FnYzJWeGRXVnVZMlVnUFNCdVpYY2dVRzl6ZEdkeVpYTlRaWEYxWlc1alpTaDdYRzRnS2lBZ0lHNWhiV1U2SUNkMWMyVnlYMmxrWDNObGNTY3NYRzRnS2lBZ0lHVjRaV04xZEc5eU9pQmtZa1Y0WldOMWRHOXlYRzRnS2lCOUtUdGNiaUFxWEc0Z0tpQmpiMjV6ZENCdVpYaDBTV1FnUFNCaGQyRnBkQ0J6WlhGMVpXNWpaUzV1WlhoMEtDazdYRzRnS2lCZ1lHQmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRVpoWW5KcFkwTnZiblJ5WVdOMFUyVnhkV1Z1WTJVZ1pYaDBaVzVrY3lCVFpYRjFaVzVqWlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1EzSmxZWFJsY3lCaElHNWxkeUJ6WlhGMVpXNWpaU0JwYm5OMFlXNWpaVnh1SUNBZ0tpQkFjM1Z0YldGeWVTQlFjbTkwWldOMFpXUWdZMjl1YzNSeWRXTjBiM0lnZEdoaGRDQnBibWwwYVdGc2FYcGxjeUIwYUdVZ2MyVnhkV1Z1WTJVZ2QybDBhQ0IwYUdVZ2NISnZkbWxrWldRZ2IzQjBhVzl1YzF4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iM0IwYVc5dWN6b2dVMlZ4ZFdWdVkyVlBjSFJwYjI1ekxDQmhaR0Z3ZEdWeU9pQkJaR0Z3ZEdWeVBHRnVlU3dnWVc1NUxDQmhibmsrS1NCN1hHNGdJQ0FnYzNWd1pYSW9iM0IwYVc5dWN5d2dZV1JoY0hSbGNpazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGSmxkSEpwWlhabGN5QjBhR1VnWTNWeWNtVnVkQ0IyWVd4MVpTQnZaaUIwYUdVZ2MyVnhkV1Z1WTJWY2JpQWdJQ29nUUhOMWJXMWhjbmtnUjJWMGN5QjBhR1VnWTNWeWNtVnVkQ0IyWVd4MVpTQnZaaUIwYUdVZ2MyVnhkV1Z1WTJVZ1puSnZiU0J6ZEc5eVlXZGxMaUJKWmlCMGFHVWdjMlZ4ZFdWdVkyVmNiaUFnSUNvZ1pHOWxjMjRuZENCbGVHbHpkQ0I1WlhRc0lHbDBJSEpsZEhWeWJuTWdkR2hsSUdOdmJtWnBaM1Z5WldRZ2MzUmhjblJwYm1jZ2RtRnNkV1V1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdRU0J3Y205dGFYTmxJSFJvWVhRZ2NtVnpiMngyWlhNZ2RHOGdkR2hsSUdOMWNuSmxiblFnYzJWeGRXVnVZMlVnZG1Gc2RXVmNiaUFnSUNvdlhHNGdJRzkyWlhKeWFXUmxJR0Z6ZVc1aklHTjFjbkpsYm5Rb1hHNGdJQ0FnTGk0dVlYSm5jem9nVFdGNVltVkRiMjUwWlhoMGRXRnNRWEpuUEdGdWVUNWNiaUFnS1RvZ1VISnZiV2x6WlR4emRISnBibWNnZkNCdWRXMWlaWElnZkNCaWFXZHBiblErSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR04wZUN3Z2JHOW5JSDBnUFNBb1hHNGdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0JQY0dWeVlYUnBiMjVMWlhsekxsSkZRVVFzSUhSeWRXVXBYRzRnSUNBZ0tTNW1iM0lvZEdocGN5NWpkWEp5Wlc1MEtUdGNiaUFnSUNCc1pYUWdZMkZqYUdWa1EzVnljbVZ1ZERvZ1lXNTVPMXh1SUNBZ0lHTnZibk4wSUhzZ2JtRnRaU3dnYzNSaGNuUlhhWFJvSUgwZ1BTQjBhR2x6TG05d2RHbHZibk03WEc0Z0lDQWdZMjl1YzNRZ1lXUmhjSFJsY2sxbGRHRWdQU0FvWTNSNElHRnpJRVpoWW5KcFkwTnZiblJ5WVdOMFEyOXVkR1Y0ZENrdVoyVjBVMlZ4ZFdWdVkyVlRaV2R5WldkaGRHbHZiaWhjYmlBZ0lDQWdJRk4wY21sdVp5aHVZVzFsS1Z4dUlDQWdJQ2s3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUdOaFkyaGxaRU4xY25KbGJuUWdQU0JqZEhndVoyVjBSbkp2YlVOb2FXeGtjbVZ1S0c1aGJXVWdZWE1nWVc1NUtUdGNiaUFnSUNBZ0lHbG1JQ2hqWVdOb1pXUkRkWEp5Wlc1MElDRTlQU0IxYm1SbFptbHVaV1FnSmlZZ1kyRmphR1ZrUTNWeWNtVnVkQ0FoUFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWNHRnljMlVvWTJGamFHVmtRM1Z5Y21WdWRDazdYRzRnSUNBZ0lDQmpiMjV6ZENCelpYRjFaVzVqWlRvZ1UyVnhkV1Z1WTJWTmIyUmxiQ0E5SUdGM1lXbDBJSFJvYVhNdWNtVndieTV5WldGa0tHNWhiV1VnWVhNZ2MzUnlhVzVuTENCamRIZ3BPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Y0dGeWMyVW9jMlZ4ZFdWdVkyVXVZM1Z5Y21WdWRDQmhjeUJ6ZEhKcGJtY2dmQ0J1ZFcxaVpYSXBPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVTZJR0Z1ZVNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR1VnYVc1emRHRnVZMlZ2WmlCT2IzUkdiM1Z1WkVWeWNtOXlLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFbG1JSFJvWlNCelpYRjFaVzVqWlNCcGN5QnpkWEJ3YjNObFpDQjBieUJzYVhabElHbHVJSEJ5YVhaaGRHVXZjMmhoY21Wa0lHTnZiR3hsWTNScGIyNXpMRnh1SUNBZ0lDQWdJQ0F2THlCeVpXRmtJR2wwSUdaeWIyMGdkR2h2YzJVZ1kyOXNiR1ZqZEdsdmJuTWdkWE5wYm1jZ2RHaGxJR0ZrWVhCMFpYSWdLRzV2ZENCMGFHVWdjM1IxWWlCa2FYSmxZM1JzZVNrdVhHNGdJQ0FnSUNBZ0lHbG1JQ2hoWkdGd2RHVnlUV1YwWVQ4dVkyOXNiR1ZqZEdsdmJuTS9MbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR0ZrWVhCMFpYSWdQU0IwYUdsekxtRmtZWEIwWlhJZ1lYTWdkVzVyYm05M2JpQmhjeUJHWVdKeWFXTkRiMjUwY21GamRFRmtZWEIwWlhJN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RHRmliR1ZPWVcxbElEMGdUVzlrWld3dWRHRmliR1ZPWVcxbEtGTmxjWFZsYm1ObFRXOWtaV3dnWVhNZ1lXNTVLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J3ZFdKc2FXTkxaWGtnUFNBb1kzUjRJR0Z6SUVaaFluSnBZME52Ym5SeVlXTjBRMjl1ZEdWNGRDa3VjM1IxWWk1amNtVmhkR1ZEYjIxd2IzTnBkR1ZMWlhrb1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwWVdKc1pVNWhiV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmJVM1J5YVc1bktHNWhiV1VwWFZ4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnWm05eUlDaGpiMjV6ZENCamIyd2diMllnWVdSaGNIUmxjazFsZEdFdVkyOXNiR1ZqZEdsdmJuTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElIQnlhWFpoZEdWQlpHRndkR1Z5SUQwZ1lXUmhjSFJsY2k1bWIzSlFjbWwyWVhSbEtHTnZiQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElISmhkeUE5SUdGM1lXbDBJQ2h3Y21sMllYUmxRV1JoY0hSbGNpQmhjeUJoYm5rcExuSmxZV1JUZEdGMFpTaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndkV0pzYVdOTFpYa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZM1I0SUdGeklHRnVlVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21GM0lDWW1JSEpoZHk1amRYSnlaVzUwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnY21GM0xtTjFjbkpsYm5RZ0lUMDlJRzUxYkd3cFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjR0Z5YzJVb2NtRjNMbU4xY25KbGJuUWdZWE1nWVc1NUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dWeWNqb2dZVzU1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGxjbklnYVc1emRHRnVZMlZ2WmlCT2IzUkdiM1Z1WkVWeWNtOXlLU0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnWm1Gc2JDQjBhSEp2ZFdkb0lIUnZJSEpsWjNWc1lYSWdjM1JoY25SWGFYUm9JR1poYkd4aVlXTnJJR1p2Y2lCaGJua2djR0Z5YzJVdlNVOGdaWEp5YjNKelhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lDQWdJQ0FnSUNBZ1lGUnllV2x1WnlCMGJ5QnlaWE52YkhabElHTjFjbkpsYm5RZ2MyVnhkV1Z1WTJVZ0pIdHVZVzFsZlNCMllXeDFaU0JtY205dElHTnZiblJsZUhRZ2RISmxaV0JjYmlBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQWdJR05oWTJobFpFTjFjbkpsYm5RZ1BTQmpkSGd1WjJWMFJuSnZiVU5vYVd4a2NtVnVLRzVoYldVZ1lYTWdZVzU1S1R0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWTJGamFHVmtRM1Z5Y21WdWRDQWhQVDBnZFc1a1pXWnBibVZrSUNZbUlHTmhZMmhsWkVOMWNuSmxiblFnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3h2Wnk1a1pXSjFaeWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZRkpsZEhKcFpYWmxaQ0JqWVdOb1pXUWdZM1Z5Y21WdWRDQjJZV3gxWlNCbWIzSWdjMlZ4ZFdWdVkyVWdKSHR1WVcxbGZUb2dKSHRqWVdOb1pXUkRkWEp5Wlc1MGZXQmNiaUFnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtOHRkVzUxYzJWa0xYWmhjbk5jYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlRvZ2RXNXJibTkzYmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUdaaGJHd2dkR2h5YjNWbmFGeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoallXTm9aV1JEZFhKeVpXNTBJRDA5UFNCMWJtUmxabWx1WldRZ2ZId2dZMkZqYUdWa1EzVnljbVZ1ZENBOVBUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR3h2Wnk1cGJtWnZLR0JPYnlCallXTm9aV1FnZG1Gc2RXVWdabTl5SUhObGNYVmxibU5sSUNSN2JtRnRaWDBnYVc0Z1kyOXVkR1Y0ZEdBcE8xeHVJQ0FnSUNBZ0lDQWdJR05oWTJobFpFTjFjbkpsYm5RZ1BTQnpkR0Z5ZEZkcGRHZzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1d1lYSnpaU2hqWVdOb1pXUkRkWEp5Wlc1MEtUdGNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aVG9nWVc1NUtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNCZ1JtRnBiR1ZrSUhSdklIQmhjbk5sSUdsdWFYUnBZV3dnZG1Gc2RXVWdabTl5SUhObGNYVmxibU5sSUNSN2MzUmhjblJYYVhSb2ZUb2dKSHRsZldCY2JpQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNiaUFnSUNBZ0lDQWdZRVpoYVd4bFpDQjBieUJ5WlhSeWFXVjJaU0JqZFhKeVpXNTBJSFpoYkhWbElHWnZjaUJ6WlhGMVpXNWpaU0FrZTI1aGJXVjlPaUFrZTJWOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVsdVkzSmxiV1Z1ZEhNZ2RHaGxJSE5sY1hWbGJtTmxJSFpoYkhWbFhHNGdJQ0FxSUVCemRXMXRZWEo1SUVsdVkzSmxZWE5sY3lCMGFHVWdZM1Z5Y21WdWRDQnpaWEYxWlc1alpTQjJZV3gxWlNCaWVTQjBhR1VnYzNCbFkybG1hV1ZrSUdGdGIzVnVkQ0JoYm1RZ2NHVnljMmx6ZEhOY2JpQWdJQ29nZEdobElHNWxkeUIyWVd4MVpTQjBieUJ6ZEc5eVlXZGxMaUJVYUdseklHMWxkR2h2WkNCb1lXNWtiR1Z6SUdKdmRHZ2diblZ0WlhKcFl5QmhibVFnUW1sblNXNTBJSE5sY1hWbGJtTmxJSFI1Y0dWekxseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaeUI4SUc1MWJXSmxjaUI4SUdKcFoybHVkSDBnWTNWeWNtVnVkQ0F0SUZSb1pTQmpkWEp5Wlc1MElIWmhiSFZsSUc5bUlIUm9aU0J6WlhGMVpXNWpaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1cyTnZkVzUwWFNBdElFOXdkR2x2Ym1Gc0lHRnRiM1Z1ZENCMGJ5QnBibU55WlcxbGJuUWdZbmtzSUdSbFptRjFiSFJ6SUhSdklIUm9aU0J6WlhGMVpXNWpaU2R6SUdsdVkzSmxiV1Z1ZEVKNUlIWmhiSFZsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdRU0J3Y205dGFYTmxJSFJvWVhRZ2NtVnpiMngyWlhNZ2RHOGdkR2hsSUc1bGR5QnpaWEYxWlc1alpTQjJZV3gxWlNCaFpuUmxjaUJwYm1OeVpXMWxiblJwYm1kY2JpQWdJQ292WEc0Z0lIQnliM1JsWTNSbFpDQnZkbVZ5Y21sa1pTQmhjM2x1WXlCcGJtTnlaVzFsYm5Rb1hHNGdJQ0FnWTI5MWJuUTZJRzUxYldKbGNpQjhJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQmpkSGc2SUVOdmJuUmxlSFE4WVc1NVBseHVJQ0FwT2lCUWNtOXRhWE5sUEhOMGNtbHVaeUI4SUc1MWJXSmxjaUI4SUdKcFoybHVkRDRnZTF4dUlDQWdJR052Ym5OMElHeHZaeUE5SUdOMGVDNXNiMmRuWlhJdVptOXlLSFJvYVhNdWFXNWpjbVZ0Wlc1MEtUdGNiaUFnSUNCamIyNXpkQ0I3SUhSNWNHVXNJR2x1WTNKbGJXVnVkRUo1TENCdVlXMWxJSDBnUFNCMGFHbHpMbTl3ZEdsdmJuTTdYRzRnSUNBZ2FXWWdLQ0Z1WVcxbEtTQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY0lsTmxjWFZsYm1ObElHNWhiV1VnYVhNZ2NtVnhkV2x5WldSY0lpazdYRzRnSUNBZ2JHOW5MbWx1Wm04b1lFOWlkR0ZwYm1sdVp5QnpaWEYxWlc1alpTQnNiMk5ySUdadmNpQnpaWEYxWlc1alpTQWtlMjVoYldWOVlDazdYRzRnSUNBZ0x5OGdjbVYwZFhKdUlFWmhZbkpwWTBOdmJuUnlZV04wVTJWeGRXVnVZMlV1Ykc5amF5NWxlR1ZqZFhSbEtHRnplVzVqSUNncElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMGIwbHVZM0psYldWdWRFSjVJRDBnWTI5MWJuUWdmSHdnYVc1amNtVnRaVzUwUW5rN1hHNGdJQ0FnYVdZZ0tIUnZTVzVqY21WdFpXNTBRbmtnSlNCcGJtTnlaVzFsYm5SQ2VTQWhQVDBnTUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnVm1Gc2RXVWdkRzhnYVc1amNtVnRaVzUwSUdSdlpYTWdibTkwSUdOdmJuTnBaR1Z5SUhSb1pTQnBibU55WlcxbGJuUkNlU0J6WlhSMGFXNW5PaUFrZTJsdVkzSmxiV1Z1ZEVKNWZXQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ1kyOXVjM1FnZEhsd1pVNWhiV1VnUFZ4dUlDQWdJQ0FnZEhsd1pXOW1JSFI1Y0dVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQW9kSGx3WlNCaGN5QmhibmtwUHk1dVlXMWxYRzRnSUNBZ0lDQWdJRDhnS0hSNWNHVWdZWE1nWVc1NUtTNXVZVzFsWEc0Z0lDQWdJQ0FnSURvZ2RIbHdaVHRjYmlBZ0lDQmpiMjV6ZENCamRYSnlaVzUwVm1Gc2RXVWdQU0JoZDJGcGRDQjBhR2x6TG1OMWNuSmxiblFvWTNSNEtUdGNibHh1SUNBZ0lHRnplVzVqSUdaMWJtTjBhVzl1SUhKbGRIVnlia0Z1WkVOaFkyaGxLSEpsY3pvZ1UyVnhkV1Z1WTJWTmIyUmxiQ0I4SUZCeWIyMXBjMlU4VTJWeGRXVnVZMlZOYjJSbGJENHBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpYTWdhVzV6ZEdGdVkyVnZaaUJRY205dGFYTmxLU0J5WlhNZ1BTQmhkMkZwZENCeVpYTTdYRzRnSUNBZ0lDQnNiMmRjYmlBZ0lDQWdJQ0FnTG1admNpaHlaWFIxY201QmJtUkRZV05vWlNsY2JpQWdJQ0FnSUNBZ0xtbHVabThvWUZOMGIzSnBibWNnYm1WM0lDUjdibUZ0WlgwZ2MyVnhJSFpoYkhWbElHbHVJR05oWTJobE9pQWtlM0psY3k1amRYSnlaVzUwZldBcE8xeHVJQ0FnSUNBZ1kzUjRMbU5oWTJobExuQjFkQ2h1WVcxbElHRnpJSE4wY21sdVp5d2djbVZ6TG1OMWNuSmxiblFwTzF4dUlDQWdJQ0FnY21WMGRYSnVJSEpsY3p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQndaWEptYjNKdFZYQnpaWEowSUQwZ1lYTjVibU1nS0Z4dUlDQWdJQ0FnYm1WNGREb2djM1J5YVc1bklId2diblZ0WW1WeUlId2dZbWxuYVc1MFhHNGdJQ0FnS1RvZ1VISnZiV2x6WlR4VFpYRjFaVzVqWlUxdlpHVnNQaUE5UGlCN1hHNGdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZWGRoYVhRZ2NtVjBkWEp1UVc1a1EyRmphR1VvWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTV5WlhCdkxuVndaR0YwWlNodVpYY2dVMlZ4ZFdWdVkyVk5iMlJsYkNoN0lHbGtPaUJ1WVcxbExDQmpkWEp5Wlc1ME9pQnVaWGgwSUgwcExDQmpkSGdwWEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOUlHTmhkR05vSUNobE9pQmhibmtwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1VnYVc1emRHRnVZMlZ2WmlCT2IzUkdiM1Z1WkVWeWNtOXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGM1lXbDBJSEpsZEhWeWJrRnVaRU5oWTJobEtGeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXlaWEJ2TG1OeVpXRjBaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdibVYzSUZObGNYVmxibU5sVFc5a1pXd29leUJwWkRvZ2JtRnRaU3dnWTNWeWNtVnVkRG9nYm1WNGRDQjlLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZM1I0WEc0Z0lDQWdJQ0FnSUNBZ0lDQXBYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNWNiaUFnSUNCamIyNXpkQ0JwYm1OeVpXMWxiblJUWlhKcFlXd2dQU0JoYzNsdVl5QW9YRzRnSUNBZ0lDQmlZWE5sT2lCemRISnBibWNnZkNCdWRXMWlaWElnZkNCaWFXZHBiblJjYmlBZ0lDQXBPaUJRY205dGFYTmxQSE4wY21sdVp5QjhJRzUxYldKbGNpQjhJR0pwWjJsdWRENGdQVDRnZTF4dUlDQWdJQ0FnYzNkcGRHTm9JQ2gwZVhCbFRtRnRaU2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJRTUxYldKbGNpNXVZVzFsT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBb2RHaHBjeTV3WVhKelpTaGlZWE5sS1NCaGN5QnVkVzFpWlhJcElDc2dkRzlKYm1OeVpXMWxiblJDZVR0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JDYVdkSmJuUXVibUZ0WlRwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0tIUm9hWE11Y0dGeWMyVW9ZbUZ6WlNrZ1lYTWdZbWxuYVc1MEtTQXJJRUpwWjBsdWRDaDBiMGx1WTNKbGJXVnVkRUo1S1R0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JUZEhKcGJtY3VibUZ0WlRwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV3WVhKelpTaGlZWE5sS1R0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JjSW5ObGNtbGhiRndpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGQyRnBkQ0JRY205dGFYTmxMbkpsYzI5c2RtVW9YRzRnSUNBZ0lDQWdJQ0FnSUNCVFpYSnBZV3d1YVc1emRHRnVZMlV1WjJWdVpYSmhkR1VvWW1GelpTQmhjeUJ6ZEhKcGJtY3BYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY0lsTm9iM1ZzWkNCdVpYWmxjaUJvWVhCd1pXNWNJaWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVHRjYmx4dUlDQWdJQzh2SUVOb1pXTnJJR2xtSUcxdlpHVnNJR2x6SUdaMWJHeDVJSE5sWjNKbFoyRjBaV1FnNG9DVUlITmxjWFZsYm1ObElHZHZaWE1nVDA1TVdTQjBieUJ3Y21sMllYUmxJR052Ykd4bFkzUnBiMjV6TGx4dUlDQWdJQzh2SUZCeVpXWmxjaUIwYUdVZ1pYaHdiR2xqYVhRZ2NHVnlMWE5sY1hWbGJtTmxJRzFsZEdGa1lYUmhJSGRvWlc0Z1lYWmhhV3hoWW14bE95QnZkR2hsY25kcGMyVWdabUZzYkNCaVlXTnJJSFJ2WEc0Z0lDQWdMeThnZEdobElHTnZiblJsZUhRbmN5QnlaV2RwYzNSbGNtVmtJSEpsWVdRZ1kyOXNiR1ZqZEdsdmJuTWdLR052ZG1WeWN5QmxZWEpzZVNCd2F5Qm5aVzVsY21GMGFXOXVJSEJoZEdoektTNWNiaUFnSUNCamIyNXpkQ0JoWkdGd2RHVnlUV1YwWVNBOUlDaGpkSGdnWVhNZ1JtRmljbWxqUTI5dWRISmhZM1JEYjI1MFpYaDBLUzVuWlhSVFpYRjFaVzVqWlZObFozSmxaMkYwYVc5dUtGeHVJQ0FnSUNBZ2JtRnRaVnh1SUNBZ0lDazdYRzRnSUNBZ1kyOXVjM1FnWm1Gc2JHSmhZMnREYjJ4c1pXTjBhVzl1Y3lBOUlDaGpkSGdnWVhNZ1JtRmljbWxqUTI5dWRISmhZM1JEYjI1MFpYaDBLVnh1SUNBZ0lDQWdMbWRsZEZKbFlXUkRiMnhzWldOMGFXOXVjeWdwWEc0Z0lDQWdJQ0F1Wm1sc2RHVnlLRUp2YjJ4bFlXNHBPMXh1SUNBZ0lHTnZibk4wSUdWbVptVmpkR2wyWlVOdmJHeGxZM1JwYjI1eklEMWNiaUFnSUNBZ0lHRmtZWEIwWlhKTlpYUmhQeTVqYjJ4c1pXTjBhVzl1Y3o4dWJHVnVaM1JvSUQ4Z1lXUmhjSFJsY2sxbGRHRXVZMjlzYkdWamRHbHZibk1nT2lCbVlXeHNZbUZqYTBOdmJHeGxZM1JwYjI1ek8xeHVJQ0FnSUdOdmJuTjBJR1ZtWm1WamRHbDJaVVoxYkd4NVUyVm5jbVZuWVhSbFpDQTlYRzRnSUNBZ0lDQW9ZV1JoY0hSbGNrMWxkR0UvTG1aMWJHeDVVMlZuY21WbllYUmxaQ0EvUHlBb1kzUjRJR0Z6SUVaaFluSnBZME52Ym5SeVlXTjBRMjl1ZEdWNGRDa3VhWE5HZFd4c2VWTmxaM0psWjJGMFpXUXBJQ1ltWEc0Z0lDQWdJQ0JsWm1abFkzUnBkbVZEYjJ4c1pXTjBhVzl1Y3k1c1pXNW5kR2dnUGlBd08xeHVYRzRnSUNBZ2JHVjBJRzVsZUhRNklHRnVlVHRjYmlBZ0lDQnBaaUFvZEhsd1pVNWhiV1VnUFQwOUlGd2lkWFZwWkZ3aUtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWVzV6ZFhCd2IzSjBaV1JGY25KdmNpaGNiaUFnSUNBZ0lDQWdZSFYxYVdRZ2NHc2daMlZ1WlhKaGRHbHZiaUJwY3lCdmJteDVJSE4xY0hCdmNuUmxaQ0IxYzJsdVp5QkFkWFZwWkNCaGJtUWdZU0JrWlhSbGNtMXBibWx6ZEdsaklITmxaV1JnWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnVaWGgwSUQwZ1lYZGhhWFFnYVc1amNtVnRaVzUwVTJWeWFXRnNLR04xY25KbGJuUldZV3gxWlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHVm1abVZqZEdsMlpVWjFiR3g1VTJWbmNtVm5ZWFJsWkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzJWeFRXOWtaV3dnUFNCdVpYY2dVMlZ4ZFdWdVkyVk5iMlJsYkNoN0lHbGtPaUJ1WVcxbExDQmpkWEp5Wlc1ME9pQnVaWGgwSUgwcE8xeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NTNjbWwwWlZObGNYVmxibU5sVkc5RGIyeHNaV04wYVc5dWN5aGNiaUFnSUNBZ0lDQWdZM1I0TEZ4dUlDQWdJQ0FnSUNCelpYRk5iMlJsYkN4Y2JpQWdJQ0FnSUNBZ1pXWm1aV04wYVhabFEyOXNiR1ZqZEdsdmJuTmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnNiMmN1WkdWaWRXY29YRzRnSUNBZ0lDQWdJR0JUWlhGMVpXNWpaUzVwYm1OeVpXMWxiblFnS0hCeWFYWmhkR1V0YjI1c2VTa2dKSHR1WVcxbGZTQmpkWEp5Wlc1MFBTUjdZM1Z5Y21WdWRGWmhiSFZsSUdGeklHRnVlWDBnYm1WNGREMGtlMjVsZUhRZ1lYTWdZVzU1ZldCY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCamRIZ3VZMkZqYUdVdWNIVjBLRzVoYldVZ1lYTWdjM1J5YVc1bkxDQnVaWGgwS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhoME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSE5sY1NBOUlHRjNZV2wwSUhCbGNtWnZjbTFWY0hObGNuUW9ibVY0ZENrN1hHNGdJQ0FnYkc5bkxtUmxZblZuS0Z4dUlDQWdJQ0FnWUZObGNYVmxibU5sTG1sdVkzSmxiV1Z1ZENBa2UyNWhiV1Y5SUdOMWNuSmxiblE5Skh0amRYSnlaVzUwVm1Gc2RXVWdZWE1nWVc1NWZTQnVaWGgwUFNSN2JtVjRkQ0JoY3lCaGJubDlZRnh1SUNBZ0lDazdYRzVjYmlBZ0lDQXZMeUJTWlhCc2FXTmhkR1VnYzJWeGRXVnVZMlVnZEc4Z2MyVm5jbVZuWVhSbFpDQmpiMnhzWldOMGFXOXVjeUJwWmlCdGIyUmxiQ0IxYzJWeklIQnlhWFpoZEdVdmMyaGhjbVZrSUdSaGRHRXVYRzRnSUNBZ0x5OGdWMmhsYmlCdFpYUmhaR0YwWVNCcGMyNG5kQ0JoZG1GcGJHRmliR1VzSUdaaGJHd2dZbUZqYXlCMGJ5QjBhR1VnWTI5dWRHVjRkQ2R6SUhKbFoybHpkR1Z5WldRZ2NtVmhaQ0JqYjJ4c1pXTjBhVzl1Y3k1Y2JpQWdJQ0JwWmlBb1pXWm1aV04wYVhabFEyOXNiR1ZqZEdsdmJuTXViR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbmR5YVhSbFUyVnhkV1Z1WTJWVWIwTnZiR3hsWTNScGIyNXpLR04wZUN3Z2MyVnhMQ0JsWm1abFkzUnBkbVZEYjJ4c1pXTjBhVzl1Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSE5sY1M1amRYSnlaVzUwSUdGeklITjBjbWx1WnlCOElHNTFiV0psY2lCOElHSnBaMmx1ZER0Y2JpQWdJQ0F2THlCOUxDQnVZVzFsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUlc1emRYSmxjeUIwYUdVZ2MyVnhkV1Z1WTJVZ1pYaHBjM1J6SUdGdVpDQnBjeUJoZENCc1pXRnpkQ0JoSUdkcGRtVnVJSFpoYkhWbFhHNGdJQ0FxSUVCemRXMXRZWEo1SUVaaFluSnBZeUJ1WldWa2N5QjBieUJ5WlhOd1pXTjBJSE5sWjNKbFoyRjBaV1F2Y0hKcGRtRjBaUzl6YUdGeVpXUWdjM1J2Y21GblpTQnlkV3hsY3lCM2FHVnVJR055WldGMGFXNW5YRzRnSUNBcUlITmxjWFZsYm1ObGN5QW9abTl5SUdWNFlXMXdiR1VnWm05eUlIQmxjbk5wYzNSbGJuUWdRSFpsY25OcGIyNG9kSEoxWlNrZ1lXNWtJRUJ6WlhGMVpXNWpaU2dwS1M1Y2JpQWdJQ292WEc0Z0lHOTJaWEp5YVdSbElHRnplVzVqSUdWdWMzVnlaVUYwVEdWaGMzUW9YRzRnSUNBZ2RtRnNkV1U2SUhOMGNtbHVaeUI4SUc1MWJXSmxjaUI4SUdKcFoybHVkQ3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhZVzU1UGx4dUlDQXBPaUJRY205dGFYTmxQSE4wY21sdVp5QjhJRzUxYldKbGNpQjhJR0pwWjJsdWRENGdlMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRMQ0JzYjJjZ2ZTQTlJQ2hjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lFOXdaWEpoZEdsdmJrdGxlWE11VlZCRVFWUkZMQ0IwY25WbEtWeHVJQ0FnSUNrdVptOXlLSFJvYVhNdVpXNXpkWEpsUVhSTVpXRnpkQ2s3WEc0Z0lDQWdZMjl1YzNRZ2V5QnVZVzFsSUgwZ1BTQjBhR2x6TG05d2RHbHZibk03WEc0Z0lDQWdhV1lnS0NGdVlXMWxLU0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNJbE5sY1hWbGJtTmxJRzVoYldVZ2FYTWdjbVZ4ZFdseVpXUmNJaWs3WEc1Y2JpQWdJQ0JqYjI1emRDQmtaWE5wY21Wa0lEMGdkR2hwY3k1d1lYSnpaU2gyWVd4MVpTazdYRzVjYmlBZ0lDQmpiMjV6ZENCbmNtVmhkR1Z5VkdoaGJpQTlJQ2hjYmlBZ0lDQWdJR0U2SUhOMGNtbHVaeUI4SUc1MWJXSmxjaUI4SUdKcFoybHVkQ3hjYmlBZ0lDQWdJR0k2SUhOMGNtbHVaeUI4SUc1MWJXSmxjaUI4SUdKcFoybHVkRnh1SUNBZ0lDazZJR0p2YjJ4bFlXNGdQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCaElEMDlQU0JjSW1KcFoybHVkRndpSUh4OElIUjVjR1Z2WmlCaUlEMDlQU0JjSW1KcFoybHVkRndpS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCQ2FXZEpiblFvWVNCaGN5QmhibmtwSUQ0Z1FtbG5TVzUwS0dJZ1lYTWdZVzU1S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lTQTlQVDBnWENKdWRXMWlaWEpjSWlCOGZDQjBlWEJsYjJZZ1lpQTlQVDBnWENKdWRXMWlaWEpjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1RuVnRZbVZ5S0dFcElENGdUblZ0WW1WeUtHSXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlGTjBjbWx1WnloaEtTQStJRk4wY21sdVp5aGlLVHRjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdZMjl1YzNRZ1lXUmhjSFJsY2sxbGRHRWdQU0FvWTNSNElHRnpJRVpoWW5KcFkwTnZiblJ5WVdOMFEyOXVkR1Y0ZENrdVoyVjBVMlZ4ZFdWdVkyVlRaV2R5WldkaGRHbHZiaWhjYmlBZ0lDQWdJRk4wY21sdVp5aHVZVzFsS1Z4dUlDQWdJQ2s3WEc0Z0lDQWdZMjl1YzNRZ2FYTkdkV3hzZVZObFozSmxaMkYwWldRZ1BWeHVJQ0FnSUNBZ1lXUmhjSFJsY2sxbGRHRWdJVDA5SUhWdVpHVm1hVzVsWkNBbUpseHVJQ0FnSUNBZ1lXUmhjSFJsY2sxbGRHRXVablZzYkhsVFpXZHlaV2RoZEdWa0lDWW1YRzRnSUNBZ0lDQmhaR0Z3ZEdWeVRXVjBZUzVqYjJ4c1pXTjBhVzl1Y3k1c1pXNW5kR2dnUGlBd08xeHVYRzRnSUNBZ1kyOXVjM1FnY21WaFpFVjRhWE4wYVc1bklEMGdZWE41Ym1NZ0tDazZJRkJ5YjIxcGMyVThVMlZ4ZFdWdVkyVk5iMlJsYkNCOElIVnVaR1ZtYVc1bFpENGdQVDRnZTF4dUlDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRjNZV2wwSUhSb2FYTXVjbVZ3Ynk1eVpXRmtLRzVoYldVZ1lYTWdjM1J5YVc1bkxDQmpkSGdwTzF4dUlDQWdJQ0FnZlNCallYUmphQ0FvWlRvZ1lXNTVLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGxJR2x1YzNSaGJtTmxiMllnVG05MFJtOTFibVJGY25KdmNpa2djbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ1pUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOU8xeHVYRzRnSUNBZ1kyOXVjM1FnZDNKcGRHVlFjbWwyWVhSbElEMGdZWE41Ym1NZ0tGeHVJQ0FnSUNBZ2MyVnhUVzlrWld3NklGTmxjWFZsYm1ObFRXOWtaV3dzWEc0Z0lDQWdJQ0JqYjJ4c1pXTjBhVzl1Y3pvZ2MzUnlhVzVuVzExY2JpQWdJQ0FwSUQwK0lIdGNiaUFnSUNBZ0lHRjNZV2wwSUhSb2FYTXVkM0pwZEdWVFpYRjFaVzVqWlZSdlEyOXNiR1ZqZEdsdmJuTW9ZM1I0TENCelpYRk5iMlJsYkN3Z1kyOXNiR1ZqZEdsdmJuTXBPMXh1SUNBZ0lDQWdZM1I0TG1OaFkyaGxMbkIxZENodVlXMWxJR0Z6SUhOMGNtbHVaeXdnYzJWeFRXOWtaV3d1WTNWeWNtVnVkQ2s3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJR052Ym5OMElIVndjMlZ5ZEZCMVlteHBZeUE5SUdGemVXNWpJQ2h1WlhoME9pQnpkSEpwYm1jZ2ZDQnVkVzFpWlhJZ2ZDQmlhV2RwYm5RcElEMCtJSHRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGQyRnBkQ0IwYUdsekxuSmxjRzh1ZFhCa1lYUmxLRnh1SUNBZ0lDQWdJQ0FnSUc1bGR5QlRaWEYxWlc1alpVMXZaR1ZzS0hzZ2FXUTZJRzVoYldVc0lHTjFjbkpsYm5RNklHNWxlSFFnZlNrc1hHNGdJQ0FnSUNBZ0lDQWdZM1I0WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOUlHTmhkR05vSUNobE9pQmhibmtwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1VnYVc1emRHRnVZMlZ2WmlCT2IzUkdiM1Z1WkVWeWNtOXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGM1lXbDBJSFJvYVhNdWNtVndieTVqY21WaGRHVW9YRzRnSUNBZ0lDQWdJQ0FnSUNCdVpYY2dVMlZ4ZFdWdVkyVk5iMlJsYkNoN0lHbGtPaUJ1WVcxbExDQmpkWEp5Wlc1ME9pQnVaWGgwSUgwcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTNSNFhHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCMGFISnZkeUJsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDA3WEc1Y2JpQWdJQ0JqYjI1emRDQmxlR2x6ZEdsdVp5QTlJR0YzWVdsMElISmxZV1JGZUdsemRHbHVaeWdwTzF4dUlDQWdJR2xtSUNnaFpYaHBjM1JwYm1jcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhObGNVMXZaR1ZzSUQwZ2JtVjNJRk5sY1hWbGJtTmxUVzlrWld3b2V5QnBaRG9nYm1GdFpTd2dZM1Z5Y21WdWREb2daR1Z6YVhKbFpDQjlLVHRjYmlBZ0lDQWdJR2xtSUNocGMwWjFiR3g1VTJWbmNtVm5ZWFJsWkNrZ2UxeHVJQ0FnSUNBZ0lDQmhkMkZwZENCM2NtbDBaVkJ5YVhaaGRHVW9jMlZ4VFc5a1pXd3NJR0ZrWVhCMFpYSk5aWFJoSVM1amIyeHNaV04wYVc5dWN5azdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmtaWE5wY21Wa08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1kyOXVjM1FnWTNKbFlYUmxaQ0E5SUdGM1lXbDBJSFZ3YzJWeWRGQjFZbXhwWXloa1pYTnBjbVZrS1R0Y2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdWNtVndiR2xqWVhSbFZHOVRaV2R5WldkaGRHVmtRMjlzYkdWamRHbHZibk1vWTNSNExDQmpjbVZoZEdWa0tUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbkJoY25ObEtHTnlaV0YwWldRdVkzVnljbVZ1ZENCaGN5QmhibmtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHTjFjbkpsYm5RZ1BTQjBhR2x6TG5CaGNuTmxLR1Y0YVhOMGFXNW5MbU4xY25KbGJuUWdZWE1nWVc1NUtUdGNiaUFnSUNCcFppQW9JV2R5WldGMFpYSlVhR0Z1S0dSbGMybHlaV1FzSUdOMWNuSmxiblFwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWTNWeWNtVnVkRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCelpYRk5iMlJsYkNBOUlHNWxkeUJUWlhGMVpXNWpaVTF2WkdWc0tIc2dhV1E2SUc1aGJXVXNJR04xY25KbGJuUTZJR1JsYzJseVpXUWdmU2s3WEc0Z0lDQWdhV1lnS0dselJuVnNiSGxUWldkeVpXZGhkR1ZrS1NCN1hHNGdJQ0FnSUNCaGQyRnBkQ0IzY21sMFpWQnlhWFpoZEdVb2MyVnhUVzlrWld3c0lHRmtZWEIwWlhKTlpYUmhJUzVqYjJ4c1pXTjBhVzl1Y3lrN1hHNGdJQ0FnSUNCc2IyY3VaR1ZpZFdjb1hHNGdJQ0FnSUNBZ0lHQlRaWEYxWlc1alpTNWxibk4xY21WQmRFeGxZWE4wSUNod2NtbDJZWFJsTFc5dWJIa3BJQ1I3Ym1GdFpYMGdZM1Z5Y21WdWREMGtlMk4xY25KbGJuUWdZWE1nWVc1NWZTQmtaWE5wY21Wa1BTUjdaR1Z6YVhKbFpDQmhjeUJoYm5sOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCa1pYTnBjbVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElIVndaR0YwWldRZ1BTQmhkMkZwZENCMWNITmxjblJRZFdKc2FXTW9aR1Z6YVhKbFpDazdYRzRnSUNBZ1lYZGhhWFFnZEdocGN5NXlaWEJzYVdOaGRHVlViMU5sWjNKbFoyRjBaV1JEYjJ4c1pXTjBhVzl1Y3loamRIZ3NJSFZ3WkdGMFpXUXBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbkJoY25ObEtIVndaR0YwWldRdVkzVnljbVZ1ZENCaGN5QmhibmtwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWlhCc2FXTmhkR1Z6SUhSb1pTQnpaWEYxWlc1alpTQjBieUJoYkd3Z2MyVm5jbVZuWVhSbFpDQmpiMnhzWldOMGFXOXVjMXh1SUNBZ0tpQkFjM1Z0YldGeWVTQlhhR1Z1SUdFZ2JXOWtaV3dnZFhObGN5QndjbWwyWVhSbFJHRjBZU0J2Y2lCemFHRnlaV1JFWVhSaElHUmxZMjl5WVhSdmNuTXNJR2wwY3lCelpYRjFaVzVqWlNCdGRYTjBJR0psWEc0Z0lDQXFJSEpsY0d4cFkyRjBaV1FnZEc4Z1lXeHNJR052Ykd4bFkzUnBiMjV6SUhSb1pTQnRiMlJsYkNCcGN5QnpkRzl5WldRZ2FXNHVJRlJvYVhNZ1pXNXpkWEpsY3lCamJHbGxiblJ6SUhkcGRHZ2dZV05qWlhOelhHNGdJQ0FxSUhSdklHOXViSGtnYjI1bElHTnZiR3hsWTNScGIyNGdZMkZ1SUhOMGFXeHNJSEpsWVdRZ2RHaGxJRzF2WkdWc0ozTWdjMlZ4ZFdWdVkyVXNJSGRvYVd4bElHTnNhV1Z1ZEhNZ2QybDBhRzkxZEZ4dUlDQWdLaUJoWTJObGMzTWdkRzhnWVc1NUlHTnZiR3hsWTNScGIyNGdkMjl1SjNRZ2MyVmxJSFJvWlNCelpYRjFaVzVqWlNCdmJpQjBhR1VnY0hWaWJHbGpJR05vWVdsdUxseHVJQ0FnS2lCQWNHRnlZVzBnZTBOdmJuUmxlSFE4WVc1NVBuMGdZM1I0SUMwZ1ZHaGxJR1Y0WldOMWRHbHZiaUJqYjI1MFpYaDBYRzRnSUNBcUlFQndZWEpoYlNCN1UyVnhkV1Z1WTJWTmIyUmxiSDBnYzJWeElDMGdWR2hsSUhObGNYVmxibU5sSUcxdlpHVnNJSFJ2SUhKbGNHeHBZMkYwWlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUIzY21sMFpWTmxjWFZsYm1ObFZHOURiMnhzWldOMGFXOXVjeWhjYmlBZ0lDQmpkSGc2SUVOdmJuUmxlSFE4WVc1NVBpeGNiaUFnSUNCelpYRTZJRk5sY1hWbGJtTmxUVzlrWld3c1hHNGdJQ0FnWTI5c2JHVmpkR2x2Ym5NNklITjBjbWx1WjF0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHTnZibk4wSUd4dlp5QTlJR04wZUM1c2IyZG5aWEl1Wm05eUtIUm9hWE11ZDNKcGRHVlRaWEYxWlc1alpWUnZRMjlzYkdWamRHbHZibk1wTzF4dUlDQWdJR052Ym5OMElHRmtZWEIwWlhJZ1BTQjBhR2x6TG1Ga1lYQjBaWElnWVhNZ2RXNXJibTkzYmlCaGN5QkdZV0p5YVdORGIyNTBjbUZqZEVGa1lYQjBaWEk3WEc0Z0lDQWdZMjl1YzNRZ2RHRmliR1ZPWVcxbElEMGdUVzlrWld3dWRHRmliR1ZPWVcxbEtGTmxjWFZsYm1ObFRXOWtaV3dnWVhNZ1lXNTVLVHRjYmlBZ0lDQmpiMjV6ZENCamIyMXdiM05sWkV0bGVTQTlJQ2hqZEhnZ1lYTWdSbUZpY21salEyOXVkSEpoWTNSRGIyNTBaWGgwS1M1emRIVmlMbU55WldGMFpVTnZiWEJ2YzJsMFpVdGxlU2hjYmlBZ0lDQWdJSFJoWW14bFRtRnRaU3hjYmlBZ0lDQWdJRnRUZEhKcGJtY29jMlZ4TG1sa0tWMWNiaUFnSUNBcE8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmpiMnhzWldOMGFXOXVJRzltSUdOdmJHeGxZM1JwYjI1ektTQjdYRzRnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3Y21sMllYUmxRV1JoY0hSbGNpQTlJR0ZrWVhCMFpYSXVabTl5VUhKcGRtRjBaU2hqYjJ4c1pXTjBhVzl1S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY21WamIzSmtJRDBnZTF4dUlDQWdJQ0FnSUNBZ0lGdERiM1ZqYUVSQ1MyVjVjeTVVUVVKTVJWMDZJSFJoWW14bFRtRnRaU3hjYmlBZ0lDQWdJQ0FnSUNCcFpEb2djMlZ4TG1sa0xGeHVJQ0FnSUNBZ0lDQWdJR04xY25KbGJuUTZJSE5sY1M1amRYSnlaVzUwTEZ4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQmhkMkZwZENCd2NtbDJZWFJsUVdSaGNIUmxjbHRjSW5CMWRGTjBZWFJsWENKZEtHTnZiWEJ2YzJWa1MyVjVMQ0J5WldOdmNtUXNJR04wZUNCaGN5QmhibmtwTzF4dUlDQWdJQ0FnSUNCc2IyY3VaR1ZpZFdjb1lGTmxjWFZsYm1ObElDUjdjMlZ4TG1sa2ZTQjNjbWwwZEdWdUlIUnZJR052Ykd4bFkzUnBiMjRnSkh0amIyeHNaV04wYVc5dWZXQXBPMXh1SUNBZ0lDQWdmU0JqWVhSamFDQW9aVG9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnSUNCc2IyY3VkMkZ5YmloY2JpQWdJQ0FnSUNBZ0lDQmdSbUZwYkdWa0lIUnZJSGR5YVhSbElITmxjWFZsYm1ObElDUjdjMlZ4TG1sa2ZTQjBieUJqYjJ4c1pXTjBhVzl1SUNSN1kyOXNiR1ZqZEdsdmJuMDZJQ1I3WlgxZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCeVpYQnNhV05oZEdWVWIxTmxaM0psWjJGMFpXUkRiMnhzWldOMGFXOXVjeWhjYmlBZ0lDQmpkSGc2SUVOdmJuUmxlSFE4WVc1NVBpeGNiaUFnSUNCelpYRTZJRk5sY1hWbGJtTmxUVzlrWld4Y2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ0x5OGdWWE5sSUdGa1lYQjBaWElnYldWMFlXUmhkR0VnYVc1emRHVmhaQ0J2WmlCamRIZ3VaMlYwVW1WaFpFTnZiR3hsWTNScGIyNXpLQ2tnWW1WallYVnpaU0IwYUdVZ1UyVnhkV1Z1WTJWY2JpQWdJQ0F2THlCamNtVmhkR1Z6SUdsMGN5QnZkMjRnWTI5dWRHVjRkQ0IyYVdFZ2JHOW5RM1I0TENCc2IzTnBibWNnWTI5c2JHVmpkR2x2Ym5NZ2MyVjBJR0o1SUdWNGRISmhZM1JUWldkeVpXZGhkR1ZrUTI5c2JHVmpkR2x2Ym5NdVhHNGdJQ0FnWTI5dWMzUWdZV1JoY0hSbGNrMWxkR0VnUFNBb1kzUjRJR0Z6SUVaaFluSnBZME52Ym5SeVlXTjBRMjl1ZEdWNGRDa3VaMlYwVTJWeGRXVnVZMlZUWldkeVpXZGhkR2x2YmloY2JpQWdJQ0FnSUZOMGNtbHVaeWh6WlhFdWFXUXBYRzRnSUNBZ0tUdGNibHh1SUNBZ0lHbG1JQ2doWVdSaGNIUmxjazFsZEdFZ2ZId2dJV0ZrWVhCMFpYSk5aWFJoTG1OdmJHeGxZM1JwYjI1ekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUU5dWJIa2djbVZ3YkdsallYUmxJR1p2Y2lCdWIyNHRablZzYkhrdGMyVm5jbVZuWVhSbFpDQnRiMlJsYkhNZ0tHWjFiR3g1SUhObFozSmxaMkYwWldRZ2FYTWdhR0Z1Wkd4bFpDQnpaWEJoY21GMFpXeDVLVnh1SUNBZ0lHbG1JQ2hoWkdGd2RHVnlUV1YwWVM1bWRXeHNlVk5sWjNKbFoyRjBaV1FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0JqZEhndWJHOW5aMlZ5TG1admNpaDBhR2x6TG5KbGNHeHBZMkYwWlZSdlUyVm5jbVZuWVhSbFpFTnZiR3hsWTNScGIyNXpLVHRjYmlBZ0lDQnNiMmN1YVc1bWJ5aGNiaUFnSUNBZ0lHQlNaWEJzYVdOaGRHbHVaeUJ6WlhGMVpXNWpaU0FrZTNObGNTNXBaSDBnZEc4Z0pIdGhaR0Z3ZEdWeVRXVjBZUzVqYjJ4c1pXTjBhVzl1Y3k1c1pXNW5kR2g5SUhObFozSmxaMkYwWldRZ1kyOXNiR1ZqZEdsdmJuTTZJQ1I3WVdSaGNIUmxjazFsZEdFdVkyOXNiR1ZqZEdsdmJuTXVhbTlwYmloY0lpd2dYQ0lwZldCY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWVhkaGFYUWdkR2hwY3k1M2NtbDBaVk5sY1hWbGJtTmxWRzlEYjJ4c1pXTjBhVzl1Y3loamRIZ3NJSE5sY1N3Z1lXUmhjSFJsY2sxbGRHRXVZMjlzYkdWamRHbHZibk1wTzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
@@ -168,5 +168,5 @@ class FabricStatement extends for_couchdb_2.CouchDBStatement {
168
168
  }
169
169
  }
170
170
  exports.FabricStatement = FabricStatement;
171
- //# sourceMappingURL=FabricContractStatement.js.map
172
- //# sourceMappingURL=FabricContractStatement.js.map
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RzL0ZhYnJpY0NvbnRyYWN0U3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGVBQWUsR0FJaEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUVMLFNBQVMsRUFJVCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixZQUFZLEdBQ2Isa0NBQTZCO0FBRTlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sT0FBTyxlQUFvQyxTQUFRLGdCQUl4RDtJQUNDLFlBQ0UsT0FBeUQsRUFDekQsU0FBaUM7UUFFakMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRWtCLEtBQUssQ0FBQyxlQUFlLENBQ3RDLE1BQVcsRUFDWCxHQUFHLElBQStDO1FBRWxELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQ3pCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQ0UsQ0FBQztRQUMvQyxPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVrQixLQUFLO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxH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QUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb3VjaERCQWRhcHRlcixcbiAgQ291Y2hEQkdyb3VwT3BlcmF0b3IsXG4gIENvdWNoREJLZXlzLFxuICBDb3VjaERCT3BlcmF0b3IsXG4gIE1hbmdvT3BlcmF0b3IsXG4gIE1hbmdvUXVlcnksXG4gIE1hbmdvU2VsZWN0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RDb250ZXh0IH0gZnJvbSBcIi4vQ29udHJhY3RDb250ZXh0XCI7XG5pbXBvcnQgeyBDb3VjaERCU3RhdGVtZW50IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHtcbiAgQWRhcHRlckZsYWdzLFxuICBDb25kaXRpb24sXG4gIENvbnRleHR1YWxBcmdzLFxuICBNYXliZUNvbnRleHR1YWxBcmcsXG4gIE9yZGVyRGlyZWN0aW9uLFxuICBRdWVyeUVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIGFwcGx5TWlycm9yRmxhZ3MsXG4gIGFwcGx5U2VncmVnYXRpb25GbGFncyxcbiAgZXh0cmFjdE1zcElkLFxufSBmcm9tIFwiLi4vc2hhcmVkL2RlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RhdGVtZW50IHdyYXBwZXIgZm9yIGV4ZWN1dGluZyBNYW5nbyBxdWVyaWVzIHdpdGhpbiBGYWJyaWMgY29udHJhY3RzXG4gKiBAc3VtbWFyeSBCcmlkZ2VzIENvdWNoREItc3R5bGUgcXVlcmllcyB0byBGYWJyaWMgdmlhIHRoZSBGYWJyaWNDb250cmFjdEFkYXB0ZXIsIGhhbmRsaW5nIGlkZW50aXR5IGFuZCBwcmltYXJ5IGtleSBwcm9qZWN0aW9uIHdoZW4gbmVlZGVkLlxuICogQHRlbXBsYXRlIE0gLSBNb2RlbCB0eXBlIHRoaXMgc3RhdGVtZW50IG9wZXJhdGVzIG9uXG4gKiBAdGVtcGxhdGUgUiAtIFJlc3VsdCB0eXBlIHJldHVybmVkIGJ5IHRoZSBzdGF0ZW1lbnRcbiAqIEBwYXJhbSB7RmFicmljQ29udHJhY3RBZGFwdGVyfSBhZGFwdGVyIC0gVGhlIEZhYnJpYyBjb250cmFjdCBhZGFwdGVyIHVzZWQgZm9yIHJhdyBleGVjdXRpb25cbiAqIEBwYXJhbSB7RmFicmljQ29udHJhY3RDb250ZXh0fSBjdHggLSBUaGUgRmFicmljIGNvbnRyYWN0IGNvbnRleHQgY2Fycnlpbmcgc3R1YiBhbmQgaWRlbnRpdHlcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKiBAY2xhc3MgRmFicmljU3RhdGVtZW50XG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc3RtdCA9IG5ldyBGYWJyaWNTdGF0ZW1lbnQ8TXlNb2RlbCwgTXlNb2RlbFtdPihhZGFwdGVyLCBjdHgpO1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RtdC5yYXc8TXlNb2RlbFtdPih7IHNlbGVjdG9yOiB7IHR5cGU6ICdNeU1vZGVsJyB9IH0pO1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBBcHBcbiAqICAgcGFydGljaXBhbnQgU3RhdGVtZW50XG4gKiAgIHBhcnRpY2lwYW50IEFkYXB0ZXJcbiAqICAgcGFydGljaXBhbnQgTGVkZ2VyXG4gKiAgIEFwcC0+PlN0YXRlbWVudDogcmF3KHsgc2VsZWN0b3IgfSlcbiAqICAgU3RhdGVtZW50LT4+QWRhcHRlcjogYWRhcHRlci5yYXcobWFuZ28sIHRydWUsIGN0eClcbiAqICAgQWRhcHRlci0+PkxlZGdlcjogRXZhbHVhdGUgcXVlcnlcbiAqICAgQWRhcHRlci0tPj5TdGF0ZW1lbnQ6IHJvd3NcbiAqICAgU3RhdGVtZW50LS0+PkFwcDogbW9kZWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNTdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIENvdWNoREJTdGF0ZW1lbnQ8XG4gIE0sXG4gIENvdWNoREJBZGFwdGVyPGFueSwgdm9pZCwgRmFicmljQ29udHJhY3RDb250ZXh0PixcbiAgUlxuPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGFkYXB0ZXI6IENvdWNoREJBZGFwdGVyPGFueSwgdm9pZCwgRmFicmljQ29udHJhY3RDb250ZXh0PixcbiAgICBvdmVycmlkZXM/OiBQYXJ0aWFsPEFkYXB0ZXJGbGFncz5cbiAgKSB7XG4gICAgc3VwZXIoYWRhcHRlcik7XG4gICAgaWYgKG92ZXJyaWRlcykge1xuICAgICAgdGhpcy5vdmVycmlkZXMgPSBvdmVycmlkZXM7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGlvblByZWZpeChcbiAgICBtZXRob2Q6IGFueSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApIHtcbiAgICBjb25zdCBuZXdBcmdzID0gYXJncy5maWx0ZXIoXG4gICAgICAoYXJnKSA9PiBhcmcgIT09IHVuZGVmaW5lZCAmJiBhcmcgIT09IG51bGxcbiAgICApIGFzIE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+O1xuICAgIHJldHVybiBzdXBlci5leGVjdXRpb25QcmVmaXgobWV0aG9kLCAuLi5uZXdBcmdzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBidWlsZCgpOiBNYW5nb1F1ZXJ5IHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5idWlsZCk7XG4gICAgdGhpcy5tYW51YWxBZ2dyZWdhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhZ2dyZWdhdGVJbmZvID0gdGhpcy5idWlsZEFnZ3JlZ2F0ZUluZm8oKTtcbiAgICBpZiAoYWdncmVnYXRlSW5mbykge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkVXNlTWFudWFsQWdncmVnYXRpb24oKSkge1xuICAgICAgICB0aGlzLm1hbnVhbEFnZ3JlZ2F0aW9uID0gYWdncmVnYXRlSW5mbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUFnZ3JlZ2F0ZVF1ZXJ5KGFnZ3JlZ2F0ZUluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzZWxlY3RvcnM6IE1hbmdvU2VsZWN0b3IgPSB7fTtcbiAgICBzZWxlY3RvcnNbQ291Y2hEQktleXMuVEFCTEVdID0ge307XG4gICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9IE1vZGVsLnRhYmxlTmFtZSh0aGlzLmZyb21TZWxlY3Rvcik7XG4gICAgY29uc3QgcXVlcnk6IE1hbmdvUXVlcnkgPSB7IHNlbGVjdG9yOiBzZWxlY3RvcnMgfTtcbiAgICBpZiAodGhpcy5zZWxlY3RTZWxlY3RvcikgcXVlcnkuZmllbGRzID0gdGhpcy5zZWxlY3RTZWxlY3RvciBhcyBzdHJpbmdbXTtcblxuICAgIGlmICh0aGlzLndoZXJlQ29uZGl0aW9uKSB7XG4gICAgICBjb25zdCBjb25kaXRpb246IE1hbmdvU2VsZWN0b3IgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgICBDb25kaXRpb24uYW5kKFxuICAgICAgICAgIHRoaXMud2hlcmVDb25kaXRpb24sXG4gICAgICAgICAgQ29uZGl0aW9uLmF0dHJpYnV0ZTxNPihDb3VjaERCS2V5cy5UQUJMRSBhcyBrZXlvZiBNKS5lcShcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW0NvdWNoREJLZXlzLlRBQkxFXVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5zZWxlY3RvcjtcbiAgICAgIGNvbnN0IHNlbGVjdG9yS2V5cyA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbikgYXMgTWFuZ29PcGVyYXRvcltdO1xuICAgICAgaWYgKFxuICAgICAgICBzZWxlY3RvcktleXMubGVuZ3RoID09PSAxICYmXG4gICAgICAgIE9iamVjdC52YWx1ZXMoQ291Y2hEQkdyb3VwT3BlcmF0b3IpLmluZGV4T2Yoc2VsZWN0b3JLZXlzWzBdKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgc3dpdGNoIChzZWxlY3RvcktleXNbMF0pIHtcbiAgICAgICAgICBjYXNlIENvdWNoREJHcm91cE9wZXJhdG9yLkFORDpcbiAgICAgICAgICAgIGNvbmRpdGlvbltDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdID0gW1xuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbltDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdIGFzIE1hbmdvU2VsZWN0b3JcbiAgICAgICAgICAgICAgKS5yZWR1Y2UoKGFjY3VtOiBNYW5nb1NlbGVjdG9yW10sIHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBcIlRvbyBtYW55IGtleXMgaW4gcXVlcnkgc2VsZWN0b3IuIHNob3VsZCBiZSBvbmVcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBrID0ga2V5c1swXTtcbiAgICAgICAgICAgICAgICBpZiAoayA9PT0gQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EKVxuICAgICAgICAgICAgICAgICAgYWNjdW0ucHVzaCguLi4odmFsW2tdIGFzIGFueVtdKSk7XG4gICAgICAgICAgICAgICAgZWxzZSBhY2N1bS5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgICB9LCBbXSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBjb25kaXRpb247XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIENvdWNoREJHcm91cE9wZXJhdG9yLk9SOiB7XG4gICAgICAgICAgICBjb25zdCBzOiBSZWNvcmQ8YW55LCBhbnk+ID0ge307XG4gICAgICAgICAgICBzW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gPSBbXG4gICAgICAgICAgICAgIGNvbmRpdGlvbixcbiAgICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocXVlcnkuc2VsZWN0b3IpLm1hcCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPGFueSwgYW55PiA9IHt9O1xuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzaG91bGQgYmUgaW1wb3NzaWJsZVwiKTtcbiAgICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbikuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgIGlmIChxdWVyeS5zZWxlY3RvcltrZXldKVxuICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgIGBBICR7a2V5fSBxdWVyeSBwYXJhbSBpcyBhYm91dCB0byBiZSBvdmVycmlkZGVuOiAke3F1ZXJ5LnNlbGVjdG9yW2tleV19IGJ5ICR7dmFsfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcXVlcnkuc2VsZWN0b3Jba2V5XSA9IHZhbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKSB7XG4gICAgICBxdWVyeS5zb3J0ID0gcXVlcnkuc29ydCB8fCBbXTtcbiAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcXVlcnkuc2VsZWN0b3IgfHwgKHt9IGFzIE1hbmdvU2VsZWN0b3IpO1xuICAgICAgZm9yIChjb25zdCBbc2VsZWN0b3JLZXksIGRpcmVjdGlvbl0gb2YgdGhpcy5vcmRlckJ5U2VsZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gc2VsZWN0b3JLZXkgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCByZWM6IFJlY29yZDxzdHJpbmcsIE9yZGVyRGlyZWN0aW9uPiA9IHt9O1xuICAgICAgICByZWNbc2VsZWN0b3JdID0gZGlyZWN0aW9uIGFzIE9yZGVyRGlyZWN0aW9uO1xuICAgICAgICAocXVlcnkuc29ydCBhcyBSZWNvcmQ8c3RyaW5nLCBPcmRlckRpcmVjdGlvbj5bXSkucHVzaChyZWMpO1xuICAgICAgICBpZiAoIXF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSkge1xuICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSA9IHt9IGFzIE1hbmdvU2VsZWN0b3I7XG4gICAgICAgICAgKHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSBhcyBNYW5nb1NlbGVjdG9yKVtDb3VjaERCT3BlcmF0b3IuQklHR0VSXSA9XG4gICAgICAgICAgICBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGltaXRTZWxlY3Rvcikge1xuICAgICAgcXVlcnkubGltaXQgPSB0aGlzLmxpbWl0U2VsZWN0b3I7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub2Zmc2V0U2VsZWN0b3IpIHF1ZXJ5LnNraXAgPSB0aGlzLm9mZnNldFNlbGVjdG9yO1xuICAgIHRoaXMuYXR0YWNoRGVmYXVsdFF1ZXJ5SW5kZXgocXVlcnkpO1xuICAgIGxvZy5kZWJ1ZyhgYnVpbHQgbWFuZ28gcXVlcnkgJHtKU09OLnN0cmluZ2lmeShxdWVyeSl9YCk7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICk6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuZXhlY3V0ZSk7XG5cbiAgICBjb25zdCBtc3AgPSBleHRyYWN0TXNwSWQoY3R4LmlkZW50aXR5KTtcblxuICAgIGNvbnN0IHsgcHJpdmF0ZUNvbHMsIHNoYXJlZENvbHMgfSA9IE1vZGVsLmNvbGxlY3Rpb25zRm9yKHRoaXMuZnJvbVNlbGVjdG9yKTtcbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IFtcbiAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIFsuLi5wcml2YXRlQ29scywgLi4uc2hhcmVkQ29sc10ubWFwKChjKSA9PlxuICAgICAgICAgICAgdHlwZW9mIGMgPT09IFwic3RyaW5nXCIgPyBjIDogYyh0aGlzLmZyb21TZWxlY3RvciwgbXNwLCBjdHgpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuICAgIF07XG5cbiAgICBhcHBseVNlZ3JlZ2F0aW9uRmxhZ3MobmV3IHRoaXMuZnJvbVNlbGVjdG9yKCksIGNvbGxlY3Rpb25zLCBjdHgpO1xuICAgIGF3YWl0IGFwcGx5TWlycm9yRmxhZ3ModGhpcy5mcm9tU2VsZWN0b3IsIG1zcCwgY3R4KTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5wcmVwYXJlZCkgcmV0dXJuIHRoaXMuZXhlY3V0ZVByZXBhcmVkKC4uLihhcmdzIGFzIGFueSkpO1xuICAgICAgbG9nLnNpbGx5KGBCdWlsZGluZyByYXcgc3RhdGVtZW50Li4uYCk7XG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIGxvZy5zaWxseShgZXhlY3V0aW5nIHJhdyBzdGF0ZW1lbnRgKTtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSAoYXdhaXQgdGhpcy5yYXc8Uj4oXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICB0cnVlLFxuICAgICAgICAuLi4oY3R4QXJncyBhcyBDb250ZXh0dWFsQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQ+KVxuICAgICAgKSkgYXMgdW5rbm93biBhcyBSO1xuICAgICAgaWYgKHRoaXMuaGFzQWdncmVnYXRpb24oKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5zZWxlY3RTZWxlY3Rvcikge1xuICAgICAgICBpZiAodGhpcy5ncm91cEJ5U2VsZWN0b3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5yZXZlcnRHcm91cGVkUmVzdWx0cyhyZXN1bHRzLCAocikgPT5cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1JlY29yZChyLCBjdHgpXG4gICAgICAgICAgKSBhcyBSO1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBseUFmdGVySGFuZGxlcnNUb1Jlc3VsdChncm91cGVkLCBjdHgpKSBhcyBSO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMpKSB7XG4gICAgICAgICAgY29uc3QgbWFwcGVkID0gcmVzdWx0cy5tYXAoKHIpID0+XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NSZWNvcmQociwgY3R4KVxuICAgICAgICAgICkgYXMgdW5rbm93biBhcyBSO1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5hcHBseUFmdGVySGFuZGxlcnNUb1Jlc3VsdChtYXBwZWQsIGN0eCkpIGFzIFI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2luZ2xlID0gdGhpcy5wcm9jZXNzUmVjb3JkKHJlc3VsdHMsIGN0eCkgYXMgdW5rbm93biBhcyBSO1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQoc2luZ2xlLCBjdHgpKSBhcyBSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJGYWJyaWNDb250cmFjdFN0YXRlbWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBNEY7QUFDNUYseUVBQXVEO0FBQ3ZELHVEQUF5RDtBQUN6RCx5Q0FBd0Q7QUFDeEQsNkRBQW1HO0FBQ25HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQWEsZUFBZ0IsU0FBUSw4QkFBZ0I7SUFDakQsWUFBWSxPQUFPLEVBQUUsU0FBUztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUk7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDeEUsT0FBTyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxLQUFLO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDaEQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLENB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RSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3RGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDakUsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLGlCQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXhJRCwwQ0F3SUM7QUFDRCw4NmxCQUE4NmxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ291Y2hEQkdyb3VwT3BlcmF0b3IsIENvdWNoREJLZXlzLCBDb3VjaERCT3BlcmF0b3IsIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCU3RhdGVtZW50IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uLCBRdWVyeUVycm9yLCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgYXBwbHlNaXJyb3JGbGFncywgYXBwbHlTZWdyZWdhdGlvbkZsYWdzLCBleHRyYWN0TXNwSWQsIH0gZnJvbSBcIi4vLi4vc2hhcmVkL2RlY29yYXRvcnMuanNcIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0YXRlbWVudCB3cmFwcGVyIGZvciBleGVjdXRpbmcgTWFuZ28gcXVlcmllcyB3aXRoaW4gRmFicmljIGNvbnRyYWN0c1xuICogQHN1bW1hcnkgQnJpZGdlcyBDb3VjaERCLXN0eWxlIHF1ZXJpZXMgdG8gRmFicmljIHZpYSB0aGUgRmFicmljQ29udHJhY3RBZGFwdGVyLCBoYW5kbGluZyBpZGVudGl0eSBhbmQgcHJpbWFyeSBrZXkgcHJvamVjdGlvbiB3aGVuIG5lZWRlZC5cbiAqIEB0ZW1wbGF0ZSBNIC0gTW9kZWwgdHlwZSB0aGlzIHN0YXRlbWVudCBvcGVyYXRlcyBvblxuICogQHRlbXBsYXRlIFIgLSBSZXN1bHQgdHlwZSByZXR1cm5lZCBieSB0aGUgc3RhdGVtZW50XG4gKiBAcGFyYW0ge0ZhYnJpY0NvbnRyYWN0QWRhcHRlcn0gYWRhcHRlciAtIFRoZSBGYWJyaWMgY29udHJhY3QgYWRhcHRlciB1c2VkIGZvciByYXcgZXhlY3V0aW9uXG4gKiBAcGFyYW0ge0ZhYnJpY0NvbnRyYWN0Q29udGV4dH0gY3R4IC0gVGhlIEZhYnJpYyBjb250cmFjdCBjb250ZXh0IGNhcnJ5aW5nIHN0dWIgYW5kIGlkZW50aXR5XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZhYnJpY1N0YXRlbWVudFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHN0bXQgPSBuZXcgRmFicmljU3RhdGVtZW50PE15TW9kZWwsIE15TW9kZWxbXT4oYWRhcHRlciwgY3R4KTtcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0bXQucmF3PE15TW9kZWxbXT4oeyBzZWxlY3RvcjogeyB0eXBlOiAnTXlNb2RlbCcgfSB9KTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQXBwXG4gKiAgIHBhcnRpY2lwYW50IFN0YXRlbWVudFxuICogICBwYXJ0aWNpcGFudCBBZGFwdGVyXG4gKiAgIHBhcnRpY2lwYW50IExlZGdlclxuICogICBBcHAtPj5TdGF0ZW1lbnQ6IHJhdyh7IHNlbGVjdG9yIH0pXG4gKiAgIFN0YXRlbWVudC0+PkFkYXB0ZXI6IGFkYXB0ZXIucmF3KG1hbmdvLCB0cnVlLCBjdHgpXG4gKiAgIEFkYXB0ZXItPj5MZWRnZXI6IEV2YWx1YXRlIHF1ZXJ5XG4gKiAgIEFkYXB0ZXItLT4+U3RhdGVtZW50OiByb3dzXG4gKiAgIFN0YXRlbWVudC0tPj5BcHA6IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgRmFicmljU3RhdGVtZW50IGV4dGVuZHMgQ291Y2hEQlN0YXRlbWVudCB7XG4gICAgY29uc3RydWN0b3IoYWRhcHRlciwgb3ZlcnJpZGVzKSB7XG4gICAgICAgIHN1cGVyKGFkYXB0ZXIpO1xuICAgICAgICBpZiAob3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlcyA9IG92ZXJyaWRlcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBleGVjdXRpb25QcmVmaXgobWV0aG9kLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG5ld0FyZ3MgPSBhcmdzLmZpbHRlcigoYXJnKSA9PiBhcmcgIT09IHVuZGVmaW5lZCAmJiBhcmcgIT09IG51bGwpO1xuICAgICAgICByZXR1cm4gc3VwZXIuZXhlY3V0aW9uUHJlZml4KG1ldGhvZCwgLi4ubmV3QXJncyk7XG4gICAgfVxuICAgIGJ1aWxkKCkge1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5idWlsZCk7XG4gICAgICAgIHRoaXMubWFudWFsQWdncmVnYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZUluZm8gPSB0aGlzLmJ1aWxkQWdncmVnYXRlSW5mbygpO1xuICAgICAgICBpZiAoYWdncmVnYXRlSW5mbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkVXNlTWFudWFsQWdncmVnYXRpb24oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFudWFsQWdncmVnYXRpb24gPSBhZ2dyZWdhdGVJbmZvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQWdncmVnYXRlUXVlcnkoYWdncmVnYXRlSW5mbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzID0ge307XG4gICAgICAgIHNlbGVjdG9yc1tDb3VjaERCS2V5cy5UQUJMRV0gPSB7fTtcbiAgICAgICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9IE1vZGVsLnRhYmxlTmFtZSh0aGlzLmZyb21TZWxlY3Rvcik7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0geyBzZWxlY3Rvcjogc2VsZWN0b3JzIH07XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdFNlbGVjdG9yKVxuICAgICAgICAgICAgcXVlcnkuZmllbGRzID0gdGhpcy5zZWxlY3RTZWxlY3RvcjtcbiAgICAgICAgaWYgKHRoaXMud2hlcmVDb25kaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMucGFyc2VDb25kaXRpb24oQ29uZGl0aW9uLmFuZCh0aGlzLndoZXJlQ29uZGl0aW9uLCBDb25kaXRpb24uYXR0cmlidXRlKENvdWNoREJLZXlzLlRBQkxFKS5lcShxdWVyeS5zZWxlY3RvcltDb3VjaERCS2V5cy5UQUJMRV0pKSkuc2VsZWN0b3I7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RvcktleXMgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pO1xuICAgICAgICAgICAgaWYgKHNlbGVjdG9yS2V5cy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKENvdWNoREJHcm91cE9wZXJhdG9yKS5pbmRleE9mKHNlbGVjdG9yS2V5c1swXSkgIT09IC0xKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2VsZWN0b3JLZXlzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhjb25kaXRpb25bQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EXSkucmVkdWNlKChhY2N1bSwgdmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbWFueSBrZXlzIGluIHF1ZXJ5IHNlbGVjdG9yLiBzaG91bGQgYmUgb25lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrID0ga2V5c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT09IENvdWNoREJHcm91cE9wZXJhdG9yLkFORClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VtLnB1c2goLi4udmFsW2tdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW0ucHVzaCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW10pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gY29uZGl0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ291Y2hEQkdyb3VwT3BlcmF0b3IuT1I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNbQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EXSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocXVlcnkuc2VsZWN0b3IpLm1hcCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgc2hvdWxkIGJlIGltcG9zc2libGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZGl0aW9uKS5mb3JFYWNoKChba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeS5zZWxlY3RvcltrZXldKVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nLndhcm4oYEEgJHtrZXl9IHF1ZXJ5IHBhcmFtIGlzIGFib3V0IHRvIGJlIG92ZXJyaWRkZW46ICR7cXVlcnkuc2VsZWN0b3Jba2V5XX0gYnkgJHt2YWx9YCk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW2tleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBxdWVyeS5zb3J0ID0gcXVlcnkuc29ydCB8fCBbXTtcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcXVlcnkuc2VsZWN0b3IgfHwge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzZWxlY3RvcktleSwgZGlyZWN0aW9uXSBvZiB0aGlzLm9yZGVyQnlTZWxlY3RvcnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RvciA9IHNlbGVjdG9yS2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlYyA9IHt9O1xuICAgICAgICAgICAgICAgIHJlY1tzZWxlY3Rvcl0gPSBkaXJlY3Rpb247XG4gICAgICAgICAgICAgICAgcXVlcnkuc29ydC5wdXNoKHJlYyk7XG4gICAgICAgICAgICAgICAgaWYgKCFxdWVyeS5zZWxlY3RvcltzZWxlY3Rvcl0pIHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnkuc2VsZWN0b3Jbc2VsZWN0b3JdID0ge307XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXVtDb3VjaERCT3BlcmF0b3IuQklHR0VSXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5saW1pdFNlbGVjdG9yKSB7XG4gICAgICAgICAgICBxdWVyeS5saW1pdCA9IHRoaXMubGltaXRTZWxlY3RvcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vZmZzZXRTZWxlY3RvcilcbiAgICAgICAgICAgIHF1ZXJ5LnNraXAgPSB0aGlzLm9mZnNldFNlbGVjdG9yO1xuICAgICAgICB0aGlzLmF0dGFjaERlZmF1bHRRdWVyeUluZGV4KHF1ZXJ5KTtcbiAgICAgICAgbG9nLmRlYnVnKGBidWlsdCBtYW5nbyBxdWVyeSAke0pTT04uc3RyaW5naWZ5KHF1ZXJ5KX1gKTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgIH1cbiAgICBhc3luYyBleGVjdXRlKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCwgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5leGVjdXRlKTtcbiAgICAgICAgY29uc3QgbXNwID0gZXh0cmFjdE1zcElkKGN0eC5pZGVudGl0eSk7XG4gICAgICAgIGNvbnN0IHsgcHJpdmF0ZUNvbHMsIHNoYXJlZENvbHMgfSA9IE1vZGVsLmNvbGxlY3Rpb25zRm9yKHRoaXMuZnJvbVNlbGVjdG9yKTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGF3YWl0IFByb21pc2UuYWxsKFsuLi5wcml2YXRlQ29scywgLi4uc2hhcmVkQ29sc10ubWFwKChjKSA9PiB0eXBlb2YgYyA9PT0gXCJzdHJpbmdcIiA/IGMgOiBjKHRoaXMuZnJvbVNlbGVjdG9yLCBtc3AsIGN0eCkpKSksXG4gICAgICAgIF07XG4gICAgICAgIGFwcGx5U2VncmVnYXRpb25GbGFncyhuZXcgdGhpcy5mcm9tU2VsZWN0b3IoKSwgY29sbGVjdGlvbnMsIGN0eCk7XG4gICAgICAgIGF3YWl0IGFwcGx5TWlycm9yRmxhZ3ModGhpcy5mcm9tU2VsZWN0b3IsIG1zcCwgY3R4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXBhcmVkKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcmVwYXJlZCguLi5hcmdzKTtcbiAgICAgICAgICAgIGxvZy5zaWxseShgQnVpbGRpbmcgcmF3IHN0YXRlbWVudC4uLmApO1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLmJ1aWxkKCk7XG4gICAgICAgICAgICBsb2cuc2lsbHkoYGV4ZWN1dGluZyByYXcgc3RhdGVtZW50YCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gKGF3YWl0IHRoaXMucmF3KHF1ZXJ5LCB0cnVlLCAuLi5jdHhBcmdzKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNBZ2dyZWdhdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0U2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ncm91cEJ5U2VsZWN0b3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZCA9IHRoaXMucmV2ZXJ0R3JvdXBlZFJlc3VsdHMocmVzdWx0cywgKHIpID0+IHRoaXMucHJvY2Vzc1JlY29yZChyLCBjdHgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGx5QWZ0ZXJIYW5kbGVyc1RvUmVzdWx0KGdyb3VwZWQsIGN0eCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQgPSByZXN1bHRzLm1hcCgocikgPT4gdGhpcy5wcm9jZXNzUmVjb3JkKHIsIGN0eCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQobWFwcGVkLCBjdHgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc2luZ2xlID0gdGhpcy5wcm9jZXNzUmVjb3JkKHJlc3VsdHMsIGN0eCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGx5QWZ0ZXJIYW5kbGVyc1RvUmVzdWx0KHNpbmdsZSwgY3R4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSbUZpY21salEyOXVkSEpoWTNSVGRHRjBaVzFsYm5RdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTl6Y21NdlkyOXVkSEpoWTNSekwwWmhZbkpwWTBOdmJuUnlZV04wVTNSaGRHVnRaVzUwTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1JVRkZUQ3h2UWtGQmIwSXNSVUZEY0VJc1YwRkJWeXhGUVVOWUxHVkJRV1VzUjBGSmFFSXNUVUZCVFN4MVFrRkJkVUlzUTBGQlF6dEJRVU12UWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFMUJRVTBzWjBOQlFXZERMRU5CUVVNN1FVRkZka1FzVDBGQlR5eEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxFMUJRVTBzZFVKQlFYVkNMRU5CUVVNN1FVRkRla1FzVDBGQlR5eEZRVVZNTEZOQlFWTXNSVUZKVkN4VlFVRlZMRWRCUTFnc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVTjRRaXhQUVVGUExFVkJRMHdzWjBKQlFXZENMRVZCUTJoQ0xIRkNRVUZ4UWl4RlFVTnlRaXhaUVVGWkxFZEJRMklzYTBOQlFUWkNPMEZCUlRsQ096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRIUVhWQ1J6dEJRVU5JTEUxQlFVMHNUMEZCVHl4bFFVRnZReXhUUVVGUkxHZENRVWw0UkR0SlFVTkRMRmxCUTBVc1QwRkJlVVFzUlVGRGVrUXNVMEZCYVVNN1VVRkZha01zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJZc1NVRkJTU3hUUVVGVExFVkJRVVVzUTBGQlF6dFpRVU5rTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1UwRkJVeXhEUVVGRE8xRkJRemRDTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUld0Q0xFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlEzUkRMRTFCUVZjc1JVRkRXQ3hIUVVGSExFbEJRU3RETzFGQlJXeEVMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlEzcENMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NVMEZCVXl4SlFVRkpMRWRCUVVjc1MwRkJTeXhKUVVGSkxFTkJRMFVzUTBGQlF6dFJRVU12UXl4UFFVRlBMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRia1FzUTBGQlF6dEpRVVZyUWl4TFFVRkxPMUZCUTNSQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1UwRkJVeXhEUVVGRE8xRkJRMjVETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRPMUZCUTJoRUxFbEJRVWtzWVVGQllTeEZRVUZGTEVOQlFVTTdXVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zTUVKQlFUQkNMRVZCUVVVc1JVRkJSU3hEUVVGRE8yZENRVU4wUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NZVUZCWVN4RFFVRkRPMWxCUTNwRExFTkJRVU03YVVKQlFVMHNRMEZCUXp0blFrRkRUaXhQUVVGUExFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dFpRVU5zUkN4RFFVRkRPMUZCUTBnc1EwRkJRenRSUVVORUxFMUJRVTBzVTBGQlV5eEhRVUZyUWl4RlFVRkZMRU5CUVVNN1VVRkRjRU1zVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGJFTXNVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFJRVU5zUlN4TlFVRk5MRXRCUVVzc1IwRkJaU3hGUVVGRkxGRkJRVkVzUlVGQlJTeFRRVUZUTEVWQlFVVXNRMEZCUXp0UlFVTnNSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTzFsQlFVVXNTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQk1FSXNRMEZCUXp0UlFVVjRSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0WlFVTjRRaXhOUVVGTkxGTkJRVk1zUjBGQmEwSXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkRiRVFzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZEV0N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVOdVFpeFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkpMRmRCUVZjc1EwRkJReXhMUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVTnlSQ3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkRiRU1zUTBGRFJpeERRVU5HTEVOQlFVTXNVVUZCVVN4RFFVRkRPMWxCUTFnc1RVRkJUU3haUVVGWkxFZEJRVWNzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVc5Q0xFTkJRVU03V1VGREwwUXNTVUZEUlN4WlFVRlpMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU03WjBKQlEzcENMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yZENRVVZ1UlN4UlFVRlJMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzI5Q1FVTjRRaXhMUVVGTExHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjN2QwSkJRek5DTEZOQlFWTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnpzMFFrRkRjRU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVTmtMRk5CUVZNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SFFVRkhMRU5CUVd0Q0xFTkJRM0pFTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJjMElzUlVGQlJTeEhRVUZSTEVWQlFVVXNSVUZCUlR0blEwRkROVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dG5RMEZET1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeExRVUZMTEVOQlFVTTdiME5CUTI1Q0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlEySXNaMFJCUVdkRUxFTkJRMnBFTEVOQlFVTTdaME5CUTBvc1RVRkJUU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmREUVVOc1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4dlFrRkJiMElzUTBGQlF5eEhRVUZITzI5RFFVTm9ReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJWeXhEUVVGRExFTkJRVU03TzI5RFFVTTVRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMmREUVVOeVFpeFBRVUZQTEV0QlFVc3NRMEZCUXpzMFFrRkRaaXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETzNsQ1FVTlFMRU5CUVVNN2QwSkJRMFlzUzBGQlN5eERRVUZETEZGQlFWRXNSMEZCUnl4VFFVRlRMRU5CUVVNN2QwSkJRek5DTEUxQlFVMDdiMEpCUTFJc1MwRkJTeXh2UWtGQmIwSXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU0zUWl4TlFVRk5MRU5CUVVNc1IwRkJjVUlzUlVGQlJTeERRVUZETzNkQ1FVTXZRaXhEUVVGRExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWM3TkVKQlF6VkNMRk5CUVZNN05FSkJRMVFzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTzJkRFFVTnVSQ3hOUVVGTkxFMUJRVTBzUjBGQmNVSXNSVUZCUlN4RFFVRkRPMmREUVVOd1F5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8yZERRVU5zUWl4UFFVRlBMRTFCUVUwc1EwRkJRenMwUWtGRGFFSXNRMEZCUXl4RFFVRkRPM2xDUVVOSUxFTkJRVU03ZDBKQlEwWXNTMEZCU3l4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03ZDBKQlEyNUNMRTFCUVUwN2IwSkJRMUlzUTBGQlF6dHZRa0ZEUkR0M1FrRkRSU3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERKQ1FVRXlRaXhEUVVGRExFTkJRVU03WjBKQlEycEVMRU5CUVVNN2FVSkJRMFVzUTBGQlF6dG5Ra0ZEU2l4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVTdiMEpCUXk5RExFbEJRVWtzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNN2QwSkJRM0pDTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUTA0c1MwRkJTeXhIUVVGSExESkRRVUV5UXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVTnVSaXhEUVVGRE8yOUNRVU5LTEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5NTEVOQlFVTTdVVUZEU0N4RFFVRkRPMUZCUlVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU03V1VGRGJFTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTTVRaXhMUVVGTExFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXl4UlFVRlJMRWxCUVVzc1JVRkJiMElzUTBGQlF6dFpRVU42UkN4TFFVRkxMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVOQlFVTTdaMEpCUXpkRUxFMUJRVTBzVVVGQlVTeEhRVUZITEZkQlFYRkNMRU5CUVVNN1owSkJRM1pETEUxQlFVMHNSMEZCUnl4SFFVRnRReXhGUVVGRkxFTkJRVU03WjBKQlF5OURMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eFRRVUV5UWl4RFFVRkRPMmRDUVVNelF5eExRVUZMTEVOQlFVTXNTVUZCZVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXpORUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFTkJRVU03YjBKQlF6bENMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NSVUZCYlVJc1EwRkJRenR2UWtGRE9VTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFTkJRVzFDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRTFCUVUwc1EwRkJRenQzUWtGRGFrVXNTVUZCU1N4RFFVRkRPMmRDUVVOVUxFTkJRVU03V1VGRFNDeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVVkVMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEzWkNMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXp0UlFVTnVReXhEUVVGRE8xRkJSVVFzU1VGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXp0WlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXp0UlFVTXhSQ3hKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGNFTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXh4UWtGQmNVSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZGZUVRc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRFppeERRVUZETzBsQlJWRXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkRjRUlzUjBGQlJ5eEpRVUVyUXp0UlFVVnNSQ3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRk9VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVVjJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZWQlFWVXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMUZCUXpWRkxFMUJRVTBzVjBGQlZ5eEhRVUZITzFsQlEyeENMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRMUlzVFVGQlRTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVTm1MRU5CUVVNc1IwRkJSeXhYUVVGWExFVkJRVVVzUjBGQlJ5eFZRVUZWTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVU40UXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVNelJDeERRVU5HTEVOQlEwWTdVMEZEUml4RFFVRkRPMUZCUlVZc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJwRkxFMUJRVTBzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZjRVFzU1VGQlNTeERRVUZETzFsQlEwZ3NTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVVHRuUWtGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJTU3hKUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU5xUlN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExESkNRVUV5UWl4RFFVRkRMRU5CUVVNN1dVRkRka01zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJRek5DTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc2VVSkJRWGxDTEVOQlFVTXNRMEZCUXp0WlFVTnlReXhOUVVGTkxFOUJRVThzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkROMElzUzBGQlN5eEZRVU5NTEVsQlFVa3NSVUZEU2l4SFFVRkpMRTlCUVdsRUxFTkJRM1JFTEVOQlFXbENMRU5CUVVNN1dVRkRia0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRVZCUVVVc1EwRkJRenRuUWtGRE1VSXNUMEZCVHl4UFFVRlBMRU5CUVVNN1dVRkRha0lzUTBGQlF6dFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU03WjBKQlEzcENMRWxCUVVrc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRE8yOUNRVU5zUXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZEZGtRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUTNSQ0xFTkJRVU03YjBKQlExQXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExEQkNRVUV3UWl4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlRTeERRVUZETzJkQ1FVTndSU3hEUVVGRE8yZENRVU5FTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETzI5Q1FVTXpRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGREwwSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlExZ3NRMEZCUXp0dlFrRkRiRUlzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMREJDUVVFd1FpeERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJUU3hEUVVGRE8yZENRVU51UlN4RFFVRkRPMmRDUVVORUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGQmFVSXNRMEZCUXp0blFrRkRhRVVzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMREJDUVVFd1FpeERRVUZETEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJUU3hEUVVGRE8xbEJRMjVGTEVOQlFVTTdXVUZEUkN4UFFVRlBMRTlCUVU4c1EwRkJRenRSUVVOcVFpeERRVUZETzFGQlFVTXNUMEZCVHl4RFFVRlZMRVZCUVVVc1EwRkJRenRaUVVOd1FpeE5RVUZOTEVsQlFVa3NWVUZCVlN4RFFVRkRMRU5CUVZVc1EwRkJReXhEUVVGRE8xRkJRMjVETEVOQlFVTTdTVUZEU0N4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UxeHVJQ0JEYjNWamFFUkNRV1JoY0hSbGNpeGNiaUFnUTI5MVkyaEVRa2R5YjNWd1QzQmxjbUYwYjNJc1hHNGdJRU52ZFdOb1JFSkxaWGx6TEZ4dUlDQkRiM1ZqYUVSQ1QzQmxjbUYwYjNJc1hHNGdJRTFoYm1kdlQzQmxjbUYwYjNJc1hHNGdJRTFoYm1kdlVYVmxjbmtzWEc0Z0lFMWhibWR2VTJWc1pXTjBiM0lzWEc1OUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlptOXlMV052ZFdOb1pHSmNJanRjYm1sdGNHOXlkQ0I3SUUxdlpHVnNJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWldOdmNtRjBiM0l0ZG1Gc2FXUmhkR2x2Ymx3aU8xeHVhVzF3YjNKMElIc2dSbUZpY21salEyOXVkSEpoWTNSRGIyNTBaWGgwSUgwZ1puSnZiU0JjSWk0dlEyOXVkSEpoWTNSRGIyNTBaWGgwWENJN1hHNXBiWEJ2Y25RZ2V5QkRiM1ZqYUVSQ1UzUmhkR1Z0Wlc1MElIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OW1iM0l0WTI5MVkyaGtZbHdpTzF4dWFXMXdiM0owSUh0Y2JpQWdRV1JoY0hSbGNrWnNZV2R6TEZ4dUlDQkRiMjVrYVhScGIyNHNYRzRnSUVOdmJuUmxlSFIxWVd4QmNtZHpMRnh1SUNCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jc1hHNGdJRTl5WkdWeVJHbHlaV04wYVc5dUxGeHVJQ0JSZFdWeWVVVnljbTl5TEZ4dWZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyTnZjbVZjSWp0Y2JtbHRjRzl5ZENCN1hHNGdJR0Z3Y0d4NVRXbHljbTl5Um14aFozTXNYRzRnSUdGd2NHeDVVMlZuY21WbllYUnBiMjVHYkdGbmN5eGNiaUFnWlhoMGNtRmpkRTF6Y0Vsa0xGeHVmU0JtY205dElGd2lMaTR2YzJoaGNtVmtMMlJsWTI5eVlYUnZjbk5jSWp0Y2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVTNSaGRHVnRaVzUwSUhkeVlYQndaWElnWm05eUlHVjRaV04xZEdsdVp5Qk5ZVzVuYnlCeGRXVnlhV1Z6SUhkcGRHaHBiaUJHWVdKeWFXTWdZMjl1ZEhKaFkzUnpYRzRnS2lCQWMzVnRiV0Z5ZVNCQ2NtbGtaMlZ6SUVOdmRXTm9SRUl0YzNSNWJHVWdjWFZsY21sbGN5QjBieUJHWVdKeWFXTWdkbWxoSUhSb1pTQkdZV0p5YVdORGIyNTBjbUZqZEVGa1lYQjBaWElzSUdoaGJtUnNhVzVuSUdsa1pXNTBhWFI1SUdGdVpDQndjbWx0WVhKNUlHdGxlU0J3Y205cVpXTjBhVzl1SUhkb1pXNGdibVZsWkdWa0xseHVJQ29nUUhSbGJYQnNZWFJsSUUwZ0xTQk5iMlJsYkNCMGVYQmxJSFJvYVhNZ2MzUmhkR1Z0Wlc1MElHOXdaWEpoZEdWeklHOXVYRzRnS2lCQWRHVnRjR3hoZEdVZ1VpQXRJRkpsYzNWc2RDQjBlWEJsSUhKbGRIVnlibVZrSUdKNUlIUm9aU0J6ZEdGMFpXMWxiblJjYmlBcUlFQndZWEpoYlNCN1JtRmljbWxqUTI5dWRISmhZM1JCWkdGd2RHVnlmU0JoWkdGd2RHVnlJQzBnVkdobElFWmhZbkpwWXlCamIyNTBjbUZqZENCaFpHRndkR1Z5SUhWelpXUWdabTl5SUhKaGR5QmxlR1ZqZFhScGIyNWNiaUFxSUVCd1lYSmhiU0I3Um1GaWNtbGpRMjl1ZEhKaFkzUkRiMjUwWlhoMGZTQmpkSGdnTFNCVWFHVWdSbUZpY21saklHTnZiblJ5WVdOMElHTnZiblJsZUhRZ1kyRnljbmxwYm1jZ2MzUjFZaUJoYm1RZ2FXUmxiblJwZEhsY2JpQXFJRUJ5WlhSMWNtNGdlM1p2YVdSOVhHNGdLaUJBWTJ4aGMzTWdSbUZpY21salUzUmhkR1Z0Wlc1MFhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1kyOXVjM1FnYzNSdGRDQTlJRzVsZHlCR1lXSnlhV05UZEdGMFpXMWxiblE4VFhsTmIyUmxiQ3dnVFhsTmIyUmxiRnRkUGloaFpHRndkR1Z5TENCamRIZ3BPMXh1SUNvZ1kyOXVjM1FnY21WemRXeDBJRDBnWVhkaGFYUWdjM1J0ZEM1eVlYYzhUWGxOYjJSbGJGdGRQaWg3SUhObGJHVmpkRzl5T2lCN0lIUjVjR1U2SUNkTmVVMXZaR1ZzSnlCOUlIMHBPMXh1SUNvZ1FHMWxjbTFoYVdSY2JpQXFJSE5sY1hWbGJtTmxSR2xoWjNKaGJWeHVJQ29nSUNCd1lYSjBhV05wY0dGdWRDQkJjSEJjYmlBcUlDQWdjR0Z5ZEdsamFYQmhiblFnVTNSaGRHVnRaVzUwWEc0Z0tpQWdJSEJoY25ScFkybHdZVzUwSUVGa1lYQjBaWEpjYmlBcUlDQWdjR0Z5ZEdsamFYQmhiblFnVEdWa1oyVnlYRzRnS2lBZ0lFRndjQzArUGxOMFlYUmxiV1Z1ZERvZ2NtRjNLSHNnYzJWc1pXTjBiM0lnZlNsY2JpQXFJQ0FnVTNSaGRHVnRaVzUwTFQ0K1FXUmhjSFJsY2pvZ1lXUmhjSFJsY2k1eVlYY29iV0Z1WjI4c0lIUnlkV1VzSUdOMGVDbGNiaUFxSUNBZ1FXUmhjSFJsY2kwK1BreGxaR2RsY2pvZ1JYWmhiSFZoZEdVZ2NYVmxjbmxjYmlBcUlDQWdRV1JoY0hSbGNpMHRQajVUZEdGMFpXMWxiblE2SUhKdmQzTmNiaUFxSUNBZ1UzUmhkR1Z0Wlc1MExTMCtQa0Z3Y0RvZ2JXOWtaV3h6WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCR1lXSnlhV05UZEdGMFpXMWxiblE4VFNCbGVIUmxibVJ6SUUxdlpHVnNMQ0JTUGlCbGVIUmxibVJ6SUVOdmRXTm9SRUpUZEdGMFpXMWxiblE4WEc0Z0lFMHNYRzRnSUVOdmRXTm9SRUpCWkdGd2RHVnlQR0Z1ZVN3Z2RtOXBaQ3dnUm1GaWNtbGpRMjl1ZEhKaFkzUkRiMjUwWlhoMFBpeGNiaUFnVWx4dVBpQjdYRzRnSUdOdmJuTjBjblZqZEc5eUtGeHVJQ0FnSUdGa1lYQjBaWEk2SUVOdmRXTm9SRUpCWkdGd2RHVnlQR0Z1ZVN3Z2RtOXBaQ3dnUm1GaWNtbGpRMjl1ZEhKaFkzUkRiMjUwWlhoMFBpeGNiaUFnSUNCdmRtVnljbWxrWlhNL09pQlFZWEowYVdGc1BFRmtZWEIwWlhKR2JHRm5jejVjYmlBZ0tTQjdYRzRnSUNBZ2MzVndaWElvWVdSaGNIUmxjaWs3WEc0Z0lDQWdhV1lnS0c5MlpYSnlhV1JsY3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2ZG1WeWNtbGtaWE1nUFNCdmRtVnljbWxrWlhNN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NISnZkR1ZqZEdWa0lHOTJaWEp5YVdSbElHRnplVzVqSUdWNFpXTjFkR2x2YmxCeVpXWnBlQ2hjYmlBZ0lDQnRaWFJvYjJRNklHRnVlU3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhSbUZpY21salEyOXVkSEpoWTNSRGIyNTBaWGgwUGx4dUlDQXBJSHRjYmlBZ0lDQmpiMjV6ZENCdVpYZEJjbWR6SUQwZ1lYSm5jeTVtYVd4MFpYSW9YRzRnSUNBZ0lDQW9ZWEpuS1NBOVBpQmhjbWNnSVQwOUlIVnVaR1ZtYVc1bFpDQW1KaUJoY21jZ0lUMDlJRzUxYkd4Y2JpQWdJQ0FwSUdGeklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eEdZV0p5YVdORGIyNTBjbUZqZEVOdmJuUmxlSFErTzF4dUlDQWdJSEpsZEhWeWJpQnpkWEJsY2k1bGVHVmpkWFJwYjI1UWNtVm1hWGdvYldWMGFHOWtMQ0F1TGk1dVpYZEJjbWR6S1R0Y2JpQWdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQnZkbVZ5Y21sa1pTQmlkV2xzWkNncE9pQk5ZVzVuYjFGMVpYSjVJSHRjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0IwYUdsekxteHZaeTVtYjNJb2RHaHBjeTVpZFdsc1pDazdYRzRnSUNBZ2RHaHBjeTV0WVc1MVlXeEJaMmR5WldkaGRHbHZiaUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JqYjI1emRDQmhaMmR5WldkaGRHVkpibVp2SUQwZ2RHaHBjeTVpZFdsc1pFRm5aM0psWjJGMFpVbHVabThvS1R0Y2JpQWdJQ0JwWmlBb1lXZG5jbVZuWVhSbFNXNW1ieWtnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11YzJodmRXeGtWWE5sVFdGdWRXRnNRV2RuY21WbllYUnBiMjRvS1NrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xaGJuVmhiRUZuWjNKbFoyRjBhVzl1SUQwZ1lXZG5jbVZuWVhSbFNXNW1ienRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1OeVpXRjBaVUZuWjNKbFoyRjBaVkYxWlhKNUtHRm5aM0psWjJGMFpVbHVabThwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCelpXeGxZM1J2Y25NNklFMWhibWR2VTJWc1pXTjBiM0lnUFNCN2ZUdGNiaUFnSUNCelpXeGxZM1J2Y25OYlEyOTFZMmhFUWt0bGVYTXVWRUZDVEVWZElEMGdlMzA3WEc0Z0lDQWdjMlZzWldOMGIzSnpXME52ZFdOb1JFSkxaWGx6TGxSQlFreEZYU0E5SUUxdlpHVnNMblJoWW14bFRtRnRaU2gwYUdsekxtWnliMjFUWld4bFkzUnZjaWs3WEc0Z0lDQWdZMjl1YzNRZ2NYVmxjbms2SUUxaGJtZHZVWFZsY25rZ1BTQjdJSE5sYkdWamRHOXlPaUJ6Wld4bFkzUnZjbk1nZlR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV6Wld4bFkzUlRaV3hsWTNSdmNpa2djWFZsY25rdVptbGxiR1J6SUQwZ2RHaHBjeTV6Wld4bFkzUlRaV3hsWTNSdmNpQmhjeUJ6ZEhKcGJtZGJYVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbmRvWlhKbFEyOXVaR2wwYVc5dUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyNWthWFJwYjI0NklFMWhibWR2VTJWc1pXTjBiM0lnUFNCMGFHbHpMbkJoY25ObFEyOXVaR2wwYVc5dUtGeHVJQ0FnSUNBZ0lDQkRiMjVrYVhScGIyNHVZVzVrS0Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11ZDJobGNtVkRiMjVrYVhScGIyNHNYRzRnSUNBZ0lDQWdJQ0FnUTI5dVpHbDBhVzl1TG1GMGRISnBZblYwWlR4TlBpaERiM1ZqYUVSQ1MyVjVjeTVVUVVKTVJTQmhjeUJyWlhsdlppQk5LUzVsY1NoY2JpQWdJQ0FnSUNBZ0lDQWdJSEYxWlhKNUxuTmxiR1ZqZEc5eVcwTnZkV05vUkVKTFpYbHpMbFJCUWt4RlhWeHVJQ0FnSUNBZ0lDQWdJQ2xjYmlBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnS1M1elpXeGxZM1J2Y2p0Y2JpQWdJQ0FnSUdOdmJuTjBJSE5sYkdWamRHOXlTMlY1Y3lBOUlFOWlhbVZqZEM1clpYbHpLR052Ym1ScGRHbHZiaWtnWVhNZ1RXRnVaMjlQY0dWeVlYUnZjbHRkTzF4dUlDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQnpaV3hsWTNSdmNrdGxlWE11YkdWdVozUm9JRDA5UFNBeElDWW1YRzRnSUNBZ0lDQWdJRTlpYW1WamRDNTJZV3gxWlhNb1EyOTFZMmhFUWtkeWIzVndUM0JsY21GMGIzSXBMbWx1WkdWNFQyWW9jMlZzWldOMGIzSkxaWGx6V3pCZEtTQWhQVDBnTFRGY2JpQWdJQ0FnSUNsY2JpQWdJQ0FnSUNBZ2MzZHBkR05vSUNoelpXeGxZM1J2Y2t0bGVYTmJNRjBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUVOdmRXTm9SRUpIY205MWNFOXdaWEpoZEc5eUxrRk9SRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibVJwZEdsdmJsdERiM1ZqYUVSQ1IzSnZkWEJQY0dWeVlYUnZjaTVCVGtSZElEMGdXMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTVQWW1wbFkzUXVkbUZzZFdWektGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibVJwZEdsdmJsdERiM1ZqYUVSQ1IzSnZkWEJQY0dWeVlYUnZjaTVCVGtSZElHRnpJRTFoYm1kdlUyVnNaV04wYjNKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnS1M1eVpXUjFZMlVvS0dGalkzVnRPaUJOWVc1bmIxTmxiR1ZqZEc5eVcxMHNJSFpoYkRvZ1lXNTVLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYTJWNWN5QTlJRTlpYW1WamRDNXJaWGx6S0haaGJDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0d0bGVYTXViR1Z1WjNSb0lDRTlQU0F4S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmNJbFJ2YnlCdFlXNTVJR3RsZVhNZ2FXNGdjWFZsY25rZ2MyVnNaV04wYjNJdUlITm9iM1ZzWkNCaVpTQnZibVZjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCcklEMGdhMlY1YzFzd1hUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYXlBOVBUMGdRMjkxWTJoRVFrZHliM1Z3VDNCbGNtRjBiM0l1UVU1RUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZV05qZFcwdWNIVnphQ2d1TGk0b2RtRnNXMnRkSUdGeklHRnVlVnRkS1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JoWTJOMWJTNXdkWE5vS0haaGJDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRmpZM1Z0TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5TENCYlhTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY1hWbGNua3VjMlZzWldOMGIzSWdQU0JqYjI1a2FYUnBiMjQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUVOdmRXTm9SRUpIY205MWNFOXdaWEpoZEc5eUxrOVNPaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCek9pQlNaV052Y21ROFlXNTVMQ0JoYm5rK0lEMGdlMzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpXME52ZFdOb1JFSkhjbTkxY0U5d1pYSmhkRzl5TGtGT1JGMGdQU0JiWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym1ScGRHbHZiaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMaTR1VDJKcVpXTjBMbVZ1ZEhKcFpYTW9jWFZsY25rdWMyVnNaV04wYjNJcExtMWhjQ2dvVzJ0bGVTd2dkbUZzWFNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElISmxjM1ZzZERvZ1VtVmpiM0prUEdGdWVTd2dZVzU1UGlBOUlIdDlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RGdHJaWGxkSUQwZ2RtRnNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEYxWlhKNUxuTmxiR1ZqZEc5eUlEMGdjenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Z3aVZHaHBjeUJ6YUc5MWJHUWdZbVVnYVcxd2IzTnphV0pzWlZ3aUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0dOdmJtUnBkR2x2YmlrdVptOXlSV0ZqYUNnb1cydGxlU3dnZG1Gc1hTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h4ZFdWeWVTNXpaV3hsWTNSdmNsdHJaWGxkS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdiRzluTG5kaGNtNG9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHQkJJQ1I3YTJWNWZTQnhkV1Z5ZVNCd1lYSmhiU0JwY3lCaFltOTFkQ0IwYnlCaVpTQnZkbVZ5Y21sa1pHVnVPaUFrZTNGMVpYSjVMbk5sYkdWamRHOXlXMnRsZVYxOUlHSjVJQ1I3ZG1Gc2ZXQmNiaUFnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdjWFZsY25rdWMyVnNaV04wYjNKYmEyVjVYU0E5SUhaaGJEdGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViM0prWlhKQ2VWTmxiR1ZqZEc5eWN6OHViR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQnhkV1Z5ZVM1emIzSjBJRDBnY1hWbGNua3VjMjl5ZENCOGZDQmJYVHRjYmlBZ0lDQWdJSEYxWlhKNUxuTmxiR1ZqZEc5eUlEMGdjWFZsY25rdWMyVnNaV04wYjNJZ2ZId2dLSHQ5SUdGeklFMWhibWR2VTJWc1pXTjBiM0lwTzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCYmMyVnNaV04wYjNKTFpYa3NJR1JwY21WamRHbHZibDBnYjJZZ2RHaHBjeTV2Y21SbGNrSjVVMlZzWldOMGIzSnpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5sYkdWamRHOXlJRDBnYzJWc1pXTjBiM0pMWlhrZ1lYTWdjM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeVpXTTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lFOXlaR1Z5UkdseVpXTjBhVzl1UGlBOUlIdDlPMXh1SUNBZ0lDQWdJQ0J5WldOYmMyVnNaV04wYjNKZElEMGdaR2x5WldOMGFXOXVJR0Z6SUU5eVpHVnlSR2x5WldOMGFXOXVPMXh1SUNBZ0lDQWdJQ0FvY1hWbGNua3VjMjl5ZENCaGN5QlNaV052Y21ROGMzUnlhVzVuTENCUGNtUmxja1JwY21WamRHbHZiajViWFNrdWNIVnphQ2h5WldNcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVhGMVpYSjVMbk5sYkdWamRHOXlXM05sYkdWamRHOXlYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIRjFaWEo1TG5ObGJHVmpkRzl5VzNObGJHVmpkRzl5WFNBOUlIdDlJR0Z6SUUxaGJtZHZVMlZzWldOMGIzSTdYRzRnSUNBZ0lDQWdJQ0FnS0hGMVpYSjVMbk5sYkdWamRHOXlXM05sYkdWamRHOXlYU0JoY3lCTllXNW5iMU5sYkdWamRHOXlLVnREYjNWamFFUkNUM0JsY21GMGIzSXVRa2xIUjBWU1hTQTlYRzRnSUNBZ0lDQWdJQ0FnSUNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViR2x0YVhSVFpXeGxZM1J2Y2lrZ2UxeHVJQ0FnSUNBZ2NYVmxjbmt1YkdsdGFYUWdQU0IwYUdsekxteHBiV2wwVTJWc1pXTjBiM0k3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViMlptYzJWMFUyVnNaV04wYjNJcElIRjFaWEo1TG5OcmFYQWdQU0IwYUdsekxtOW1abk5sZEZObGJHVmpkRzl5TzF4dUlDQWdJSFJvYVhNdVlYUjBZV05vUkdWbVlYVnNkRkYxWlhKNVNXNWtaWGdvY1hWbGNua3BPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGdZblZwYkhRZ2JXRnVaMjhnY1hWbGNua2dKSHRLVTA5T0xuTjBjbWx1WjJsbWVTaHhkV1Z5ZVNsOVlDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2NYVmxjbms3WEc0Z0lIMWNibHh1SUNCdmRtVnljbWxrWlNCaGMzbHVZeUJsZUdWamRYUmxLRnh1SUNBZ0lDNHVMbUZ5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eEdZV0p5YVdORGIyNTBjbUZqZEVOdmJuUmxlSFErWEc0Z0lDazZJRkJ5YjIxcGMyVThVajRnZTF4dUlDQWdJR052Ym5OMElIc2diRzluTENCamRIZ3NJR04wZUVGeVozTWdmU0E5SUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUhSb2FYTXVaWGhsWTNWMFpTazdYRzVjYmlBZ0lDQmpiMjV6ZENCdGMzQWdQU0JsZUhSeVlXTjBUWE53U1dRb1kzUjRMbWxrWlc1MGFYUjVLVHRjYmx4dUlDQWdJR052Ym5OMElIc2djSEpwZG1GMFpVTnZiSE1zSUhOb1lYSmxaRU52YkhNZ2ZTQTlJRTF2WkdWc0xtTnZiR3hsWTNScGIyNXpSbTl5S0hSb2FYTXVabkp2YlZObGJHVmpkRzl5S1R0Y2JpQWdJQ0JqYjI1emRDQmpiMnhzWldOMGFXOXVjeUE5SUZ0Y2JpQWdJQ0FnSUM0dUxtNWxkeUJUWlhRb1hHNGdJQ0FnSUNBZ0lHRjNZV2wwSUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ0lDQWdJRnN1TGk1d2NtbDJZWFJsUTI5c2N5d2dMaTR1YzJoaGNtVmtRMjlzYzEwdWJXRndLQ2hqS1NBOVBseHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pXOW1JR01nUFQwOUlGd2ljM1J5YVc1blhDSWdQeUJqSURvZ1l5aDBhR2x6TG1aeWIyMVRaV3hsWTNSdmNpd2diWE53TENCamRIZ3BYRzRnSUNBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcExGeHVJQ0FnSUYwN1hHNWNiaUFnSUNCaGNIQnNlVk5sWjNKbFoyRjBhVzl1Um14aFozTW9ibVYzSUhSb2FYTXVabkp2YlZObGJHVmpkRzl5S0Nrc0lHTnZiR3hsWTNScGIyNXpMQ0JqZEhncE8xeHVJQ0FnSUdGM1lXbDBJR0Z3Y0d4NVRXbHljbTl5Um14aFozTW9kR2hwY3k1bWNtOXRVMlZzWldOMGIzSXNJRzF6Y0N3Z1kzUjRLVHRjYmx4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1d2NtVndZWEpsWkNrZ2NtVjBkWEp1SUhSb2FYTXVaWGhsWTNWMFpWQnlaWEJoY21Wa0tDNHVMaWhoY21keklHRnpJR0Z1ZVNrcE8xeHVJQ0FnSUNBZ2JHOW5Mbk5wYkd4NUtHQkNkV2xzWkdsdVp5QnlZWGNnYzNSaGRHVnRaVzUwTGk0dVlDazdYRzRnSUNBZ0lDQmpiMjV6ZENCeGRXVnllU0E5SUhSb2FYTXVZblZwYkdRb0tUdGNiaUFnSUNBZ0lHeHZaeTV6YVd4c2VTaGdaWGhsWTNWMGFXNW5JSEpoZHlCemRHRjBaVzFsYm5SZ0tUdGNiaUFnSUNBZ0lHTnZibk4wSUhKbGMzVnNkSE1nUFNBb1lYZGhhWFFnZEdocGN5NXlZWGM4VWo0b1hHNGdJQ0FnSUNBZ0lIRjFaWEo1TEZ4dUlDQWdJQ0FnSUNCMGNuVmxMRnh1SUNBZ0lDQWdJQ0F1TGk0b1kzUjRRWEpuY3lCaGN5QkRiMjUwWlhoMGRXRnNRWEpuY3p4R1lXSnlhV05EYjI1MGNtRmpkRU52Ym5SbGVIUStLVnh1SUNBZ0lDQWdLU2tnWVhNZ2RXNXJibTkzYmlCaGN5QlNPMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVhR0Z6UVdkbmNtVm5ZWFJwYjI0b0tTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4MGN6dGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2doZEdocGN5NXpaV3hsWTNSVFpXeGxZM1J2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NW5jbTkxY0VKNVUyVnNaV04wYjNKelB5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQm5jbTkxY0dWa0lEMGdkR2hwY3k1eVpYWmxjblJIY205MWNHVmtVbVZ6ZFd4MGN5aHlaWE4xYkhSekxDQW9jaWtnUFQ1Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNISnZZMlZ6YzFKbFkyOXlaQ2h5TENCamRIZ3BYRzRnSUNBZ0lDQWdJQ0FnS1NCaGN5QlNPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFvWVhkaGFYUWdkR2hwY3k1aGNIQnNlVUZtZEdWeVNHRnVaR3hsY25OVWIxSmxjM1ZzZENobmNtOTFjR1ZrTENCamRIZ3BLU0JoY3lCU08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSEpsYzNWc2RITXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYldGd2NHVmtJRDBnY21WemRXeDBjeTV0WVhBb0tISXBJRDArWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5CeWIyTmxjM05TWldOdmNtUW9jaXdnWTNSNEtWeHVJQ0FnSUNBZ0lDQWdJQ2tnWVhNZ2RXNXJibTkzYmlCaGN5QlNPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFvWVhkaGFYUWdkR2hwY3k1aGNIQnNlVUZtZEdWeVNHRnVaR3hsY25OVWIxSmxjM1ZzZENodFlYQndaV1FzSUdOMGVDa3BJR0Z6SUZJN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MybHVaMnhsSUQwZ2RHaHBjeTV3Y205alpYTnpVbVZqYjNKa0tISmxjM1ZzZEhNc0lHTjBlQ2tnWVhNZ2RXNXJibTkzYmlCaGN5QlNPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdLR0YzWVdsMElIUm9hWE11WVhCd2JIbEJablJsY2toaGJtUnNaWEp6Vkc5U1pYTjFiSFFvYzJsdVoyeGxMQ0JqZEhncEtTQmhjeUJTTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2RITTdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pUb2dkVzVyYm05M2Jpa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRkYxWlhKNVJYSnliM0lvWlNCaGN5QkZjbkp2Y2lrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc0aVhYMD0iXX0=
@@ -54,7 +54,7 @@ let MigrationContract = MigrationContract_1 = class MigrationContract extends fa
54
54
  throw new db_decorators_1.InternalError("Migration arguments must be an array");
55
55
  }
56
56
  }
57
- const { log, ctx, ctxArgs } = (await this.logCtx([...argz, context], core_1.PersistenceKeys.MIGRATION, true)).for(this.migrate);
57
+ const { log, ctx } = (await this.logCtx([context], core_1.PersistenceKeys.MIGRATION, true)).for(this.migrate);
58
58
  const migrations = this.getRegisteredMigrations();
59
59
  const migrationMeta = migrations.find((m) => m.reference === reference);
60
60
  if (!migrationMeta) {
@@ -65,6 +65,7 @@ let MigrationContract = MigrationContract_1 = class MigrationContract extends fa
65
65
  const m = new MigrationClass();
66
66
  // For Fabric, use the context as the query runner
67
67
  const qr = ctx;
68
+ const ctxArgs = [...argz, ctx];
68
69
  try {
69
70
  log.verbose(`migration ${reference} up`);
70
71
  await m.up(qr, this.adapter, ...ctxArgs);
@@ -148,5 +149,5 @@ exports.MigrationContract = MigrationContract = MigrationContract_1 = __decorate
148
149
  }),
149
150
  __metadata("design:paramtypes", [])
150
151
  ], MigrationContract);
151
- //# sourceMappingURL=MigrationContract.js.map
152
- //# sourceMappingURL=MigrationContract.js.map
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uQ29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RzL01pZ3JhdGlvbkNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsT0FBTyxJQUFJLEdBQUcsRUFDZCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsR0FDWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsT0FBTyxFQUdQLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUVMLHFCQUFxQixHQUN0Qiw2QkFBMEI7QUFDM0IsT0FBTyxFQUNMLGFBQWEsRUFFYixtQkFBbUIsR0FDcEIsNkJBQXdCO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSx3QkFBbUI7QUFNNUMsSUFBTSxpQkFBaUIseUJBQXZCLE1BQU0saUJBQWtCLFNBQVEsUUFBUTtJQUs3QztRQUNFLEtBQUssQ0FBQyxtQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUh0QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUl2QyxDQUFDO0lBRUQsSUFBYyxPQUFPO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQVEsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO29CQUNoQixNQUFNLElBQUksYUFBYSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDckUsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxJQUFJLENBQUM7b0JBQ0gsSUFB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QUFPLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RSxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGLENBQUE7QUF4S087SUFETCxXQUFXLEVBQUU7O3FDQUVILEdBQUc7O2dEQXFEYjtBQWpGVSxpQkFBaUI7SUFKN0IsSUFBSSxDQUFDO1FBQ0osS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixXQUFXLEVBQUUsdUNBQXVDO0tBQ3JELENBQUM7O0dBQ1csaUJBQWlCLENBbU03QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnRleHQgYXMgQ3R4LFxuICBDb250cmFjdCxcbiAgSW5mbyxcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gXCJmYWJyaWMtY29udHJhY3QtYXBpXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgTWV0aG9kT3JPcGVyYXRpb24sXG4gIE1pZ3JhdGlvbkVycm9yLFxuICBQZXJzaXN0ZW5jZUtleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTWlncmF0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQge1xuICBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3MsXG4gIEZhYnJpY0NvbnRyYWN0QWRhcHRlcixcbn0gZnJvbSBcIi4vQ29udHJhY3RBZGFwdGVyXCI7XG5pbXBvcnQge1xuICBGYWJyaWNGbGF2b3VyLFxuICBoZWFsdGhjaGVjayxcbiAgTWlzc2luZ0NvbnRleHRFcnJvcixcbn0gZnJvbSBcIi4uL3NoYXJlZC9pbmRleFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RDb250ZXh0IH0gZnJvbSBcIi4vQ29udHJhY3RDb250ZXh0XCI7XG5pbXBvcnQgeyBWRVJTSU9OLCBQQUNLQUdFX05BTUUgfSBmcm9tIFwiLi4vdmVyc2lvblwiO1xuXG5ASW5mbyh7XG4gIHRpdGxlOiBcIk1pZ3JhdGlvbkNvbnRyYWN0XCIsXG4gIGRlc2NyaXB0aW9uOiBcIkNvbnRyYWN0IGZvciBtYW5hZ2luZyBkYXRhIG1pZ3JhdGlvbnNcIixcbn0pXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uQ29udHJhY3QgZXh0ZW5kcyBDb250cmFjdCB7XG4gIHByaXZhdGUgX2FkYXB0ZXI/OiBGYWJyaWNDb250cmFjdEFkYXB0ZXI7XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoTWlncmF0aW9uQ29udHJhY3QubmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGFkYXB0ZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9hZGFwdGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9hZGFwdGVyID0gQWRhcHRlci5nZXQoRmFicmljRmxhdm91cikgYXMgYW55O1xuICAgICAgICBpZiAoIXRoaXMuX2FkYXB0ZXIpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYGZhaWxlZCB0byBsb2FkIGFkYXB0ZXIuIGluc3RhbnRpYXRpb25gKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX2FkYXB0ZXIgPSBuZXcgRmFicmljQ29udHJhY3RBZGFwdGVyKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGluc3RhbnRpYXRlIGFkYXB0ZXI6ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlcjtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbigpXG4gIGFzeW5jIG1pZ3JhdGUoXG4gICAgY29udGV4dDogQ3R4LFxuICAgIHJlZmVyZW5jZTogc3RyaW5nLFxuICAgIG1pZ3JhdGlvbkFyZ3M/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGFyZ3o6IGFueVtdID0gW107XG4gICAgaWYgKG1pZ3JhdGlvbkFyZ3MpIHtcbiAgICAgIGFyZ3ogPSBKU09OLnBhcnNlKG1pZ3JhdGlvbkFyZ3MpIGFzIGFueTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmd6KSkge1xuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk1pZ3JhdGlvbiBhcmd1bWVudHMgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoW2NvbnRleHRdLCBQZXJzaXN0ZW5jZUtleXMuTUlHUkFUSU9OLCB0cnVlKVxuICAgICkuZm9yKHRoaXMubWlncmF0ZSk7XG5cbiAgICBjb25zdCBtaWdyYXRpb25zID0gdGhpcy5nZXRSZWdpc3RlcmVkTWlncmF0aW9ucygpO1xuXG4gICAgY29uc3QgbWlncmF0aW9uTWV0YSA9IG1pZ3JhdGlvbnMuZmluZCgobSkgPT4gbS5yZWZlcmVuY2UgPT09IHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoIW1pZ3JhdGlvbk1ldGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNaWdyYXRpb24gJHtyZWZlcmVuY2V9IG5vdCBmb3VuZGApO1xuICAgIH1cblxuICAgIGxvZy52ZXJib3NlKGBtaWdyYXRpb24gJHtyZWZlcmVuY2V9IGZvdW5kYCk7XG4gICAgY29uc3QgTWlncmF0aW9uQ2xhc3M6IENvbnN0cnVjdG9yPE1pZ3JhdGlvbjxhbnksIGFueT4+ID1cbiAgICAgIG1pZ3JhdGlvbk1ldGEuY2xhc3M7XG4gICAgY29uc3QgbSA9IG5ldyBNaWdyYXRpb25DbGFzcygpO1xuICAgIC8vIEZvciBGYWJyaWMsIHVzZSB0aGUgY29udGV4dCBhcyB0aGUgcXVlcnkgcnVubmVyXG4gICAgY29uc3QgcXI6IGFueSA9IGN0eDtcbiAgICBjb25zdCBjdHhBcmdzID0gWy4uLmFyZ3osIGN0eF0gYXMgWy4uLmFueVtdLCB0eXBlb2YgY3R4XTtcblxuICAgIHRyeSB7XG4gICAgICBsb2cudmVyYm9zZShgbWlncmF0aW9uICR7cmVmZXJlbmNlfSB1cGApO1xuICAgICAgYXdhaXQgbS51cChxciwgdGhpcy5hZGFwdGVyLCAuLi5jdHhBcmdzKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgTWlncmF0aW9uRXJyb3IoXG4gICAgICAgIGBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBtaWdyYXRpb24gJHttLnJlZmVyZW5jZX06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbG9nLnZlcmJvc2UoYG1pZ3JhdGlvbiAke3JlZmVyZW5jZX0gbWlncmF0ZWApO1xuICAgICAgYXdhaXQgbS5taWdyYXRlKHFyLCB0aGlzLmFkYXB0ZXIsIC4uLmN0eEFyZ3MpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBNaWdyYXRpb25FcnJvcihgZmFpbGVkIHRvIG1pZ3JhdGUgJHttLnJlZmVyZW5jZX06ICR7ZX1gKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxvZy52ZXJib3NlKGBtaWdyYXRpb24gJHtyZWZlcmVuY2V9IGRvd25gKTtcbiAgICAgIGF3YWl0IG0uZG93bihxciwgdGhpcy5hZGFwdGVyLCAuLi5jdHhBcmdzKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgTWlncmF0aW9uRXJyb3IoXG4gICAgICAgIGBmYWlsZWQgdG8gY29uY2x1ZGUgbWlncmF0aW9uICR7bS5yZWZlcmVuY2V9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UmVnaXN0ZXJlZE1pZ3JhdGlvbnMoKTogQXJyYXk8e1xuICAgIGNsYXNzOiBhbnk7XG4gICAgcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgZmxhdm91cjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgbWlncmF0aW9uczogQXJyYXk8e1xuICAgICAgY2xhc3M6IGFueTtcbiAgICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuICAgICAgZmxhdm91cjogc3RyaW5nO1xuICAgIH0+ID0gW107XG5cbiAgICBjb25zdCBtaWdyYXRpb25MaXN0ID0gTWV0YWRhdGEubWlncmF0aW9ucygpO1xuXG4gICAgZm9yIChjb25zdCBbLCBNaWdyYXRpb25DbGFzc10gb2YgbWlncmF0aW9uTGlzdCkge1xuICAgICAgY29uc3QgbWV0YSA9IE1ldGFkYXRhLmdldChNaWdyYXRpb25DbGFzcywgUGVyc2lzdGVuY2VLZXlzLk1JR1JBVElPTik7XG5cbiAgICAgIGlmICghbWV0YSkgY29udGludWU7XG5cbiAgICAgIGlmIChtZXRhLmZsYXZvdXIgIT09IEZhYnJpY0ZsYXZvdXIpIGNvbnRpbnVlO1xuXG4gICAgICBtaWdyYXRpb25zLnB1c2goe1xuICAgICAgICBjbGFzczogTWlncmF0aW9uQ2xhc3MsXG4gICAgICAgIHJlZmVyZW5jZTogbWV0YS5yZWZlcmVuY2UsXG4gICAgICAgIGZsYXZvdXI6IG1ldGEuZmxhdm91cixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtaWdyYXRpb25zO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGluaXQoY3R4OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoW2N0eF0sIFBlcnNpc3RlbmNlS2V5cy5JTklUSUFMSVpBVElPTiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmluaXQpO1xuICAgIGxvZy5pbmZvKGBSdW5uaW5nIGNvbnRyYWN0ICR7dGhpcy5nZXROYW1lKCl9IGluaXRpYWxpemF0aW9uLi4uYCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgbG9nLmluZm8oYENvbnRyYWN0IGluaXRpYWxpemF0aW9uIGNvbXBsZXRlZC5gKTtcbiAgfVxuXG4gIGFzeW5jIGhlYWx0aGNoZWNrKFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0XG4gICk6IFByb21pc2U8c3RyaW5nIHwgaGVhbHRoY2hlY2s+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KFtjdHhdLCBcImhlYWx0aGNoZWNrXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmhlYWx0aGNoZWNrXG4gICAgKTtcbiAgICBsb2cuaW5mbyhgUnVubmluZyBIZWFsdGhjaGVjazogJHt0aGlzLmluaXRpYWxpemVkfS4uLmApO1xuICAgIHJldHVybiB7XG4gICAgICBoZWFsdGhjaGVjazogdGhpcy5pbml0aWFsaXplZCxcbiAgICAgIHZlcnNpb246IFZFUlNJT04sXG4gICAgICBwYWNrYWdlOiBQQUNLQUdFX05BTUUsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2dDdHg8XG4gICAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gICAgTUVUSE9EIGV4dGVuZHMgTWV0aG9kT3JPcGVyYXRpb24gPSBNZXRob2RPck9wZXJhdGlvbixcbiAgPihcbiAgICBhcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8RmFicmljQ29udHJhY3RDb250ZXh0LCBBUkdTPixcbiAgICBvcGVyYXRpb246IE1FVEhPRFxuICApOiBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPjtcbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBmYWxzZVxuICApOiBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPjtcbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiB0cnVlXG4gICk6IFByb21pc2U8XG4gICAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT5cbiAgPjtcbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBib29sZWFuID0gZmFsc2VcbiAgKTpcbiAgICB8IFByb21pc2U8XG4gICAgICAgIEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+XG4gICAgICA+XG4gICAgfCBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPiB7XG4gICAgY29uc3QgY3R4ID0gYXJncy5wb3AoKTtcbiAgICBpZiAoIWN0eCB8fCAhY3R4LnN0dWIpIHtcbiAgICAgIHRocm93IG5ldyBNaXNzaW5nQ29udGV4dEVycm9yKGBObyB2YWxpZCBjb250ZXh0IHByb3ZpZGVkLi4uYCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHR1YWxpemVkID0gdGhpcy5hZGFwdGVyW1wibG9nQ3R4XCJdKFxuICAgICAgW3VuZGVmaW5lZCwgLi4uYXJnc10gYXMgYW55LFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgYWxsb3dDcmVhdGUgYXMgYW55LFxuICAgICAgY3R4XG4gICAgKSBhc1xuICAgICAgfCBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPlxuICAgICAgfCBQcm9taXNlPFxuICAgICAgICAgIEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+XG4gICAgICAgID47XG4gICAgZnVuY3Rpb24gc3F1YXNoQXJncyhjdHg6IEZhYnJpY0NvbnRleHR1YWxpemVkQXJncykge1xuICAgICAgY3R4LmN0eEFyZ3Muc2hpZnQoKTsgLy8gcmVtb3ZlcyBhZGRlZCBtb2RlbCB0byBhcmdzXG4gICAgICByZXR1cm4gY3R4IGFzIGFueTtcbiAgICB9XG5cbiAgICBpZiAoIShjb250ZXh0dWFsaXplZCBpbnN0YW5jZW9mIFByb21pc2UpKSByZXR1cm4gc3F1YXNoQXJncyhjb250ZXh0dWFsaXplZCk7XG4gICAgcmV0dXJuIGNvbnRleHR1YWxpemVkLnRoZW4oc3F1YXNoQXJncyk7XG4gIH1cbn1cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uQ29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNaWdyYXRpb25Db250cmFjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJO0lBQ2pGLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFB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Q0FBQyxDQUFDO1FBQ3RDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0osQ0FBQztBQWNPLDhDQUFpQjtBQWIxQixVQUFVLENBQUM7SUFDUCxJQUFBLGlDQUFXLEdBQUU7SUFDYixVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztJQUNuQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyw2QkFBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RCxVQUFVLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDO0NBQzNDLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCw0QkFBQSxpQkFBaUIsR0FBRyxtQkFBbUIsR0FBRyxVQUFVLENBQUM7SUFDakQsSUFBQSwwQkFBSSxFQUFDO1FBQ0QsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixXQUFXLEVBQUUsdUNBQXVDO0tBQ3ZELENBQUM7SUFDRixVQUFVLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO0NBQ3RDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUV0Qiw4b2VBQThvZSIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG52YXIgTWlncmF0aW9uQ29udHJhY3RfMTtcbmltcG9ydCB7IENvbnRleHQgYXMgQ3R4LCBDb250cmFjdCwgSW5mbywgVHJhbnNhY3Rpb24sIH0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBBZGFwdGVyLCBNaWdyYXRpb25FcnJvciwgUGVyc2lzdGVuY2VLZXlzLCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RBZGFwdGVyLCB9IGZyb20gXCIuL0NvbnRyYWN0QWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgRmFicmljRmxhdm91ciwgTWlzc2luZ0NvbnRleHRFcnJvciwgfSBmcm9tIFwiLi8uLi9zaGFyZWQvaW5kZXguanNcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFZFUlNJT04sIFBBQ0tBR0VfTkFNRSB9IGZyb20gXCIuLy4uL3ZlcnNpb24uanNcIjtcbmxldCBNaWdyYXRpb25Db250cmFjdCA9IE1pZ3JhdGlvbkNvbnRyYWN0XzEgPSBjbGFzcyBNaWdyYXRpb25Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoTWlncmF0aW9uQ29udHJhY3RfMS5uYW1lKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH1cbiAgICBnZXQgYWRhcHRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9hZGFwdGVyKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIgPSBBZGFwdGVyLmdldChGYWJyaWNGbGF2b3VyKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2FkYXB0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBmYWlsZWQgdG8gbG9hZCBhZGFwdGVyLiBpbnN0YW50aWF0aW9uYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlciA9IG5ldyBGYWJyaWNDb250cmFjdEFkYXB0ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBpbnN0YW50aWF0ZSBhZGFwdGVyOiAke2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyO1xuICAgIH1cbiAgICBhc3luYyBtaWdyYXRlKGNvbnRleHQsIHJlZmVyZW5jZSwgbWlncmF0aW9uQXJncykge1xuICAgICAgICBsZXQgYXJneiA9IFtdO1xuICAgICAgICBpZiAobWlncmF0aW9uQXJncykge1xuICAgICAgICAgICAgYXJneiA9IEpTT04ucGFyc2UobWlncmF0aW9uQXJncyk7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJneikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk1pZ3JhdGlvbiBhcmd1bWVudHMgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGxvZywgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoW2NvbnRleHRdLCBQZXJzaXN0ZW5jZUtleXMuTUlHUkFUSU9OLCB0cnVlKSkuZm9yKHRoaXMubWlncmF0ZSk7XG4gICAgICAgIGNvbnN0IG1pZ3JhdGlvbnMgPSB0aGlzLmdldFJlZ2lzdGVyZWRNaWdyYXRpb25zKCk7XG4gICAgICAgIGNvbnN0IG1pZ3JhdGlvbk1ldGEgPSBtaWdyYXRpb25zLmZpbmQoKG0pID0+IG0ucmVmZXJlbmNlID09PSByZWZlcmVuY2UpO1xuICAgICAgICBpZiAoIW1pZ3JhdGlvbk1ldGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNaWdyYXRpb24gJHtyZWZlcmVuY2V9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIGxvZy52ZXJib3NlKGBtaWdyYXRpb24gJHtyZWZlcmVuY2V9IGZvdW5kYCk7XG4gICAgICAgIGNvbnN0IE1pZ3JhdGlvbkNsYXNzID0gbWlncmF0aW9uTWV0YS5jbGFzcztcbiAgICAgICAgY29uc3QgbSA9IG5ldyBNaWdyYXRpb25DbGFzcygpO1xuICAgICAgICAvLyBGb3IgRmFicmljLCB1c2UgdGhlIGNvbnRleHQgYXMgdGhlIHF1ZXJ5IHJ1bm5lclxuICAgICAgICBjb25zdCBxciA9IGN0eDtcbiAgICAgICAgY29uc3QgY3R4QXJncyA9IFsuLi5hcmd6LCBjdHhdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbG9nLnZlcmJvc2UoYG1pZ3JhdGlvbiAke3JlZmVyZW5jZX0gdXBgKTtcbiAgICAgICAgICAgIGF3YWl0IG0udXAocXIsIHRoaXMuYWRhcHRlciwgLi4uY3R4QXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNaWdyYXRpb25FcnJvcihgZmFpbGVkIHRvIGluaXRpYWxpemUgbWlncmF0aW9uICR7bS5yZWZlcmVuY2V9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxvZy52ZXJib3NlKGBtaWdyYXRpb24gJHtyZWZlcmVuY2V9IG1pZ3JhdGVgKTtcbiAgICAgICAgICAgIGF3YWl0IG0ubWlncmF0ZShxciwgdGhpcy5hZGFwdGVyLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1pZ3JhdGlvbkVycm9yKGBmYWlsZWQgdG8gbWlncmF0ZSAke20ucmVmZXJlbmNlfTogJHtlfWApO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cudmVyYm9zZShgbWlncmF0aW9uICR7cmVmZXJlbmNlfSBkb3duYCk7XG4gICAgICAgICAgICBhd2FpdCBtLmRvd24ocXIsIHRoaXMuYWRhcHRlciwgLi4uY3R4QXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNaWdyYXRpb25FcnJvcihgZmFpbGVkIHRvIGNvbmNsdWRlIG1pZ3JhdGlvbiAke20ucmVmZXJlbmNlfTogJHtlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFJlZ2lzdGVyZWRNaWdyYXRpb25zKCkge1xuICAgICAgICBjb25zdCBtaWdyYXRpb25zID0gW107XG4gICAgICAgIGNvbnN0IG1pZ3JhdGlvbkxpc3QgPSBNZXRhZGF0YS5taWdyYXRpb25zKCk7XG4gICAgICAgIGZvciAoY29uc3QgWywgTWlncmF0aW9uQ2xhc3NdIG9mIG1pZ3JhdGlvbkxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSBNZXRhZGF0YS5nZXQoTWlncmF0aW9uQ2xhc3MsIFBlcnNpc3RlbmNlS2V5cy5NSUdSQVRJT04pO1xuICAgICAgICAgICAgaWYgKCFtZXRhKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKG1ldGEuZmxhdm91ciAhPT0gRmFicmljRmxhdm91cilcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIG1pZ3JhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2xhc3M6IE1pZ3JhdGlvbkNsYXNzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogbWV0YS5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgZmxhdm91cjogbWV0YS5mbGF2b3VyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pZ3JhdGlvbnM7XG4gICAgfVxuICAgIGFzeW5jIGluaXQoY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoW2N0eF0sIFBlcnNpc3RlbmNlS2V5cy5JTklUSUFMSVpBVElPTiwgdHJ1ZSkpLmZvcih0aGlzLmluaXQpO1xuICAgICAgICBsb2cuaW5mbyhgUnVubmluZyBjb250cmFjdCAke3RoaXMuZ2V0TmFtZSgpfSBpbml0aWFsaXphdGlvbi4uLmApO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgbG9nLmluZm8oYENvbnRyYWN0IGluaXRpYWxpemF0aW9uIGNvbXBsZXRlZC5gKTtcbiAgICB9XG4gICAgYXN5bmMgaGVhbHRoY2hlY2soY3R4KSB7XG4gICAgICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoW2N0eF0sIFwiaGVhbHRoY2hlY2tcIiwgdHJ1ZSkpLmZvcih0aGlzLmhlYWx0aGNoZWNrKTtcbiAgICAgICAgbG9nLmluZm8oYFJ1bm5pbmcgSGVhbHRoY2hlY2s6ICR7dGhpcy5pbml0aWFsaXplZH0uLi5gKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWx0aGNoZWNrOiB0aGlzLmluaXRpYWxpemVkLFxuICAgICAgICAgICAgdmVyc2lvbjogVkVSU0lPTixcbiAgICAgICAgICAgIHBhY2thZ2U6IFBBQ0tBR0VfTkFNRSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbG9nQ3R4KGFyZ3MsIG9wZXJhdGlvbiwgYWxsb3dDcmVhdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjdHggPSBhcmdzLnBvcCgpO1xuICAgICAgICBpZiAoIWN0eCB8fCAhY3R4LnN0dWIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nQ29udGV4dEVycm9yKGBObyB2YWxpZCBjb250ZXh0IHByb3ZpZGVkLi4uYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGV4dHVhbGl6ZWQgPSB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oW3VuZGVmaW5lZCwgLi4uYXJnc10sIG9wZXJhdGlvbiwgYWxsb3dDcmVhdGUsIGN0eCk7XG4gICAgICAgIGZ1bmN0aW9uIHNxdWFzaEFyZ3MoY3R4KSB7XG4gICAgICAgICAgICBjdHguY3R4QXJncy5zaGlmdCgpOyAvLyByZW1vdmVzIGFkZGVkIG1vZGVsIHRvIGFyZ3NcbiAgICAgICAgICAgIHJldHVybiBjdHg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoY29udGV4dHVhbGl6ZWQgaW5zdGFuY2VvZiBQcm9taXNlKSlcbiAgICAgICAgICAgIHJldHVybiBzcXVhc2hBcmdzKGNvbnRleHR1YWxpemVkKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHR1YWxpemVkLnRoZW4oc3F1YXNoQXJncyk7XG4gICAgfVxufTtcbl9fZGVjb3JhdGUoW1xuICAgIFRyYW5zYWN0aW9uKCksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEZ1bmN0aW9uKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgW0N0eCwgU3RyaW5nLCBTdHJpbmddKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnJldHVybnR5cGVcIiwgUHJvbWlzZSlcbl0sIE1pZ3JhdGlvbkNvbnRyYWN0LnByb3RvdHlwZSwgXCJtaWdyYXRlXCIsIG51bGwpO1xuTWlncmF0aW9uQ29udHJhY3QgPSBNaWdyYXRpb25Db250cmFjdF8xID0gX19kZWNvcmF0ZShbXG4gICAgSW5mbyh7XG4gICAgICAgIHRpdGxlOiBcIk1pZ3JhdGlvbkNvbnRyYWN0XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbnRyYWN0IGZvciBtYW5hZ2luZyBkYXRhIG1pZ3JhdGlvbnNcIixcbiAgICB9KSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgW10pXG5dLCBNaWdyYXRpb25Db250cmFjdCk7XG5leHBvcnQgeyBNaWdyYXRpb25Db250cmFjdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVFdsbmNtRjBhVzl1UTI5dWRISmhZM1F1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12WTI5dWRISmhZM1J6TDAxcFozSmhkR2x2YmtOdmJuUnlZV04wTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN1FVRkJRU3hQUVVGUExFVkJRMHdzVDBGQlR5eEpRVUZKTEVkQlFVY3NSVUZEWkN4UlFVRlJMRVZCUTFJc1NVRkJTU3hGUVVOS0xGZEJRVmNzUjBGRFdpeE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRemRDTEU5QlFVOHNSVUZCWlN4UlFVRlJMRVZCUVVVc1RVRkJUU3h6UWtGQmMwSXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRMHdzVDBGQlR5eEZRVWRRTEdOQlFXTXNSVUZEWkN4bFFVRmxMRWRCUTJoQ0xFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkZlRUlzVDBGQlR5eEZRVVZNTEhGQ1FVRnhRaXhIUVVOMFFpdzJRa0ZCTUVJN1FVRkRNMElzVDBGQlR5eEZRVU5NTEdGQlFXRXNSVUZGWWl4dFFrRkJiVUlzUjBGRGNFSXNOa0pCUVhkQ08wRkJRM3BDTEU5QlFVOHNSVUZCUlN4aFFVRmhMRVZCUVVVc1RVRkJUU3g1UWtGQmVVSXNRMEZCUXp0QlFVVjRSQ3hQUVVGUExFVkJRVVVzVDBGQlR5eEZRVUZGTEZsQlFWa3NSVUZCUlN4M1FrRkJiVUk3UVVGTk5VTXNTVUZCVFN4cFFrRkJhVUlzZVVKQlFYWkNMRTFCUVUwc2FVSkJRV3RDTEZOQlFWRXNVVUZCVVR0SlFVczNRenRSUVVORkxFdEJRVXNzUTBGQlF5eHRRa0ZCYVVJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVWgwUWl4blFrRkJWeXhIUVVGWkxFdEJRVXNzUTBGQlF6dEpRVWwyUXl4RFFVRkRPMGxCUlVRc1NVRkJZeXhQUVVGUE8xRkJRMjVDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRGJrSXNTVUZCU1N4RFFVRkRPMmRDUVVOSUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhoUVVGaExFTkJRVkVzUTBGQlF6dG5Ra0ZEYkVRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzI5Q1FVTm9RaXhOUVVGTkxFbEJRVWtzWVVGQllTeERRVUZETEhWRFFVRjFReXhEUVVGRExFTkJRVU03V1VGRGNrVXNRMEZCUXp0WlFVRkRMRTFCUVUwc1EwRkJRenRuUWtGRFVDeEpRVUZKTEVOQlFVTTdiMEpCUTBnc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03WjBKQlF6bERMRU5CUVVNN1owSkJRVU1zVDBGQlR5eERRVUZWTEVWQlFVVXNRMEZCUXp0dlFrRkRjRUlzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZCUXl4clEwRkJhME1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRha1VzUTBGQlF6dFpRVU5JTEVOQlFVTTdVVUZEU0N4RFFVRkRPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzBsQlEzWkNMRU5CUVVNN1NVRkhTeXhCUVVGT0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlExZ3NUMEZCV1N4RlFVTmFMRk5CUVdsQ0xFVkJRMnBDTEdGQlFYTkNPMUZCUlhSQ0xFbEJRVWtzU1VGQlNTeEhRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTnlRaXhKUVVGSkxHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEyeENMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEdGQlFXRXNRMEZCVVN4RFFVRkRPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEzcENMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRVU1zYzBOQlFYTkRMRU5CUVVNc1EwRkJRenRaUVVOc1JTeERRVUZETzFGQlEwZ3NRMEZCUXp0UlFVTkVMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZEYmtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1pVRkJaU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZET1VRc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUlhCQ0xFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4MVFrRkJkVUlzUlVGQlJTeERRVUZETzFGQlJXeEVMRTFCUVUwc1lVRkJZU3hIUVVGSExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEV0QlFVc3NVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkZlRVVzU1VGQlNTeERRVUZETEdGQlFXRXNSVUZCUlN4RFFVRkRPMWxCUTI1Q0xFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlFVTXNZVUZCWVN4VFFVRlRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRemxFTEVOQlFVTTdVVUZGUkN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzVTBGQlV5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTTFReXhOUVVGTkxHTkJRV01zUjBGRGJFSXNZVUZCWVN4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVOMFFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMR05CUVdNc1JVRkJSU3hEUVVGRE8xRkJReTlDTEd0RVFVRnJSRHRSUVVOc1JDeE5RVUZOTEVWQlFVVXNSMEZCVVN4SFFVRkhMRU5CUVVNN1VVRkRjRUlzVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVEpDTEVOQlFVTTdVVUZGZWtRc1NVRkJTU3hEUVVGRE8xbEJRMGdzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRk5CUVZNc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRGVrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRE0wTXNRMEZCUXp0UlFVRkRMRTlCUVU4c1EwRkJWU3hGUVVGRkxFTkJRVU03V1VGRGNFSXNUVUZCVFN4SlFVRkpMR05CUVdNc1EwRkRkRUlzYTBOQlFXdERMRU5CUVVNc1EwRkJReXhUUVVGVExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlEzUkVMRU5CUVVNN1VVRkRTaXhEUVVGRE8xRkJRMFFzU1VGQlNTeERRVUZETzFsQlEwZ3NSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExGTkJRVk1zVlVGQlZTeERRVUZETEVOQlFVTTdXVUZET1VNc1RVRkJUU3hEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEYUVRc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlZTeEZRVUZGTEVOQlFVTTdXVUZEY0VJc1RVRkJUU3hKUVVGSkxHTkJRV01zUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRExGTkJRVk1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNKRkxFTkJRVU03VVVGRFJDeEpRVUZKTEVOQlFVTTdXVUZEU0N4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzVTBGQlV5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTXpReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTTNReXhEUVVGRE8xRkJRVU1zVDBGQlR5eERRVUZWTEVWQlFVVXNRMEZCUXp0WlFVTndRaXhOUVVGTkxFbEJRVWtzWTBGQll5eERRVU4wUWl4blEwRkJaME1zUTBGQlF5eERRVUZETEZOQlFWTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkRjRVFzUTBGQlF6dFJRVU5LTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlZNc2RVSkJRWFZDTzFGQlN5OUNMRTFCUVUwc1ZVRkJWU3hIUVVsWUxFVkJRVVVzUTBGQlF6dFJRVVZTTEUxQlFVMHNZVUZCWVN4SFFVRkhMRkZCUVZFc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVVUxUXl4TFFVRkxMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV01zUTBGQlF5eEpRVUZKTEdGQlFXRXNSVUZCUlN4RFFVRkRPMWxCUXk5RExFMUJRVTBzU1VGQlNTeEhRVUZITEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1kwRkJZeXhGUVVGRkxHVkJRV1VzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVVnlSU3hKUVVGSkxFTkJRVU1zU1VGQlNUdG5Ra0ZCUlN4VFFVRlRPMWxCUlhCQ0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTMEZCU3l4aFFVRmhPMmRDUVVGRkxGTkJRVk03V1VGRk4wTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRFpDeExRVUZMTEVWQlFVVXNZMEZCWXp0blFrRkRja0lzVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRPMmRDUVVONlFpeFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4N1lVRkRkRUlzUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXp0UlFVVkVMRTlCUVU4c1ZVRkJWU3hEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZGVXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRV2RETzFGQlEyNUVMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVU5rTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEdWQlFXVXNRMEZCUXl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJReTlFTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5xUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkRha1VzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRlRUlzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4dlEwRkJiME1zUTBGQlF5eERRVUZETzBsQlEycEVMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zVjBGQlZ5eERRVU5tTEVkQlFXZERPMUZCUldoRExFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZEYWtVc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGRGFrSXNRMEZCUXp0UlFVTkdMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zZDBKQlFYZENMRWxCUVVrc1EwRkJReXhYUVVGWExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzaEVMRTlCUVU4N1dVRkRUQ3hYUVVGWExFVkJRVVVzU1VGQlNTeERRVUZETEZkQlFWYzdXVUZETjBJc1QwRkJUeXhGUVVGRkxFOUJRVTg3V1VGRGFFSXNUMEZCVHl4RlFVRkZMRmxCUVZrN1UwRkRkRUlzUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUV5UWxNc1RVRkJUU3hEUVVsa0xFbEJRWEZFTEVWQlEzSkVMRk5CUVdsQ0xFVkJRMnBDTEdOQlFYVkNMRXRCUVVzN1VVRk5OVUlzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM1pDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdXVUZEZEVJc1RVRkJUU3hKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdVVUZEYUVVc1EwRkJRenRSUVVORUxFMUJRVTBzWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRek5ETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGUkxFVkJRek5DTEZOQlFWTXNSVUZEVkN4WFFVRnJRaXhGUVVOc1FpeEhRVUZITEVOQlMwRXNRMEZCUXp0UlFVTk9MRk5CUVZNc1ZVRkJWU3hEUVVGRExFZEJRVFpDTzFsQlF5OURMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl3NFFrRkJPRUk3V1VGRGJrUXNUMEZCVHl4SFFVRlZMRU5CUVVNN1VVRkRjRUlzUTBGQlF6dFJRVVZFTEVsQlFVa3NRMEZCUXl4RFFVRkRMR05CUVdNc1dVRkJXU3hQUVVGUExFTkJRVU03V1VGQlJTeFBRVUZQTEZWQlFWVXNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRSUVVNMVJTeFBRVUZQTEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03U1VGRGVrTXNRMEZCUXp0RFFVTkdMRU5CUVVFN1FVRjRTMDg3U1VGRVRDeFhRVUZYTEVWQlFVVTdPM0ZEUVVWSUxFZEJRVWM3TzJkRVFYRkVZanRCUVdwR1ZTeHBRa0ZCYVVJN1NVRktOMElzU1VGQlNTeERRVUZETzFGQlEwb3NTMEZCU3l4RlFVRkZMRzFDUVVGdFFqdFJRVU14UWl4WFFVRlhMRVZCUVVVc2RVTkJRWFZETzB0QlEzSkVMRU5CUVVNN08wZEJRMWNzYVVKQlFXbENMRU5CYlUwM1FpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdYRzRnSUVOdmJuUmxlSFFnWVhNZ1EzUjRMRnh1SUNCRGIyNTBjbUZqZEN4Y2JpQWdTVzVtYnl4Y2JpQWdWSEpoYm5OaFkzUnBiMjRzWEc1OUlHWnliMjBnWENKbVlXSnlhV010WTI5dWRISmhZM1F0WVhCcFhDSTdYRzVwYlhCdmNuUWdleUJEYjI1emRISjFZM1J2Y2l3Z1RXVjBZV1JoZEdFZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmxZMjl5WVhScGIyNWNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFRmtZWEIwWlhJc1hHNGdJRTFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaeXhjYmlBZ1RXVjBhRzlrVDNKUGNHVnlZWFJwYjI0c1hHNGdJRTFwWjNKaGRHbHZia1Z5Y205eUxGeHVJQ0JRWlhKemFYTjBaVzVqWlV0bGVYTXNYRzU5SUdaeWIyMGdYQ0pBWkdWallXWXRkSE12WTI5eVpWd2lPMXh1YVcxd2IzSjBJSHNnVFdsbmNtRjBhVzl1SUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZTF4dUlDQkdZV0p5YVdORGIyNTBaWGgwZFdGc2FYcGxaRUZ5WjNNc1hHNGdJRVpoWW5KcFkwTnZiblJ5WVdOMFFXUmhjSFJsY2l4Y2JuMGdabkp2YlNCY0lpNHZRMjl1ZEhKaFkzUkJaR0Z3ZEdWeVhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCR1lXSnlhV05HYkdGMmIzVnlMRnh1SUNCb1pXRnNkR2hqYUdWamF5eGNiaUFnVFdsemMybHVaME52Ym5SbGVIUkZjbkp2Y2l4Y2JuMGdabkp2YlNCY0lpNHVMM05vWVhKbFpDOXBibVJsZUZ3aU8xeHVhVzF3YjNKMElIc2dTVzUwWlhKdVlXeEZjbkp2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHSXRaR1ZqYjNKaGRHOXljMXdpTzF4dWFXMXdiM0owSUhzZ1JtRmljbWxqUTI5dWRISmhZM1JEYjI1MFpYaDBJSDBnWm5KdmJTQmNJaTR2UTI5dWRISmhZM1JEYjI1MFpYaDBYQ0k3WEc1cGJYQnZjblFnZXlCV1JWSlRTVTlPTENCUVFVTkxRVWRGWDA1QlRVVWdmU0JtY205dElGd2lMaTR2ZG1WeWMybHZibHdpTzF4dVhHNUFTVzVtYnloN1hHNGdJSFJwZEd4bE9pQmNJazFwWjNKaGRHbHZia052Ym5SeVlXTjBYQ0lzWEc0Z0lHUmxjMk55YVhCMGFXOXVPaUJjSWtOdmJuUnlZV04wSUdadmNpQnRZVzVoWjJsdVp5QmtZWFJoSUcxcFozSmhkR2x2Ym5OY0lpeGNibjBwWEc1bGVIQnZjblFnWTJ4aGMzTWdUV2xuY21GMGFXOXVRMjl1ZEhKaFkzUWdaWGgwWlc1a2N5QkRiMjUwY21GamRDQjdYRzRnSUhCeWFYWmhkR1VnWDJGa1lYQjBaWEkvT2lCR1lXSnlhV05EYjI1MGNtRmpkRUZrWVhCMFpYSTdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lHbHVhWFJwWVd4cGVtVmtPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVTdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb1RXbG5jbUYwYVc5dVEyOXVkSEpoWTNRdWJtRnRaU2s3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1oyVjBJR0ZrWVhCMFpYSW9LU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbDloWkdGd2RHVnlLU0I3WEc0Z0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5aFpHRndkR1Z5SUQwZ1FXUmhjSFJsY2k1blpYUW9SbUZpY21salJteGhkbTkxY2lrZ1lYTWdZVzU1TzF4dUlDQWdJQ0FnSUNCcFppQW9JWFJvYVhNdVgyRmtZWEIwWlhJcFhHNGdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1lHWmhhV3hsWkNCMGJ5QnNiMkZrSUdGa1lYQjBaWEl1SUdsdWMzUmhiblJwWVhScGIyNWdLVHRjYmlBZ0lDQWdJSDBnWTJGMFkyZ2dlMXh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgyRmtZWEIwWlhJZ1BTQnVaWGNnUm1GaWNtbGpRMjl1ZEhKaFkzUkJaR0Z3ZEdWeUtDazdYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1U2SUhWdWEyNXZkMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loZ1JtRnBiR1ZrSUhSdklHbHVjM1JoYm5ScFlYUmxJR0ZrWVhCMFpYSTZJQ1I3WlgxZ0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZZV1JoY0hSbGNqdGNiaUFnZlZ4dVhHNGdJRUJVY21GdWMyRmpkR2x2YmlncFhHNGdJR0Z6ZVc1aklHMXBaM0poZEdVb1hHNGdJQ0FnWTI5dWRHVjRkRG9nUTNSNExGeHVJQ0FnSUhKbFptVnlaVzVqWlRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzFwWjNKaGRHbHZia0Z5WjNNL09pQnpkSEpwYm1kY2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ2JHVjBJR0Z5WjNvNklHRnVlVnRkSUQwZ1cxMDdYRzRnSUNBZ2FXWWdLRzFwWjNKaGRHbHZia0Z5WjNNcElIdGNiaUFnSUNBZ0lHRnlaM29nUFNCS1UwOU9MbkJoY25ObEtHMXBaM0poZEdsdmJrRnlaM01wSUdGeklHRnVlVHRjYmlBZ0lDQWdJR2xtSUNnaFFYSnlZWGt1YVhOQmNuSmhlU2hoY21kNktTa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGNJazFwWjNKaGRHbHZiaUJoY21kMWJXVnVkSE1nYlhWemRDQmlaU0JoYmlCaGNuSmhlVndpS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNzSUdOMGVDQjlJRDBnS0Z4dUlDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1c2IyZERkSGdvVzJOdmJuUmxlSFJkTENCUVpYSnphWE4wWlc1alpVdGxlWE11VFVsSFVrRlVTVTlPTENCMGNuVmxLVnh1SUNBZ0lDa3VabTl5S0hSb2FYTXViV2xuY21GMFpTazdYRzVjYmlBZ0lDQmpiMjV6ZENCdGFXZHlZWFJwYjI1eklEMGdkR2hwY3k1blpYUlNaV2RwYzNSbGNtVmtUV2xuY21GMGFXOXVjeWdwTzF4dVhHNGdJQ0FnWTI5dWMzUWdiV2xuY21GMGFXOXVUV1YwWVNBOUlHMXBaM0poZEdsdmJuTXVabWx1WkNnb2JTa2dQVDRnYlM1eVpXWmxjbVZ1WTJVZ1BUMDlJSEpsWm1WeVpXNWpaU2s3WEc1Y2JpQWdJQ0JwWmlBb0lXMXBaM0poZEdsdmJrMWxkR0VwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLR0JOYVdkeVlYUnBiMjRnSkh0eVpXWmxjbVZ1WTJWOUlHNXZkQ0JtYjNWdVpHQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeHZaeTUyWlhKaWIzTmxLR0J0YVdkeVlYUnBiMjRnSkh0eVpXWmxjbVZ1WTJWOUlHWnZkVzVrWUNrN1hHNGdJQ0FnWTI5dWMzUWdUV2xuY21GMGFXOXVRMnhoYzNNNklFTnZibk4wY25WamRHOXlQRTFwWjNKaGRHbHZianhoYm5rc0lHRnVlVDQrSUQxY2JpQWdJQ0FnSUcxcFozSmhkR2x2YmsxbGRHRXVZMnhoYzNNN1hHNGdJQ0FnWTI5dWMzUWdiU0E5SUc1bGR5Qk5hV2R5WVhScGIyNURiR0Z6Y3lncE8xeHVJQ0FnSUM4dklFWnZjaUJHWVdKeWFXTXNJSFZ6WlNCMGFHVWdZMjl1ZEdWNGRDQmhjeUIwYUdVZ2NYVmxjbmtnY25WdWJtVnlYRzRnSUNBZ1kyOXVjM1FnY1hJNklHRnVlU0E5SUdOMGVEdGNiaUFnSUNCamIyNXpkQ0JqZEhoQmNtZHpJRDBnV3k0dUxtRnlaM29zSUdOMGVGMGdZWE1nV3k0dUxtRnVlVnRkTENCMGVYQmxiMllnWTNSNFhUdGNibHh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0JzYjJjdWRtVnlZbTl6WlNoZ2JXbG5jbUYwYVc5dUlDUjdjbVZtWlhKbGJtTmxmU0IxY0dBcE8xeHVJQ0FnSUNBZ1lYZGhhWFFnYlM1MWNDaHhjaXdnZEdocGN5NWhaR0Z3ZEdWeUxDQXVMaTVqZEhoQmNtZHpLVHRjYmlBZ0lDQjlJR05oZEdOb0lDaGxPaUIxYm10dWIzZHVLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnVFdsbmNtRjBhVzl1UlhKeWIzSW9YRzRnSUNBZ0lDQWdJR0JtWVdsc1pXUWdkRzhnYVc1cGRHbGhiR2w2WlNCdGFXZHlZWFJwYjI0Z0pIdHRMbkpsWm1WeVpXNWpaWDA2SUNSN1pYMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdiRzluTG5abGNtSnZjMlVvWUcxcFozSmhkR2x2YmlBa2UzSmxabVZ5Wlc1alpYMGdiV2xuY21GMFpXQXBPMXh1SUNBZ0lDQWdZWGRoYVhRZ2JTNXRhV2R5WVhSbEtIRnlMQ0IwYUdsekxtRmtZWEIwWlhJc0lDNHVMbU4wZUVGeVozTXBPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVTZJSFZ1YTI1dmQyNHBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJOYVdkeVlYUnBiMjVGY25KdmNpaGdabUZwYkdWa0lIUnZJRzFwWjNKaGRHVWdKSHR0TG5KbFptVnlaVzVqWlgwNklDUjdaWDFnS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUd4dlp5NTJaWEppYjNObEtHQnRhV2R5WVhScGIyNGdKSHR5WldabGNtVnVZMlY5SUdSdmQyNWdLVHRjYmlBZ0lDQWdJR0YzWVdsMElHMHVaRzkzYmloeGNpd2dkR2hwY3k1aFpHRndkR1Z5TENBdUxpNWpkSGhCY21kektUdGNiaUFnSUNCOUlHTmhkR05vSUNobE9pQjFibXR1YjNkdUtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dUV2xuY21GMGFXOXVSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lHQm1ZV2xzWldRZ2RHOGdZMjl1WTJ4MVpHVWdiV2xuY21GMGFXOXVJQ1I3YlM1eVpXWmxjbVZ1WTJWOU9pQWtlMlY5WUZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1oyVjBVbVZuYVhOMFpYSmxaRTFwWjNKaGRHbHZibk1vS1RvZ1FYSnlZWGs4ZTF4dUlDQWdJR05zWVhOek9pQmhibms3WEc0Z0lDQWdjbVZtWlhKbGJtTmxPaUJ6ZEhKcGJtYzdYRzRnSUNBZ1pteGhkbTkxY2pvZ2MzUnlhVzVuTzF4dUlDQjlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2JXbG5jbUYwYVc5dWN6b2dRWEp5WVhrOGUxeHVJQ0FnSUNBZ1kyeGhjM002SUdGdWVUdGNiaUFnSUNBZ0lISmxabVZ5Wlc1alpUb2djM1J5YVc1bk8xeHVJQ0FnSUNBZ1pteGhkbTkxY2pvZ2MzUnlhVzVuTzF4dUlDQWdJSDArSUQwZ1cxMDdYRzVjYmlBZ0lDQmpiMjV6ZENCdGFXZHlZWFJwYjI1TWFYTjBJRDBnVFdWMFlXUmhkR0V1YldsbmNtRjBhVzl1Y3lncE8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmJMQ0JOYVdkeVlYUnBiMjVEYkdGemMxMGdiMllnYldsbmNtRjBhVzl1VEdsemRDa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JXVjBZU0E5SUUxbGRHRmtZWFJoTG1kbGRDaE5hV2R5WVhScGIyNURiR0Z6Y3l3Z1VHVnljMmx6ZEdWdVkyVkxaWGx6TGsxSlIxSkJWRWxQVGlrN1hHNWNiaUFnSUNBZ0lHbG1JQ2doYldWMFlTa2dZMjl1ZEdsdWRXVTdYRzVjYmlBZ0lDQWdJR2xtSUNodFpYUmhMbVpzWVhadmRYSWdJVDA5SUVaaFluSnBZMFpzWVhadmRYSXBJR052Ym5ScGJuVmxPMXh1WEc0Z0lDQWdJQ0J0YVdkeVlYUnBiMjV6TG5CMWMyZ29lMXh1SUNBZ0lDQWdJQ0JqYkdGemN6b2dUV2xuY21GMGFXOXVRMnhoYzNNc1hHNGdJQ0FnSUNBZ0lISmxabVZ5Wlc1alpUb2diV1YwWVM1eVpXWmxjbVZ1WTJVc1hHNGdJQ0FnSUNBZ0lHWnNZWFp2ZFhJNklHMWxkR0V1Wm14aGRtOTFjaXhjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnRhV2R5WVhScGIyNXpPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUdGemVXNWpJR2x1YVhRb1kzUjRPaUJEZEhnZ2ZDQkdZV0p5YVdORGIyNTBjbUZqZEVOdmJuUmxlSFFwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHeHZaeUI5SUQwZ0tGeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1cyTjBlRjBzSUZCbGNuTnBjM1JsYm1ObFMyVjVjeTVKVGtsVVNVRk1TVnBCVkVsUFRpd2dkSEoxWlNsY2JpQWdJQ0FwTG1admNpaDBhR2x6TG1sdWFYUXBPMXh1SUNBZ0lHeHZaeTVwYm1adktHQlNkVzV1YVc1bklHTnZiblJ5WVdOMElDUjdkR2hwY3k1blpYUk9ZVzFsS0NsOUlHbHVhWFJwWVd4cGVtRjBhVzl1TGk0dVlDazdYRzRnSUNBZ2RHaHBjeTVwYm1sMGFXRnNhWHBsWkNBOUlIUnlkV1U3WEc0Z0lDQWdiRzluTG1sdVptOG9ZRU52Ym5SeVlXTjBJR2x1YVhScFlXeHBlbUYwYVc5dUlHTnZiWEJzWlhSbFpDNWdLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJR2hsWVd4MGFHTm9aV05yS0Z4dUlDQWdJR04wZURvZ1EzUjRJSHdnUm1GaWNtbGpRMjl1ZEhKaFkzUkRiMjUwWlhoMFhHNGdJQ2s2SUZCeWIyMXBjMlU4YzNSeWFXNW5JSHdnYUdWaGJIUm9ZMmhsWTJzK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUd4dlp5QjlJRDBnS0dGM1lXbDBJSFJvYVhNdWJHOW5RM1I0S0Z0amRIaGRMQ0JjSW1obFlXeDBhR05vWldOclhDSXNJSFJ5ZFdVcEtTNW1iM0lvWEc0Z0lDQWdJQ0IwYUdsekxtaGxZV3gwYUdOb1pXTnJYRzRnSUNBZ0tUdGNiaUFnSUNCc2IyY3VhVzVtYnloZ1VuVnVibWx1WnlCSVpXRnNkR2hqYUdWamF6b2dKSHQwYUdsekxtbHVhWFJwWVd4cGVtVmtmUzR1TG1BcE8xeHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0JvWldGc2RHaGphR1ZqYXpvZ2RHaHBjeTVwYm1sMGFXRnNhWHBsWkN4Y2JpQWdJQ0FnSUhabGNuTnBiMjQ2SUZaRlVsTkpUMDRzWEc0Z0lDQWdJQ0J3WVdOcllXZGxPaUJRUVVOTFFVZEZYMDVCVFVVc1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQnNiMmREZEhnOFhHNGdJQ0FnUVZKSFV5QmxlSFJsYm1SeklHRnVlVnRkSUQwZ1lXNTVXMTBzWEc0Z0lDQWdUVVZVU0U5RUlHVjRkR1Z1WkhNZ1RXVjBhRzlrVDNKUGNHVnlZWFJwYjI0Z1BTQk5aWFJvYjJSUGNrOXdaWEpoZEdsdmJpeGNiaUFnUGloY2JpQWdJQ0JoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhSbUZpY21salEyOXVkSEpoWTNSRGIyNTBaWGgwTENCQlVrZFRQaXhjYmlBZ0lDQnZjR1Z5WVhScGIyNDZJRTFGVkVoUFJGeHVJQ0FwT2lCR1lXSnlhV05EYjI1MFpYaDBkV0ZzYVhwbFpFRnlaM004UVZKSFV5d2dUVVZVU0U5RUlHVjRkR1Z1WkhNZ2MzUnlhVzVuSUQ4Z2RISjFaU0E2SUdaaGJITmxQanRjYmlBZ2NISnZkR1ZqZEdWa0lHeHZaME4wZUR4Y2JpQWdJQ0JCVWtkVElHVjRkR1Z1WkhNZ1lXNTVXMTBnUFNCaGJubGJYU3hjYmlBZ0lDQk5SVlJJVDBRZ1pYaDBaVzVrY3lCTlpYUm9iMlJQY2s5d1pYSmhkR2x2YmlBOUlFMWxkR2h2WkU5eVQzQmxjbUYwYVc5dUxGeHVJQ0ErS0Z4dUlDQWdJR0Z5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eEdZV0p5YVdORGIyNTBjbUZqZEVOdmJuUmxlSFFzSUVGU1IxTStMRnh1SUNBZ0lHOXdaWEpoZEdsdmJqb2dUVVZVU0U5RUxGeHVJQ0FnSUdGc2JHOTNRM0psWVhSbE9pQm1ZV3h6WlZ4dUlDQXBPaUJHWVdKeWFXTkRiMjUwWlhoMGRXRnNhWHBsWkVGeVozTThRVkpIVXl3Z1RVVlVTRTlFSUdWNGRHVnVaSE1nYzNSeWFXNW5JRDhnZEhKMVpTQTZJR1poYkhObFBqdGNiaUFnY0hKdmRHVmpkR1ZrSUd4dlowTjBlRHhjYmlBZ0lDQkJVa2RUSUdWNGRHVnVaSE1nWVc1NVcxMGdQU0JoYm5sYlhTeGNiaUFnSUNCTlJWUklUMFFnWlhoMFpXNWtjeUJOWlhSb2IyUlBjazl3WlhKaGRHbHZiaUE5SUUxbGRHaHZaRTl5VDNCbGNtRjBhVzl1TEZ4dUlDQStLRnh1SUNBZ0lHRnlaM002SUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5Wnp4R1lXSnlhV05EYjI1MGNtRmpkRU52Ym5SbGVIUXNJRUZTUjFNK0xGeHVJQ0FnSUc5d1pYSmhkR2x2YmpvZ1RVVlVTRTlFTEZ4dUlDQWdJR0ZzYkc5M1EzSmxZWFJsT2lCMGNuVmxYRzRnSUNrNklGQnliMjFwYzJVOFhHNGdJQ0FnUm1GaWNtbGpRMjl1ZEdWNGRIVmhiR2w2WldSQmNtZHpQRUZTUjFNc0lFMUZWRWhQUkNCbGVIUmxibVJ6SUhOMGNtbHVaeUEvSUhSeWRXVWdPaUJtWVd4elpUNWNiaUFnUGp0Y2JpQWdjSEp2ZEdWamRHVmtJR3h2WjBOMGVEeGNiaUFnSUNCQlVrZFRJR1Y0ZEdWdVpITWdZVzU1VzEwZ1BTQmhibmxiWFN4Y2JpQWdJQ0JOUlZSSVQwUWdaWGgwWlc1a2N5Qk5aWFJvYjJSUGNrOXdaWEpoZEdsdmJpQTlJRTFsZEdodlpFOXlUM0JsY21GMGFXOXVMRnh1SUNBK0tGeHVJQ0FnSUdGeVozTTZJRTFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaenhHWVdKeWFXTkRiMjUwY21GamRFTnZiblJsZUhRc0lFRlNSMU0rTEZ4dUlDQWdJRzl3WlhKaGRHbHZiam9nVFVWVVNFOUVMRnh1SUNBZ0lHRnNiRzkzUTNKbFlYUmxPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVmNiaUFnS1RwY2JpQWdJQ0I4SUZCeWIyMXBjMlU4WEc0Z0lDQWdJQ0FnSUVaaFluSnBZME52Ym5SbGVIUjFZV3hwZW1Wa1FYSm5jenhCVWtkVExDQk5SVlJJVDBRZ1pYaDBaVzVrY3lCemRISnBibWNnUHlCMGNuVmxJRG9nWm1Gc2MyVStYRzRnSUNBZ0lDQStYRzRnSUNBZ2ZDQkdZV0p5YVdORGIyNTBaWGgwZFdGc2FYcGxaRUZ5WjNNOFFWSkhVeXdnVFVWVVNFOUVJR1Y0ZEdWdVpITWdjM1J5YVc1bklEOGdkSEoxWlNBNklHWmhiSE5sUGlCN1hHNGdJQ0FnWTI5dWMzUWdZM1I0SUQwZ1lYSm5jeTV3YjNBb0tUdGNiaUFnSUNCcFppQW9JV04wZUNCOGZDQWhZM1I0TG5OMGRXSXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJOYVhOemFXNW5RMjl1ZEdWNGRFVnljbTl5S0dCT2J5QjJZV3hwWkNCamIyNTBaWGgwSUhCeWIzWnBaR1ZrTGk0dVlDazdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJR052Ym5SbGVIUjFZV3hwZW1Wa0lEMGdkR2hwY3k1aFpHRndkR1Z5VzF3aWJHOW5RM1I0WENKZEtGeHVJQ0FnSUNBZ1czVnVaR1ZtYVc1bFpDd2dMaTR1WVhKbmMxMGdZWE1nWVc1NUxGeHVJQ0FnSUNBZ2IzQmxjbUYwYVc5dUxGeHVJQ0FnSUNBZ1lXeHNiM2REY21WaGRHVWdZWE1nWVc1NUxGeHVJQ0FnSUNBZ1kzUjRYRzRnSUNBZ0tTQmhjMXh1SUNBZ0lDQWdmQ0JHWVdKeWFXTkRiMjUwWlhoMGRXRnNhWHBsWkVGeVozTThRVkpIVXl3Z1RVVlVTRTlFSUdWNGRHVnVaSE1nYzNSeWFXNW5JRDhnZEhKMVpTQTZJR1poYkhObFBseHVJQ0FnSUNBZ2ZDQlFjbTl0YVhObFBGeHVJQ0FnSUNBZ0lDQWdJRVpoWW5KcFkwTnZiblJsZUhSMVlXeHBlbVZrUVhKbmN6eEJVa2RUTENCTlJWUklUMFFnWlhoMFpXNWtjeUJ6ZEhKcGJtY2dQeUIwY25WbElEb2dabUZzYzJVK1hHNGdJQ0FnSUNBZ0lENDdYRzRnSUNBZ1puVnVZM1JwYjI0Z2MzRjFZWE5vUVhKbmN5aGpkSGc2SUVaaFluSnBZME52Ym5SbGVIUjFZV3hwZW1Wa1FYSm5jeWtnZTF4dUlDQWdJQ0FnWTNSNExtTjBlRUZ5WjNNdWMyaHBablFvS1RzZ0x5OGdjbVZ0YjNabGN5QmhaR1JsWkNCdGIyUmxiQ0IwYnlCaGNtZHpYRzRnSUNBZ0lDQnlaWFIxY200Z1kzUjRJR0Z6SUdGdWVUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JU2hqYjI1MFpYaDBkV0ZzYVhwbFpDQnBibk4wWVc1alpXOW1JRkJ5YjIxcGMyVXBLU0J5WlhSMWNtNGdjM0YxWVhOb1FYSm5jeWhqYjI1MFpYaDBkV0ZzYVhwbFpDazdYRzRnSUNBZ2NtVjBkWEp1SUdOdmJuUmxlSFIxWVd4cGVtVmtMblJvWlc0b2MzRjFZWE5vUVhKbmN5azdYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==