@hyperlane-xyz/sdk 22.0.0 → 24.0.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 (325) hide show
  1. package/dist/block-explorer/utils.d.ts.map +1 -1
  2. package/dist/block-explorer/utils.js +1 -0
  3. package/dist/block-explorer/utils.js.map +1 -1
  4. package/dist/consts/igp.d.ts +1 -0
  5. package/dist/consts/igp.d.ts.map +1 -1
  6. package/dist/consts/igp.js +13 -3
  7. package/dist/consts/igp.js.map +1 -1
  8. package/dist/consts/multisigIsm.d.ts.map +1 -1
  9. package/dist/consts/multisigIsm.js +23 -148
  10. package/dist/consts/multisigIsm.js.map +1 -1
  11. package/dist/contracts/contracts.d.ts.map +1 -1
  12. package/dist/contracts/contracts.js +2 -0
  13. package/dist/contracts/contracts.js.map +1 -1
  14. package/dist/core/HyperlaneCore.d.ts +24 -0
  15. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  16. package/dist/core/HyperlaneCore.js +38 -3
  17. package/dist/core/HyperlaneCore.js.map +1 -1
  18. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  19. package/dist/core/HyperlaneCoreDeployer.js +6 -2
  20. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  21. package/dist/core/MultiProtocolCore.d.ts.map +1 -1
  22. package/dist/core/MultiProtocolCore.js +3 -0
  23. package/dist/core/MultiProtocolCore.js.map +1 -1
  24. package/dist/core/adapters/AleoCoreAdapter.d.ts +23 -0
  25. package/dist/core/adapters/AleoCoreAdapter.d.ts.map +1 -0
  26. package/dist/core/adapters/AleoCoreAdapter.js +40 -0
  27. package/dist/core/adapters/AleoCoreAdapter.js.map +1 -0
  28. package/dist/core/adapters/CosmNativeCoreAdapter.d.ts +1 -0
  29. package/dist/core/adapters/CosmNativeCoreAdapter.d.ts.map +1 -1
  30. package/dist/core/adapters/CosmNativeCoreAdapter.js +7 -0
  31. package/dist/core/adapters/CosmNativeCoreAdapter.js.map +1 -1
  32. package/dist/core/adapters/CosmWasmCoreAdapter.d.ts +1 -0
  33. package/dist/core/adapters/CosmWasmCoreAdapter.d.ts.map +1 -1
  34. package/dist/core/adapters/CosmWasmCoreAdapter.js +3 -0
  35. package/dist/core/adapters/CosmWasmCoreAdapter.js.map +1 -1
  36. package/dist/core/adapters/EvmCoreAdapter.d.ts +1 -0
  37. package/dist/core/adapters/EvmCoreAdapter.d.ts.map +1 -1
  38. package/dist/core/adapters/EvmCoreAdapter.js +4 -0
  39. package/dist/core/adapters/EvmCoreAdapter.js.map +1 -1
  40. package/dist/core/adapters/RadixCoreAdapter.d.ts +1 -0
  41. package/dist/core/adapters/RadixCoreAdapter.d.ts.map +1 -1
  42. package/dist/core/adapters/RadixCoreAdapter.js +7 -0
  43. package/dist/core/adapters/RadixCoreAdapter.js.map +1 -1
  44. package/dist/core/adapters/SealevelCoreAdapter.d.ts +1 -0
  45. package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
  46. package/dist/core/adapters/SealevelCoreAdapter.js +7 -0
  47. package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
  48. package/dist/core/adapters/StarknetCoreAdapter.d.ts +1 -0
  49. package/dist/core/adapters/StarknetCoreAdapter.d.ts.map +1 -1
  50. package/dist/core/adapters/StarknetCoreAdapter.js +5 -0
  51. package/dist/core/adapters/StarknetCoreAdapter.js.map +1 -1
  52. package/dist/core/adapters/types.d.ts +7 -0
  53. package/dist/core/adapters/types.d.ts.map +1 -1
  54. package/dist/core/types.d.ts +154 -38
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/deploy/proxy.d.ts +2 -0
  57. package/dist/deploy/proxy.d.ts.map +1 -1
  58. package/dist/deploy/proxy.js +10 -4
  59. package/dist/deploy/proxy.js.map +1 -1
  60. package/dist/deploy/proxy.test.js +44 -1
  61. package/dist/deploy/proxy.test.js.map +1 -1
  62. package/dist/deploy/verify/BaseContractVerifier.d.ts.map +1 -1
  63. package/dist/deploy/verify/BaseContractVerifier.js +2 -1
  64. package/dist/deploy/verify/BaseContractVerifier.js.map +1 -1
  65. package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts.map +1 -1
  66. package/dist/deploy/verify/PostDeploymentContractVerifier.js +2 -1
  67. package/dist/deploy/verify/PostDeploymentContractVerifier.js.map +1 -1
  68. package/dist/deploy/warp.js +3 -3
  69. package/dist/deploy/warp.js.map +1 -1
  70. package/dist/gas/utils.d.ts.map +1 -1
  71. package/dist/gas/utils.js +11 -8
  72. package/dist/gas/utils.js.map +1 -1
  73. package/dist/hook/EvmHookModule.hardhat-test.js +16 -10
  74. package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
  75. package/dist/hook/EvmHookReader.d.ts.map +1 -1
  76. package/dist/hook/EvmHookReader.js +70 -32
  77. package/dist/hook/EvmHookReader.js.map +1 -1
  78. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  79. package/dist/hook/HyperlaneHookDeployer.js +14 -6
  80. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  81. package/dist/hook/types.d.ts +318 -14
  82. package/dist/hook/types.d.ts.map +1 -1
  83. package/dist/hook/types.js +49 -0
  84. package/dist/hook/types.js.map +1 -1
  85. package/dist/ica/types.d.ts +52 -12
  86. package/dist/ica/types.d.ts.map +1 -1
  87. package/dist/index.d.ts +10 -12
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +9 -10
  90. package/dist/index.js.map +1 -1
  91. package/dist/ism/EvmIsmReader.d.ts.map +1 -1
  92. package/dist/ism/EvmIsmReader.js +9 -9
  93. package/dist/ism/EvmIsmReader.js.map +1 -1
  94. package/dist/ism/EvmIsmReader.test.js +13 -1
  95. package/dist/ism/EvmIsmReader.test.js.map +1 -1
  96. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  97. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts +1 -3
  98. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts.map +1 -1
  99. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +6 -96
  100. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  101. package/dist/ism/HyperlaneIsmFactory.js +2 -0
  102. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  103. package/dist/ism/multisig.js +2 -2
  104. package/dist/ism/multisig.js.map +1 -1
  105. package/dist/ism/types.d.ts +221 -1
  106. package/dist/ism/types.d.ts.map +1 -1
  107. package/dist/ism/types.js +49 -0
  108. package/dist/ism/types.js.map +1 -1
  109. package/dist/ism/utils.d.ts +1 -0
  110. package/dist/ism/utils.d.ts.map +1 -1
  111. package/dist/ism/utils.js +4 -1
  112. package/dist/ism/utils.js.map +1 -1
  113. package/dist/mailbox/serialization.js +2 -2
  114. package/dist/mailbox/serialization.js.map +1 -1
  115. package/dist/metadata/agentConfig.d.ts +132 -132
  116. package/dist/metadata/blockExplorer.d.ts.map +1 -1
  117. package/dist/metadata/blockExplorer.js +2 -0
  118. package/dist/metadata/blockExplorer.js.map +1 -1
  119. package/dist/metadata/chainMetadataTypes.d.ts +73 -71
  120. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  121. package/dist/metadata/chainMetadataTypes.js +6 -8
  122. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  123. package/dist/metadata/customZodTypes.d.ts +23 -0
  124. package/dist/metadata/customZodTypes.d.ts.map +1 -1
  125. package/dist/metadata/customZodTypes.js +33 -0
  126. package/dist/metadata/customZodTypes.js.map +1 -1
  127. package/dist/metadata/forwardCompatibleEnum.test.d.ts +2 -0
  128. package/dist/metadata/forwardCompatibleEnum.test.d.ts.map +1 -0
  129. package/dist/metadata/forwardCompatibleEnum.test.js +299 -0
  130. package/dist/metadata/forwardCompatibleEnum.test.js.map +1 -0
  131. package/dist/metadata/matchingList.d.ts +4 -4
  132. package/dist/metadata/warpRouteConfig.d.ts +10 -8
  133. package/dist/metadata/warpRouteConfig.d.ts.map +1 -1
  134. package/dist/middleware/account/InterchainAccount.d.ts +21 -1
  135. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  136. package/dist/middleware/account/InterchainAccount.js +120 -8
  137. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  138. package/dist/middleware/account/InterchainAccount.test.d.ts +2 -0
  139. package/dist/middleware/account/InterchainAccount.test.d.ts.map +1 -0
  140. package/dist/middleware/account/InterchainAccount.test.js +279 -0
  141. package/dist/middleware/account/InterchainAccount.test.js.map +1 -0
  142. package/dist/middleware/account/types.d.ts +37 -3
  143. package/dist/middleware/account/types.d.ts.map +1 -1
  144. package/dist/middleware/account/types.js +8 -3
  145. package/dist/middleware/account/types.js.map +1 -1
  146. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
  147. package/dist/providers/MultiProtocolProvider.js +4 -1
  148. package/dist/providers/MultiProtocolProvider.js.map +1 -1
  149. package/dist/providers/MultiProvider.d.ts +26 -4
  150. package/dist/providers/MultiProvider.d.ts.map +1 -1
  151. package/dist/providers/MultiProvider.js +59 -5
  152. package/dist/providers/MultiProvider.js.map +1 -1
  153. package/dist/providers/ProviderType.d.ts +9 -3
  154. package/dist/providers/ProviderType.d.ts.map +1 -1
  155. package/dist/providers/ProviderType.js +1 -1
  156. package/dist/providers/ProviderType.js.map +1 -1
  157. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  158. package/dist/providers/SmartProvider/SmartProvider.foundry-test.js +2 -1
  159. package/dist/providers/SmartProvider/SmartProvider.foundry-test.js.map +1 -1
  160. package/dist/providers/SmartProvider/SmartProvider.js +43 -7
  161. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  162. package/dist/providers/SmartProvider/SmartProvider.test.js +77 -28
  163. package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
  164. package/dist/providers/explorerHealthTest.d.ts.map +1 -1
  165. package/dist/providers/explorerHealthTest.js +1 -0
  166. package/dist/providers/explorerHealthTest.js.map +1 -1
  167. package/dist/providers/providerBuilders.d.ts +2 -3
  168. package/dist/providers/providerBuilders.d.ts.map +1 -1
  169. package/dist/providers/providerBuilders.js.map +1 -1
  170. package/dist/providers/rpcHealthTest.d.ts.map +1 -1
  171. package/dist/providers/rpcHealthTest.js +6 -2
  172. package/dist/providers/rpcHealthTest.js.map +1 -1
  173. package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -1
  174. package/dist/providers/transactions/submitter/IcaTxSubmitter.js +4 -1
  175. package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -1
  176. package/dist/router/types.d.ts +78 -18
  177. package/dist/router/types.d.ts.map +1 -1
  178. package/dist/test/testUtils.d.ts +10 -3
  179. package/dist/test/testUtils.d.ts.map +1 -1
  180. package/dist/test/testUtils.js +100 -3
  181. package/dist/test/testUtils.js.map +1 -1
  182. package/dist/token/{EvmERC20WarpModule.d.ts → EvmWarpModule.d.ts} +5 -5
  183. package/dist/token/EvmWarpModule.d.ts.map +1 -0
  184. package/dist/token/EvmWarpModule.hardhat-test.d.ts +2 -0
  185. package/dist/token/EvmWarpModule.hardhat-test.d.ts.map +1 -0
  186. package/dist/token/{EvmERC20WarpModule.hardhat-test.js → EvmWarpModule.hardhat-test.js} +45 -45
  187. package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -0
  188. package/dist/token/{EvmERC20WarpModule.js → EvmWarpModule.js} +14 -11
  189. package/dist/token/EvmWarpModule.js.map +1 -0
  190. package/dist/token/{EvmERC20WarpRouteReader.d.ts → EvmWarpRouteReader.d.ts} +5 -5
  191. package/dist/token/EvmWarpRouteReader.d.ts.map +1 -0
  192. package/dist/token/EvmWarpRouteReader.hardhat-test.d.ts +2 -0
  193. package/dist/token/EvmWarpRouteReader.hardhat-test.d.ts.map +1 -0
  194. package/dist/token/{EvmERC20WarpRouteReader.hardhat-test.js → EvmWarpRouteReader.hardhat-test.js} +4 -4
  195. package/dist/token/EvmWarpRouteReader.hardhat-test.js.map +1 -0
  196. package/dist/token/{EvmERC20WarpRouteReader.js → EvmWarpRouteReader.js} +7 -6
  197. package/dist/token/EvmWarpRouteReader.js.map +1 -0
  198. package/dist/token/Token.d.ts.map +1 -1
  199. package/dist/token/Token.js +26 -2
  200. package/dist/token/Token.js.map +1 -1
  201. package/dist/token/TokenStandard.d.ts +6 -6
  202. package/dist/token/TokenStandard.d.ts.map +1 -1
  203. package/dist/token/TokenStandard.js +1 -0
  204. package/dist/token/TokenStandard.js.map +1 -1
  205. package/dist/token/adapters/AleoTokenAdapter.d.ts +60 -0
  206. package/dist/token/adapters/AleoTokenAdapter.d.ts.map +1 -0
  207. package/dist/token/adapters/AleoTokenAdapter.js +190 -0
  208. package/dist/token/adapters/AleoTokenAdapter.js.map +1 -0
  209. package/dist/token/adapters/EvmTokenAdapter.d.ts +26 -9
  210. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  211. package/dist/token/adapters/EvmTokenAdapter.js +36 -31
  212. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  213. package/dist/token/adapters/ITokenAdapter.d.ts +5 -2
  214. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  215. package/dist/token/adapters/utils.d.ts +7 -0
  216. package/dist/token/adapters/utils.d.ts.map +1 -0
  217. package/dist/token/adapters/utils.js +4 -0
  218. package/dist/token/adapters/utils.js.map +1 -0
  219. package/dist/token/checker.d.ts.map +1 -1
  220. package/dist/token/checker.js +1 -2
  221. package/dist/token/checker.js.map +1 -1
  222. package/dist/token/config.d.ts +3 -0
  223. package/dist/token/config.d.ts.map +1 -1
  224. package/dist/token/config.js +2 -0
  225. package/dist/token/config.js.map +1 -1
  226. package/dist/token/configUtils.d.ts.map +1 -1
  227. package/dist/token/configUtils.js +10 -2
  228. package/dist/token/configUtils.js.map +1 -1
  229. package/dist/token/contracts.d.ts.map +1 -1
  230. package/dist/token/contracts.js.map +1 -1
  231. package/dist/token/deploy.d.ts +2 -2
  232. package/dist/token/deploy.d.ts.map +1 -1
  233. package/dist/token/deploy.hardhat-test.js +4 -4
  234. package/dist/token/deploy.hardhat-test.js.map +1 -1
  235. package/dist/token/deploy.js.map +1 -1
  236. package/dist/token/nativeTokenMetadata.d.ts +2 -2
  237. package/dist/token/nativeTokenMetadata.d.ts.map +1 -1
  238. package/dist/token/nativeTokenMetadata.js.map +1 -1
  239. package/dist/token/types.d.ts +2389 -132
  240. package/dist/token/types.d.ts.map +1 -1
  241. package/dist/token/types.js +24 -6
  242. package/dist/token/types.js.map +1 -1
  243. package/dist/utils/gas.d.ts +29 -0
  244. package/dist/utils/gas.d.ts.map +1 -0
  245. package/dist/utils/gas.js +34 -0
  246. package/dist/utils/gas.js.map +1 -0
  247. package/package.json +11 -11
  248. package/dist/core/HyperlaneRelayer.d.ts +0 -600
  249. package/dist/core/HyperlaneRelayer.d.ts.map +0 -1
  250. package/dist/core/HyperlaneRelayer.js +0 -257
  251. package/dist/core/HyperlaneRelayer.js.map +0 -1
  252. package/dist/ism/metadata/aggregation.d.ts +0 -23
  253. package/dist/ism/metadata/aggregation.d.ts.map +0 -1
  254. package/dist/ism/metadata/aggregation.js +0 -92
  255. package/dist/ism/metadata/aggregation.js.map +0 -1
  256. package/dist/ism/metadata/aggregation.test.d.ts +0 -2
  257. package/dist/ism/metadata/aggregation.test.d.ts.map +0 -1
  258. package/dist/ism/metadata/aggregation.test.js +0 -37
  259. package/dist/ism/metadata/aggregation.test.js.map +0 -1
  260. package/dist/ism/metadata/arbL2ToL1.d.ts +0 -25
  261. package/dist/ism/metadata/arbL2ToL1.d.ts.map +0 -1
  262. package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts +0 -2
  263. package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts.map +0 -1
  264. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -167
  265. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +0 -1
  266. package/dist/ism/metadata/arbL2ToL1.js +0 -133
  267. package/dist/ism/metadata/arbL2ToL1.js.map +0 -1
  268. package/dist/ism/metadata/builder.d.ts +0 -23
  269. package/dist/ism/metadata/builder.d.ts.map +0 -1
  270. package/dist/ism/metadata/builder.hardhat-test.d.ts +0 -2
  271. package/dist/ism/metadata/builder.hardhat-test.d.ts.map +0 -1
  272. package/dist/ism/metadata/builder.hardhat-test.js +0 -137
  273. package/dist/ism/metadata/builder.hardhat-test.js.map +0 -1
  274. package/dist/ism/metadata/builder.js +0 -87
  275. package/dist/ism/metadata/builder.js.map +0 -1
  276. package/dist/ism/metadata/ccipread.d.ts +0 -12
  277. package/dist/ism/metadata/ccipread.d.ts.map +0 -1
  278. package/dist/ism/metadata/ccipread.hardhat-test.d.ts +0 -2
  279. package/dist/ism/metadata/ccipread.hardhat-test.d.ts.map +0 -1
  280. package/dist/ism/metadata/ccipread.hardhat-test.js +0 -98
  281. package/dist/ism/metadata/ccipread.hardhat-test.js.map +0 -1
  282. package/dist/ism/metadata/ccipread.js +0 -73
  283. package/dist/ism/metadata/ccipread.js.map +0 -1
  284. package/dist/ism/metadata/decode.d.ts +0 -3
  285. package/dist/ism/metadata/decode.d.ts.map +0 -1
  286. package/dist/ism/metadata/decode.js +0 -34
  287. package/dist/ism/metadata/decode.js.map +0 -1
  288. package/dist/ism/metadata/multisig.d.ts +0 -57
  289. package/dist/ism/metadata/multisig.d.ts.map +0 -1
  290. package/dist/ism/metadata/multisig.js +0 -186
  291. package/dist/ism/metadata/multisig.js.map +0 -1
  292. package/dist/ism/metadata/multisig.test.d.ts +0 -2
  293. package/dist/ism/metadata/multisig.test.d.ts.map +0 -1
  294. package/dist/ism/metadata/multisig.test.js +0 -56
  295. package/dist/ism/metadata/multisig.test.js.map +0 -1
  296. package/dist/ism/metadata/null.d.ts +0 -15
  297. package/dist/ism/metadata/null.d.ts.map +0 -1
  298. package/dist/ism/metadata/null.js +0 -20
  299. package/dist/ism/metadata/null.js.map +0 -1
  300. package/dist/ism/metadata/routing.d.ts +0 -22
  301. package/dist/ism/metadata/routing.d.ts.map +0 -1
  302. package/dist/ism/metadata/routing.js +0 -72
  303. package/dist/ism/metadata/routing.js.map +0 -1
  304. package/dist/ism/metadata/types.d.ts +0 -20
  305. package/dist/ism/metadata/types.d.ts.map +0 -1
  306. package/dist/ism/metadata/types.js +0 -2
  307. package/dist/ism/metadata/types.js.map +0 -1
  308. package/dist/ism/metadata/types.test.d.ts +0 -5
  309. package/dist/ism/metadata/types.test.d.ts.map +0 -1
  310. package/dist/ism/metadata/types.test.js +0 -2
  311. package/dist/ism/metadata/types.test.js.map +0 -1
  312. package/dist/token/EvmERC20WarpModule.d.ts.map +0 -1
  313. package/dist/token/EvmERC20WarpModule.hardhat-test.d.ts +0 -2
  314. package/dist/token/EvmERC20WarpModule.hardhat-test.d.ts.map +0 -1
  315. package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +0 -1
  316. package/dist/token/EvmERC20WarpModule.js.map +0 -1
  317. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +0 -1
  318. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.d.ts +0 -2
  319. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.d.ts.map +0 -1
  320. package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js.map +0 -1
  321. package/dist/token/EvmERC20WarpRouteReader.js.map +0 -1
  322. package/dist/utils/fetch.d.ts +0 -2
  323. package/dist/utils/fetch.d.ts.map +0 -1
  324. package/dist/utils/fetch.js +0 -12
  325. package/dist/utils/fetch.js.map +0 -1
@@ -13,7 +13,7 @@ import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js';
13
13
  import { MultiProvider } from '../providers/MultiProvider.js';
14
14
  import { randomAddress } from '../test/testUtils.js';
15
15
  import { normalizeConfig } from '../utils/ism.js';
16
- import { EvmERC20WarpModule } from './EvmERC20WarpModule.js';
16
+ import { EvmWarpModule } from './EvmWarpModule.js';
17
17
  import { TokenType, isMovableCollateralTokenType, } from './config.js';
18
18
  import { HypTokenRouterConfigSchema, derivedHookAddress, isEverclearTokenBridgeConfig, isMovableCollateralTokenConfig, } from './types.js';
19
19
  chai.use(chaiAsPromised);
@@ -27,7 +27,7 @@ const randomRemoteRouters = (n) => {
27
27
  }
28
28
  return routers;
29
29
  };
30
- describe('EvmERC20WarpHyperlaneModule', async () => {
30
+ describe('EvmWarpModule', async () => {
31
31
  const TOKEN_NAME = 'fake';
32
32
  const TOKEN_SUPPLY = '100000000000000000000';
33
33
  const TOKEN_DECIMALS = 18;
@@ -156,7 +156,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
156
156
  token: token.address,
157
157
  };
158
158
  // Deploy using WarpModule
159
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
159
+ const evmERC20WarpModule = await EvmWarpModule.create({
160
160
  chain,
161
161
  config,
162
162
  multiProvider,
@@ -174,7 +174,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
174
174
  ...baseConfig,
175
175
  };
176
176
  // Deploy using WarpModule
177
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
177
+ const evmERC20WarpModule = await EvmWarpModule.create({
178
178
  chain,
179
179
  config,
180
180
  multiProvider,
@@ -200,7 +200,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
200
200
  initialSupply: TOKEN_SUPPLY,
201
201
  };
202
202
  // Deploy using WarpModule
203
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
203
+ const evmERC20WarpModule = await EvmWarpModule.create({
204
204
  chain,
205
205
  config,
206
206
  multiProvider,
@@ -224,7 +224,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
224
224
  ...baseConfig,
225
225
  };
226
226
  // Deploy using WarpModule
227
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
227
+ const evmERC20WarpModule = await EvmWarpModule.create({
228
228
  chain,
229
229
  config,
230
230
  multiProvider,
@@ -246,7 +246,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
246
246
  remoteRouters: randomRemoteRouters(numOfRouters),
247
247
  };
248
248
  // Deploy using WarpModule
249
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
249
+ const evmERC20WarpModule = await EvmWarpModule.create({
250
250
  chain,
251
251
  config,
252
252
  multiProvider,
@@ -260,7 +260,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
260
260
  const rebalancers = new Set([randomAddress(), randomAddress()]);
261
261
  const expectedRebalancers = Array.from(rebalancers);
262
262
  const config = deepCopy(getMovableTokenConfig(expectedRebalancers)[tokenType]);
263
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
263
+ const evmERC20WarpModule = await EvmWarpModule.create({
264
264
  chain,
265
265
  config,
266
266
  multiProvider,
@@ -273,7 +273,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
273
273
  it(`should create ${tokenType} token`, async () => {
274
274
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
275
275
  // Deploy using WarpModule
276
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
276
+ const evmERC20WarpModule = await EvmWarpModule.create({
277
277
  chain,
278
278
  config,
279
279
  multiProvider,
@@ -316,7 +316,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
316
316
  },
317
317
  };
318
318
  // Deploy using WarpModule
319
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
319
+ const evmERC20WarpModule = await EvmWarpModule.create({
320
320
  chain,
321
321
  config: updatedConfig,
322
322
  multiProvider,
@@ -329,7 +329,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
329
329
  expect(currentConfig.outputAssets).to.deep.equal(updatedConfig.outputAssets);
330
330
  });
331
331
  }
332
- describe(EvmERC20WarpModule.prototype.update.name, async () => {
332
+ describe(EvmWarpModule.prototype.update.name, async () => {
333
333
  const owner = randomAddress();
334
334
  const ismConfigToUpdate = [
335
335
  {
@@ -376,7 +376,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
376
376
  interchainSecurityModule: ismAddress,
377
377
  };
378
378
  // Deploy using WarpModule
379
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
379
+ const evmERC20WarpModule = await EvmWarpModule.create({
380
380
  chain,
381
381
  config,
382
382
  multiProvider,
@@ -399,7 +399,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
399
399
  interchainSecurityModule: ismAddress,
400
400
  };
401
401
  // Deploy using WarpModule
402
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
402
+ const evmERC20WarpModule = await EvmWarpModule.create({
403
403
  chain,
404
404
  config,
405
405
  multiProvider,
@@ -429,7 +429,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
429
429
  type: TokenType.native,
430
430
  };
431
431
  // Deploy using WarpModule
432
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
432
+ const evmERC20WarpModule = await EvmWarpModule.create({
433
433
  chain,
434
434
  config,
435
435
  multiProvider,
@@ -452,7 +452,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
452
452
  type: TokenType.native,
453
453
  };
454
454
  // Deploy using WarpModule
455
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
455
+ const evmERC20WarpModule = await EvmWarpModule.create({
456
456
  chain,
457
457
  config,
458
458
  multiProvider,
@@ -474,7 +474,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
474
474
  type: TokenType.native,
475
475
  };
476
476
  // Deploy using WarpModule
477
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
477
+ const evmERC20WarpModule = await EvmWarpModule.create({
478
478
  chain,
479
479
  config,
480
480
  multiProvider,
@@ -511,7 +511,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
511
511
  type: TokenType.native,
512
512
  interchainSecurityModule: deployedIsm,
513
513
  };
514
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
514
+ const evmERC20WarpModule = await EvmWarpModule.create({
515
515
  chain,
516
516
  config,
517
517
  multiProvider,
@@ -539,7 +539,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
539
539
  ismFactoryAddresses,
540
540
  };
541
541
  // Deploy using WarpModule
542
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
542
+ const evmERC20WarpModule = await EvmWarpModule.create({
543
543
  chain,
544
544
  config: {
545
545
  ...config,
@@ -563,7 +563,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
563
563
  ismFactoryAddresses,
564
564
  };
565
565
  // Deploy using WarpModule
566
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
566
+ const evmERC20WarpModule = await EvmWarpModule.create({
567
567
  chain,
568
568
  config: {
569
569
  ...config,
@@ -593,7 +593,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
593
593
  ismFactoryAddresses,
594
594
  };
595
595
  // Deploy using WarpModule
596
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
596
+ const evmERC20WarpModule = await EvmWarpModule.create({
597
597
  chain,
598
598
  config: {
599
599
  ...config,
@@ -639,7 +639,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
639
639
  ismFactoryAddresses,
640
640
  };
641
641
  const owner = signer.address.toLowerCase();
642
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
642
+ const evmERC20WarpModule = await EvmWarpModule.create({
643
643
  chain,
644
644
  config: {
645
645
  ...config,
@@ -670,7 +670,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
670
670
  type: TokenType.native,
671
671
  };
672
672
  const owner = signer.address.toLowerCase();
673
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
673
+ const evmERC20WarpModule = await EvmWarpModule.create({
674
674
  chain,
675
675
  config: {
676
676
  ...config,
@@ -710,7 +710,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
710
710
  },
711
711
  };
712
712
  // Deploy using WarpModule
713
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
713
+ const evmERC20WarpModule = await EvmWarpModule.create({
714
714
  chain,
715
715
  config: {
716
716
  ...config,
@@ -732,7 +732,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
732
732
  it(`should add a new rebalancer on the deployed token if it is of type "${tokenType}"`, async () => {
733
733
  const initialRebalancer = randomAddress();
734
734
  const config = deepCopy(getMovableTokenConfig([initialRebalancer])[tokenType]);
735
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
735
+ const evmERC20WarpModule = await EvmWarpModule.create({
736
736
  chain,
737
737
  config,
738
738
  multiProvider,
@@ -752,7 +752,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
752
752
  const expectedRebalancers = [rebalancerToKeep];
753
753
  const rebalancers = new Set([rebalancerToKeep, randomAddress()]);
754
754
  const config = deepCopy(getMovableTokenConfig(Array.from(rebalancers))[tokenType]);
755
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
755
+ const evmERC20WarpModule = await EvmWarpModule.create({
756
756
  chain,
757
757
  config,
758
758
  multiProvider,
@@ -769,7 +769,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
769
769
  it(`should not generate rebalancer update transactions if the address is in a different casing when token is of type "${tokenType}"`, async () => {
770
770
  const rebalancerToKeep = randomAddress();
771
771
  const config = deepCopy(getMovableTokenConfig([rebalancerToKeep.toLowerCase()])[tokenType]);
772
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
772
+ const evmERC20WarpModule = await EvmWarpModule.create({
773
773
  chain,
774
774
  config,
775
775
  multiProvider,
@@ -792,7 +792,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
792
792
  },
793
793
  };
794
794
  const allowedBridgeToAdd = normalizeAddressEvm(randomAddress());
795
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
795
+ const evmERC20WarpModule = await EvmWarpModule.create({
796
796
  chain,
797
797
  config,
798
798
  multiProvider,
@@ -836,7 +836,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
836
836
  ],
837
837
  },
838
838
  });
839
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
839
+ const evmERC20WarpModule = await EvmWarpModule.create({
840
840
  chain,
841
841
  config,
842
842
  multiProvider,
@@ -874,7 +874,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
874
874
  ],
875
875
  },
876
876
  });
877
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
877
+ const evmERC20WarpModule = await EvmWarpModule.create({
878
878
  chain,
879
879
  config,
880
880
  multiProvider,
@@ -897,7 +897,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
897
897
  const bridges = [randomAddress(), randomAddress()];
898
898
  const remoteRouter = randomAddress();
899
899
  const config = deepCopy(getMovableTokenConfig()[tokenType]);
900
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
900
+ const evmERC20WarpModule = await EvmWarpModule.create({
901
901
  chain,
902
902
  config: {
903
903
  ...config,
@@ -934,7 +934,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
934
934
  for (const tokenType of everclearTokenBridgeTypes) {
935
935
  it(`should add destination outputAssets if the token is of type ${tokenType}`, async () => {
936
936
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
937
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
937
+ const evmERC20WarpModule = await EvmWarpModule.create({
938
938
  chain,
939
939
  config,
940
940
  multiProvider,
@@ -955,7 +955,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
955
955
  });
956
956
  it(`should overwrite a destination outputAssets if the token is of type ${tokenType} and a destination token already exists for the given destination`, async () => {
957
957
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
958
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
958
+ const evmERC20WarpModule = await EvmWarpModule.create({
959
959
  chain,
960
960
  config: {
961
961
  ...config,
@@ -981,7 +981,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
981
981
  });
982
982
  it(`should remove destination outputAssets if the token is of type ${tokenType} and a config is set`, async () => {
983
983
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
984
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
984
+ const evmERC20WarpModule = await EvmWarpModule.create({
985
985
  chain,
986
986
  config: {
987
987
  ...config,
@@ -1018,7 +1018,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1018
1018
  [domainId]: randomAddress(),
1019
1019
  ...outputAssetsToKeep,
1020
1020
  };
1021
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1021
+ const evmERC20WarpModule = await EvmWarpModule.create({
1022
1022
  chain,
1023
1023
  config: {
1024
1024
  ...config,
@@ -1041,7 +1041,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1041
1041
  });
1042
1042
  it(`should update the fee params if the token is of type ${tokenType}`, async () => {
1043
1043
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
1044
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1044
+ const evmERC20WarpModule = await EvmWarpModule.create({
1045
1045
  chain,
1046
1046
  config,
1047
1047
  multiProvider,
@@ -1067,7 +1067,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1067
1067
  it(`should not generate any update transactions for the fee params if the config did not change and the token is of type ${tokenType}`, async () => {
1068
1068
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
1069
1069
  const expectedEverclearFeeParams = config.everclearFeeParams;
1070
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1070
+ const evmERC20WarpModule = await EvmWarpModule.create({
1071
1071
  chain,
1072
1072
  config,
1073
1073
  multiProvider,
@@ -1081,7 +1081,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1081
1081
  });
1082
1082
  it(`should remove everclear fee params if the token is of type ${tokenType}`, async () => {
1083
1083
  const config = getEverclearTokenBridgeTokenConfig()[tokenType];
1084
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1084
+ const evmERC20WarpModule = await EvmWarpModule.create({
1085
1085
  chain,
1086
1086
  config,
1087
1087
  multiProvider,
@@ -1121,7 +1121,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1121
1121
  },
1122
1122
  ...feeParamsToKeep,
1123
1123
  };
1124
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1124
+ const evmERC20WarpModule = await EvmWarpModule.create({
1125
1125
  chain,
1126
1126
  config: {
1127
1127
  ...config,
@@ -1175,7 +1175,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1175
1175
  signature: '0x30',
1176
1176
  },
1177
1177
  };
1178
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1178
+ const evmERC20WarpModule = await EvmWarpModule.create({
1179
1179
  chain,
1180
1180
  config: {
1181
1181
  ...config,
@@ -1214,7 +1214,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1214
1214
  },
1215
1215
  };
1216
1216
  // Deploy using WarpModule
1217
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1217
+ const evmERC20WarpModule = await EvmWarpModule.create({
1218
1218
  chain,
1219
1219
  config: {
1220
1220
  ...config,
@@ -1255,7 +1255,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1255
1255
  },
1256
1256
  };
1257
1257
  // Deploy using WarpModule
1258
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1258
+ const evmERC20WarpModule = await EvmWarpModule.create({
1259
1259
  chain,
1260
1260
  config: {
1261
1261
  ...config,
@@ -1284,7 +1284,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1284
1284
  type: TokenType.native,
1285
1285
  };
1286
1286
  // Deploy using WarpModule
1287
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1287
+ const evmERC20WarpModule = await EvmWarpModule.create({
1288
1288
  chain,
1289
1289
  config,
1290
1290
  multiProvider,
@@ -1308,7 +1308,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1308
1308
  ...baseConfig,
1309
1309
  type: TokenType.native,
1310
1310
  };
1311
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1311
+ const evmERC20WarpModule = await EvmWarpModule.create({
1312
1312
  chain,
1313
1313
  config,
1314
1314
  multiProvider,
@@ -1338,7 +1338,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1338
1338
  ...baseConfig,
1339
1339
  type: TokenType.native,
1340
1340
  };
1341
- const evmERC20WarpModule = await EvmERC20WarpModule.create({
1341
+ const evmERC20WarpModule = await EvmWarpModule.create({
1342
1342
  chain,
1343
1343
  config,
1344
1344
  multiProvider,
@@ -1370,4 +1370,4 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
1370
1370
  });
1371
1371
  });
1372
1372
  });
1373
- //# sourceMappingURL=EvmERC20WarpModule.hardhat-test.js.map
1373
+ //# sourceMappingURL=EvmWarpModule.hardhat-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvmWarpModule.hardhat-test.js","sourceRoot":"","sources":["../../src/token/EvmWarpModule.hardhat-test.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,GAAG,MAAM,SAAS,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EACL,yBAAyB,EAEzB,kBAAkB,EAElB,oBAAoB,EAEpB,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAElB,sBAAsB,EACtB,gBAAgB,EAEhB,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EAEZ,QAAQ,EAIR,OAAO,EAEP,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,MAAM,EACN,SAAS,GACV,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAGL,SAAS,EACT,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAEpB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAExB,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAE,EAAE;IACxC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,GAAG;YAChB,OAAO,EAAE,aAAa,EAAE;SACzB,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC;IAC1B,MAAM,YAAY,GAAG,uBAAuB,CAAC;IAC7C,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,IAAI,OAAgB,CAAC;IACrB,IAAI,UAAkB,CAAC;IACvB,IAAI,UAA+B,CAAC;IACpC,IAAI,SAAuD,CAAC;IAC5D,IAAI,mBAA8D,CAAC;IACnE,IAAI,YAAgC,CAAC;IACrC,IAAI,YAAkC,CAAC;IACvC,IAAI,KAAkB,CAAC;IACvB,IAAI,KAAgB,CAAC;IACrB,IAAI,QAAmB,CAAC;IACxB,IAAI,iCAAgE,CAAC;IACrE,IAAI,0BAAgD,CAAC;IACrD,IAAI,MAAyB,CAAC;IAC9B,IAAI,aAA4B,CAAC;IACjC,IAAI,OAAoB,CAAC;IACzB,IAAI,eAAuC,CAAC;IAC5C,IAAI,UAAwB,CAAC;IAE7B,KAAK,UAAU,kBAAkB,CAAC,aAAwB;QACxD,MAAM,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,GAA8B;QACnD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,aAAa,GAAG,aAAa,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,IAAI,6BAA6B,CAAC,aAAa,CAAC,CAAC;QAC5E,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,CACzC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACzC,CAAC;QACF,mBAAmB,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,UAAU,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC/D,OAAO,GAAG,MAAM,IAAI,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5E,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1D,YAAY,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAC/B,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,CACf,CAAC;QAEF,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAClC,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,CACf,CAAC;QACF,YAAY,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAEzE,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/D,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAExC,iCAAiC,GAAG,IAAI,6BAA6B,CACnE,MAAM,CACP,CAAC;QACF,0BAA0B;YACxB,MAAM,iCAAiC,CAAC,MAAM,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAC5D,4BAA4B,CACP,CAAC;IAExB,MAAM,yBAAyB,GAAG;QAChC,SAAS,CAAC,YAAY;QACtB,SAAS,CAAC,mBAAmB;KACK,CAAC;IAErC,MAAM,wBAAwB,GAAG,KAAK,EACpC,kBAAiC,EACjC,mBAA6B,EAC7B,EAAE;QACF,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAEtD,IAAI,8BAA8B,CAAC,aAAa,CAAC,EAAE,CAAC;YAClD,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CACnC,aAAa,CAAC,kBAAkB,IAAI,EAAE,CACvC,CAAC;YAEF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACvE,kBAAkB,CAAC,OAAO,CACxB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAClB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CACrE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAC5B,qBAAgC,EAAE,EACc,EAAE;QAClD,OAAO;YACL,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;gBACtB,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,UAAU;gBAC1B,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,kBAAkB;aACnB;YACD,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBAClB,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,kBAAkB;aACnB;YACD,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;gBACxB,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,YAAY;gBAC5B,kBAAkB;aACnB;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,kCAAkC,GAAG,GAGzC,EAAE;QACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEhD,MAAM,kBAAkB,GAAG;YACzB,CAAC,OAAO,CAAC,EAAE;gBACT,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;gBACpB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;gBACpB,SAAS,EAAE,IAAI;aAChB;SACF,CAAC;QAEF,kDAAkD;QAClD,MAAM,aAAa,GAAG;YACpB,CAAC,OAAO,CAAC,EAAE;gBACT,OAAO,EAAE,aAAa,EAAE;aACzB;SACF,CAAC;QAEF,OAAO;YACL,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE;gBAC/B,IAAI,EAAE,SAAS,CAAC,mBAAmB;gBACnC,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,GAAG,UAAU;gBACb,sBAAsB,EAAE,0BAA0B,CAAC,OAAO;gBAC1D,kBAAkB;gBAClB,YAAY,EAAE,EAAE;gBAChB,aAAa;aACd;YACD,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;gBACxB,IAAI,EAAE,SAAS,CAAC,YAAY;gBAC5B,WAAW,EAAE,KAAK,CAAC,OAAO;gBAC1B,GAAG,UAAU;gBACb,sBAAsB,EAAE,0BAA0B,CAAC,OAAO;gBAC1D,kBAAkB;gBAClB,YAAY,EAAE,EAAE;gBAChB,aAAa;aACd;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAyB;YACnC,GAAG,UAAU;YACb,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC;QAEF,0BAA0B;QAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,MAAM;YACN,aAAa;YACb,qBAAqB,EAAE,mBAAmB;SAC3C,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAC9D,MAAM,SAAS,GACb,MAAM,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,MAAM,GAAyB;YACnC,IAAI,EAAE,SAAS,CAAC,eAAe;YAC/B,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,GAAG,UAAU;SACd,CAAC;QAEF,0BAA0B;QAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,MAAM;YACN,aAAa;YACb,qBAAqB,EAAE,mBAAmB;SAC3C,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAC9D,MAAM,SAAS,GACb,MAAM,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAEtD,gCAAgC;QAChC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,OAAO,CACnE,kBAAkB,EAClB,MAAM,CACP,CAAC;QACF,MAAM,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,uBAAuB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAC3D,KAAK,CAAC,OAAO,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAyB;YACnC,GAAG,UAAU;YACb,IAAI,EAAE,SAAS,CAAC,SAAS;YACzB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,cAAc;YACxB,aAAa,EAAE,YAAY;SAC5B,CAAC;QAEF,0BAA0B;QAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,MAAM;YACN,aAAa;YACb,qBAAqB,EAAE,mBAAmB;SAC3C,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAC9D,MAAM,SAAS,GACb,MAAM,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEhD,gCAAgC;QAChC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CACjD,kBAAkB,EAClB,MAAM,CACP,CAAC;QACF,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,GAAG,UAAU;SACU,CAAC;QAE1B,0BAA0B;QAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,MAAM;YACN,aAAa;YACb,qBAAqB,EAAE,mBAAmB;SAC3C,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAC9D,MAAM,SAAS,GACb,MAAM,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE7C,gCAAgC;QAChC,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAC/C,kBAAkB,EAClB,MAAM,CACP,CAAC;QACF,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG;YACb,GAAG,UAAU;YACb,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,aAAa,EAAE,mBAAmB,CAAC,YAAY,CAAC;SACzB,CAAC;QAE1B,0BAA0B;QAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,MAAM;YACN,aAAa;YACb,qBAAqB,EAAE,mBAAmB;SAC3C,CAAC,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE,CAAC;QAC/C,EAAE,CAAC,uEAAuE,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CACrB,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC,CACtD,CAAC;YAEF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,wBAAwB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,yBAAyB,EAAE,CAAC;QAClD,EAAE,CAAC,iBAAiB,SAAS,QAAQ,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;YAE/D,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACxD,MAAM,CAAC,sBAAsB,CAC9B,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACpD,MAAM,CAAC,kBAAkB,CAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;YAChH,MAAM,UAAU,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;YAEnE,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,aAAa,GAAsB;gBACvC,GAAG,UAAU;gBACb,aAAa,EAAE;oBACb,CAAC,SAAS,CAAC,EAAE;wBACX,OAAO,EAAE,aAAa,EAAE;qBACzB;oBACD,CAAC,SAAS,CAAC,EAAE;wBACX,OAAO,EAAE,aAAa,EAAE;qBACzB;iBACF;gBACD,kBAAkB,EAAE;oBAClB,CAAC,SAAS,CAAC,EAAE;wBACX,SAAS,EAAE,MAAM;wBACjB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC;qBACpB;oBACD,CAAC,SAAS,CAAC,EAAE;wBACX,SAAS,EAAE,MAAM;wBACjB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC;qBACpB;iBACF;gBACD,YAAY,EAAE;oBACZ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,aAAa,EAAE,CAAC;oBAC9C,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,aAAa,EAAE,CAAC;iBAC/C;aACF,CAAC;YAEF,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE,aAAa;gBACrB,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACxD,aAAa,CAAC,sBAAsB,CACrC,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACpD,aAAa,CAAC,kBAAkB,CACjC,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC9C,aAAa,CAAC,YAAY,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,MAAM,iBAAiB,GAAgB;YACrC;gBACE,IAAI,EAAE,OAAO,CAAC,eAAe;gBAC7B,OAAO,EAAE,KAAK;aACf;YACD;gBACE,IAAI,EAAE,OAAO,CAAC,gBAAgB;gBAC9B,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,EAAE;aACZ;YACD;gBACE,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;aACd;YACD,MAAM,CAAC,SAAS,CAAC,WAAW;SAC7B,CAAC;QAEF,MAAM,kBAAkB,GAAiB;YACvC;gBACE,IAAI,EAAE,QAAQ,CAAC,YAAY;gBAC3B,WAAW,EAAE,KAAK;gBAClB,KAAK,EAAE,KAAK;gBACZ,cAAc,EAAE,MAAM;gBACtB,WAAW,EAAE,MAAM;aACpB;YACD;gBACE,IAAI,EAAE,QAAQ,CAAC,wBAAwB;gBACvC,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,EAAE;gBACZ,YAAY,EAAE,EAAE;aACjB;YACD;gBACE,IAAI,EAAE,QAAQ,CAAC,WAAW;aAC3B;SACF,CAAC;QAEF,KAAK,MAAM,wBAAwB,IAAI,iBAAiB,EAAE,CAAC;YACzD,EAAE,CAAC,oCAAoC,OAAO,wBAAwB,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE;gBAC5J,MAAM,MAAM,GAAG;oBACb,GAAG,UAAU;oBACb,IAAI,EAAE,SAAS,CAAC,MAAM;oBACtB,wBAAwB,EAAE,UAAU;iBACb,CAAC;gBAE1B,0BAA0B;gBAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAErD,MAAM,cAAc,GAAyB;oBAC3C,GAAG,YAAY;oBACf,wBAAwB;iBACzB,CAAC;gBACF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,eAAe,CACnC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,wBAAwB,CAC3D,CAAC;gBAEF,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,wBAAwB,EAAE,UAAU;aACb,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAErD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;YAC9B,MAAM,wBAAwB,GAAc;gBAC1C,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,KAAK;gBACL,MAAM,EAAE,KAAK;aACd,CAAC;YACF,MAAM,cAAc,GAAyB;gBAC3C,GAAG,YAAY;gBACf,wBAAwB;aACzB,CAAC;YAEF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,eAAe,CACnC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,wBAAwB,CAC3D,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAE9D,8BAA8B;YAC9B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAE5D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACC,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAErD,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAyB;oBAC3C,GAAG,YAAY;oBACf,IAAI;iBACL,CAAC;gBACF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAE/D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACC,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,cAAc,GAAyB;gBAC3C,GAAG,YAAY;gBACf,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAC3B,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,CAC5C;aACF,CAAC;YACF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtD,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CACzC,kBAAkB,CAAC,aAAa,CAAC,EACjC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CACjC,CAAC;YACF,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACC,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,cAAc,GAAyB;gBAC3C,GAAG,YAAY;gBACf,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAC3B,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,wBAAwB,CACzD;aACF,CAAC;YACF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtD,MAAM,CACJ,MAAM,UAAU,CACd,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,EAChC,kBAAkB,CAAC,aAAa,CAAC,CAClC,CACF,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,SAAS,GAAc;gBAC3B,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,KAAK,EAAE,MAAM,CAAC,OAAO;gBACrB,OAAO,EAAE;oBACP,GAAG,EAAE,UAAU;iBAChB;aACF,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;gBACpC,KAAK;gBACL,aAAa;gBACb,MAAM,EAAE,SAAS;gBACjB,qBAAqB,EAAE,mBAAmB;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YAEH,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACxC,0BAA0B;YAC1B,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,wBAAwB,EAAE,WAAW;aACd,CAAC;YAE1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,cAAc,GAAyB;gBAC3C,GAAG,YAAY;gBACf,wBAAwB,EAAE;oBACxB,IAAI,EAAE,OAAO,CAAC,OAAO;oBACrB,KAAK,EAAE,aAAa,EAAE;oBACtB,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;qBAClC;iBACF;aACF,CAAC;YAEF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,eAAe,CACnC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,wBAAwB,CAC3D,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACjC,cAAc,CAAC,wBAAwB,CACxC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,mBAAmB;aACI,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,wBAAwB,EAAE,UAAU;iBACrC;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,OAAO,CACX,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC9B,GAAG,MAAM;gBACT,aAAa,EAAE,mBAAmB,CAAC,YAAY,CAAC;aACjD,CAAC,CACH,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAClE,YAAY,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,mBAAmB;aACI,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,wBAAwB,EAAE,UAAU;iBACrC;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,OAAO,CACX,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC9B,GAAG,MAAM;gBACT,aAAa,EAAE,mBAAmB,CAAC,YAAY,CAAC;aACjD,CAAC,CACH,CAAC;YACF,qCAAqC;YACrC,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,OAAO,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpD,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAE/D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAClE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CACvB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;YAC9G,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,mBAAmB;aACI,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,wBAAwB,EAAE,UAAU;iBACrC;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,OAAO,CACX,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC9B,GAAG,MAAM;gBACT,aAAa;aACd,CAAC,CACH,CAAC;YAEF,IAAI,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAExE,4CAA4C;YAC5C,IAAI,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBACxC,GAAG,MAAM;gBACT,aAAa;aACd,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YAEnB,kEAAkE;YAClE,MAAM,oBAAoB,GAAG;gBAC3B,CAAC,EAAE;oBACD,OAAO,EAAE,aAAa,EAAE;iBACzB;aACF,CAAC;YACF,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBACpC,GAAG,MAAM;gBACT,aAAa,EAAE,oBAAoB;aACpC,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YAEnB,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CACvE,gBAAgB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CACpD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG;gBACb,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,mBAAmB;aACI,CAAC;YAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,wBAAwB,EAAE,UAAU;iBACrC;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1D,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,CACX,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC9B,GAAG,MAAM;gBACT,KAAK,EAAE,QAAQ;aAChB,CAAC,CACH,CAAC;YAEF,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE9C,0BAA0B;YAC1B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC1C,GAAG,MAAM;gBACT,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACvB,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,wBAAwB,EAAE,UAAU;iBACrC;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEtE,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;YACjC,MAAM,qBAAqB,GAAyB;gBAClD,GAAG,MAAM;gBACT,UAAU,EAAE;oBACV,OAAO,EAAE,aAAa,CAAC,UAAW,CAAC,OAAO;oBAC1C,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC;YACF,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAEtE,MAAM,YAAY,GAAyB,eAAe,CACxD,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAChC,CAAC;YACF,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC1D,qGAAqG;YACrG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3C,0BAA0B;YAC1B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,aAAa,EAAE;oBACb,CAAC,MAAM,CAAC,EAAE;wBACR,OAAO,EAAE,aAAa,EAAE;qBACzB;iBACF;aACF,CAAC;YAEF,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;iBACV;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,OAAO,CACX,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC9B,GAAG,MAAM;gBACT,cAAc,EAAE;oBACd,CAAC,MAAM,CAAC,EAAE,MAAM;iBACjB;aACF,CAAC,CACH,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,cAAe,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,aAAa,CAAC,cAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE,CAAC;YAC/C,EAAE,CAAC,uEAAuE,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;gBACjG,MAAM,iBAAiB,GAAG,aAAa,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,QAAQ,CACrB,qBAAqB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CACtD,CAAC;gBACF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,mBAAmB,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC;gBACjE,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,kBAAkB,EAAE,mBAAmB;iBACxC,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,wBAAwB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6EAA6E,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;gBACvG,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC;gBACzC,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAE/C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;gBACjE,MAAM,MAAM,GAAG,QAAQ,CACrB,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAC1D,CAAC;gBACF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,kBAAkB,EAAE,mBAAmB;iBACxC,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,wBAAwB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qHAAqH,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;gBAC/I,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,QAAQ,CACrB,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CACnE,CAAC;gBAEF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,kBAAkB,EAAE,CAAC,gBAAgB,CAAC;iBACvC,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iFAAiF,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;gBAC3G,MAAM,mBAAmB,GAAG,qBAAqB,EAAE,CAAC;gBAEpD,MAAM,MAAM,GAAyB;oBACnC,GAAG,mBAAmB,CAAC,SAAS,CAAC;oBACjC,aAAa,EAAE;wBACb,CAAC,QAAQ,CAAC,EAAE;4BACV,OAAO,EAAE,aAAa,EAAE;yBACzB;qBACF;iBACF,CAAC;gBAEF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC;gBAChE,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CACzC,0BAA0B,CAAC,KAAK,CAAC;oBAC/B,GAAG,MAAM;oBACT,yBAAyB,EAAE;wBACzB,CAAC,QAAQ,CAAC,EAAE;4BACV;gCACE,MAAM,EAAE,kBAAkB;gCAC1B,cAAc,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;6BACnC;yBACF;qBACF;iBACF,CAAC,CACH,CAAC;gBAEF,4DAA4D;gBAC5D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,OAAO,CAChE,kBAAkB,CAAC,SAAS,EAAE,CAAC,kBAAkB,EACjD,MAAM,CACP,CAAC;gBACF,MAAM,KAAK,GACT,MAAM,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAE5C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,CACnD,kBAAkB,CAAC,SAAS,EAAE,CAAC,kBAAkB,EACjD,kBAAkB,CACnB,CAAC;gBACF,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yDAAyD,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;gBACnF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC;oBAC9C,GAAG,qBAAqB,EAAE,CAAC,SAAS,CAAC;oBACrC,aAAa,EAAE;wBACb,CAAC,QAAQ,CAAC,EAAE;4BACV,OAAO,EAAE,aAAa,EAAE;yBACzB;qBACF;oBACD,yBAAyB,EAAE;wBACzB,CAAC,QAAQ,CAAC,EAAE;4BACV;gCACE,MAAM,EAAE,kBAAkB;gCAC1B,cAAc,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;6BACnC;yBACF;qBACF;iBACF,CAAC,CAAC;gBAEH,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CACzC,0BAA0B,CAAC,KAAK,CAAC;oBAC/B,GAAG,MAAM;oBACT,yBAAyB,EAAE;wBACzB,CAAC,QAAQ,CAAC,EAAE,EAAE;qBACf;iBACF,CAAC,CACH,CAAC;gBAEF,4BAA4B;gBAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,OAAO,CAChE,kBAAkB,CAAC,SAAS,EAAE,CAAC,kBAAkB,EACjD,MAAM,CACP,CAAC;gBAEF,MAAM,cAAc,GAClB,MAAM,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC9D,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8IAA8I,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;gBACxK,MAAM,mBAAmB,GAAG,qBAAqB,EAAE,CAAC;gBAEpD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC;oBAC9C,GAAG,mBAAmB,CAAC,SAAS,CAAC;oBACjC,aAAa,EAAE;wBACb,CAAC,QAAQ,CAAC,EAAE;4BACV,OAAO,EAAE,aAAa,EAAE;yBACzB;qBACF;oBACD,yBAAyB,EAAE;wBACzB,CAAC,QAAQ,CAAC,EAAE;4BACV;gCACE,MAAM,EAAE,kBAAkB;gCAC1B,cAAc,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;6BACnC;yBACF;qBACF;iBACF,CAAC,CAAC;gBAEH,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CACzC,0BAA0B,CAAC,KAAK,CAAC;oBAC/B,GAAG,MAAM;oBACT,yBAAyB,EAAE;wBACzB,CAAC,QAAQ,CAAC,EAAE;4BACV;gCACE,MAAM,EAAE,kBAAkB,CAAC,WAAW,EAAE;gCACxC,cAAc,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;6BACnC;yBACF;qBACF;iBACF,CAAC,CACH,CAAC;gBAEF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0EAA0E,SAAS,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBAC7J,MAAM,OAAO,GAAG,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBACnD,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;gBAErC,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,aAAa,EAAE;4BACb,CAAC,QAAQ,CAAC,EAAE;gCACV,OAAO,EAAE,YAAY;6BACtB;yBACF;qBACF;oBACD,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,gBAAgB,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;wBAC1C,GAAG,MAAM;wBACT,yBAAyB,EAAE;4BACzB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;yBACtB;qBACF,CAAC,CAAC;oBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;oBACtD,MAAM,CAAC,8BAA8B,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;oBAE1D,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,CAClC,aAAa,CAAC,yBAAyB,IAAI,EAAE,CAC9C,CAAC;oBACF,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;oBAC9B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;oBAE7D,QAAQ,EAAE,CAAC;gBACb,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,yBAAyB,EAAE,CAAC;YAClD,EAAE,CAAC,+DAA+D,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACxF,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,YAAY,EAAE;wBACZ,CAAC,QAAQ,CAAC,EAAE,WAAW;qBACxB;iBACF,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACnD,gBAAgB,CAAC,WAAW,CAAC,CAC9B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uEAAuE,SAAS,mEAAmE,EAAE,KAAK,IAAI,EAAE;gBACjK,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,YAAY,EAAE;4BACZ,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE;yBAC5B;qBACF;oBACD,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,wBAAwB,GAAG,aAAa,EAAE,CAAC;gBACjD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,YAAY,EAAE;wBACZ,CAAC,QAAQ,CAAC,EAAE,wBAAwB;qBACrC;iBACF,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACnD,gBAAgB,CAAC,wBAAwB,CAAC,CAC3C,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kEAAkE,SAAS,sBAAsB,EAAE,KAAK,IAAI,EAAE;gBAC/G,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,YAAY,EAAE;4BACZ,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE;yBAC5B;qBACF;oBACD,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,YAAY,EAAE,EAAE;iBACjB,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4EAA4E,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACrG,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAC9D,MAAM,oBAAoB,GAAG;oBAC3B,CAAC,QAAQ,CAAC,EAAE;wBACV,OAAO,EAAE,aAAa,EAAE;qBACzB;oBACD,GAAG,mBAAmB;iBACvB,CAAC;gBAEF,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CACtE,aAAa,EAAE,CAChB,CAAC;gBAEF,MAAM,oBAAoB,GAAG,MAAM,CACjC,kBAAkB,EAClB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAClD,CAAC;gBACF,MAAM,sBAAsB,GAAG;oBAC7B,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE;oBAC3B,GAAG,kBAAkB;iBACtB,CAAC;gBACF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,aAAa,EAAE,oBAAoB;wBACnC,YAAY,EAAE,sBAAsB;qBACrC;oBACD,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,aAAa,EAAE,oBAAoB;oBACnC,YAAY,EAAE,kBAAkB;iBACjC,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wDAAwD,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACjF,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,0BAA0B,GAAG;oBACjC,CAAC,QAAQ,CAAC,EAAE;wBACV,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;wBAC9B,SAAS,EAAE,MAAM;qBAClB;iBACF,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,kBAAkB,EAAE,0BAA0B;iBAC/C,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACpD,0BAA0B,CAC3B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wHAAwH,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACjJ,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,0BAA0B,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBAE7D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEpD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAE/B,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACpD,0BAA0B,CAC3B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8DAA8D,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBACvF,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM;oBACN,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,gDAAgD;gBAChD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,kBAAkB,EAAE,EAAE;iBACvB,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oFAAoF,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBAC7G,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAC9D,MAAM,oBAAoB,GAAG;oBAC3B,CAAC,QAAQ,CAAC,EAAE;wBACV,OAAO,EAAE,aAAa,EAAE;qBACzB;oBACD,GAAG,mBAAmB;iBACvB,CAAC;gBAEF,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;oBACpB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;oBACpB,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC,CAAC;gBAEJ,MAAM,gBAAgB,GAAG;oBACvB,CAAC,QAAQ,CAAC,EAAE;wBACV,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;wBACpB,SAAS,EAAE,IAAI;qBAChB;oBACD,GAAG,eAAe;iBACnB,CAAC;gBAEF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,aAAa,EAAE,oBAAoB;wBACnC,kBAAkB,EAAE,gBAAgB;qBACrC;oBACD,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,aAAa,EAAE,oBAAoB;oBACnC,kBAAkB,EAAE,eAAe;iBACpC,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qGAAqG,SAAS,EAAE,EAAE,KAAK,IAAI,EAAE;gBAC9H,MAAM,MAAM,GAAG,kCAAkC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE/D,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACrC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAEzC,MAAM,oBAAoB,GAAG;oBAC3B,CAAC,SAAS,CAAC,EAAE;wBACX,OAAO,EAAE,aAAa,EAAE;qBACzB;oBACD,CAAC,SAAS,CAAC,EAAE;wBACX,OAAO,EAAE,aAAa,EAAE;qBACzB;oBACD,CAAC,SAAS,CAAC,EAAE;wBACX,OAAO,EAAE,aAAa,EAAE;qBACzB;iBACF,CAAC;gBAEF,MAAM,gBAAgB,GAAG;oBACvB,CAAC,SAAS,CAAC,EAAE;wBACX,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;wBACpB,SAAS,EAAE,MAAM;qBAClB;oBACD,CAAC,SAAS,CAAC,EAAE;wBACX,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;wBACpB,SAAS,EAAE,MAAM;qBAClB;oBACD,CAAC,SAAS,CAAC,EAAE;wBACX,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;wBACpB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC;wBACpB,SAAS,EAAE,MAAM;qBAClB;iBACF,CAAC;gBAEF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;oBACpD,KAAK;oBACL,MAAM,EAAE;wBACN,GAAG,MAAM;wBACT,aAAa,EAAE,oBAAoB;wBACnC,kBAAkB,EAAE,gBAAgB;qBACrC;oBACD,aAAa;oBACb,qBAAqB,EAAE,mBAAmB;iBAC3C,CAAC,CAAC;gBAEH,sBAAsB;gBACtB,MAAM,iBAAiB,GAAG;oBACxB,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC;iBACzC,CAAC;gBAEF,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;oBAC1C,GAAG,MAAM;oBACT,aAAa,EAAE,oBAAoB;oBACnC,kBAAkB,EAAE,iBAAiB;iBACtC,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEnB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEtD,MAAM,CACJ,4BAA4B,CAAC,aAAa,CAAC,EAC3C,0BAA0B,SAAS,EAAE,CACtC,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACpD,iBAAiB,CAClB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,UAAU;gBAC1B,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,aAAa,EAAE;oBACb,CAAC,MAAM,CAAC,EAAE;wBACR,OAAO,EAAE,aAAa,EAAE;qBACzB;iBACF;aACF,CAAC;YAEF,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;iBACV;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAE9D,sCAAsC;YACtC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,EAChC,kBAAkB,CACnB,CAAC;YAEF,yFAAyF;YACzF,MAAM,WAAW,GAAG,KAAK;iBACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,CAAC;iBACtD,QAAQ,CAAC,OAAO,CAAC,CAAC;YAErB,6DAA6D;YAC7D,6DAA6D;YAC7D,MAAM,OAAO,CACX,MAAM,kBAAkB,CAAC,MAAM,CAAC;gBAC9B,GAAG,MAAM;gBACT,eAAe,EAAE,yBAAyB;aAC3C,CAAC,CACH,CAAC;YAEF,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtD,SAAS;YACT,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CACvC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,EAChC,kBAAkB,CACnB,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,MAAM,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,UAAU;gBAC1B,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,aAAa,EAAE;oBACb,CAAC,MAAM,CAAC,EAAE;wBACR,OAAO,EAAE,aAAa,EAAE;qBACzB;iBACF;aACF,CAAC;YAEF,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM,EAAE;oBACN,GAAG,MAAM;iBACV;gBACD,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,+BAA+B;YAC/B,MAAM,iBAAiB,GAAG,WAAW,CAAC;YACtC,MAAM,WAAW,GAAG,KAAK;iBACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,CAAC;iBACtD,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAE/B,2BAA2B;YAC3B,MAAM,MAAM,CACV,kBAAkB,CAAC,MAAM,CAAC;gBACxB,GAAG,MAAM;gBACT,eAAe,EAAE,yBAAyB;aAC3C,CAAC,CACH,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAClB,6BAA6B,yBAAyB,0CAA0C,iBAAiB,EAAE,CACpH,CAAC;YAEF,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtD,SAAS;YACT,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACvB,CAAC;YAEF,0BAA0B;YAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAErD,MAAM,cAAc,GAAG,0BAA0B,CAAC,KAAK,CAAC;gBACtD,GAAG,YAAY;gBACf,QAAQ,EAAE;oBACR,IAAI,EAAE,YAAY,CAAC,SAAS;oBAC5B,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,SAAS;iBACtB;aACF,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAC3C,cAAc,CAAC,QAAQ,EAAE,IAAI,CAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;YACpG,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACvB,CAAC;YAEF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG;gBACrB,IAAI,EAAE,YAAY,CAAC,SAAS;gBAC5B,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,SAAS;aACtB,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,cAAc,GAAG,0BAA0B,CAAC,KAAK,CAAC;gBACtD,GAAG,YAAY;gBACf,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACjE,MAAM,0BAA0B,GAAG,YAAY,CAAC;YAChD,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACrD,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAChD,CAAC;YACF,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEnD,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YAExB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClE,MAAM,wBAAwB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACvD,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAChD,CAAC;YACF,MAAM,CACJ,wBAAwB,CAAC,MAAM,EAC/B,sEAAsE,CACvE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAyB;gBACnC,GAAG,UAAU;gBACb,IAAI,EAAE,SAAS,CAAC,MAAM;aACvB,CAAC;YAEF,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;gBACpD,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,qBAAqB,EAAE,mBAAmB;aAC3C,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,cAAc,GAAG,0BAA0B,CAAC,KAAK,CAAC;gBACtD,GAAG,YAAY;gBACf,QAAQ,EAAE;oBACR,IAAI,EAAE,YAAY,CAAC,SAAS;oBAC5B,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,SAAS;iBACtB;aACF,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;YAE/D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,eAAe,GAAG,0BAA0B,CAAC,KAAK,CAAC;gBACvD,GAAG,aAAa;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,YAAY,CAAC,SAAS;oBAC5B,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,UAAU;iBACvB;aACF,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7D,MAAM,0BAA0B,GAAG,YAAY,CAAC;YAChD,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAC3C,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAChD,CAAC;YAEF,MAAM,CACJ,kBAAkB,CAAC,MAAM,EACzB,oEAAoE,CACrE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -15,7 +15,8 @@ import { getEvmHookUpdateTransactions } from '../hook/updates.js';
15
15
  import { EvmIsmModule } from '../ism/EvmIsmModule.js';
16
16
  import { resolveRouterMapConfig } from '../router/types.js';
17
17
  import { extractIsmAndHookFactoryAddresses } from '../utils/ism.js';
18
- import { EvmERC20WarpRouteReader } from './EvmERC20WarpRouteReader.js';
18
+ import { EvmWarpRouteReader } from './EvmWarpRouteReader.js';
19
+ import { TokenType } from './config.js';
19
20
  import { resolveTokenFeeAddress } from './configUtils.js';
20
21
  import { hypERC20contracts } from './contracts.js';
21
22
  import { HypERC20Deployer } from './deploy.js';
@@ -25,12 +26,12 @@ const getAllowedRebalancingBridgesByDomain = (allowedRebalancingBridgesByDomain)
25
26
  return new Set(allowedRebalancingBridges.map((bridgeConfig) => normalizeAddressEvm(bridgeConfig.bridge)));
26
27
  });
27
28
  };
28
- export class EvmERC20WarpModule extends HyperlaneModule {
29
+ export class EvmWarpModule extends HyperlaneModule {
29
30
  multiProvider;
30
31
  ccipContractCache;
31
32
  contractVerifier;
32
33
  logger = rootLogger.child({
33
- module: 'EvmERC20WarpModule',
34
+ module: 'EvmWarpModule',
34
35
  });
35
36
  reader;
36
37
  chainName;
@@ -41,7 +42,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
41
42
  this.multiProvider = multiProvider;
42
43
  this.ccipContractCache = ccipContractCache;
43
44
  this.contractVerifier = contractVerifier;
44
- this.reader = new EvmERC20WarpRouteReader(multiProvider, args.chain);
45
+ this.reader = new EvmWarpRouteReader(multiProvider, args.chain);
45
46
  this.chainName = this.multiProvider.getChainName(args.chain);
46
47
  this.chainId = multiProvider.getEvmChainId(args.chain);
47
48
  this.domainId = multiProvider.getDomainId(args.chain);
@@ -567,8 +568,9 @@ export class EvmERC20WarpModule extends HyperlaneModule {
567
568
  */
568
569
  async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
569
570
  const updateTransactions = [];
571
+ assert(expectedConfig.type !== TokenType.unknown, 'Cannot upgrade warp route with unknown token type');
570
572
  // This should be impossible since we try catch the call to `PACKAGE_VERSION`
571
- // in `EvmERC20WarpRouteReader.fetchPackageVersion`
573
+ // in `EvmWarpRouteReader.fetchPackageVersion`
572
574
  assert(actualConfig.contractVersion, 'Actual contract version is undefined');
573
575
  // Only upgrade if the user specifies a version
574
576
  if (!expectedConfig.contractVersion) {
@@ -589,7 +591,8 @@ export class EvmERC20WarpModule extends HyperlaneModule {
589
591
  this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
590
592
  const deployer = new HypERC20Deployer(this.multiProvider);
591
593
  const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
592
- const implementation = await deployer.deployContractWithName(this.chainName, expectedConfig.type, hypERC20contracts[expectedConfig.type], constructorArgs, undefined, false);
594
+ const tokenType = expectedConfig.type;
595
+ const implementation = await deployer.deployContractWithName(this.chainName, tokenType, hypERC20contracts[tokenType], constructorArgs, undefined, false);
593
596
  const provider = this.multiProvider.getProvider(this.domainId);
594
597
  const proxyAddress = this.args.addresses.deployedTokenRoute;
595
598
  const proxyAdminAddress = await proxyAdmin(provider, proxyAddress);
@@ -615,7 +618,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
615
618
  const chainName = multiProvider.getChainName(chain);
616
619
  const deployer = new HypERC20Deployer(multiProvider);
617
620
  const deployedContracts = await deployer.deployContracts(chainName, config);
618
- const warpModule = new EvmERC20WarpModule(multiProvider, {
621
+ const warpModule = new EvmWarpModule(multiProvider, {
619
622
  addresses: {
620
623
  ...proxyFactoryFactories,
621
624
  deployedTokenRoute: deployedContracts[config.type].address,
@@ -625,14 +628,14 @@ export class EvmERC20WarpModule extends HyperlaneModule {
625
628
  }, ccipContractCache, contractVerifier);
626
629
  const actualConfig = await warpModule.read();
627
630
  if (config.remoteRouters && !isObjEmpty(config.remoteRouters)) {
628
- const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
631
+ const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when EvmWarpModule.create can be used
629
632
  const onlyTxIndex = 0;
630
633
  await multiProvider.sendTransaction(chain, enrollRemoteTxs[onlyTxIndex]);
631
634
  }
632
635
  if (isMovableCollateralTokenConfig(config) &&
633
636
  config.allowedRebalancers &&
634
637
  config.allowedRebalancers.length !== 0) {
635
- const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
638
+ const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when EvmWarpModule.create can be used
636
639
  for (const tx of addRebalancerTxs) {
637
640
  await multiProvider.sendTransaction(chain, tx);
638
641
  }
@@ -640,7 +643,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
640
643
  if (isMovableCollateralTokenConfig(config) &&
641
644
  config.allowedRebalancingBridges &&
642
645
  !isObjEmpty(config.allowedRebalancingBridges)) {
643
- const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
646
+ const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when EvmWarpModule.create can be used
644
647
  for (const tx of addBridgesTxs) {
645
648
  await multiProvider.sendTransaction(chain, tx);
646
649
  }
@@ -659,4 +662,4 @@ export class EvmERC20WarpModule extends HyperlaneModule {
659
662
  return warpModule;
660
663
  }
661
664
  }
662
- //# sourceMappingURL=EvmERC20WarpModule.js.map
665
+ //# sourceMappingURL=EvmWarpModule.js.map