genius-intents 0.26.1-develop.1 → 0.28.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 (55) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/dist/lib/dex/evm-direct-pool/evm-direct-pool.service.js +10 -10
  3. package/dist/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.d.ts.map +1 -1
  4. package/dist/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.js +15 -6
  5. package/dist/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.js.map +1 -1
  6. package/dist/lib/dex/pair-discovery/adapters/ve33-dex-pair-discovery.adapter.d.ts +1 -17
  7. package/dist/lib/dex/pair-discovery/adapters/ve33-dex-pair-discovery.adapter.d.ts.map +1 -1
  8. package/dist/lib/dex/pair-discovery/adapters/ve33-dex-pair-discovery.adapter.js +53 -26
  9. package/dist/lib/dex/pair-discovery/adapters/ve33-dex-pair-discovery.adapter.js.map +1 -1
  10. package/dist/lib/dex/uniswapv3/shadow-quoter.abi.d.ts +3 -0
  11. package/dist/lib/dex/uniswapv3/shadow-quoter.abi.d.ts.map +1 -0
  12. package/dist/lib/dex/uniswapv3/shadow-quoter.abi.js +121 -0
  13. package/dist/lib/dex/uniswapv3/shadow-quoter.abi.js.map +1 -0
  14. package/dist/lib/dex/uniswapv3/v3-dex-deployments.d.ts +3 -8
  15. package/dist/lib/dex/uniswapv3/v3-dex-deployments.d.ts.map +1 -1
  16. package/dist/lib/dex/uniswapv3/v3-dex-deployments.js +22 -9
  17. package/dist/lib/dex/uniswapv3/v3-dex-deployments.js.map +1 -1
  18. package/dist/lib/dex/ve33/ve33-dex-deployments.d.ts.map +1 -1
  19. package/dist/lib/dex/ve33/ve33-dex-deployments.js +13 -0
  20. package/dist/lib/dex/ve33/ve33-dex-deployments.js.map +1 -1
  21. package/dist/protocols/relay/relay.service.js +1 -1
  22. package/dist/protocols/relay/relay.service.js.map +1 -1
  23. package/dist/protocols/v3-dex/adapters/uniswap-fork.adapter.d.ts +2 -0
  24. package/dist/protocols/v3-dex/adapters/uniswap-fork.adapter.d.ts.map +1 -1
  25. package/dist/protocols/v3-dex/adapters/uniswap-fork.adapter.js +23 -11
  26. package/dist/protocols/v3-dex/adapters/uniswap-fork.adapter.js.map +1 -1
  27. package/dist/protocols/v3-dex/v3-dex.service.d.ts.map +1 -1
  28. package/dist/protocols/v3-dex/v3-dex.service.js +1 -0
  29. package/dist/protocols/v3-dex/v3-dex.service.js.map +1 -1
  30. package/dist/protocols/v3-dex/v3-dex.types.d.ts +2 -1
  31. package/dist/protocols/v3-dex/v3-dex.types.d.ts.map +1 -1
  32. package/dist/protocols/v3-dex/v3-dex.types.js +1 -0
  33. package/dist/protocols/v3-dex/v3-dex.types.js.map +1 -1
  34. package/dist/protocols/ve33/adapters/{pharaoh.adapter.d.ts → generic.adapter.d.ts} +2 -2
  35. package/dist/protocols/ve33/adapters/generic.adapter.d.ts.map +1 -0
  36. package/dist/protocols/ve33/adapters/{pharaoh.adapter.js → generic.adapter.js} +6 -7
  37. package/dist/protocols/ve33/adapters/generic.adapter.js.map +1 -0
  38. package/dist/protocols/ve33/ve33.service.d.ts +27 -0
  39. package/dist/protocols/ve33/ve33.service.d.ts.map +1 -1
  40. package/dist/protocols/ve33/ve33.service.js +58 -10
  41. package/dist/protocols/ve33/ve33.service.js.map +1 -1
  42. package/dist/protocols/ve33/ve33.types.d.ts +4 -1
  43. package/dist/protocols/ve33/ve33.types.d.ts.map +1 -1
  44. package/dist/protocols/ve33/ve33.types.js +1 -0
  45. package/dist/protocols/ve33/ve33.types.js.map +1 -1
  46. package/dist/utils/chainId-to-chain.d.ts.map +1 -1
  47. package/dist/utils/chainId-to-chain.js +1 -0
  48. package/dist/utils/chainId-to-chain.js.map +1 -1
  49. package/package.json +1 -1
  50. package/dist/protocols/ve33/adapters/pharaoh.adapter.d.ts.map +0 -1
  51. package/dist/protocols/ve33/adapters/pharaoh.adapter.js.map +0 -1
  52. package/dist/protocols/ve33/ve33.handlers.d.ts +0 -3
  53. package/dist/protocols/ve33/ve33.handlers.d.ts.map +0 -1
  54. package/dist/protocols/ve33/ve33.handlers.js +0 -187
  55. package/dist/protocols/ve33/ve33.handlers.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,112 @@
1
+ ## [0.28.0] - 2026-01-09 (Beta)
2
+
3
+ 🧪 **This is a beta release for testing purposes.**
4
+
5
+ ## [0.28.0](https://github.com/Genius-Foundation/genius-intents/compare/v0.27.0...v0.28.0) (2026-01-09)
6
+
7
+
8
+ ### Features
9
+
10
+ * fix native out when ramses clmm is selected ([#202](https://github.com/Genius-Foundation/genius-intents/issues/202)) ([b7822e3](https://github.com/Genius-Foundation/genius-intents/commit/b7822e38530eae73dc997dc0bd717a3e9ef92470))
11
+ * Shadow Dex direct pool swaps on Sonic ([#184](https://github.com/Genius-Foundation/genius-intents/issues/184)) ([63ae572](https://github.com/Genius-Foundation/genius-intents/commit/63ae5728bbe7cb16005927da08b13ef4c89e86b6))
12
+
13
+
14
+ ### Documentation
15
+
16
+ * update CHANGELOG.md for v0.27.0 (beta) ([5ce3aa9](https://github.com/Genius-Foundation/genius-intents/commit/5ce3aa991c3e11968e2cba610139b6c55739d46a))
17
+
18
+
19
+
20
+ ⚠️ **Beta Release Notes:**
21
+ - This version is intended for testing and development
22
+ - May contain experimental features
23
+ - Not recommended for production use
24
+ - Feedback and bug reports are welcome
25
+
26
+ ---
27
+
28
+
29
+ ## [0.27.0] - 2026-01-06 (Beta)
30
+
31
+ 🧪 **This is a beta release for testing purposes.**
32
+
33
+ ## [0.27.0](https://github.com/Genius-Foundation/genius-intents/compare/v0.26.1...v0.27.0) (2026-01-06)
34
+
35
+
36
+ ### Features
37
+
38
+ * update gas tank deployments ([#204](https://github.com/Genius-Foundation/genius-intents/issues/204)) ([d0de0e0](https://github.com/Genius-Foundation/genius-intents/commit/d0de0e03006b56c73cf84f6252103973e203ab5a))
39
+
40
+
41
+ ### Bug Fixes
42
+
43
+ * setup script erroring ([#205](https://github.com/Genius-Foundation/genius-intents/issues/205)) ([6475cf5](https://github.com/Genius-Foundation/genius-intents/commit/6475cf5fdd3ce6a32d88c547eaa0e56de5c3cccf))
44
+
45
+
46
+ ### Documentation
47
+
48
+ * update CHANGELOG.md for v0.26.2-develop.0 (beta) ([5ed5c7f](https://github.com/Genius-Foundation/genius-intents/commit/5ed5c7f9b95300079e5824dbf32e352516de2b9f))
49
+
50
+
51
+
52
+ ⚠️ **Beta Release Notes:**
53
+ - This version is intended for testing and development
54
+ - May contain experimental features
55
+ - Not recommended for production use
56
+ - Feedback and bug reports are welcome
57
+
58
+ ---
59
+
60
+
61
+ ## [0.26.2-develop.0] - 2025-12-31 (Beta)
62
+
63
+ 🧪 **This is a beta release for testing purposes.**
64
+
65
+ ### [0.26.2-develop.0](https://github.com/Genius-Foundation/genius-intents/compare/v0.26.1...v0.26.2-develop.0) (2025-12-31)
66
+
67
+
68
+ ### Documentation
69
+
70
+ * update CHANGELOG.md for v0.26.1 (beta) ([d7ffd04](https://github.com/Genius-Foundation/genius-intents/commit/d7ffd04492ee0117e31895e5261200436fd88034))
71
+
72
+
73
+
74
+ ⚠️ **Beta Release Notes:**
75
+ - This version is intended for testing and development
76
+ - May contain experimental features
77
+ - Not recommended for production use
78
+ - Feedback and bug reports are welcome
79
+
80
+ ---
81
+
82
+
83
+ ## [0.26.1] - 2025-12-04 (Beta)
84
+
85
+ 🧪 **This is a beta release for testing purposes.**
86
+
87
+ ### [0.26.1](https://github.com/Genius-Foundation/genius-intents/compare/v0.26.0...v0.26.1) (2025-12-04)
88
+
89
+
90
+ ### Bug Fixes
91
+
92
+ * add 120K gas units to erc20 gas limit for direct pools ([#199](https://github.com/Genius-Foundation/genius-intents/issues/199)) ([07d16eb](https://github.com/Genius-Foundation/genius-intents/commit/07d16eba90e56261d6edaa7744b7086e998fe5f8))
93
+
94
+
95
+ ### Documentation
96
+
97
+ * update CHANGELOG.md for v0.26.1-develop.1 (beta) ([2510445](https://github.com/Genius-Foundation/genius-intents/commit/2510445f02652d0d30fee0f23d1bfce61fdf27fd))
98
+
99
+
100
+
101
+ ⚠️ **Beta Release Notes:**
102
+ - This version is intended for testing and development
103
+ - May contain experimental features
104
+ - Not recommended for production use
105
+ - Feedback and bug reports are welcome
106
+
107
+ ---
108
+
109
+
1
110
  ## [0.26.1-develop.1] - 2025-12-03 (Beta)
2
111
 
3
112
  🧪 **This is a beta release for testing purposes.**
@@ -51,15 +51,15 @@ class EvmDirectPoolService {
51
51
  [enums_1.ChainIdEnum.HYPEREVM]: '0x3c774709b8D7395c1cf0A19850859eae8041Ee12',
52
52
  };
53
53
  this._geniusGastankDeployments = {
54
- [enums_1.ChainIdEnum.ETHEREUM]: '0x41eAaE1e29D03Af4AbC0Cc7306B29193dCA2260F',
55
- [enums_1.ChainIdEnum.AVALANCHE]: '0x2bcb1EA9d46b5159cb1cd69dC02A540bdcD1946f',
56
- [enums_1.ChainIdEnum.ARBITRUM]: '0xBD5d9ceB579007f155f26E28827233F47799F767',
57
- [enums_1.ChainIdEnum.BASE]: '0xB5a3B2e221397974235F5201d3c0928D741b761a',
58
- [enums_1.ChainIdEnum.OPTIMISM]: '0x592359200A65be918a0046B83172d357dC76DB6F',
59
- [enums_1.ChainIdEnum.POLYGON]: '0xFe2a8B38d9B5881f68EAC63E33f5422AfFB6230A',
60
- [enums_1.ChainIdEnum.BSC]: '0x180Ca0B7f0987b10a166CFcF96bb84243c7D6e1e',
61
- [enums_1.ChainIdEnum.SONIC]: '0xCdb785B3cF4D218671A2D6b9404e8c9386Ee7D12',
62
- [enums_1.ChainIdEnum.HYPEREVM]: '0x9B7d61891cA41D5954911e1Bc1dA2D8FEf4f2c27',
54
+ [enums_1.ChainIdEnum.ETHEREUM]: '0x0C7877388B897632F7D843C634D761Fd59b2151D',
55
+ [enums_1.ChainIdEnum.AVALANCHE]: '0xF93977284b4264B2Dfc74c0FC449770b1d4fD543',
56
+ [enums_1.ChainIdEnum.ARBITRUM]: '0xfDb035E0cff87E0F53DCC6DADFC28EB13536E70E',
57
+ [enums_1.ChainIdEnum.BASE]: '0x68a94011F255A340203b36eC505262f9cff29870',
58
+ [enums_1.ChainIdEnum.OPTIMISM]: '0x50f29A0664D587DA898207FE0f631dD2DBd6cA3C',
59
+ [enums_1.ChainIdEnum.POLYGON]: '0x8B29b4DcEC5E4d7da7D8C4e8206da746b7c3894d',
60
+ [enums_1.ChainIdEnum.BSC]: '0x2810A20B34311a1F69F74264AB48aC29240003FD',
61
+ [enums_1.ChainIdEnum.SONIC]: '0xB8C75a235257123bBA47D8F4f1c77eC8740Ba423',
62
+ [enums_1.ChainIdEnum.HYPEREVM]: '0x11e2FeBEe17e7F920D596Ef1ABDC928E4872B5E3',
63
63
  };
64
64
  this._permit2Deployments = {
65
65
  [enums_1.ChainIdEnum.ETHEREUM]: '0x000000000022D473030F116dDEE9F6B43aC78BA3',
@@ -95,7 +95,7 @@ class EvmDirectPoolService {
95
95
  ]);
96
96
  this._erc20SwapGaslimits = new Map([
97
97
  [enums_1.ChainIdEnum.ETHEREUM, BigInt(691727)],
98
- [enums_1.ChainIdEnum.BSC, BigInt(729876)],
98
+ [enums_1.ChainIdEnum.BSC, BigInt(850000)],
99
99
  [enums_1.ChainIdEnum.ARBITRUM, BigInt(1563420)],
100
100
  [enums_1.ChainIdEnum.AVALANCHE, BigInt(1350221)],
101
101
  [enums_1.ChainIdEnum.OPTIMISM, BigInt(1096668)],
@@ -1 +1 @@
1
- {"version":3,"file":"v3-dex-pair-discovery.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAElC,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAStD,qBAAa,gBAAiB,YAAW,eAAe;IACtD;;OAEG;IACI,MAAM,gBAAwB;IAErC;;OAEG;IACI,KAAK,0BASV;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAkD;gBAEtD,MAAM,EAAE,sBAAsB;IAoB7B,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IA0FlE,kBAAkB,CAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,kCAAkC,CAAC;IAgD9C,OAAO,CAAC,eAAe;IAkEvB,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,mBAAmB;IA2F3B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,uBAAuB;CAgBhC"}
1
+ {"version":3,"file":"v3-dex-pair-discovery.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAElC,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAUtD,qBAAa,gBAAiB,YAAW,eAAe;IACtD;;OAEG;IACI,MAAM,gBAAwB;IAErC;;OAEG;IACI,KAAK,0BAUV;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAkD;gBAEtD,MAAM,EAAE,sBAAsB;IAoB7B,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IA0FlE,kBAAkB,CAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,kCAAkC,CAAC;IAgD9C,OAAO,CAAC,eAAe;IAoEvB,OAAO,CAAC,qBAAqB;IAkE7B,OAAO,CAAC,mBAAmB;IA2F3B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,uBAAuB;CAiBhC"}
@@ -11,6 +11,7 @@ const min_amount_out_1 = require("../../../../utils/min-amount-out");
11
11
  const slipstream_quoter_abi_1 = require("../../uniswapv3/slipstream-quoter.abi");
12
12
  const ramses_quoter_abi_1 = require("../../uniswapv3/ramses-quoter.abi");
13
13
  const norm_dex_token_1 = require("../../../../utils/norm-dex-token");
14
+ const shadow_quoter_abi_1 = require("../../uniswapv3/shadow-quoter.abi");
14
15
  class UniV3PairAdapter {
15
16
  constructor(config) {
16
17
  /**
@@ -29,6 +30,7 @@ class UniV3PairAdapter {
29
30
  v3_dex_1.UniswapV3StyleDexEnum.VELODROME_CLMM,
30
31
  v3_dex_1.UniswapV3StyleDexEnum.AERODROME_CLMM,
31
32
  v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM,
33
+ v3_dex_1.UniswapV3StyleDexEnum.SHADOW_CLMM,
32
34
  ];
33
35
  /**
34
36
  * Viem public clients for each supported chain
@@ -163,10 +165,11 @@ class UniV3PairAdapter {
163
165
  throw new Error(`Quoter address missing for ${this.dexes} on chainId ${params.deployment.chainId}`);
164
166
  }
165
167
  const isRamses = deployment.dex === v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM;
166
- const useStandard = deployment.family === v3_dex_1.UniswapV3StyleDexFamilyEnum.UNI_LIKE || isRamses;
168
+ const isShadow = deployment.dex === v3_dex_1.UniswapV3StyleDexEnum.SHADOW_CLMM;
169
+ const useStandard = deployment.family === v3_dex_1.UniswapV3StyleDexFamilyEnum.UNI_LIKE || isRamses || isShadow;
167
170
  if (useStandard) {
168
- const abi = isRamses ? ramses_quoter_abi_1.ramsesQuoterAbi : uniswapV3_quoter_abi_1.uniswapV3QuoterAbi;
169
- const feeOrTickKey = isRamses ? 'tickSpacing' : 'fee';
171
+ const abi = isRamses ? ramses_quoter_abi_1.ramsesQuoterAbi : isShadow ? shadow_quoter_abi_1.shadowQuoterAbi : uniswapV3_quoter_abi_1.uniswapV3QuoterAbi;
172
+ const feeOrTickKey = isRamses || isShadow ? 'tickSpacing' : 'fee';
170
173
  const functionName = isRamses ? 'quoteExactInputSingleV3' : 'quoteExactInputSingle';
171
174
  const rawArgs = {
172
175
  tokenIn: (0, viem_1.getAddress)(tokenIn),
@@ -213,6 +216,8 @@ class UniV3PairAdapter {
213
216
  * compute the pair address
214
217
  */
215
218
  const results = deployments.flatMap(deployment => {
219
+ const isRamses = deployment.dex === v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM;
220
+ const isShadow = deployment.dex === v3_dex_1.UniswapV3StyleDexEnum.SHADOW_CLMM;
216
221
  if (deployment.family === v3_dex_1.UniswapV3StyleDexFamilyEnum.UNI_LIKE) {
217
222
  // Use fee tiers for UNI-like deployments
218
223
  return (deployment.fees || []).map(fee => this._computePairAddress({
@@ -223,7 +228,7 @@ class UniV3PairAdapter {
223
228
  }));
224
229
  }
225
230
  else if (deployment.family === v3_dex_1.UniswapV3StyleDexFamilyEnum.SLIPSTREAM) {
226
- if (deployment.dex === v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM) {
231
+ if (isRamses || isShadow) {
227
232
  // Use tick spacings for Ramses
228
233
  return (deployment.tickSpacings || []).map(tickSpacing => this._computePairAddress({
229
234
  deployment,
@@ -324,9 +329,12 @@ class UniV3PairAdapter {
324
329
  throw new Error(msg);
325
330
  }
326
331
  _normalizeSlipstreamTick(d, feeOrTick) {
327
- if (d.dex === v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM) {
332
+ const isRamses = d.dex === v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM;
333
+ const isShadow = d.dex === v3_dex_1.UniswapV3StyleDexEnum.SHADOW_CLMM;
334
+ if (isRamses || isShadow) {
328
335
  // Prefer mapping fee -> tickSpacing; if not found but user passed a known tick, allow it if present in deployment.tickSpacings.
329
- const mapped = v3_dex_deployments_1.ramsesFeeToTick[feeOrTick];
336
+ const mapping = isRamses ? v3_dex_deployments_1.ramsesFeeToTick : v3_dex_deployments_1.shadowFeeToTick;
337
+ const mapped = mapping[feeOrTick];
330
338
  if (typeof mapped === 'number')
331
339
  return mapped;
332
340
  // Fallback: if caller already provided a tickSpacing that exists in deployment metadata, accept it.
@@ -342,6 +350,7 @@ class UniV3PairAdapter {
342
350
  const preferDeployerDexes = new Set([
343
351
  v3_dex_1.UniswapV3StyleDexEnum.RAMSES_CLMM,
344
352
  v3_dex_1.UniswapV3StyleDexEnum.PANCAKESWAP_V3,
353
+ v3_dex_1.UniswapV3StyleDexEnum.SHADOW_CLMM,
345
354
  ]);
346
355
  if (preferDeployerDexes.has(d.dex)) {
347
356
  if (d.deployer)
@@ -1 +1 @@
1
- {"version":3,"file":"v3-dex-pair-discovery.adapter.js","sourceRoot":"","sources":["../../../../../src/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-dex-pair-discovery.adapter.js","sourceRoot":"","sources":["../../../../../src/lib/dex/pair-discovery/adapters/v3-dex-pair-discovery.adapter.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,7 @@
1
- import { Address, Hex } from 'viem';
2
1
  import { DexPairDiscoveryConfig, EvmDirectPoolAmountOutResponse, GetEvmDexPairParams, IDexPairAdapter, Ve33PairCandidate, Ve33PoolAmountOutParams } from '../pair-discovery.types';
3
2
  import { Ve33Deployment, Ve33StyleDeploymentEnum } from '../../../../protocols/ve33';
4
3
  import { ChainIdEnum } from '../../../../types/enums';
5
4
  export declare class Ve33PairAdapter implements IDexPairAdapter {
6
- /**
7
- * Aerodrome and Velodrome pair implementation addresses
8
- */
9
- aerodromeImplementation: Address;
10
- velodromeImplementation: Address;
11
- /**
12
- * Blackhole pair generator address and code hash
13
- */
14
- blackholeGenerator: Address;
15
- blackholeInitCodeHash: Hex;
16
- blackholePairCreationCode: string;
17
- /**
18
- * Pharaoh pair generator address and code hash
19
- */
20
- pharaohPairCodeHash: Hex;
21
5
  dexes: Ve33StyleDeploymentEnum[];
22
6
  deployments: Partial<Record<ChainIdEnum, Ve33Deployment[]>>;
23
7
  chains: ChainIdEnum[];
@@ -29,7 +13,7 @@ export declare class Ve33PairAdapter implements IDexPairAdapter {
29
13
  private _computePairAddress;
30
14
  private _computeSolidlyPairAddress;
31
15
  private _computeSolidlyForkPairAddress;
32
- private _computePharaohPairAddress;
16
+ private _computeGenericVe33PairAddress;
33
17
  private _computeBlackholePairAddress;
34
18
  private _determineImplementation;
35
19
  private _normalizeRouteForGetAmountsOut;
@@ -1 +1 @@
1
- {"version":3,"file":"ve33-dex-pair-discovery.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/lib/dex/pair-discovery/adapters/ve33-dex-pair-discovery.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAMP,GAAG,EAKJ,MAAM,MAAM,CAAC;AAEd,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,cAAc,EACd,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AAQpC,OAAO,EAAE,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAKpE,qBAAa,eAAgB,YAAW,eAAe;IACrD;;OAEG;IACI,uBAAuB,EAAmD,OAAO,CAAC;IAClF,uBAAuB,EAAmD,OAAO,CAAC;IAEzF;;OAEG;IACI,kBAAkB,EAAmD,OAAO,CAAC;IAC7E,qBAAqB,EAC8C,GAAG,CAAC;IACvE,yBAAyB,SAC+uyC;IAE/wyC;;OAEG;IACI,mBAAmB,EACgD,GAAG,CAAC;IAEvE,KAAK,4BAKV;IAEK,WAAW,iDAAsB;IAEjC,MAAM,gBAAmE;IAEhF,OAAO,CAAC,QAAQ,CAAkD;gBAEtD,MAAM,EAAE,sBAAsB;IAoB7B,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4FpE,kBAAkB,CAC7B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,8BAA8B,CAAC;IAuE1C,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,0BAA0B;IA2ClC,OAAO,CAAC,8BAA8B;IAsCtC,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,4BAA4B;IAyCpC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,+BAA+B;CAaxC"}
1
+ {"version":3,"file":"ve33-dex-pair-discovery.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/lib/dex/pair-discovery/adapters/ve33-dex-pair-discovery.adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,cAAc,EACd,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AAQpC,OAAO,EAAE,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAKpE,qBAAa,eAAgB,YAAW,eAAe;IAC9C,KAAK,4BAMV;IAEK,WAAW,iDAAsB;IAEjC,MAAM,gBAKX;IAEF,OAAO,CAAC,QAAQ,CAAkD;gBAEtD,MAAM,EAAE,sBAAsB;IAoB7B,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6FpE,kBAAkB,CAC7B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,8BAA8B,CAAC;IAuE1C,OAAO,CAAC,qBAAqB;IAyC7B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,0BAA0B;IA2ClC,OAAO,CAAC,8BAA8B;IAgDtC,OAAO,CAAC,8BAA8B;IA+BtC,OAAO,CAAC,4BAA4B;IAoEpC,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,+BAA+B;CAaxC"}
@@ -16,29 +16,20 @@ const constants_1 = require("../../../../utils/constants");
16
16
  const utils_1 = require("../../../../utils");
17
17
  class Ve33PairAdapter {
18
18
  constructor(config) {
19
- /**
20
- * Aerodrome and Velodrome pair implementation addresses
21
- */
22
- this.aerodromeImplementation = '0xA4e46b4f701c62e14DF11B48dCe76A7d793CD6d7';
23
- this.velodromeImplementation = '0x95885Af5492195F0754bE71AD1545Fe81364E531';
24
- /**
25
- * Blackhole pair generator address and code hash
26
- */
27
- this.blackholeGenerator = '0x34098b39Ec2E2C1A8F815bb8fA840D0D389afE1c';
28
- this.blackholeInitCodeHash = '0xa779d69ae15fc5dfe501f4a9880c751871e95e8f64da82bdba68e560e728b62a';
29
- this.blackholePairCreationCode = '0x61016060405260006002556000600d556000600e5560016013553480156200002657600080fd5b506040516200528438038062005284833981016040819052620000499162000766565b6001600160a01b038085166101005281151560805282811660c052831660a052604051839083906200007b9062000695565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620000af573d6000803e3d6000fd5b506001600160a01b031660e0528015620002e157826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000102573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200012c919081019062000812565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200016b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000195919081019062000812565b604051602001620001a8929190620008ca565b60405160208183030381529060405260009080519060200190620001ce929190620006a3565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200020e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000238919081019062000812565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620002a1919081019062000812565b604051602001620002b492919062000925565b60405160208183030381529060405260019080519060200190620002da929190620006a3565b50620004fa565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000320573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200034a919081019062000812565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000389573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003b3919081019062000812565b604051602001620003c692919062000976565b60405160208183030381529060405260009080519060200190620003ec929190620006a3565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200042c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000456919081019062000812565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000495573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004bf919081019062000812565b604051602001620004d2929190620009d3565b60405160208183030381529060405260019080519060200190620004f8929190620006a3565b505b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000539573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055f9190620009f5565b6200056c90600a62000b36565b6101208181525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d99190620009f5565b620005e690600a62000b36565b6101405250506040805160608101825242815260006020820181815292820181815260078054600181018255925291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68860039092029182015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555062000b839050565b6105c58062004cbf83390190565b828054620006b19062000b47565b90600052602060002090601f016020900481019282620006d5576000855562000720565b82601f10620006f057805160ff191683800117855562000720565b8280016001018555821562000720579182015b828111156200072057825182559160200191906001019062000703565b506200072e92915062000732565b5090565b5b808211156200072e576000815560010162000733565b80516001600160a01b03811681146200076157600080fd5b919050565b600080600080608085870312156200077d57600080fd5b620007888562000749565b9350620007986020860162000749565b9250620007a86040860162000749565b915060608501518015158114620007be57600080fd5b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620007fc578181015183820152602001620007e2565b838111156200080c576000848401525b50505050565b6000602082840312156200082557600080fd5b81516001600160401b03808211156200083d57600080fd5b818401915084601f8301126200085257600080fd5b815181811115620008675762000867620007c9565b604051601f8201601f19908116603f01168101908382118183101715620008925762000892620007c9565b81604052828152876020848701011115620008ac57600080fd5b620008bf836020830160208801620007df565b979650505050505050565b6e029ba30b13632ab189020a6a690169608d1b815260008351620008f681600f850160208801620007df565b602f60f81b600f91840191820152835162000919816010840160208801620007df565b01601001949350505050565b6473414d4d2d60d81b81526000835162000947816005850160208801620007df565b602f60f81b60059184019182015283516200096a816006840160208801620007df565b01600601949350505050565b7002b37b630ba34b632ab189020a6a690169607d1b815260008351620009a4816011850160208801620007df565b602f60f81b6011918401918201528351620009c7816012840160208801620007df565b01601201949350505050565b6476414d4d2d60d81b81526000835162000947816005850160208801620007df565b60006020828403121562000a0857600080fd5b815160ff8116811462000a1a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a7857816000190482111562000a5c5762000a5c62000a21565b8085161562000a6a57918102915b93841c939080029062000a3c565b509250929050565b60008262000a915750600162000b30565b8162000aa05750600062000b30565b816001811462000ab9576002811462000ac45762000ae4565b600191505062000b30565b60ff84111562000ad85762000ad862000a21565b50506001821b62000b30565b5060208310610133831016604e8410600b841016171562000b09575081810a62000b30565b62000b15838362000a37565b806000190482111562000b2c5762000b2c62000a21565b0290505b92915050565b600062000a1a60ff84168362000a80565b600181811c9082168062000b5c57607f821691505b60208210810362000b7d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610100516101205161014051613f5262000d6d6000396000818161046901528181612e250152818161310f015281816131d101526132dc01526000818161044601528181612de4015281816130d00152818161321301526132b601526000818161081401528181610c9001528181610d67015281816115120152818161221b0152818161236a015281816126a1015281816127440152818161282601528181612a3301528181612ad60152612bb801526000818161062a01528181611e92015281816122bd015281816128da0152818161296401528181612c6c0152612cf60152600081816104f30152818161067f0152818161074c0152818161097601528181610c1e01528181611692015281816118ff01528181611d39015281816124da01528181612b7e0152612cd5015260008181610331015281816104cb0152818161065a0152818161095501528181610bfd015281816115fc015281816118dd01528181611d1701528181612452015281816127ec0152818161294301528181613151015281816131980152818161327d01526133200152600081816102e9015281816103cf0152818161049b01528181610c5801528181610d2f015281816117580152818161233901528181612dbc015261309c0152613f526000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80637ecebe001161015c578063bda39cad116100ce578063d505accf11610087578063d505accf14610776578063dd62ed3e14610789578063ebeb31db146107b4578063f083be3b146107bc578063f140a35a146107c4578063fff6cae9146107d757600080fd5b8063bda39cad14610723578063bf944dbc1461072c578063c245febc14610735578063c5700a021461073e578063d21220a714610747578063d294f0931461076e57600080fd5b80639d63848a116101205780639d63848a1461064c5780639e8cc04b146106aa5780639f767c88146106bd578063a1ac4d13146106dd578063a9059cbb146106fd578063bc25cf771461071057600080fd5b80637ecebe00146105ab57806389afcb44146105cb5780638a7b8cf2146105f357806395d89b411461061d5780639af1d35a1461062557600080fd5b806323b872dd116102005780634d5a9f8a116101b95780634d5a9f8a14610529578063517b3f82146105495780635881c4751461055c5780635a76f25e1461056f5780636a6278421461057857806370a082311461058b57600080fd5b806323b872dd146103f1578063252c09d714610404578063313ce5671461041757806332c0defd14610431578063392f37e91461043a578063443cb4bc1461052057600080fd5b80630dfe1681116102525780630dfe16811461032c57806313345fe11461036b57806318160ddd1461038b5780631df8c717146103a2578063205aabf1146103aa57806322be3de1146103ca57600080fd5b8063022c0d9f1461028f57806306fdde03146102a45780630902f1ac146102c257806309047bdd146102e7578063095ea7b314610319575b600080fd5b6102a261029d36600461397d565b6107df565b005b6102ac610f7b565b6040516102b99190613a43565b60405180910390f35b600854600954600a545b604080519384526020840192909252908201526060016102b9565b7f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016102b9565b610309610327366004613a76565b611009565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b9565b61037e610379366004613aa2565b611076565b6040516102b99190613add565b61039460025481565b6040519081526020016102b9565b6102cc611272565b6103946103b8366004613b21565b60106020526000908152604090205481565b6103097f000000000000000000000000000000000000000000000000000000000000000081565b6103096103ff366004613b3e565b6112e1565b6102cc610412366004613b7f565b6113aa565b61041f601281565b60405160ff90911681526020016102b9565b610394600d5481565b600854600954604080517f000000000000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060208201529081019290925260608201527f0000000000000000000000000000000000000000000000000000000000000000151560808201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f00000000000000000000000000000000000000000000000000000000000000001660c082015260e0016102b9565b61039460085481565b610394610537366004613b21565b60116020526000908152604090205481565b610394610557366004613a76565b6113dd565b61037e61056a366004613b98565b6114c5565b61039460095481565b610394610586366004613b21565b6114d4565b610394610599366004613b21565b60046020526000908152604090205481565b6103946105b9366004613b21565b60066020526000908152604090205481565b6105de6105d9366004613b21565b611898565b604080519283526020830191909152016102b9565b6105fb611bc8565b60408051825181526020808401519082015291810151908201526060016102b9565b6102ac611c48565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000166020820152016102b9565b6103946106b8366004613b98565b611c55565b6103946106cb366004613b21565b600f6020526000908152604090205481565b6103946106eb366004613b21565b60126020526000908152604090205481565b61030961070b366004613a76565b611cc2565b6102a261071e366004613b21565b611cd8565b610394600e5481565b610394600b5481565b610394600c5481565b610394600a5481565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6105de611e09565b6102a2610784366004613bcd565b611f30565b610394610797366004613c44565b600360209081526000928352604080842090915290825290205481565b600754610394565b6102a2612217565b6103946107d2366004613c7d565b61231e565b6102a2612412565b60135460011461080a5760405162461bcd60e51b815260040161080190613ca2565b60405180910390fd5b60026013819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b187bd266040518163ffffffff1660e01b8152600401602060405180830381865afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190613cc2565b156108ca5760405162461bcd60e51b815260206004820152600660248201526514105554d15160d21b6044820152606401610801565b60008511806108d95750600084115b61090b5760405162461bcd60e51b8152602060048201526003602482015262494f4160e81b6044820152606401610801565b600854600954818710801561091f57508086105b6109505760405162461bcd60e51b8152602060048201526002602482015261125360f21b6044820152606401610801565b6000807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03898116908316148015906109c35750806001600160a01b0316896001600160a01b031614155b6109f45760405162461bcd60e51b8152602060048201526002602482015261125560f21b6044820152606401610801565b8a15610a0557610a05828a8d61255f565b8915610a1657610a16818a8c61255f565b8615610a8357604051639a7bff7960e01b81526001600160a01b038a1690639a7bff7990610a509033908f908f908e908e90600401613ce4565b600060405180830381600087803b158015610a6a57600080fd5b505af1158015610a7e573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb9190613d30565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190613d30565b9250505060008985610b689190613d5f565b8311610b75576000610b89565b610b7f8a86613d5f565b610b899084613d5f565b90506000610b978a86613d5f565b8311610ba4576000610bb8565b610bae8a86613d5f565b610bb89084613d5f565b90506000821180610bc95750600081115b610bfb5760405162461bcd60e51b815260206004820152600360248201526249494160e81b6044820152606401610801565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008315610d145760405163cc56b2c560e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000015156024820152610d1490612710906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cc56b2c590604401602060405180830381865afa158015610cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfb9190613d30565b610d059087613d76565b610d0f9190613d95565b61269d565b8215610deb5760405163cc56b2c560e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000015156024820152610deb90612710906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cc56b2c590604401602060405180830381865afa158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd29190613d30565b610ddc9086613d76565b610de69190613d95565b612a2f565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e539190613d30565b6040516370a0823160e01b81523060048201529096506001600160a01b038216906370a0823190602401602060405180830381865afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190613d30565b9450610eca8888612db8565b610ed48787612db8565b1015610f065760405162461bcd60e51b81526020600482015260016024820152604b60f81b6044820152606401610801565b5050610f1484848888612f04565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001601355505050505050505050565b60008054610f8890613db7565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb490613db7565b80156110015780601f10610fd657610100808354040283529160200191611001565b820191906000526020600020905b815481529060010190602001808311610fe457829003601f168201915b505050505081565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110649086815260200190565b60405180910390a35060015b92915050565b606060008367ffffffffffffffff81111561109357611093613deb565b6040519080825280602002602001820160405280156110bc578160200160208202803683370190505b506007549091506000906110d290600190613d5f565b905060006110e08587613d76565b6110ea9083613d5f565b90506000805b83831015611262576111028784613e01565b915060006007848154811061111957611119613e19565b9060005260206000209060030201600001546007848154811061113e5761113e613e19565b90600052602060002090600302016000015461115a9190613d5f565b90506000816007868154811061117257611172613e19565b9060005260206000209060030201600101546007868154811061119757611197613e19565b9060005260206000209060030201600101546111b39190613d5f565b6111bd9190613d95565b9050600082600787815481106111d5576111d5613e19565b906000526020600020906003020160020154600787815481106111fa576111fa613e19565b9060005260206000209060030201600201546112169190613d5f565b6112209190613d95565b905061122e8c8e8484613098565b88858151811061124057611240613e19565b602090810291909101015250505060010161125b8784613e01565b92506110f0565b509293505050505b949350505050565b600b54600c544260008080611290600854600954600a549192909190565b9250925092508381146112d95760006112a98286613d5f565b90506112b58185613d76565b6112bf9088613e01565b96506112cb8184613d76565b6112d59087613e01565b9550505b505050909192565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061131b57506000198114155b1561139157600061132c8583613d5f565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61139c86868661338d565b6001925050505b9392505050565b600781815481106113ba57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b6000806113e8611bc8565b90506000806113f5611272565b5084519193509150420361145d576007805461141390600290613d5f565b8154811061142357611423613e19565b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505b825160009061146c9042613d5f565b90506000818560200151856114819190613d5f565b61148b9190613d95565b90506000828660400151856114a09190613d5f565b6114aa9190613d95565b90506114b8888a8484613098565b9998505050505050505050565b606061126a8484846001611076565b60006013546001146114f85760405162461bcd60e51b815260040161080190613ca2565b60026013556040516360e8ad4760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906360e8ad4790602401602060405180830381865afa158015611561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115859190613cc2565b80156115915750600254155b156115de5760405162461bcd60e51b815260206004820152601860248201527f47454e455349535f504f4f4c5f4d494e545f4c4f434b454400000000000000006044820152606401610801565b6008546009546040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f9190613d30565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156116d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fd9190613d30565b9050600061170b8584613d5f565b905060006117198584613d5f565b60025490915060008190036117ca576103e861173d6117388486613d76565b61344d565b6117479190613d5f565b975061175660006103e86134bd565b7f0000000000000000000000000000000000000000000000000000000000000000156117c5576402540be40061178c8484612db8565b116117c55760405162461bcd60e51b81526020600482015260096024820152684d494e494d554d5f4b60b81b6044820152606401610801565b6117ff565b6117fc876117d88386613d76565b6117e29190613d95565b876117ed8486613d76565b6117f79190613d95565b613550565b97505b600088116118355760405162461bcd60e51b8152602060048201526003602482015262494c4d60e81b6044820152606401610801565b61183f89896134bd565b61184b85858989612f04565b604080518481526020810184905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001601355509395945050505050565b6000806013546001146118bd5760405162461bcd60e51b815260040161080190613ca2565b60026013556008546009546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119779190613d30565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e59190613d30565b306000908152600460205260409020546002549192509080611a078584613d76565b611a119190613d95565b995080611a1e8484613d76565b611a289190613d95565b985060008a118015611a3a5750600089115b611a6c5760405162461bcd60e51b815260206004820152600360248201526224a62160e91b6044820152606401610801565b611a763083613566565b611a81868c8c61255f565b611a8c858c8b61255f565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015611ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af49190613d30565b6040516370a0823160e01b81523060048201529094506001600160a01b038616906370a0823190602401602060405180830381865afa158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f9190613d30565b9250611b6d84848a8a612f04565b604080518b8152602081018b90526001600160a01b038d169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050506001601381905550915091565b611bec60405180606001604052806000815260200160008152602001600081525090565b60078054611bfc90600190613d5f565b81548110611c0c57611c0c613e19565b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905090565b60018054610f8890613db7565b600080611c658585856001611076565b90506000805b8251811015611cad57828181518110611c8657611c86613e19565b602002602001015182611c999190613e01565b915080611ca581613e2f565b915050611c6b565b50611cb88482613d95565b9695505050505050565b6000611ccf33848461338d565b50600192915050565b601354600114611cfa5760405162461bcd60e51b815260040161080190613ca2565b60026013556008546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091611dc79184918691906001600160a01b038416906370a08231906024015b602060405180830381865afa158015611d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db89190613d30565b611dc29190613d5f565b61255f565b6009546040516370a0823160e01b8152306004820152611dff9183918691906001600160a01b038416906370a0823190602401611d77565b5050600160135550565b600080611e15336135f1565b50503360009081526011602090815260408083205460129092529091205481151580611e415750600081115b15611f2c573360008181526011602090815260408083208390556012909152808220919091555163299e7ae760e11b8152600481019190915260248101839052604481018290526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063533cf5ce90606401600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b505060408051858152602081018590523393508392507f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e94645910160405180910390a35b9091565b42841015611f665760405162461bcd60e51b815260206004820152600360248201526204558560ec1b6044820152606401610801565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051611f969190613e48565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152918152815160209283012060058190556001600160a01b038a166000908152600690935290822080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761206183613e2f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016120da92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612145573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061217b5750886001600160a01b0316816001600160a01b0316145b6121b05760405162461bcd60e51b8152600401610801906020808252600490820152634953494760e01b604082015260600190565b6001600160a01b038981166000818152600360209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c124a4a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b9190613ee3565b60405163f8518b8960e01b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063f8518b8990602401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b5050505050565b60085460095460405163cc56b2c560e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000151560248201526000929190612710907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc56b2c590604401602060405180830381865afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd9190613d30565b6123e79087613d76565b6123f19190613d95565b6123fb9086613d5f565b945061240985858484613098565b95945050505050565b6013546001146124345760405162461bcd60e51b815260040161080190613ca2565b60026013556040516370a0823160e01b8152306004820152612558907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613d30565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190613d30565b600854600954612f04565b6001601355565b6000836001600160a01b03163b116125a35760405162461bcd60e51b815260206004820152600760248201526621a7a222a622a760c91b6044820152606401610801565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916125ff9190613f00565b6000604051808303816000865af19150503d806000811461263c576040519150601f19603f3d011682016040523d82523d6000602084013e612641565b606091505b509150915081801561266b57508051158061266b57508080602001905181019061266b9190613cc2565b6123175760405162461bcd60e51b81526020600482015260036024820152621254d560ea1b6044820152606401610801565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637be1623e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127219190613ee3565b604051632db39b2f60e21b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b6ce6cbc90602401602060405180830381865afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127af9190613d30565b905060006001600160a01b0383166127c85760006127df565b6127106127d58386613d76565b6127df9190613d95565b9050801561281f576128127f0000000000000000000000000000000000000000000000000000000000000000848361255f565b61281c8185613d5f565b93505b60006127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663956f94a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190613d30565b6128b09087613d76565b6128ba9190613d95565b604051638d4dabff60e01b815260048101829052600160248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638d4dabff90604401600060405180830381600087803b15801561292657600080fd5b505af115801561293a573d6000803e3d6000fd5b505050506129897f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008761255f565b6129938186613d5f565b9450600060025486670de0b6b3a76400006129ae9190613d76565b6129b89190613d95565b905080156129d85780600d60008282546129d29190613e01565b90915550505b337f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a860284612a05858a613e01565b612a0f9190613e01565b6040805191825260006020830152015b60405180910390a2505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637be1623e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab39190613ee3565b604051632db39b2f60e21b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b6ce6cbc90602401602060405180830381865afa158015612b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b419190613d30565b905060006001600160a01b038316612b5a576000612b71565b612710612b678386613d76565b612b719190613d95565b90508015612bb157612ba47f0000000000000000000000000000000000000000000000000000000000000000848361255f565b612bae8185613d5f565b93505b60006127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663956f94a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c389190613d30565b612c429087613d76565b612c4c9190613d95565b604051638d4dabff60e01b815260048101829052600060248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638d4dabff90604401600060405180830381600087803b158015612cb857600080fd5b505af1158015612ccc573d6000803e3d6000fd5b50505050612d1b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008761255f565b612d258186613d5f565b9450600060025486670de0b6b3a7640000612d409190613d76565b612d4a9190613d95565b90508015612d6a5780600e6000828254612d649190613e01565b90915550505b337f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a8602600085612d99868b613e01565b612da39190613e01565b60408051928352602083019190915201612a1f565b60007f000000000000000000000000000000000000000000000000000000000000000015612ef35760007f0000000000000000000000000000000000000000000000000000000000000000612e1585670de0b6b3a7640000613d76565b612e1f9190613d95565b905060007f0000000000000000000000000000000000000000000000000000000000000000612e5685670de0b6b3a7640000613d76565b612e609190613d95565b90506000670de0b6b3a7640000612e778385613d76565b612e819190613d95565b90506000670de0b6b3a7640000612e988480613d76565b612ea29190613d95565b670de0b6b3a7640000612eb58680613d76565b612ebf9190613d95565b612ec99190613e01565b9050670de0b6b3a7640000612ede8284613d76565b612ee89190613d95565b945050505050611070565b612efd8284613d76565b9050611070565b600a544290600090612f169083613d5f565b9050600081118015612f2757508315155b8015612f3257508215155b15612f7957612f418185613d76565b600b6000828254612f529190613e01565b90915550612f6290508184613d76565b600c6000828254612f739190613e01565b90915550505b6000612f83611bc8565b8051909150612f929084613d5f565b91506107088211156130475760408051606081018252848152600b5460208201908152600c549282019283526007805460018101825560009190915291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600390930292830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555b60088790556009869055600a83905560408051888152602081018890527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a150505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000001561331b5760006130cc8484612db8565b90507f000000000000000000000000000000000000000000000000000000000000000061310185670de0b6b3a7640000613d76565b61310b9190613d95565b93507f000000000000000000000000000000000000000000000000000000000000000061314084670de0b6b3a7640000613d76565b61314a9190613d95565b92506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03161461318f578486613192565b85855b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614613211577f000000000000000000000000000000000000000000000000000000000000000061320289670de0b6b3a7640000613d76565b61320c9190613d95565b61324e565b7f000000000000000000000000000000000000000000000000000000000000000061324489670de0b6b3a7640000613d76565b61324e9190613d95565b9750600061326661325f848b613e01565b8584613751565b6132709083613d5f565b9050670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316146132da577f00000000000000000000000000000000000000000000000000000000000000006132fc565b7f00000000000000000000000000000000000000000000000000000000000000005b6133069083613d76565b6133109190613d95565b94505050505061126a565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161461335e578385613361565b84845b90925090506133708783613e01565b61337a8289613d76565b6133849190613d95565b9250505061126a565b613396836135f1565b61339f826135f1565b6001600160a01b038316600090815260046020526040812080548392906133c7908490613d5f565b90915550506001600160a01b038216600090815260046020526040812080548392906133f4908490613e01565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161344091815260200190565b60405180910390a3505050565b600060038211156134ae5750806000613467600283613d95565b613472906001613e01565b90505b818110156134a85790508060028161348d8186613d95565b6134979190613e01565b6134a19190613d95565b9050613475565b50919050565b81156134b8575060015b919050565b6134c6826135f1565b80600260008282546134d89190613e01565b90915550506001600160a01b03821660009081526004602052604081208054839290613505908490613e01565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600081831061355f57816113a3565b5090919050565b61356f826135f1565b80600260008282546135819190613d5f565b90915550506001600160a01b038216600090815260046020526040812080548392906135ae908490613d5f565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001613544565b6001600160a01b038116600090815260046020526040902054801561371f576001600160a01b0382166000908152600f60209081526040808320805460108085529285208054600d54600e549481905594909552829055936136538584613d5f565b905060006136618584613d5f565b905081156136bc576000670de0b6b3a764000061367e848a613d76565b6136889190613d95565b6001600160a01b038a166000908152601160205260408120805492935083929091906136b5908490613e01565b9091555050505b8015613715576000670de0b6b3a76400006136d7838a613d76565b6136e19190613d95565b6001600160a01b038a1660009081526012602052604081208054929350839290919061370e908490613e01565b9091555050505b5050505050505050565b600d546001600160a01b0383166000908152600f6020908152604080832093909355600e546010909152919020555050565b6000805b60ff8110156138575782600061376b8783613860565b9050858110156137bb57600061378188876138fd565b61378b8389613d5f565b61379d90670de0b6b3a7640000613d76565b6137a79190613d95565b90506137b38187613e01565b9550506137fd565b60006137c788876138fd565b6137d18884613d5f565b6137e390670de0b6b3a7640000613d76565b6137ed9190613d95565b90506137f98187613d5f565b9550505b818511156138265760016138118387613d5f565b11613821578493505050506113a3565b613842565b60016138328684613d5f565b11613842578493505050506113a3565b5050808061384f90613e2f565b915050613755565b50909392505050565b6000670de0b6b3a7640000828185816138798280613d76565b6138839190613d95565b61388d9190613d76565b6138979190613d95565b6138a19190613d76565b6138ab9190613d95565b670de0b6b3a76400008084816138c18280613d76565b6138cb9190613d95565b6138d59190613d76565b6138df9190613d95565b6138e99086613d76565b6138f39190613d95565b6113a39190613e01565b6000670de0b6b3a764000083816139148280613d76565b61391e9190613d95565b6139289190613d76565b6139329190613d95565b670de0b6b3a7640000806139468580613d76565b6139509190613d95565b61395b866003613d76565b6138e99190613d76565b6001600160a01b038116811461397a57600080fd5b50565b60008060008060006080868803121561399557600080fd5b853594506020860135935060408601356139ae81613965565b9250606086013567ffffffffffffffff808211156139cb57600080fd5b818801915088601f8301126139df57600080fd5b8135818111156139ee57600080fd5b896020828501011115613a0057600080fd5b9699959850939650602001949392505050565b60005b83811015613a2e578181015183820152602001613a16565b83811115613a3d576000848401525b50505050565b6020815260008251806020840152613a62816040850160208701613a13565b601f01601f19169190910160400192915050565b60008060408385031215613a8957600080fd5b8235613a9481613965565b946020939093013593505050565b60008060008060808587031215613ab857600080fd5b8435613ac381613965565b966020860135965060408601359560600135945092505050565b6020808252825182820181905260009190848201906040850190845b81811015613b1557835183529284019291840191600101613af9565b50909695505050505050565b600060208284031215613b3357600080fd5b81356113a381613965565b600080600060608486031215613b5357600080fd5b8335613b5e81613965565b92506020840135613b6e81613965565b929592945050506040919091013590565b600060208284031215613b9157600080fd5b5035919050565b600080600060608486031215613bad57600080fd5b8335613bb881613965565b95602085013595506040909401359392505050565b600080600080600080600060e0888a031215613be857600080fd5b8735613bf381613965565b96506020880135613c0381613965565b95506040880135945060608801359350608088013560ff81168114613c2757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215613c5757600080fd5b8235613c6281613965565b91506020830135613c7281613965565b809150509250929050565b60008060408385031215613c9057600080fd5b823591506020830135613c7281613965565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215613cd457600080fd5b815180151581146113a357600080fd5b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600060208284031215613d4257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613d7157613d71613d49565b500390565b6000816000190483118215151615613d9057613d90613d49565b500290565b600082613db257634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680613dcb57607f821691505b6020821081036134a857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60008219821115613e1457613e14613d49565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201613e4157613e41613d49565b5060010190565b600080835481600182811c915080831680613e6457607f831692505b60208084108203613e8357634e487b7160e01b86526022600452602486fd5b818015613e975760018114613ea857613ed5565b60ff19861689528489019650613ed5565b60008a81526020902060005b86811015613ecd5781548b820152908501908301613eb4565b505084890196505b509498975050505050505050565b600060208284031215613ef557600080fd5b81516113a381613965565b60008251613f12818460208701613a13565b919091019291505056fea264697066735822122066c83ac32f66aad854faac6b14ff71929aac031a3292cdf2e67bb09a9cf20f9f64736f6c634300080d003360e060405234801561001057600080fd5b506040516105c53803806105c583398101604081905261002f91610066565b336080526001600160a01b0391821660a0521660c052610099565b80516001600160a01b038116811461006157600080fd5b919050565b6000806040838503121561007957600080fd5b6100828361004a565b91506100906020840161004a565b90509250929050565b60805160a05160c0516104e36100e26000396000818161012c015261026001526000818160fb015261022601526000818160c60152818161016201526101ef01526104e36000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063533cf5ce1461005c5780635b3c924814610071578063651d83f91461008c5780638d4dabff14610095578063f8518b89146100a8575b600080fd5b61006f61006a36600461039c565b6100bb565b005b61007a60015481565b60405190815260200160405180910390f35b61007a60005481565b61006f6100a33660046103dd565b610157565b61006f6100b636600461040d565b6101e4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100f057600080fd5b8115610121576101217f00000000000000000000000000000000000000000000000000000000000000008484610291565b8015610152576101527f00000000000000000000000000000000000000000000000000000000000000008483610291565b505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018c57600080fd5b6000821180156101995750805b156101b557816000808282546101af919061042f565b90915550505b6000821180156101c3575080155b156101e05781600160008282546101da919061042f565b90915550505b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021957600080fd5b600054156102535761024e7f000000000000000000000000000000000000000000000000000000000000000082600054610291565b600080555b6001541561028e576102887f000000000000000000000000000000000000000000000000000000000000000082600154610291565b60006001555b50565b6000836001600160a01b03163b116102a857600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916103049190610455565b6000604051808303816000865af19150503d8060008114610341576040519150601f19603f3d011682016040523d82523d6000602084013e610346565b606091505b50915091508180156103705750805115806103705750808060200190518101906103709190610490565b61037957600080fd5b5050505050565b80356001600160a01b038116811461039757600080fd5b919050565b6000806000606084860312156103b157600080fd5b6103ba84610380565b95602085013595506040909401359392505050565b801515811461028e57600080fd5b600080604083850312156103f057600080fd5b823591506020830135610402816103cf565b809150509250929050565b60006020828403121561041f57600080fd5b61042882610380565b9392505050565b6000821982111561045057634e487b7160e01b600052601160045260246000fd5b500190565b6000825160005b81811015610476576020818601810151858301520161045c565b81811115610485576000828501525b509190910192915050565b6000602082840312156104a257600080fd5b8151610428816103cf56fea26469706673582212202e876ac1aeaa0d201af78e5c0d06cabaf7e89c22b654061a6df837eebc9557df64736f6c634300080d0033';
30
- /**
31
- * Pharaoh pair generator address and code hash
32
- */
33
- this.pharaohPairCodeHash = '0xbf2404274de2b11f05e5aebd49e508de933034cb5fa2d0ac3de8cbd4bcef47dc';
34
19
  this.dexes = [
35
20
  ve33_1.Ve33StyleDeploymentEnum.AERODROME,
36
21
  ve33_1.Ve33StyleDeploymentEnum.VELODROME,
37
22
  ve33_1.Ve33StyleDeploymentEnum.BLACKHOLE,
38
23
  ve33_1.Ve33StyleDeploymentEnum.PHARAOH,
24
+ ve33_1.Ve33StyleDeploymentEnum.SHADOW,
39
25
  ];
40
26
  this.deployments = ve33_dex_deployments_1.ve33DexDeployments;
41
- this.chains = [enums_1.ChainIdEnum.BASE, enums_1.ChainIdEnum.OPTIMISM, enums_1.ChainIdEnum.AVALANCHE];
27
+ this.chains = [
28
+ enums_1.ChainIdEnum.BASE,
29
+ enums_1.ChainIdEnum.OPTIMISM,
30
+ enums_1.ChainIdEnum.AVALANCHE,
31
+ enums_1.ChainIdEnum.SONIC,
32
+ ];
42
33
  this._clients = {};
43
34
  for (const [chainIdStr, rpcUrl] of Object.entries(config.rpcs)) {
44
35
  const network = Number(chainIdStr);
@@ -71,6 +62,7 @@ class Ve33PairAdapter {
71
62
  tokenIn: tokenInNorm,
72
63
  tokenOut: tokenOutNorm,
73
64
  deployments,
65
+ network,
74
66
  });
75
67
  if (!pairAddresses || pairAddresses.length === 0) {
76
68
  throw new Error(`No Ve33 pairs could be computed for tokens ${tokenInNorm} / ${tokenOutNorm} on chain ID ${network}`);
@@ -199,10 +191,12 @@ class Ve33PairAdapter {
199
191
  const { pair: stablePair } = this._computePairAddress({
200
192
  ...baseParams,
201
193
  volatility: ve33_1.VolatilityEnum.STABLE,
194
+ network: params.network,
202
195
  });
203
196
  const { pair: volatilePair } = this._computePairAddress({
204
197
  ...baseParams,
205
198
  volatility: ve33_1.VolatilityEnum.VOLATILE,
199
+ network: params.network,
206
200
  });
207
201
  const dex = deployment.tag;
208
202
  results.push({ dex, pair: stablePair, volatility: ve33_1.VolatilityEnum.STABLE }, { dex, pair: volatilePair, volatility: ve33_1.VolatilityEnum.VOLATILE });
@@ -217,6 +211,7 @@ class Ve33PairAdapter {
217
211
  return this._computeSolidlyPairAddress(params);
218
212
  case ve33_1.Ve33StyleDeploymentEnum.BLACKHOLE:
219
213
  case ve33_1.Ve33StyleDeploymentEnum.PHARAOH:
214
+ case ve33_1.Ve33StyleDeploymentEnum.SHADOW:
220
215
  return this._computeSolidlyForkPairAddress(params);
221
216
  default:
222
217
  throw new Error(`Unsupported Ve33 deployment tag for pair computation: ${dex}`);
@@ -258,8 +253,10 @@ class Ve33PairAdapter {
258
253
  throw new Error('ZeroAddress');
259
254
  const [token0, token1] = (0, sort_addresses_1.sortAddresses)((0, viem_1.getAddress)(A), (0, viem_1.getAddress)(B));
260
255
  const stable = params.volatility === ve33_1.VolatilityEnum.STABLE;
261
- if (params.deployment.tag === ve33_1.Ve33StyleDeploymentEnum.PHARAOH) {
262
- const pair = this._computePharaohPairAddress({
256
+ const isPharaoh = params.deployment.tag === ve33_1.Ve33StyleDeploymentEnum.PHARAOH;
257
+ const isShadow = params.deployment.tag === ve33_1.Ve33StyleDeploymentEnum.SHADOW;
258
+ if (isPharaoh || isShadow) {
259
+ const pair = this._computeGenericVe33PairAddress({
263
260
  token0,
264
261
  token1,
265
262
  stable,
@@ -269,27 +266,51 @@ class Ve33PairAdapter {
269
266
  }
270
267
  else if (params.deployment.tag === ve33_1.Ve33StyleDeploymentEnum.BLACKHOLE) {
271
268
  // also pass SORTED tokens here (bugfix)
272
- const pair = this._computeBlackholePairAddress({ token0, token1, stable });
269
+ const pair = this._computeBlackholePairAddress({
270
+ token0,
271
+ token1,
272
+ stable,
273
+ network: params.network,
274
+ });
273
275
  return { dex: params.deployment.tag, pair, volatility: params.volatility };
274
276
  }
275
277
  throw new Error(`Unsupported Ve33 fork deployment tag for pair computation: ${params.deployment.tag}`);
276
278
  }
277
- _computePharaohPairAddress(params) {
279
+ _computeGenericVe33PairAddress(params) {
278
280
  // Compute salt matching Solidity's abi.encodePacked(token0, token1, stable)
279
281
  const salt = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['address', 'address', 'bool'], [params.token0, params.token1, params.stable]));
280
282
  const deployer = (0, viem_1.getAddress)(params.deployment.poolFactory);
283
+ const codeHash = params.deployment.codeHash;
284
+ if (!codeHash) {
285
+ throw new Error(`Missing code hash for deployment ${params.deployment.tag}`);
286
+ }
281
287
  // Compute CREATE2 address
282
- const pair = (0, viem_1.getAddress)(`0x${(0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes1', 'address', 'bytes32', 'bytes32'], ['0xff', deployer, salt, this.pharaohPairCodeHash])).slice(-40)}`);
288
+ const pair = (0, viem_1.getAddress)(`0x${(0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes1', 'address', 'bytes32', 'bytes32'], ['0xff', deployer, salt, codeHash])).slice(-40)}`);
283
289
  return pair;
284
290
  }
285
291
  _computeBlackholePairAddress(params) {
286
292
  const [token0, token1] = (0, sort_addresses_1.sortAddresses)(params.token0, params.token1);
287
- const factory = (0, viem_1.getAddress)('0xfE926062Fb99CA5653080d6C14fE945Ad68c265C');
293
+ const deployment = this.deployments[params.network]?.find(d => d.tag === ve33_1.Ve33StyleDeploymentEnum.BLACKHOLE);
294
+ if (!deployment) {
295
+ throw new Error(`No BLACKHOLE deployment found for chain ID: ${params.network}`);
296
+ }
297
+ const factory = deployment?.poolFactory;
298
+ const creationCode = deployment?.codeHash;
299
+ const generator = deployment?.implementation;
300
+ if (!creationCode) {
301
+ throw new Error(`Missing code hash for BLACKHOLE deployment on chain ID: ${params.network}`);
302
+ }
303
+ if (!generator) {
304
+ throw new Error(`Missing generator implementation for BLACKHOLE deployment on chain ID: ${params.network}`);
305
+ }
306
+ if (!factory) {
307
+ throw new Error(`Missing factory address for BLACKHOLE deployment on chain ID: ${params.network}`);
308
+ }
288
309
  // Encode constructor arguments
289
310
  const constructorArgs = (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)('address, address, address, bool'), [factory, token0, token1, params.stable]);
290
311
  // Compute the full init code (creation code + constructor args)
291
312
  const initCode = (0, viem_1.concatHex)([
292
- this.blackholePairCreationCode, // This is the static part
313
+ creationCode, // This is the static part
293
314
  constructorArgs,
294
315
  ]);
295
316
  // Hash the full init code
@@ -297,15 +318,21 @@ class Ve33PairAdapter {
297
318
  // Compute salt
298
319
  const salt = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['address', 'address', 'bool'], [token0, token1, params.stable]));
299
320
  // Compute CREATE2 address
300
- const pair = (0, viem_1.getAddress)(`0x${(0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes1', 'address', 'bytes32', 'bytes32'], ['0xff', this.blackholeGenerator, salt, initCodeHash])).slice(-40)}`);
321
+ const pair = (0, viem_1.getAddress)(`0x${(0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes1', 'address', 'bytes32', 'bytes32'], ['0xff', generator, salt, initCodeHash])).slice(-40)}`);
301
322
  return pair;
302
323
  }
303
324
  _determineImplementation(deployment) {
304
325
  switch (deployment.tag) {
305
326
  case ve33_1.Ve33StyleDeploymentEnum.AERODROME:
306
- return this.aerodromeImplementation;
327
+ if (!deployment || !deployment?.implementation) {
328
+ throw new Error(`Missing implementation for AERODROME deployment on BASE`);
329
+ }
330
+ return deployment.implementation;
307
331
  case ve33_1.Ve33StyleDeploymentEnum.VELODROME:
308
- return this.velodromeImplementation;
332
+ if (!deployment || !deployment?.implementation) {
333
+ throw new Error(`Missing implementation for VELODROME deployment on OPTIMISM`);
334
+ }
335
+ return deployment.implementation;
309
336
  default:
310
337
  throw new Error(`Unsupported Ve33 deployment tag: ${deployment.tag}`);
311
338
  }