@paraswap/dex-lib 3.11.10 → 3.11.11-stader.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 (252) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/SSPM.json +829 -0
  10. package/build/abi/StaderOracle.json +2170 -0
  11. package/build/abi/{inception/inception-ineth-pool.json → cables/CablesMainnetRFQ.json} +511 -490
  12. package/build/abi/integral/factory.json +333 -0
  13. package/build/abi/integral/oracle.json +501 -0
  14. package/build/abi/integral/pool.json +1041 -0
  15. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  16. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  17. package/build/dex/aave-v1/aave-v1.js +0 -23
  18. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  19. package/build/dex/cables/cables.d.ts +59 -0
  20. package/build/dex/cables/cables.js +614 -0
  21. package/build/dex/cables/cables.js.map +1 -0
  22. package/build/dex/cables/config.d.ts +4 -0
  23. package/build/dex/cables/config.js +15 -0
  24. package/build/dex/cables/config.js.map +1 -0
  25. package/build/dex/cables/constants.d.ts +20 -0
  26. package/build/dex/cables/constants.js +24 -0
  27. package/build/dex/cables/constants.js.map +1 -0
  28. package/build/dex/cables/rate-fetcher.d.ts +34 -0
  29. package/build/dex/cables/rate-fetcher.js +106 -0
  30. package/build/dex/cables/rate-fetcher.js.map +1 -0
  31. package/build/dex/cables/types.d.ts +113 -0
  32. package/build/dex/cables/types.js +19 -0
  33. package/build/dex/cables/types.js.map +1 -0
  34. package/build/dex/cables/validators.d.ts +5 -0
  35. package/build/dex/cables/validators.js +49 -0
  36. package/build/dex/cables/validators.js.map +1 -0
  37. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
  38. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
  39. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
  40. package/build/dex/index.js +2 -0
  41. package/build/dex/index.js.map +1 -1
  42. package/build/dex/integral/config.d.ts +4 -0
  43. package/build/dex/integral/config.js +20 -0
  44. package/build/dex/integral/config.js.map +1 -0
  45. package/build/dex/integral/context.d.ts +40 -0
  46. package/build/dex/integral/context.js +158 -0
  47. package/build/dex/integral/context.js.map +1 -0
  48. package/build/dex/integral/integral-factory.d.ts +24 -0
  49. package/build/dex/integral/integral-factory.js +95 -0
  50. package/build/dex/integral/integral-factory.js.map +1 -0
  51. package/build/dex/integral/integral-pool.d.ts +50 -0
  52. package/build/dex/integral/integral-pool.js +149 -0
  53. package/build/dex/integral/integral-pool.js.map +1 -0
  54. package/build/dex/integral/integral-pricing.d.ts +18 -0
  55. package/build/dex/integral/integral-pricing.js +114 -0
  56. package/build/dex/integral/integral-pricing.js.map +1 -0
  57. package/build/dex/integral/integral-relayer.d.ts +42 -0
  58. package/build/dex/integral/integral-relayer.js +192 -0
  59. package/build/dex/integral/integral-relayer.js.map +1 -0
  60. package/build/dex/integral/integral-token.d.ts +27 -0
  61. package/build/dex/integral/integral-token.js +59 -0
  62. package/build/dex/integral/integral-token.js.map +1 -0
  63. package/build/dex/integral/integral.d.ts +41 -0
  64. package/build/dex/integral/integral.js +376 -0
  65. package/build/dex/integral/integral.js.map +1 -0
  66. package/build/dex/integral/types.d.ts +85 -0
  67. package/build/dex/integral/types.js +9 -0
  68. package/build/dex/integral/types.js.map +1 -0
  69. package/build/dex/integral/utils-e2e.d.ts +9 -0
  70. package/build/dex/integral/utils-e2e.js +131 -0
  71. package/build/dex/integral/utils-e2e.js.map +1 -0
  72. package/build/dex/integral/utils.d.ts +17 -0
  73. package/build/dex/integral/utils.js +94 -0
  74. package/build/dex/integral/utils.js.map +1 -0
  75. package/build/dex/jarvis.d.ts +1 -2
  76. package/build/dex/jarvis.js +0 -58
  77. package/build/dex/jarvis.js.map +1 -1
  78. package/build/dex/platypus/platypus.d.ts +1 -2
  79. package/build/dex/platypus/platypus.js +0 -45
  80. package/build/dex/platypus/platypus.js.map +1 -1
  81. package/build/dex/stable-pool.js +8 -1
  82. package/build/dex/stable-pool.js.map +1 -1
  83. package/build/dex/{usual-m-usd0 → stader}/config.d.ts +1 -1
  84. package/build/dex/stader/config.js +14 -0
  85. package/build/dex/stader/config.js.map +1 -0
  86. package/build/dex/stader/stader-pool.d.ts +18 -0
  87. package/build/dex/stader/stader-pool.js +47 -0
  88. package/build/dex/stader/stader-pool.js.map +1 -0
  89. package/build/dex/stader/stader.d.ts +42 -0
  90. package/build/dex/stader/stader.js +171 -0
  91. package/build/dex/stader/stader.js.map +1 -0
  92. package/build/dex/stader/types.d.ts +13 -0
  93. package/build/dex/stader/types.js +8 -0
  94. package/build/dex/stader/types.js.map +1 -0
  95. package/build/dex/stader/utils.d.ts +4 -0
  96. package/build/dex/stader/utils.js +24 -0
  97. package/build/dex/stader/utils.js.map +1 -0
  98. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  99. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  100. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  101. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  102. package/build/dex/{balancer-v3 → trader-joe-v2.1}/optimizer.js +16 -17
  103. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  104. package/build/dex/zerox/index.d.ts +26 -4
  105. package/build/dex/zerox/index.js +42 -50
  106. package/build/dex/zerox/index.js.map +1 -1
  107. package/build/dex/zerox/types.d.ts +0 -29
  108. package/build/dex/zerox/types.js +1 -8
  109. package/build/dex/zerox/types.js.map +1 -1
  110. package/package.json +1 -1
  111. package/src/abi/SSPM.json +829 -0
  112. package/src/abi/StaderOracle.json +2170 -0
  113. package/src/dex/index.ts +2 -0
  114. package/src/dex/stader/config.ts +13 -0
  115. package/src/dex/stader/stader-e2e.test.ts +74 -0
  116. package/src/dex/stader/stader-events.test.ts +64 -0
  117. package/src/dex/stader/stader-integration.test.ts +240 -0
  118. package/src/dex/stader/stader-pool.ts +68 -0
  119. package/src/dex/stader/stader.ts +240 -0
  120. package/src/dex/stader/types.ts +16 -0
  121. package/src/dex/stader/utils.ts +34 -0
  122. package/tests/constants-e2e.ts +5 -0
  123. package/.vscode/launch.json +0 -53
  124. package/.vscode/settings.json +0 -2
  125. package/.vscode/tasks.json +0 -15
  126. package/build/abi/balancer-v3/batch-router.json +0 -989
  127. package/build/abi/balancer-v3/router.json +0 -1792
  128. package/build/abi/balancer-v3/vault-extension.json +0 -2834
  129. package/build/abi/inception/inception-ratio-feed.json +0 -329
  130. package/build/abi/inception/inception-vault.json +0 -991
  131. package/build/abi/permit2.json +0 -581
  132. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  133. package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
  134. package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +0 -681
  135. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  136. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  137. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  138. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
  139. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
  140. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
  141. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
  142. package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
  143. package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
  144. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
  145. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
  146. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
  147. package/build/dex/balancer-v3/balancer-v3-pool.d.ts +0 -80
  148. package/build/dex/balancer-v3/balancer-v3-pool.js +0 -461
  149. package/build/dex/balancer-v3/balancer-v3-pool.js.map +0 -1
  150. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
  151. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
  152. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
  153. package/build/dex/balancer-v3/balancer-v3.d.ts +0 -57
  154. package/build/dex/balancer-v3/balancer-v3.js +0 -383
  155. package/build/dex/balancer-v3/balancer-v3.js.map +0 -1
  156. package/build/dex/balancer-v3/config.d.ts +0 -8
  157. package/build/dex/balancer-v3/config.js +0 -24
  158. package/build/dex/balancer-v3/config.js.map +0 -1
  159. package/build/dex/balancer-v3/getGasCost.d.ts +0 -2
  160. package/build/dex/balancer-v3/getGasCost.js +0 -41
  161. package/build/dex/balancer-v3/getGasCost.js.map +0 -1
  162. package/build/dex/balancer-v3/getOnChainState.d.ts +0 -10
  163. package/build/dex/balancer-v3/getOnChainState.js +0 -164
  164. package/build/dex/balancer-v3/getOnChainState.js.map +0 -1
  165. package/build/dex/balancer-v3/getPoolsApi.d.ts +0 -2
  166. package/build/dex/balancer-v3/getPoolsApi.js +0 -81
  167. package/build/dex/balancer-v3/getPoolsApi.js.map +0 -1
  168. package/build/dex/balancer-v3/getTopPoolsApi.d.ts +0 -13
  169. package/build/dex/balancer-v3/getTopPoolsApi.js +0 -62
  170. package/build/dex/balancer-v3/getTopPoolsApi.js.map +0 -1
  171. package/build/dex/balancer-v3/optimizer.d.ts +0 -2
  172. package/build/dex/balancer-v3/optimizer.js.map +0 -1
  173. package/build/dex/balancer-v3/stablePool.d.ts +0 -7
  174. package/build/dex/balancer-v3/stablePool.js +0 -73
  175. package/build/dex/balancer-v3/stablePool.js.map +0 -1
  176. package/build/dex/balancer-v3/types.d.ts +0 -62
  177. package/build/dex/balancer-v3/types.js +0 -3
  178. package/build/dex/balancer-v3/types.js.map +0 -1
  179. package/build/dex/balancer-v3/weightedPool.d.ts +0 -1
  180. package/build/dex/balancer-v3/weightedPool.js +0 -6
  181. package/build/dex/balancer-v3/weightedPool.js.map +0 -1
  182. package/build/dex/inception/config.d.ts +0 -4
  183. package/build/dex/inception/config.js +0 -109
  184. package/build/dex/inception/config.js.map +0 -1
  185. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  186. package/build/dex/inception/inception-event-pool.js +0 -49
  187. package/build/dex/inception/inception-event-pool.js.map +0 -1
  188. package/build/dex/inception/inception.d.ts +0 -43
  189. package/build/dex/inception/inception.js +0 -180
  190. package/build/dex/inception/inception.js.map +0 -1
  191. package/build/dex/inception/tokens.d.ts +0 -9
  192. package/build/dex/inception/tokens.js +0 -28
  193. package/build/dex/inception/tokens.js.map +0 -1
  194. package/build/dex/inception/types.d.ts +0 -22
  195. package/build/dex/inception/types.js +0 -3
  196. package/build/dex/inception/types.js.map +0 -1
  197. package/build/dex/inception/utils.d.ts +0 -7
  198. package/build/dex/inception/utils.js +0 -58
  199. package/build/dex/inception/utils.js.map +0 -1
  200. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  201. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  202. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  203. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  204. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  205. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  206. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  207. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  208. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  209. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  210. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  211. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  212. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  213. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  214. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
  215. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
  216. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
  217. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
  218. package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
  219. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
  220. package/build/dex/usual/types.d.ts +0 -13
  221. package/build/dex/usual/types.js +0 -3
  222. package/build/dex/usual/types.js.map +0 -1
  223. package/build/dex/usual/usual-bond.d.ts +0 -18
  224. package/build/dex/usual/usual-bond.js +0 -52
  225. package/build/dex/usual/usual-bond.js.map +0 -1
  226. package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
  227. package/build/dex/usual/usual-m-smart-m.js +0 -50
  228. package/build/dex/usual/usual-m-smart-m.js.map +0 -1
  229. package/build/dex/usual/usual-m-usd0.d.ts +0 -17
  230. package/build/dex/usual/usual-m-usd0.js +0 -51
  231. package/build/dex/usual/usual-m-usd0.js.map +0 -1
  232. package/build/dex/usual/usual.d.ts +0 -27
  233. package/build/dex/usual/usual.js +0 -125
  234. package/build/dex/usual/usual.js.map +0 -1
  235. package/build/dex/usual-m-smart-m/config.d.ts +0 -3
  236. package/build/dex/usual-m-smart-m/config.js +0 -13
  237. package/build/dex/usual-m-smart-m/config.js.map +0 -1
  238. package/build/dex/usual-m-smart-m/types.d.ts +0 -7
  239. package/build/dex/usual-m-smart-m/types.js +0 -3
  240. package/build/dex/usual-m-smart-m/types.js.map +0 -1
  241. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
  242. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
  243. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
  244. package/build/dex/usual-m-usd0/config.js +0 -14
  245. package/build/dex/usual-m-usd0/config.js.map +0 -1
  246. package/build/dex/usual-m-usd0/types.d.ts +0 -8
  247. package/build/dex/usual-m-usd0/types.js +0 -3
  248. package/build/dex/usual-m-usd0/types.js.map +0 -1
  249. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
  250. package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
  251. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
  252. package/src/dex/balancer-v3/balancer-v3-sepolia-pools.ts +0 -404
@@ -1 +0,0 @@
1
- {"version":3,"file":"vaultExtension.V3.js","sourceRoot":"","sources":["../../../../src/dex/balancer-v3/abi/vaultExtension.V3.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IAClC;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,aAAa;KACpB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACtE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvE,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,OAAO,EAAE;IAClE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE;IAChE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,OAAO,EAAE;IACrE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;IACtD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;YACD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;SAClE;QACD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;YACD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;SACnE;QACD,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;IACxD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;IACtD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,OAAO,EAAE;IACnE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE;IACjE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,OAAO,EAAE;IACtE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3D;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;SAClE;QACD,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;SACnE;QACD,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,OAAO,EAAE;IAClE;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC3E,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;IACpD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,OAAO,EAAE;IACvE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qCAAqC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1E,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,OAAO,EAAE;IACxE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/D;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7D;QACD,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7D;QACD,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACxE,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACxE,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACtE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;IACtD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1D;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;YACD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;SAClE;QACD,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;YACD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;SACnE;QACD,IAAI,EAAE,+BAA+B;QACrC,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SAC5D;QACD,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;SAClE;QACD,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE;IACjE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;IACnD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE;IAChE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;IAChD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;IAChD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5D;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,wBAAwB;gBAC9B,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,uBAAuB;gBAC7B,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;IACpD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;IAClD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,OAAO,EAAE;IACxE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IACzD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC3E,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,OAAO,EAAE;IACvE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;IACtD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IACzD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,OAAO,EAAE;IACnE;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAClE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrE,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACtE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9D;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SAC5D;QACD,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACpE;QACD,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACpE;QACD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE;YACnE,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;SAClE;QACD,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;IACtD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IACzD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IACrD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,OAAO,EAAE;IACvE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9D,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;IAClD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3E;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE;IAChE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,OAAO,EAAE;IACpE;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,mCAAmC;QACzC,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,6BAA6B;gBACnC,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,UAAU;gBACxB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;aACjB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,WAAW;aAClB;SACF;QACD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;aACb;SACF;QACD,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,MAAM;aACb;SACF;QACD,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,iBAAiB;wBAC/B,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,gBAAgB;wBAC9B,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,OAAO;qBACd;oBACD;wBACE,YAAY,EAAE,wBAAwB;wBACtC,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,MAAM;qBACb;iBACF;gBACD,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,yBAAyB;gBACvC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO;aACd;YACD;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,2BAA2B;wBACjC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,4BAA4B;wBAClC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,2BAA2B;wBACjC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,iCAAiC;wBACvC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,sBAAsB;wBAC5B,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,qBAAqB;wBAC3B,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,8BAA8B;wBACpC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,6BAA6B;wBACnC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,iCAAiC;wBACvC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,gCAAgC;wBACtC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,OAAO;aACd;YACD;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,4BAA4B;wBAClC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,0BAA0B;wBAChC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,6BAA6B;wBACnC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,MAAM;qBACb;iBACF;gBACD,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,4BAA4B;gBAC1C,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,OAAO;aACd;SACF;QACD,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,iCAAiC;gBAC/C,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;aACb;SACF;QACD,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;aACb;SACF;QACD,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD;QACE,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;KACd;IACD,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;IAChD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9D;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7D;QACD,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9D;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,eAAe;wBAC7B,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO;qBACd;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,qBAAqB;wBAC3B,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,WAAW;wBACzB,IAAI,EAAE,kBAAkB;wBACxB,IAAI,EAAE,WAAW;qBAClB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,SAAS;qBAChB;oBACD,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;iBAC3D;gBACD,YAAY,EAAE,uBAAuB;gBACrC,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,OAAO;aACd;SACF;QACD,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACpE;QACD,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACpE;QACD,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,WAAW;aAClB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE;YACP;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,2BAA2B;wBACjC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,4BAA4B;wBAClC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,2BAA2B;wBACjC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,iCAAiC;wBACvC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,sBAAsB;wBAC5B,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,qBAAqB;wBAC3B,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,8BAA8B;wBACpC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,6BAA6B;wBACnC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,iCAAiC;wBACvC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,gCAAgC;wBACtC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;aACd;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;YACP;gBACE,UAAU,EAAE;oBACV;wBACE,UAAU,EAAE;4BACV;gCACE,YAAY,EAAE,MAAM;gCACpB,IAAI,EAAE,4BAA4B;gCAClC,IAAI,EAAE,MAAM;6BACb;4BACD;gCACE,YAAY,EAAE,MAAM;gCACpB,IAAI,EAAE,0BAA0B;gCAChC,IAAI,EAAE,MAAM;6BACb;4BACD;gCACE,YAAY,EAAE,MAAM;gCACpB,IAAI,EAAE,6BAA6B;gCACnC,IAAI,EAAE,MAAM;6BACb;4BACD;gCACE,YAAY,EAAE,MAAM;gCACpB,IAAI,EAAE,gBAAgB;gCACtB,IAAI,EAAE,MAAM;6BACb;yBACF;wBACD,YAAY,EAAE,4BAA4B;wBAC1C,IAAI,EAAE,qBAAqB;wBAC3B,IAAI,EAAE,OAAO;qBACd;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,yBAAyB;wBAC/B,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,4BAA4B;wBAClC,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,6BAA6B;wBACnC,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,QAAQ;wBACtB,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,QAAQ;qBACf;oBACD;wBACE,YAAY,EAAE,QAAQ;wBACtB,IAAI,EAAE,oBAAoB;wBAC1B,IAAI,EAAE,QAAQ;qBACf;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,kBAAkB;wBACxB,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,sBAAsB;wBAC5B,IAAI,EAAE,MAAM;qBACb;iBACF;gBACD,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;aACd;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE;YACP;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,gBAAgB;wBAC9B,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,mBAAmB;wBACjC,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,WAAW;qBAClB;oBACD;wBACE,UAAU,EAAE;4BACV;gCACE,YAAY,EAAE,gBAAgB;gCAC9B,IAAI,EAAE,WAAW;gCACjB,IAAI,EAAE,OAAO;6BACd;4BACD;gCACE,YAAY,EAAE,wBAAwB;gCACtC,IAAI,EAAE,cAAc;gCACpB,IAAI,EAAE,SAAS;6BAChB;4BACD;gCACE,YAAY,EAAE,MAAM;gCACpB,IAAI,EAAE,eAAe;gCACrB,IAAI,EAAE,MAAM;6BACb;yBACF;wBACD,YAAY,EAAE,oBAAoB;wBAClC,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,WAAW;wBACzB,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,WAAW;qBAClB;oBACD;wBACE,YAAY,EAAE,WAAW;wBACzB,IAAI,EAAE,sBAAsB;wBAC5B,IAAI,EAAE,WAAW;qBAClB;oBACD;wBACE,YAAY,EAAE,WAAW;wBACzB,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,WAAW;qBAClB;oBACD;wBACE,YAAY,EAAE,WAAW;wBACzB,IAAI,EAAE,uBAAuB;wBAC7B,IAAI,EAAE,WAAW;qBAClB;iBACF;gBACD,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;aACd;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE;YACP,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAChD,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACpD,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACpD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SACvD;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE;YACP;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,YAAY,EAAE,yBAAyB;gBACvC,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;aACd;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,gBAAgB;wBAC9B,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,OAAO;qBACd;oBACD;wBACE,YAAY,EAAE,wBAAwB;wBACtC,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,MAAM;qBACb;iBACF;gBACD,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,WAAW;aAClB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,uBAAuB;gBAC7B,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,WAAW;aAClB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;aAClB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,iCAAiC;gBAC/C,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACpE;QACD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACpE;QACD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC/D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YACxD;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;aAChB;YACD,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3D;QACD,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE;YACP,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;SACnE;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAChE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnE,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAChE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,iBAAiB;wBAC/B,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,gBAAgB;wBAC9B,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,OAAO;qBACd;oBACD;wBACE,YAAY,EAAE,wBAAwB;wBACtC,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,eAAe;wBACrB,IAAI,EAAE,MAAM;qBACb;iBACF;gBACD,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;aACf;YACD,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE;YACjE;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,SAAS;qBAChB;oBACD;wBACE,YAAY,EAAE,SAAS;wBACvB,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,SAAS;qBAChB;iBACF;gBACD,YAAY,EAAE,yBAAyB;gBACvC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO;aACd;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,UAAU,EAAE;oBACV;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,4BAA4B;wBAClC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,0BAA0B;wBAChC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,6BAA6B;wBACnC,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,YAAY,EAAE,MAAM;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,MAAM;qBACb;iBACF;gBACD,YAAY,EAAE,4BAA4B;gBAC1C,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,OAAO;aACd;SACF;QACD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,WAAW;aAClB;SACF;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YACxD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7D;QACD,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YACxD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7D;QACD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;CACvC,CAAC"}
@@ -1,80 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { DeepReadonly } from 'ts-essentials';
3
- import { Log, Logger } from '../../types';
4
- import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
- import { IDexHelper } from '../../dex-helper/idex-helper';
6
- import { PoolState, PoolStateMap, Step, TokenInfo } from './types';
7
- import { SwapKind, Vault } from '@balancer-labs/balancer-maths';
8
- export declare class BalancerV3EventPool extends StatefulEventSubscriber<PoolStateMap> {
9
- readonly parentName: string;
10
- protected network: number;
11
- protected dexHelper: IDexHelper;
12
- handlers: {
13
- [event: string]: (event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>) => DeepReadonly<PoolStateMap> | null;
14
- };
15
- logDecoder: (log: Log) => any;
16
- addressesSubscribed: string[];
17
- interfaces: {
18
- [name: string]: Interface;
19
- };
20
- vault: Vault;
21
- constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger);
22
- /**
23
- * The function is called every time any of the subscribed
24
- * addresses release log. The function accepts the current
25
- * state, updates the state according to the log, and returns
26
- * the updated state.
27
- * @param state - Current state of event subscriber
28
- * @param log - Log released by one of the subscribed addresses
29
- * @returns Updates state of the event subscriber after the log
30
- */
31
- protected processLog(state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
32
- /**
33
- * The function generates state using on-chain calls. This
34
- * function is called to regenerate state if the event based
35
- * system fails to fetch events and the local state is no
36
- * more correct.
37
- * @param blockNumber - Blocknumber for which the state should
38
- * should be generated
39
- * @returns state of the event subscriber at blocknumber
40
- */
41
- generateState(blockNumber: number): Promise<DeepReadonly<PoolStateMap>>;
42
- getUpdatedPoolState(existingPoolState: DeepReadonly<PoolStateMap>): Promise<DeepReadonly<PoolStateMap> | null>;
43
- liquidityAddedEvent(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
44
- liquidityRemovedEvent(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
45
- swapEvent(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
46
- vaultAuxiliaryEvent(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
47
- poolAggregateSwapFeePercentageEvent(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
48
- poolSwapFeePercentageChangedEvent(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
49
- poolPausedStateChanged(event: any, state: DeepReadonly<PoolStateMap>, log: Readonly<Log>): DeepReadonly<PoolStateMap> | null;
50
- getMaxSwapAmount(pool: PoolState, tokenIn: TokenInfo, tokenOut: TokenInfo, swapKind: SwapKind): bigint;
51
- getSwapResult(steps: Step[], amountRaw: bigint, swapKind: SwapKind, timestamp: number): bigint;
52
- /**
53
- * Retrieves any new pools via API/multicall and adds to state
54
- */
55
- updateStatePools(): Promise<void>;
56
- /**
57
- * Uses multicall to get onchain token rate for each pool then updates pool state
58
- */
59
- updateStatePoolRates(): Promise<void>;
60
- private getPoolRates;
61
- getTokenInfo(poolState: PoolState, tokenAddress: string): TokenInfo | null;
62
- /**
63
- * Prepares all the step data required to simulate maths and construct swap transaction.
64
- * Balancer V3 has the concepts of Boosted Pools and ERC4626 Liquidity Buffers.
65
- * These enable highly capital efficient pools and gas efficient swaps.
66
- * To swap via a buffer we must provide the correct ""steps" to the router transaction.
67
- * Wrap: e.g. USDC>aUSDC
68
- * Unwrap: e.g. aUSDC>USDC
69
- * A full swap between USDC>DAI for an example bbausd pool consisting of aDAI/aUSDC/aUSDT would look like:
70
- * USDC[wrap-buffer]aUSDC[swap-pool]aDAI[unwrap-buffer]USDC
71
- * See docs for further info:
72
- * https://docs-v3.balancer.fi/concepts/explore-available-balancer-pools/boosted-pool.html
73
- * https://docs-v3.balancer.fi/concepts/vault/buffer.html
74
- */
75
- getSteps(pool: PoolState, tokenIn: TokenInfo, tokenOut: TokenInfo): Step[];
76
- getWrapStep(token: TokenInfo): Step;
77
- getUnwrapStep(token: TokenInfo): Step;
78
- getSwapStep(pool: PoolState, tokenIn: TokenInfo, tokenOut: TokenInfo): Step;
79
- toScaled18(amount: bigint, scalingFactor: bigint): bigint;
80
- }
@@ -1,461 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BalancerV3EventPool = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const abi_1 = require("@ethersproject/abi");
9
- const utils_1 = require("../../utils");
10
- const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
11
- const getPoolsApi_1 = require("./getPoolsApi");
12
- const vault_extension_json_1 = __importDefault(require("../../abi/balancer-v3/vault-extension.json"));
13
- const getOnChainState_1 = require("./getOnChainState");
14
- const config_1 = require("./config");
15
- const balancer_maths_1 = require("@balancer-labs/balancer-maths");
16
- const stablePool_1 = require("./stablePool");
17
- const bigint_constants_1 = require("../../bigint-constants");
18
- const WAD = bigint_constants_1.BI_POWS[18];
19
- class BalancerV3EventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
20
- constructor(parentName, network, dexHelper, logger) {
21
- super(parentName, config_1.BalancerV3Config.BalancerV3[network].vaultAddress, dexHelper, logger);
22
- this.parentName = parentName;
23
- this.network = network;
24
- this.dexHelper = dexHelper;
25
- this.handlers = {};
26
- this.interfaces = {
27
- ['VAULT']: new abi_1.Interface(vault_extension_json_1.default),
28
- ['STABLE']: new abi_1.Interface([
29
- 'function getAmplificationParameter() external view returns (uint256 value, bool isUpdating, uint256 precision)',
30
- 'function getAmplificationState() external view returns (tuple(uint64 startValue, uint64 endValue, uint32 startTime, uint32 endTime) amplificationState, uint256 precision)',
31
- ]),
32
- };
33
- this.logDecoder = (log) => this.interfaces['VAULT'].parseLog(log);
34
- this.addressesSubscribed = [
35
- config_1.BalancerV3Config.BalancerV3[network].vaultAddress,
36
- ];
37
- // Add handlers
38
- this.handlers['LiquidityAdded'] = this.liquidityAddedEvent.bind(this);
39
- this.handlers['LiquidityRemoved'] = this.liquidityRemovedEvent.bind(this);
40
- this.handlers['Swap'] = this.swapEvent.bind(this);
41
- this.handlers['VaultAuxiliary'] = this.vaultAuxiliaryEvent.bind(this);
42
- this.handlers['AggregateSwapFeePercentageChanged'] =
43
- this.poolAggregateSwapFeePercentageEvent.bind(this);
44
- this.handlers['SwapFeePercentageChanged'] =
45
- this.poolSwapFeePercentageChangedEvent.bind(this);
46
- this.handlers['PoolPausedStateChanged'] =
47
- this.poolPausedStateChanged.bind(this);
48
- // replicates V3 maths with fees, pool and hook logic
49
- this.vault = new balancer_maths_1.Vault();
50
- }
51
- /**
52
- * The function is called every time any of the subscribed
53
- * addresses release log. The function accepts the current
54
- * state, updates the state according to the log, and returns
55
- * the updated state.
56
- * @param state - Current state of event subscriber
57
- * @param log - Log released by one of the subscribed addresses
58
- * @returns Updates state of the event subscriber after the log
59
- */
60
- processLog(state, log) {
61
- try {
62
- const event = this.logDecoder(log);
63
- if (event.name in this.handlers) {
64
- return this.handlers[event.name](event, state, log);
65
- }
66
- }
67
- catch (e) {
68
- (0, utils_1.catchParseLogError)(e, this.logger);
69
- }
70
- return null;
71
- }
72
- /**
73
- * The function generates state using on-chain calls. This
74
- * function is called to regenerate state if the event based
75
- * system fails to fetch events and the local state is no
76
- * more correct.
77
- * @param blockNumber - Blocknumber for which the state should
78
- * should be generated
79
- * @returns state of the event subscriber at blocknumber
80
- */
81
- async generateState(blockNumber) {
82
- const block = await this.dexHelper.provider.getBlock(blockNumber);
83
- const apiPoolStateMap = await (0, getPoolsApi_1.getPoolsApi)(this.network, block.timestamp);
84
- const allOnChainPools = await (0, getOnChainState_1.getOnChainState)(this.network, apiPoolStateMap, this.dexHelper, this.interfaces, blockNumber);
85
- // Filter out all paused pools
86
- const filteredPools = Object.entries(allOnChainPools)
87
- .filter(([address, pool]) => {
88
- return !pool.isPoolPaused;
89
- })
90
- .reduce((acc, [address, pool]) => {
91
- acc[address] = pool;
92
- return acc;
93
- }, {});
94
- return filteredPools;
95
- }
96
- async getUpdatedPoolState(existingPoolState) {
97
- // Get all latest pools from API
98
- const apiPoolStateMap = await (0, getPoolsApi_1.getPoolsApi)(this.network);
99
- // Filter out pools that already exist in existing state
100
- const newApiPools = Object.entries(apiPoolStateMap).reduce((acc, [address, pool]) => {
101
- if (!existingPoolState[address]) {
102
- acc[address] = pool;
103
- }
104
- return acc;
105
- }, {});
106
- // If no new pools return
107
- if (Object.keys(newApiPools).length === 0) {
108
- return null;
109
- }
110
- // Only get on-chain state for new pools
111
- const newOnChainPools = await (0, getOnChainState_1.getOnChainState)(this.network, newApiPools, this.dexHelper, this.interfaces);
112
- // Filter out pools with hooks and paused pools from new state
113
- // TODO this won't be necessary once API has this filter option
114
- const filteredNewPools = Object.entries(newOnChainPools)
115
- .filter(([_, pool]) => !(pool.hasHook || pool.isPoolPaused))
116
- .reduce((acc, [address, pool]) => {
117
- acc[address] = pool;
118
- return acc;
119
- }, {});
120
- // Merge existing pools with new pools
121
- return {
122
- ...existingPoolState,
123
- ...filteredNewPools,
124
- };
125
- }
126
- liquidityAddedEvent(event, state, log) {
127
- const poolAddress = event.args.pool.toLowerCase();
128
- // Vault will send events from all pools, some of which are not officially supported by Balancer
129
- if (!state[poolAddress]) {
130
- return null;
131
- }
132
- const newState = lodash_1.default.cloneDeep(state);
133
- for (let i = 0; i < newState[poolAddress].balancesLiveScaled18.length; i++) {
134
- newState[poolAddress].balancesLiveScaled18[i] += this.toScaled18(BigInt(event.args.amountsAddedRaw[i]), newState[poolAddress].scalingFactors[i]);
135
- }
136
- newState[poolAddress].totalSupply = BigInt(event.args.totalSupply);
137
- return newState;
138
- }
139
- liquidityRemovedEvent(event, state, log) {
140
- const poolAddress = event.args.pool.toLowerCase();
141
- // Vault will send events from all pools, some of which are not officially supported by Balancer
142
- if (!state[poolAddress]) {
143
- return null;
144
- }
145
- const newState = lodash_1.default.cloneDeep(state);
146
- for (let i = 0; i < newState[poolAddress].balancesLiveScaled18.length; i++) {
147
- newState[poolAddress].balancesLiveScaled18[i] -= this.toScaled18(BigInt(event.args.amountsRemovedRaw[i]), newState[poolAddress].scalingFactors[i]);
148
- }
149
- newState[poolAddress].totalSupply = BigInt(event.args.totalSupply);
150
- return newState;
151
- }
152
- swapEvent(event, state, log) {
153
- const poolAddress = event.args.pool.toLowerCase();
154
- // Vault will send events from all pools, some of which are not officially supported by Balancer
155
- if (!state[poolAddress]) {
156
- return null;
157
- }
158
- const newState = lodash_1.default.cloneDeep(state);
159
- const tokenInIndex = newState[poolAddress].tokens.findIndex(address => address.toLowerCase() === event.args.tokenIn.toLowerCase());
160
- const tokenOutIndex = newState[poolAddress].tokens.findIndex(address => address.toLowerCase() === event.args.tokenOut.toLowerCase());
161
- if (tokenInIndex === -1 || tokenOutIndex === -1) {
162
- this.logger.error(`swapEvent - token index not found in pool state`);
163
- return null;
164
- }
165
- newState[poolAddress].balancesLiveScaled18[tokenInIndex] += this.toScaled18(BigInt(event.args.amountIn), newState[poolAddress].scalingFactors[tokenInIndex]);
166
- newState[poolAddress].balancesLiveScaled18[tokenOutIndex] -=
167
- this.toScaled18(BigInt(event.args.amountOut), newState[poolAddress].scalingFactors[tokenOutIndex]);
168
- return newState;
169
- }
170
- vaultAuxiliaryEvent(event, state, log) {
171
- // In SC Pools can use this event to emit event data from the Vault.
172
- // Allows us to track pool specific events using only the Vault subscription.
173
- // https://github.com/balancer/balancer-v3-monorepo/blob/main/pkg/interfaces/contracts/vault/IVaultExtension.sol
174
- const poolAddress = event.args.pool.toLowerCase();
175
- // Vault will send events from all pools, some of which are not officially supported by Balancer
176
- if (!state[poolAddress]) {
177
- return null;
178
- }
179
- const newState = lodash_1.default.cloneDeep(state);
180
- switch (event.args.eventKey) {
181
- case 'AmpUpdateStarted':
182
- (0, stablePool_1.ampUpdateStartedEvent)(newState[poolAddress], event.args.eventData);
183
- return newState;
184
- case 'AmpUpdateStopped':
185
- (0, stablePool_1.ampUpdateStoppedEvent)(newState[poolAddress], event.args.eventData);
186
- return newState;
187
- default:
188
- return null;
189
- }
190
- }
191
- poolAggregateSwapFeePercentageEvent(event, state, log) {
192
- const poolAddress = event.args.pool.toLowerCase();
193
- // Vault will send events from all pools, some of which are not officially supported by Balancer
194
- if (!state[poolAddress]) {
195
- return null;
196
- }
197
- const newState = lodash_1.default.cloneDeep(state);
198
- newState[poolAddress].aggregateSwapFee = BigInt(event.args.aggregateSwapFeePercentage);
199
- return newState;
200
- }
201
- poolSwapFeePercentageChangedEvent(event, state, log) {
202
- const poolAddress = event.args.pool.toLowerCase();
203
- // Vault will send events from all pools, some of which are not officially supported by Balancer
204
- if (!state[poolAddress]) {
205
- return null;
206
- }
207
- const newState = lodash_1.default.cloneDeep(state);
208
- newState[poolAddress].swapFee = BigInt(event.args.swapFeePercentage);
209
- return newState;
210
- }
211
- poolPausedStateChanged(event, state, log) {
212
- // Unpaused pools will be added with correct state during updateStatePools
213
- if (event.args.paused === false)
214
- return null;
215
- const poolAddress = event.args.pool.toLowerCase();
216
- // Vault will send events from all pools, some of which are not officially supported by Balancer
217
- if (!state[poolAddress]) {
218
- return null;
219
- }
220
- // Remove paused pool from state as it can't be swapped against
221
- const newState = lodash_1.default.cloneDeep(state);
222
- delete newState[poolAddress];
223
- return newState;
224
- }
225
- getMaxSwapAmount(pool, tokenIn, tokenOut, swapKind) {
226
- // Find the maximum swap amount the pool will support
227
- const maxSwapAmount = this.vault.getMaxSwapAmount({
228
- swapKind,
229
- balancesLiveScaled18: pool.balancesLiveScaled18,
230
- tokenRates: pool.tokenRates,
231
- scalingFactors: pool.scalingFactors,
232
- indexIn: tokenIn.index,
233
- indexOut: tokenOut.index,
234
- }, pool);
235
- return maxSwapAmount;
236
- }
237
- getSwapResult(steps, amountRaw, swapKind, timestamp) {
238
- if (amountRaw === 0n)
239
- return 0n;
240
- // A GivenOut needs to use steps in reverse during calculation
241
- const indices = swapKind === balancer_maths_1.SwapKind.GivenIn
242
- ? steps.keys()
243
- : Array.from(steps.keys()).reverse();
244
- let amount = amountRaw;
245
- let outputAmountRaw = 0n;
246
- for (const i of indices) {
247
- const step = steps[i];
248
- // If its a Stable Pool with an updating Amp factor calculate current Amp value
249
- if (step.poolState.poolType === 'STABLE' &&
250
- (0, stablePool_1.isStableMutableState)(step.poolState)) {
251
- if (step.poolState.ampIsUpdating) {
252
- step.poolState.amp = (0, stablePool_1.getAmplificationParameter)(step.poolState.ampStartValue, step.poolState.ampEndValue, step.poolState.ampStartTime, step.poolState.ampStopTime, BigInt(timestamp));
253
- }
254
- }
255
- outputAmountRaw = this.vault.swap({
256
- ...step.swapInput,
257
- amountRaw: amount,
258
- swapKind,
259
- }, step.poolState);
260
- // Next step uses output from previous step as input
261
- amount = outputAmountRaw;
262
- }
263
- return outputAmountRaw;
264
- }
265
- /**
266
- * Retrieves any new pools via API/multicall and adds to state
267
- */
268
- async updateStatePools() {
269
- const blockNumber = await this.dexHelper.provider.getBlockNumber();
270
- // We just want the current saved state
271
- const currentState = this.getStaleState() || {};
272
- const updatedPoolState = await this.getUpdatedPoolState(currentState);
273
- if (updatedPoolState)
274
- this.setState(updatedPoolState, blockNumber);
275
- }
276
- /**
277
- * Uses multicall to get onchain token rate for each pool then updates pool state
278
- */
279
- async updateStatePoolRates() {
280
- // Get existing state
281
- const poolState = lodash_1.default.cloneDeep(this.getStaleState());
282
- if (!poolState)
283
- return;
284
- // Fetch onchain pool rates
285
- const poolRates = await this.getPoolRates(Object.keys(poolState));
286
- // Update each pools rate
287
- poolRates.forEach(({ poolAddress, tokenRates }, i) => {
288
- poolState[poolAddress].tokenRates = tokenRates;
289
- });
290
- // Update state
291
- const blockNumber = await this.dexHelper.provider.getBlockNumber();
292
- this.setState(poolState, blockNumber);
293
- }
294
- async getPoolRates(poolAddresses) {
295
- // For each pool make the getPoolTokenRates call
296
- const multiCallData = poolAddresses.map(address => {
297
- return {
298
- target: config_1.BalancerV3Config.BalancerV3[this.network].vaultAddress,
299
- callData: this.interfaces['VAULT'].encodeFunctionData('getPoolTokenRates', [address]),
300
- };
301
- });
302
- // 500 is an arbitrary number chosen based on the blockGasLimit
303
- const slicedMultiCallData = lodash_1.default.chunk(multiCallData, 500);
304
- // Make the multicall
305
- const multicallData = (await Promise.all(slicedMultiCallData.map(async (_multiCallData) => this.dexHelper.multiContract.methods
306
- .tryAggregate(false, _multiCallData)
307
- .call({})))).flat();
308
- return poolAddresses.map((address, i) => {
309
- const tokenRateResult = (0, getOnChainState_1.decodeThrowError)(this.interfaces['VAULT'], 'getPoolTokenRates', multicallData[i], address);
310
- return {
311
- poolAddress: address,
312
- tokenRates: tokenRateResult.tokenRates.map((r) => BigInt(r)),
313
- };
314
- });
315
- }
316
- // If a token is "boosted" it can be auto wrapped/unwrapped by Vault, e.g. aDAI<>DAI
317
- // mainToken is the actual token the pool would contain, e.g. in a bbausd type setup it would be aDAI/aUSDC/aUSDT
318
- // underlyingToken would be the unwrapped, e.g. DAI/USDC/USDT
319
- // need rate info to calculate wrap/unwrap
320
- getTokenInfo(poolState, tokenAddress) {
321
- // Check in main tokens
322
- let tokenIndex = poolState.tokens.findIndex(address => address.toLowerCase() === tokenAddress.toLowerCase());
323
- if (tokenIndex !== -1) {
324
- return {
325
- isBoosted: false,
326
- mainToken: tokenAddress,
327
- underlyingToken: null,
328
- index: tokenIndex,
329
- rate: poolState.tokenRates[tokenIndex],
330
- };
331
- }
332
- // Check in underlying tokens if available
333
- if (poolState.tokensUnderlying) {
334
- tokenIndex = poolState.tokensUnderlying.findIndex(address => address && address.toLowerCase() === tokenAddress.toLowerCase());
335
- if (tokenIndex !== -1) {
336
- return {
337
- isBoosted: true,
338
- mainToken: poolState.tokens[tokenIndex],
339
- underlyingToken: tokenAddress,
340
- index: tokenIndex,
341
- rate: poolState.tokenRates[tokenIndex],
342
- };
343
- }
344
- }
345
- // Token not found
346
- this.logger.error(`getTokenInfo token not found`);
347
- return null;
348
- }
349
- /**
350
- * Prepares all the step data required to simulate maths and construct swap transaction.
351
- * Balancer V3 has the concepts of Boosted Pools and ERC4626 Liquidity Buffers.
352
- * These enable highly capital efficient pools and gas efficient swaps.
353
- * To swap via a buffer we must provide the correct ""steps" to the router transaction.
354
- * Wrap: e.g. USDC>aUSDC
355
- * Unwrap: e.g. aUSDC>USDC
356
- * A full swap between USDC>DAI for an example bbausd pool consisting of aDAI/aUSDC/aUSDT would look like:
357
- * USDC[wrap-buffer]aUSDC[swap-pool]aDAI[unwrap-buffer]USDC
358
- * See docs for further info:
359
- * https://docs-v3.balancer.fi/concepts/explore-available-balancer-pools/boosted-pool.html
360
- * https://docs-v3.balancer.fi/concepts/vault/buffer.html
361
- */
362
- getSteps(pool, tokenIn, tokenOut) {
363
- if (tokenIn.isBoosted && tokenOut.isBoosted) {
364
- return [
365
- // Wrap tokenIn underlying to main token
366
- this.getWrapStep(tokenIn),
367
- // Swap main > main
368
- this.getSwapStep(pool, tokenIn, tokenOut),
369
- // Unwrap tokenOut main to underlying token
370
- this.getUnwrapStep(tokenOut),
371
- ];
372
- }
373
- else if (tokenIn.isBoosted) {
374
- if (tokenIn.mainToken === tokenOut.mainToken) {
375
- // wrap, token > erc4626
376
- // tokenIn is boosted, e.g. isn't pool token and must be wrapped
377
- return [this.getWrapStep(tokenIn)];
378
- }
379
- return [
380
- // Wrap tokenIn underlying to main token
381
- this.getWrapStep(tokenIn),
382
- // Swap main > main
383
- this.getSwapStep(pool, tokenIn, tokenOut),
384
- ];
385
- }
386
- else if (tokenOut.isBoosted) {
387
- if (tokenIn.mainToken === tokenOut.mainToken) {
388
- // unwrap, stata > token
389
- // token out is boosted, e.g. isn't pool token
390
- return [this.getUnwrapStep(tokenOut)];
391
- }
392
- return [
393
- // Swap main > main
394
- this.getSwapStep(pool, tokenIn, tokenOut),
395
- // Unwrap tokenOut main to underlying token
396
- this.getUnwrapStep(tokenOut),
397
- ];
398
- }
399
- else {
400
- return [
401
- // Swap main > main
402
- this.getSwapStep(pool, tokenIn, tokenOut),
403
- ];
404
- }
405
- }
406
- getWrapStep(token) {
407
- if (!token.underlyingToken)
408
- throw new Error(`Buffer wrap: token has no underlying. ${token.mainToken}`);
409
- // Vault expects pool to be the ERC4626 wrapped token, e.g. aUSDC
410
- return {
411
- pool: token.mainToken,
412
- isBuffer: true,
413
- swapInput: {
414
- tokenIn: token.underlyingToken,
415
- tokenOut: token.mainToken,
416
- },
417
- poolState: {
418
- poolType: 'Buffer',
419
- rate: token.rate,
420
- poolAddress: token.mainToken,
421
- tokens: [token.mainToken, token.underlyingToken], // staticToken & underlying
422
- },
423
- };
424
- }
425
- getUnwrapStep(token) {
426
- if (!token.underlyingToken)
427
- throw new Error(`Buffer unwrap: token has no underlying. ${token.mainToken}`);
428
- // Vault expects pool to be the ERC4626 wrapped token, e.g. aUSDC
429
- return {
430
- pool: token.mainToken,
431
- isBuffer: true,
432
- swapInput: {
433
- tokenIn: token.mainToken,
434
- tokenOut: token.underlyingToken,
435
- },
436
- poolState: {
437
- poolType: 'Buffer',
438
- rate: token.rate,
439
- poolAddress: token.mainToken,
440
- tokens: [token.mainToken, token.underlyingToken], // staticToken & underlying
441
- },
442
- };
443
- }
444
- getSwapStep(pool, tokenIn, tokenOut) {
445
- // A normal swap between two tokens in a pool
446
- return {
447
- pool: pool.poolAddress,
448
- isBuffer: false,
449
- swapInput: {
450
- tokenIn: tokenIn.mainToken,
451
- tokenOut: tokenOut.mainToken,
452
- },
453
- poolState: pool,
454
- };
455
- }
456
- toScaled18(amount, scalingFactor) {
457
- return (amount * scalingFactor * WAD) / WAD;
458
- }
459
- }
460
- exports.BalancerV3EventPool = BalancerV3EventPool;
461
- //# sourceMappingURL=balancer-v3-pool.js.map