@stake-dao/reader 0.1.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 (182) hide show
  1. package/dist/esm/batches/curveStrats.js +163 -0
  2. package/dist/esm/batches/curveStrats.js.map +1 -0
  3. package/dist/esm/batches/index.js +4 -0
  4. package/dist/esm/batches/index.js.map +1 -0
  5. package/dist/esm/batches/sdtGaugeRewards.js +22 -0
  6. package/dist/esm/batches/sdtGaugeRewards.js.map +1 -0
  7. package/dist/esm/batches/tokenData.js +22 -0
  8. package/dist/esm/batches/tokenData.js.map +1 -0
  9. package/dist/esm/batches/types.js +2 -0
  10. package/dist/esm/batches/types.js.map +1 -0
  11. package/dist/esm/endpoints.js +3 -0
  12. package/dist/esm/endpoints.js.map +1 -0
  13. package/dist/esm/index.js +8 -0
  14. package/dist/esm/index.js.map +1 -0
  15. package/dist/esm/number.js +45 -0
  16. package/dist/esm/number.js.map +1 -0
  17. package/dist/esm/prices.js +70 -0
  18. package/dist/esm/prices.js.map +1 -0
  19. package/dist/esm/sdt/sdt.js +92 -0
  20. package/dist/esm/sdt/sdt.js.map +1 -0
  21. package/dist/esm/sdt/veSdtAlternativeYields.js +19 -0
  22. package/dist/esm/sdt/veSdtAlternativeYields.js.map +1 -0
  23. package/dist/esm/strategies/curve/build.js +123 -0
  24. package/dist/esm/strategies/curve/build.js.map +1 -0
  25. package/dist/esm/strategies/curve/endpoints.js +6 -0
  26. package/dist/esm/strategies/curve/endpoints.js.map +1 -0
  27. package/dist/esm/strategies/curve/fetch/curveApiData/abi.js +80 -0
  28. package/dist/esm/strategies/curve/fetch/curveApiData/abi.js.map +1 -0
  29. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js +24 -0
  30. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js.map +1 -0
  31. package/dist/esm/strategies/curve/fetch/curveApiData/config.js +47 -0
  32. package/dist/esm/strategies/curve/fetch/curveApiData/config.js.map +1 -0
  33. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js +172 -0
  34. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js.map +1 -0
  35. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.js +33 -0
  36. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.js.map +1 -0
  37. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js +36 -0
  38. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js.map +1 -0
  39. package/dist/esm/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.js +26 -0
  40. package/dist/esm/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.js.map +1 -0
  41. package/dist/esm/strategies/curve/fetch/curveApiData/getRegistries.js +20 -0
  42. package/dist/esm/strategies/curve/fetch/curveApiData/getRegistries.js.map +1 -0
  43. package/dist/esm/strategies/curve/fetch/getAprBreakdown.js +73 -0
  44. package/dist/esm/strategies/curve/fetch/getAprBreakdown.js.map +1 -0
  45. package/dist/esm/strategies/curve/fetch/getCvxApr.js +33 -0
  46. package/dist/esm/strategies/curve/fetch/getCvxApr.js.map +1 -0
  47. package/dist/esm/strategies/curve/fetch/getOnlyboostData.js +63 -0
  48. package/dist/esm/strategies/curve/fetch/getOnlyboostData.js.map +1 -0
  49. package/dist/esm/strategies/curve/fetch/getStratsWithApr.js +88 -0
  50. package/dist/esm/strategies/curve/fetch/getStratsWithApr.js.map +1 -0
  51. package/dist/esm/strategies/curve/fetch/index.js +209 -0
  52. package/dist/esm/strategies/curve/fetch/index.js.map +1 -0
  53. package/dist/esm/strategies/curve/fetch/types.js +2 -0
  54. package/dist/esm/strategies/curve/fetch/types.js.map +1 -0
  55. package/dist/esm/strategies/curve/httpCalls.js +80 -0
  56. package/dist/esm/strategies/curve/httpCalls.js.map +1 -0
  57. package/dist/esm/strategies/curve/onChainCalls.js +28 -0
  58. package/dist/esm/strategies/curve/onChainCalls.js.map +1 -0
  59. package/dist/esm/strategies/types.js +2 -0
  60. package/dist/esm/strategies/types.js.map +1 -0
  61. package/dist/esm/strategies/utils/boost.js +30 -0
  62. package/dist/esm/strategies/utils/boost.js.map +1 -0
  63. package/dist/esm/strategies/utils/decodeEtherscanFactoryEvent.js +40 -0
  64. package/dist/esm/strategies/utils/decodeEtherscanFactoryEvent.js.map +1 -0
  65. package/dist/esm/strategies/utils/index.js +7 -0
  66. package/dist/esm/strategies/utils/index.js.map +1 -0
  67. package/dist/esm/strategies/utils/promise.js +10 -0
  68. package/dist/esm/strategies/utils/promise.js.map +1 -0
  69. package/dist/esm/strategies/utils/sdt.js +112 -0
  70. package/dist/esm/strategies/utils/sdt.js.map +1 -0
  71. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  72. package/dist/esm/utils.js +113 -0
  73. package/dist/esm/utils.js.map +1 -0
  74. package/dist/types/batches/curveStrats.d.ts +4 -0
  75. package/dist/types/batches/curveStrats.d.ts.map +1 -0
  76. package/dist/types/batches/index.d.ts +4 -0
  77. package/dist/types/batches/index.d.ts.map +1 -0
  78. package/dist/types/batches/sdtGaugeRewards.d.ts +4 -0
  79. package/dist/types/batches/sdtGaugeRewards.d.ts.map +1 -0
  80. package/dist/types/batches/tokenData.d.ts +4 -0
  81. package/dist/types/batches/tokenData.d.ts.map +1 -0
  82. package/dist/types/batches/types.d.ts +15 -0
  83. package/dist/types/batches/types.d.ts.map +1 -0
  84. package/dist/types/endpoints.d.ts +3 -0
  85. package/dist/types/endpoints.d.ts.map +1 -0
  86. package/dist/types/index.d.ts +8 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/number.d.ts +6 -0
  89. package/dist/types/number.d.ts.map +1 -0
  90. package/dist/types/prices.d.ts +10 -0
  91. package/dist/types/prices.d.ts.map +1 -0
  92. package/dist/types/sdt/sdt.d.ts +31 -0
  93. package/dist/types/sdt/sdt.d.ts.map +1 -0
  94. package/dist/types/sdt/veSdtAlternativeYields.d.ts +19 -0
  95. package/dist/types/sdt/veSdtAlternativeYields.d.ts.map +1 -0
  96. package/dist/types/strategies/curve/build.d.ts +37 -0
  97. package/dist/types/strategies/curve/build.d.ts.map +1 -0
  98. package/dist/types/strategies/curve/endpoints.d.ts +6 -0
  99. package/dist/types/strategies/curve/endpoints.d.ts.map +1 -0
  100. package/dist/types/strategies/curve/fetch/curveApiData/abi.d.ts +49 -0
  101. package/dist/types/strategies/curve/fetch/curveApiData/abi.d.ts.map +1 -0
  102. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts +8 -0
  103. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts.map +1 -0
  104. package/dist/types/strategies/curve/fetch/curveApiData/config.d.ts +34 -0
  105. package/dist/types/strategies/curve/fetch/curveApiData/config.d.ts.map +1 -0
  106. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts +3 -0
  107. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts.map +1 -0
  108. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.d.ts +2 -0
  109. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.d.ts.map +1 -0
  110. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts +11 -0
  111. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts.map +1 -0
  112. package/dist/types/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.d.ts +2 -0
  113. package/dist/types/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.d.ts.map +1 -0
  114. package/dist/types/strategies/curve/fetch/curveApiData/getRegistries.d.ts +5 -0
  115. package/dist/types/strategies/curve/fetch/curveApiData/getRegistries.d.ts.map +1 -0
  116. package/dist/types/strategies/curve/fetch/getAprBreakdown.d.ts +17 -0
  117. package/dist/types/strategies/curve/fetch/getAprBreakdown.d.ts.map +1 -0
  118. package/dist/types/strategies/curve/fetch/getCvxApr.d.ts +3 -0
  119. package/dist/types/strategies/curve/fetch/getCvxApr.d.ts.map +1 -0
  120. package/dist/types/strategies/curve/fetch/getOnlyboostData.d.ts +4 -0
  121. package/dist/types/strategies/curve/fetch/getOnlyboostData.d.ts.map +1 -0
  122. package/dist/types/strategies/curve/fetch/getStratsWithApr.d.ts +9 -0
  123. package/dist/types/strategies/curve/fetch/getStratsWithApr.d.ts.map +1 -0
  124. package/dist/types/strategies/curve/fetch/index.d.ts +10 -0
  125. package/dist/types/strategies/curve/fetch/index.d.ts.map +1 -0
  126. package/dist/types/strategies/curve/fetch/types.d.ts +11 -0
  127. package/dist/types/strategies/curve/fetch/types.d.ts.map +1 -0
  128. package/dist/types/strategies/curve/httpCalls.d.ts +18 -0
  129. package/dist/types/strategies/curve/httpCalls.d.ts.map +1 -0
  130. package/dist/types/strategies/curve/onChainCalls.d.ts +2 -0
  131. package/dist/types/strategies/curve/onChainCalls.d.ts.map +1 -0
  132. package/dist/types/strategies/types.d.ts +130 -0
  133. package/dist/types/strategies/types.d.ts.map +1 -0
  134. package/dist/types/strategies/utils/boost.d.ts +2 -0
  135. package/dist/types/strategies/utils/boost.d.ts.map +1 -0
  136. package/dist/types/strategies/utils/decodeEtherscanFactoryEvent.d.ts +4 -0
  137. package/dist/types/strategies/utils/decodeEtherscanFactoryEvent.d.ts.map +1 -0
  138. package/dist/types/strategies/utils/index.d.ts +6 -0
  139. package/dist/types/strategies/utils/index.d.ts.map +1 -0
  140. package/dist/types/strategies/utils/promise.d.ts +2 -0
  141. package/dist/types/strategies/utils/promise.d.ts.map +1 -0
  142. package/dist/types/strategies/utils/sdt.d.ts +16 -0
  143. package/dist/types/strategies/utils/sdt.d.ts.map +1 -0
  144. package/dist/types/utils.d.ts +33 -0
  145. package/dist/types/utils.d.ts.map +1 -0
  146. package/package.json +54 -0
  147. package/src/batches/curveStrats.ts +166 -0
  148. package/src/batches/index.ts +3 -0
  149. package/src/batches/sdtGaugeRewards.ts +26 -0
  150. package/src/batches/tokenData.ts +26 -0
  151. package/src/batches/types.ts +14 -0
  152. package/src/endpoints.ts +2 -0
  153. package/src/index.ts +7 -0
  154. package/src/number.ts +51 -0
  155. package/src/prices.ts +86 -0
  156. package/src/sdt/sdt.ts +110 -0
  157. package/src/sdt/veSdtAlternativeYields.ts +19 -0
  158. package/src/strategies/curve/build.ts +187 -0
  159. package/src/strategies/curve/endpoints.ts +21 -0
  160. package/src/strategies/curve/fetch/curveApiData/abi.ts +81 -0
  161. package/src/strategies/curve/fetch/curveApiData/bytecode.ts +43 -0
  162. package/src/strategies/curve/fetch/curveApiData/config.ts +56 -0
  163. package/src/strategies/curve/fetch/curveApiData/getCurveApiData.ts +207 -0
  164. package/src/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.ts +41 -0
  165. package/src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts +52 -0
  166. package/src/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.ts +36 -0
  167. package/src/strategies/curve/fetch/curveApiData/getRegistries.ts +25 -0
  168. package/src/strategies/curve/fetch/getAprBreakdown.ts +98 -0
  169. package/src/strategies/curve/fetch/getCvxApr.ts +49 -0
  170. package/src/strategies/curve/fetch/getOnlyboostData.ts +100 -0
  171. package/src/strategies/curve/fetch/getStratsWithApr.ts +118 -0
  172. package/src/strategies/curve/fetch/index.ts +276 -0
  173. package/src/strategies/curve/fetch/types.ts +11 -0
  174. package/src/strategies/curve/httpCalls.ts +117 -0
  175. package/src/strategies/curve/onChainCalls.ts +36 -0
  176. package/src/strategies/types.ts +137 -0
  177. package/src/strategies/utils/boost.ts +41 -0
  178. package/src/strategies/utils/decodeEtherscanFactoryEvent.ts +42 -0
  179. package/src/strategies/utils/index.ts +8 -0
  180. package/src/strategies/utils/promise.ts +10 -0
  181. package/src/strategies/utils/sdt.ts +206 -0
  182. package/src/utils.ts +171 -0
@@ -0,0 +1,43 @@
1
+ const classicFactoryBytecode =
2
+ '0x608060405234801561000f575f80fd5b5060405161150b38038061150b83398181016040528101906100319190610c81565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663956aae3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af9190610cd1565b5b91505f83836100bf9190610d29565b67ffffffffffffffff8111156100d8576100d7610d5c565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610aeb565b8152602001906001900390816100f65790505b5090505f8490505b83811015610abc57610129610aeb565b5f8473ffffffffffffffffffffffffffffffffffffffff16633a1d5d8e846040518263ffffffff1660e01b81526004016101639190610d98565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610db1565b90505f8573ffffffffffffffffffffffffffffffffffffffff1663e4d332a9836040518263ffffffff1660e01b81526004016101de9190610deb565b602060405180830381865afa1580156101f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021d9190610e39565b905083835f01818152505081836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081836040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103059190610cd1565b8360600181815250508573ffffffffffffffffffffffffffffffffffffffff1663daf297b9836040518263ffffffff1660e01b81526004016103479190610deb565b602060405180830381865afa158015610362573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103869190610db1565b836080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808360a00190151590811515815250505f806103d7610b6e565b5f8973ffffffffffffffffffffffffffffffffffffffff16639ac90d3d876040518263ffffffff1660e01b81526004016104119190610deb565b608060405180830381865afa15801561042c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104509190610f75565b90505f8a73ffffffffffffffffffffffffffffffffffffffff166352b51555886040518263ffffffff1660e01b815260040161048c9190610deb565b608060405180830381865afa1580156104a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104cb919061104e565b90506104d5610b91565b8b73ffffffffffffffffffffffffffffffffffffffff166392e3cc2d896040518263ffffffff1660e01b815260040161050e9190610deb565b608060405180830381865afa92505050801561054857506040513d601f19601f82011682018060405250810190610545919061104e565b60015b1561055257809150505b8615610657578b73ffffffffffffffffffffffffffffffffffffffff1663eb73f37d896040518263ffffffff1660e01b81526004016105919190610deb565b6040805180830381865afa1580156105ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cf9190611079565b80965081975050508b73ffffffffffffffffffffffffffffffffffffffff1663a77576ef896040518263ffffffff1660e01b81526004016106109190610deb565b61010060405180830381865afa15801561062c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106509190611165565b93506106d5565b8b73ffffffffffffffffffffffffffffffffffffffff1663940494f1896040518263ffffffff1660e01b81526004016106909190610deb565b602060405180830381865afa1580156106ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf9190610cd1565b95508594505b8567ffffffffffffffff8111156106ef576106ee610d5c565b5b60405190808252806020026020018201604052801561072857816020015b610715610bb3565b81526020019060019003908161070d5790505b508960c001819052508467ffffffffffffffff81111561074b5761074a610d5c565b5b6040519080825280602002602001820160405280156107795781602001602082028036833780820191505090505b508960e001819052508615610910575f5b86811015610889578381600481106107a5576107a4611191565b5b60200201518a60c0015182815181106107c1576107c0611191565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816004811061081157610810611191565b5b60200201518a60c00151828151811061082d5761082c611191565b5b602002602001015160200181815250508181600481106108505761084f611191565b5b60200201518a60c00151828151811061086c5761086b611191565b5b60200260200101516040018181525050808060010191505061078a565b505f5b8581101561090a578481600881106108a7576108a6611191565b5b60200201518a60e0015182815181106108c3576108c2611191565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061088c565b50610a7c565b5f5b86811015610a7a5783816004811061092d5761092c611191565b5b60200201518a60c00151828151811061094957610948611191565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816004811061099957610998611191565b5b60200201518a60c0015182815181106109b5576109b4611191565b5b602002602001015160200181815250508181600481106109d8576109d7611191565b5b60200201518a60c0015182815181106109f4576109f3611191565b5b60200260200101516040018181525050838160048110610a1757610a16611191565b5b60200201518a60e001518281518110610a3357610a32611191565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610912565b505b888b8f8c610a8a9190610d29565b81518110610a9b57610a9a611191565b5b60200260200101819052505050505050505050508080600101915050610119565b505f81604051602001610acf91906114ea565b6040516020818303038152906040529050602081018059038082f35b6040518061010001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081525090565b604051806101000160405280600890602082028036833780820191505090505090565b6040518060800160405280600490602082028036833780820191505090505090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c1d82610bf4565b9050919050565b610c2d81610c13565b8114610c37575f80fd5b50565b5f81519050610c4881610c24565b92915050565b5f819050919050565b610c6081610c4e565b8114610c6a575f80fd5b50565b5f81519050610c7b81610c57565b92915050565b5f805f60608486031215610c9857610c97610bf0565b5b5f610ca586828701610c3a565b9350506020610cb686828701610c6d565b9250506040610cc786828701610c6d565b9150509250925092565b5f60208284031215610ce657610ce5610bf0565b5b5f610cf384828501610c6d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d3382610c4e565b9150610d3e83610c4e565b9250828203905081811115610d5657610d55610cfc565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610d9281610c4e565b82525050565b5f602082019050610dab5f830184610d89565b92915050565b5f60208284031215610dc657610dc5610bf0565b5b5f610dd384828501610c3a565b91505092915050565b610de581610c13565b82525050565b5f602082019050610dfe5f830184610ddc565b92915050565b5f8115159050919050565b610e1881610e04565b8114610e22575f80fd5b50565b5f81519050610e3381610e0f565b92915050565b5f60208284031215610e4e57610e4d610bf0565b5b5f610e5b84828501610e25565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b610e8182610e68565b810181811067ffffffffffffffff82111715610ea057610e9f610d5c565b5b80604052505050565b5f610eb2610be7565b9050610ebe8282610e78565b919050565b5f67ffffffffffffffff821115610edd57610edc610d5c565b5b602082029050919050565b5f80fd5b5f610efe610ef984610ec3565b610ea9565b90508060208402830185811115610f1857610f17610ee8565b5b835b81811015610f415780610f2d8882610c3a565b845260208401935050602081019050610f1a565b5050509392505050565b5f82601f830112610f5f57610f5e610e64565b5b6004610f6c848285610eec565b91505092915050565b5f60808284031215610f8a57610f89610bf0565b5b5f610f9784828501610f4b565b91505092915050565b5f67ffffffffffffffff821115610fba57610fb9610d5c565b5b602082029050919050565b5f610fd7610fd284610fa0565b610ea9565b90508060208402830185811115610ff157610ff0610ee8565b5b835b8181101561101a57806110068882610c6d565b845260208401935050602081019050610ff3565b5050509392505050565b5f82601f83011261103857611037610e64565b5b6004611045848285610fc5565b91505092915050565b5f6080828403121561106357611062610bf0565b5b5f61107084828501611024565b91505092915050565b5f806040838503121561108f5761108e610bf0565b5b5f61109c85828601610c6d565b92505060206110ad85828601610c6d565b9150509250929050565b5f67ffffffffffffffff8211156110d1576110d0610d5c565b5b602082029050919050565b5f6110ee6110e9846110b7565b610ea9565b9050806020840283018581111561110857611107610ee8565b5b835b81811015611131578061111d8882610c3a565b84526020840193505060208101905061110a565b5050509392505050565b5f82601f83011261114f5761114e610e64565b5b600861115c8482856110dc565b91505092915050565b5f610100828403121561117b5761117a610bf0565b5b5f6111888482850161113b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6111f081610c4e565b82525050565b6111ff81610c13565b82525050565b61120e81610e04565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516112515f8501826111f6565b50602082015161126460208501826111e7565b50604082015161127760408501826111e7565b50505050565b5f611288838361123d565b60608301905092915050565b5f602082019050919050565b5f6112aa82611214565b6112b4818561121e565b93506112bf8361122e565b805f5b838110156112ef5781516112d6888261127d565b97506112e183611294565b9250506001810190506112c2565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61133083836111f6565b60208301905092915050565b5f602082019050919050565b5f611352826112fc565b61135c8185611306565b935061136783611316565b805f5b8381101561139757815161137e8882611325565b97506113898361133c565b92505060018101905061136a565b5085935050505092915050565b5f61010083015f8301516113ba5f8601826111e7565b5060208301516113cd60208601826111f6565b5060408301516113e060408601826111f6565b5060608301516113f360608601826111e7565b50608083015161140660808601826111f6565b5060a083015161141960a0860182611205565b5060c083015184820360c086015261143182826112a0565b91505060e083015184820360e086015261144b8282611348565b9150508091505092915050565b5f61146383836113a4565b905092915050565b5f602082019050919050565b5f611481826111be565b61148b81856111c8565b93508360208202850161149d856111d8565b805f5b858110156114d857848403895281516114b98582611458565b94506114c48361146b565b925060208a019950506001810190506114a0565b50829750879550505050505092915050565b5f6020820190508181035f8301526115028184611477565b90509291505056fe'
3
+
4
+ const ngFactoryBytecode =
5
+ '0x608060405234801561000f575f80fd5b5060405161146338038061146383398181016040528101906100319190610c57565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663956aae3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af9190610ca7565b5b91505f83836100bf9190610cff565b67ffffffffffffffff8111156100d8576100d7610d32565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610b02565b8152602001906001900390816100f65790505b5090505f8490505b83811015610ad357610129610b02565b5f8473ffffffffffffffffffffffffffffffffffffffff16633a1d5d8e846040518263ffffffff1660e01b81526004016101639190610d6e565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610d87565b90505f8573ffffffffffffffffffffffffffffffffffffffff1663e4d332a9836040518263ffffffff1660e01b81526004016101de9190610dc1565b602060405180830381865afa1580156101f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021d9190610e0f565b905083835f01818152505081836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081836040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103059190610ca7565b8360600181815250508573ffffffffffffffffffffffffffffffffffffffff1663daf297b9836040518263ffffffff1660e01b81526004016103479190610dc1565b602060405180830381865afa158015610362573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103869190610d87565b836080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808360a00190151590811515815250505f8060605f8973ffffffffffffffffffffffffffffffffffffffff16639ac90d3d876040518263ffffffff1660e01b815260040161040b9190610dc1565b5f60405180830381865afa158015610425573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061044d9190610f5d565b90505f8a73ffffffffffffffffffffffffffffffffffffffff166352b51555886040518263ffffffff1660e01b81526004016104899190610dc1565b5f60405180830381865afa1580156104a3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104cb9190611064565b905060608b73ffffffffffffffffffffffffffffffffffffffff166392e3cc2d896040518263ffffffff1660e01b81526004016105089190610dc1565b5f60405180830381865afa92505050801561054557506040513d5f823e3d601f19601f820116820180604052508101906105429190611064565b60015b1561054f57809150505b8615610656578b73ffffffffffffffffffffffffffffffffffffffff1663eb73f37d896040518263ffffffff1660e01b815260040161058e9190610dc1565b6040805180830381865afa1580156105a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc91906110ab565b80965081975050508b73ffffffffffffffffffffffffffffffffffffffff1663a77576ef896040518263ffffffff1660e01b815260040161060d9190610dc1565b5f60405180830381865afa158015610627573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061064f9190610f5d565b93506106d4565b8b73ffffffffffffffffffffffffffffffffffffffff1663940494f1896040518263ffffffff1660e01b815260040161068f9190610dc1565b602060405180830381865afa1580156106aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce9190610ca7565b95508594505b8567ffffffffffffffff8111156106ee576106ed610d32565b5b60405190808252806020026020018201604052801561072757816020015b610714610b85565b81526020019060019003908161070c5790505b508960c001819052508467ffffffffffffffff81111561074a57610749610d32565b5b6040519080825280602002602001820160405280156107785781602001602082028036833780820191505090505b508960e00181905250861561091b575f5b86811015610891578381815181106107a4576107a36110e9565b5b60200260200101518a60c0015182815181106107c3576107c26110e9565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110610813576108126110e9565b5b60200260200101518a60c001518281518110610832576108316110e9565b5b60200260200101516020018181525050818181518110610855576108546110e9565b5b60200260200101518a60c001518281518110610874576108736110e9565b5b602002602001015160400181815250508080600101915050610789565b505f5b85811015610915578481815181106108af576108ae6110e9565b5b60200260200101518a60e0015182815181106108ce576108cd6110e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610894565b50610a93565b5f5b86811015610a9157838181518110610938576109376110e9565b5b60200260200101518a60c001518281518110610957576109566110e9565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281815181106109a7576109a66110e9565b5b60200260200101518a60c0015182815181106109c6576109c56110e9565b5b602002602001015160200181815250508181815181106109e9576109e86110e9565b5b60200260200101518a60c001518281518110610a0857610a076110e9565b5b60200260200101516040018181525050838181518110610a2b57610a2a6110e9565b5b60200260200101518a60e001518281518110610a4a57610a496110e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061091d565b505b888b8f8c610aa19190610cff565b81518110610ab257610ab16110e9565b5b60200260200101819052505050505050505050508080600101915050610119565b505f81604051602001610ae69190611442565b6040516020818303038152906040529050602081018059038082f35b6040518061010001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081525090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bf382610bca565b9050919050565b610c0381610be9565b8114610c0d575f80fd5b50565b5f81519050610c1e81610bfa565b92915050565b5f819050919050565b610c3681610c24565b8114610c40575f80fd5b50565b5f81519050610c5181610c2d565b92915050565b5f805f60608486031215610c6e57610c6d610bc2565b5b5f610c7b86828701610c10565b9350506020610c8c86828701610c43565b9250506040610c9d86828701610c43565b9150509250925092565b5f60208284031215610cbc57610cbb610bc2565b5b5f610cc984828501610c43565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d0982610c24565b9150610d1483610c24565b9250828203905081811115610d2c57610d2b610cd2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610d6881610c24565b82525050565b5f602082019050610d815f830184610d5f565b92915050565b5f60208284031215610d9c57610d9b610bc2565b5b5f610da984828501610c10565b91505092915050565b610dbb81610be9565b82525050565b5f602082019050610dd45f830184610db2565b92915050565b5f8115159050919050565b610dee81610dda565b8114610df8575f80fd5b50565b5f81519050610e0981610de5565b92915050565b5f60208284031215610e2457610e23610bc2565b5b5f610e3184828501610dfb565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b610e5782610e3e565b810181811067ffffffffffffffff82111715610e7657610e75610d32565b5b80604052505050565b5f610e88610bb9565b9050610e948282610e4e565b919050565b5f67ffffffffffffffff821115610eb357610eb2610d32565b5b602082029050602081019050919050565b5f80fd5b5f610eda610ed584610e99565b610e7f565b90508083825260208201905060208402830185811115610efd57610efc610ec4565b5b835b81811015610f265780610f128882610c10565b845260208401935050602081019050610eff565b5050509392505050565b5f82601f830112610f4457610f43610e3a565b5b8151610f54848260208601610ec8565b91505092915050565b5f60208284031215610f7257610f71610bc2565b5b5f82015167ffffffffffffffff811115610f8f57610f8e610bc6565b5b610f9b84828501610f30565b91505092915050565b5f67ffffffffffffffff821115610fbe57610fbd610d32565b5b602082029050602081019050919050565b5f610fe1610fdc84610fa4565b610e7f565b9050808382526020820190506020840283018581111561100457611003610ec4565b5b835b8181101561102d57806110198882610c43565b845260208401935050602081019050611006565b5050509392505050565b5f82601f83011261104b5761104a610e3a565b5b815161105b848260208601610fcf565b91505092915050565b5f6020828403121561107957611078610bc2565b5b5f82015167ffffffffffffffff81111561109657611095610bc6565b5b6110a284828501611037565b91505092915050565b5f80604083850312156110c1576110c0610bc2565b5b5f6110ce85828601610c43565b92505060206110df85828601610c43565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61114881610c24565b82525050565b61115781610be9565b82525050565b61116681610dda565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516111a95f85018261114e565b5060208201516111bc602085018261113f565b5060408201516111cf604085018261113f565b50505050565b5f6111e08383611195565b60608301905092915050565b5f602082019050919050565b5f6112028261116c565b61120c8185611176565b935061121783611186565b805f5b8381101561124757815161122e88826111d5565b9750611239836111ec565b92505060018101905061121a565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f611288838361114e565b60208301905092915050565b5f602082019050919050565b5f6112aa82611254565b6112b4818561125e565b93506112bf8361126e565b805f5b838110156112ef5781516112d6888261127d565b97506112e183611294565b9250506001810190506112c2565b5085935050505092915050565b5f61010083015f8301516113125f86018261113f565b506020830151611325602086018261114e565b506040830151611338604086018261114e565b50606083015161134b606086018261113f565b50608083015161135e608086018261114e565b5060a083015161137160a086018261115d565b5060c083015184820360c086015261138982826111f8565b91505060e083015184820360e08601526113a382826112a0565b9150508091505092915050565b5f6113bb83836112fc565b905092915050565b5f602082019050919050565b5f6113d982611116565b6113e38185611120565b9350836020820285016113f585611130565b805f5b85811015611430578484038952815161141185826113b0565b945061141c836113c3565b925060208a019950506001810190506113f8565b50829750879550505050505092915050565b5f6020820190508181035f83015261145a81846113cf565b90509291505056fe'
6
+
7
+ const cryptoFactoryBytecode =
8
+ '0x608060405234801561000f575f80fd5b506040516112ce3803806112ce833981810160405281019061003191906109dd565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663956aae3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af9190610a2d565b5b91505f83836100bf9190610a85565b67ffffffffffffffff8111156100d8576100d7610ab8565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610869565b8152602001906001900390816100f65790505b5090505f8490505b8381101561083a57610129610869565b5f8473ffffffffffffffffffffffffffffffffffffffff16633a1d5d8e846040518263ffffffff1660e01b81526004016101639190610af4565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610b0d565b90505f8573ffffffffffffffffffffffffffffffffffffffff166337951049836040518263ffffffff1660e01b81526004016101de9190610b47565b602060405180830381865afa1580156101f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021d9190610b0d565b90505f8673ffffffffffffffffffffffffffffffffffffffff166356059ffb846040518263ffffffff1660e01b81526004016102599190610b47565b61028060405180830381865afa158015610275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102999190610d55565b50905084845f01818152505081846020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082846040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103829190610a2d565b846060018181525050805f600a811061039e5761039d610d95565b5b6020020151846080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8460a00190151590811515815250505f8773ffffffffffffffffffffffffffffffffffffffff1663940494f1856040518263ffffffff1660e01b81526004016104249190610b47565b602060405180830381865afa15801561043f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104639190610a2d565b90505f8873ffffffffffffffffffffffffffffffffffffffff16639ac90d3d866040518263ffffffff1660e01b815260040161049f9190610b47565b61010060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190610e70565b90505f8973ffffffffffffffffffffffffffffffffffffffff166352b51555876040518263ffffffff1660e01b815260040161051b9190610b47565b61010060405180830381865afa158015610537573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055b9190610f4a565b90506105656108ec565b8a73ffffffffffffffffffffffffffffffffffffffff166392e3cc2d886040518263ffffffff1660e01b815260040161059e9190610b47565b61010060405180830381865afa9250505080156105d957506040513d601f19601f820116820180604052508101906105d69190610f4a565b60015b156105e357809150505b8367ffffffffffffffff8111156105fd576105fc610ab8565b5b60405190808252806020026020018201604052801561063657816020015b61062361090f565b81526020019060019003908161061b5790505b508860c001819052508367ffffffffffffffff81111561065957610658610ab8565b5b6040519080825280602002602001820160405280156106875781602001602082028036833780820191505090505b508860e001819052505f5b848110156107fa578381600881106106ad576106ac610d95565b5b60200201518960c0015182815181106106c9576106c8610d95565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816008811061071957610718610d95565b5b60200201518960c00151828151811061073557610734610d95565b5b6020026020010151602001818152505081816008811061075857610757610d95565b5b60200201518960c00151828151811061077457610773610d95565b5b6020026020010151604001818152505083816008811061079757610796610d95565b5b60200201518960e0015182815181106107b3576107b2610d95565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610692565b50878a8e8b6108099190610a85565b8151811061081a57610819610d95565b5b602002602001018190525050505050505050508080600101915050610119565b505f8160405160200161084d91906112ad565b6040516020818303038152906040529050602081018059038082f35b6040518061010001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081525090565b604051806101000160405280600890602082028036833780820191505090505090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61097982610950565b9050919050565b6109898161096f565b8114610993575f80fd5b50565b5f815190506109a481610980565b92915050565b5f819050919050565b6109bc816109aa565b81146109c6575f80fd5b50565b5f815190506109d7816109b3565b92915050565b5f805f606084860312156109f4576109f361094c565b5b5f610a0186828701610996565b9350506020610a12868287016109c9565b9250506040610a23868287016109c9565b9150509250925092565b5f60208284031215610a4257610a4161094c565b5b5f610a4f848285016109c9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a8f826109aa565b9150610a9a836109aa565b9250828203905081811115610ab257610ab1610a58565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610aee816109aa565b82525050565b5f602082019050610b075f830184610ae5565b92915050565b5f60208284031215610b2257610b2161094c565b5b5f610b2f84828501610996565b91505092915050565b610b418161096f565b82525050565b5f602082019050610b5a5f830184610b38565b92915050565b5f80fd5b5f601f19601f8301169050919050565b610b7d82610b64565b810181811067ffffffffffffffff82111715610b9c57610b9b610ab8565b5b80604052505050565b5f610bae610943565b9050610bba8282610b74565b919050565b5f67ffffffffffffffff821115610bd957610bd8610ab8565b5b602082029050919050565b5f80fd5b5f610bfa610bf584610bbf565b610ba5565b90508060208402830185811115610c1457610c13610be4565b5b835b81811015610c3d5780610c298882610996565b845260208401935050602081019050610c16565b5050509392505050565b5f82601f830112610c5b57610c5a610b60565b5b600a610c68848285610be8565b91505092915050565b5f67ffffffffffffffff821115610c8b57610c8a610ab8565b5b602082029050919050565b5f81600f0b9050919050565b610cab81610c96565b8114610cb5575f80fd5b50565b5f81519050610cc681610ca2565b92915050565b5f610cde610cd984610c71565b610ba5565b90508060208402830185811115610cf857610cf7610be4565b5b835b81811015610d215780610d0d8882610cb8565b845260208401935050602081019050610cfa565b5050509392505050565b5f82601f830112610d3f57610d3e610b60565b5b600a610d4c848285610ccc565b91505092915050565b5f806102808385031215610d6c57610d6b61094c565b5b5f610d7985828601610c47565b925050610140610d8b85828601610d2b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff821115610ddc57610ddb610ab8565b5b602082029050919050565b5f610df9610df484610dc2565b610ba5565b90508060208402830185811115610e1357610e12610be4565b5b835b81811015610e3c5780610e288882610996565b845260208401935050602081019050610e15565b5050509392505050565b5f82601f830112610e5a57610e59610b60565b5b6008610e67848285610de7565b91505092915050565b5f6101008284031215610e8657610e8561094c565b5b5f610e9384828501610e46565b91505092915050565b5f67ffffffffffffffff821115610eb657610eb5610ab8565b5b602082029050919050565b5f610ed3610ece84610e9c565b610ba5565b90508060208402830185811115610eed57610eec610be4565b5b835b81811015610f165780610f0288826109c9565b845260208401935050602081019050610eef565b5050509392505050565b5f82601f830112610f3457610f33610b60565b5b6008610f41848285610ec1565b91505092915050565b5f6101008284031215610f6057610f5f61094c565b5b5f610f6d84828501610f20565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610fa8816109aa565b82525050565b610fb78161096f565b82525050565b5f8115159050919050565b610fd181610fbd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516110145f850182610fae565b5060208201516110276020850182610f9f565b50604082015161103a6040850182610f9f565b50505050565b5f61104b8383611000565b60608301905092915050565b5f602082019050919050565b5f61106d82610fd7565b6110778185610fe1565b935061108283610ff1565b805f5b838110156110b25781516110998882611040565b97506110a483611057565b925050600181019050611085565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6110f38383610fae565b60208301905092915050565b5f602082019050919050565b5f611115826110bf565b61111f81856110c9565b935061112a836110d9565b805f5b8381101561115a57815161114188826110e8565b975061114c836110ff565b92505060018101905061112d565b5085935050505092915050565b5f61010083015f83015161117d5f860182610f9f565b5060208301516111906020860182610fae565b5060408301516111a36040860182610fae565b5060608301516111b66060860182610f9f565b5060808301516111c96080860182610fae565b5060a08301516111dc60a0860182610fc8565b5060c083015184820360c08601526111f48282611063565b91505060e083015184820360e086015261120e828261110b565b9150508091505092915050565b5f6112268383611167565b905092915050565b5f602082019050919050565b5f61124482610f76565b61124e8185610f80565b93508360208202850161126085610f90565b805f5b8581101561129b578484038952815161127c858261121b565b94506112878361122e565b925060208a01995050600181019050611263565b50829750879550505050505092915050565b5f6020820190508181035f8301526112c5818461123a565b90509291505056fe'
9
+
10
+ const twoCryptoFactoryBytecode =
11
+ '0x608060405234801561000f575f80fd5b5060405161109538038061109583398181016040528101906100319190610978565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663956aae3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af91906109c8565b5b91505f83836100bf9190610a20565b67ffffffffffffffff8111156100d8576100d7610a53565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610805565b8152602001906001900390816100f65790505b5090505f8490505b838110156107d657610129610805565b5f8473ffffffffffffffffffffffffffffffffffffffff16633a1d5d8e846040518263ffffffff1660e01b81526004016101639190610a8f565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610aa8565b905082825f01818152505080826020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663daf297b9826040518263ffffffff1660e01b81526004016102569190610ae2565b602060405180830381865afa158015610271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102959190610aa8565b826080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8260a00190151590811515815250505f8573ffffffffffffffffffffffffffffffffffffffff16639ac90d3d836040518263ffffffff1660e01b81526004016103169190610ae2565b6040805180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610c0c565b90505f8673ffffffffffffffffffffffffffffffffffffffff166352b51555846040518263ffffffff1660e01b81526004016103909190610ae2565b6040805180830381865afa1580156103aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ce9190610ce5565b90506103d8610888565b8773ffffffffffffffffffffffffffffffffffffffff166392e3cc2d856040518263ffffffff1660e01b81526004016104119190610ae2565b6040805180830381865afa92505050801561044a57506040513d601f19601f820116820180604052508101906104479190610ce5565b60015b1561045457809150505b600267ffffffffffffffff81111561046f5761046e610a53565b5b6040519080825280602002602001820160405280156104a857816020015b6104956108aa565b81526020019060019003908161048d5790505b508560c00181905250600267ffffffffffffffff8111156104cc576104cb610a53565b5b6040519080825280602002602001820160405280156104fa5781602001602082028036833780820191505090505b508560e001819052505f5b600281101561066e5783816002811061052157610520610d10565b5b60200201518660c00151828151811061053d5761053c610d10565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816002811061058d5761058c610d10565b5b60200201518660c0015182815181106105a9576105a8610d10565b5b602002602001015160200181815250508181600281106105cc576105cb610d10565b5b60200201518660c0015182815181106105e8576105e7610d10565b5b6020026020010151604001818152505083816002811061060b5761060a610d10565b5b60200201518660e00151828151811061062757610626610d10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610505565b508773ffffffffffffffffffffffffffffffffffffffff1663977d9122856040518263ffffffff1660e01b81526004016106a89190610ae2565b602060405180830381865afa9250505080156106e257506040513d601f19601f820116820180604052508101906106df9190610aa8565b60015b156107245780945080866020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505b8373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079191906109c8565b85606001818152505084878b886107a89190610a20565b815181106107b9576107b8610d10565b5b602002602001018190525050505050508080600101915050610119565b505f816040516020016107e99190611074565b6040516020818303038152906040529050602081018059038082f35b6040518061010001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081525090565b6040518060400160405280600290602082028036833780820191505090505090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610914826108eb565b9050919050565b6109248161090a565b811461092e575f80fd5b50565b5f8151905061093f8161091b565b92915050565b5f819050919050565b61095781610945565b8114610961575f80fd5b50565b5f815190506109728161094e565b92915050565b5f805f6060848603121561098f5761098e6108e7565b5b5f61099c86828701610931565b93505060206109ad86828701610964565b92505060406109be86828701610964565b9150509250925092565b5f602082840312156109dd576109dc6108e7565b5b5f6109ea84828501610964565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a2a82610945565b9150610a3583610945565b9250828203905081811115610a4d57610a4c6109f3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610a8981610945565b82525050565b5f602082019050610aa25f830184610a80565b92915050565b5f60208284031215610abd57610abc6108e7565b5b5f610aca84828501610931565b91505092915050565b610adc8161090a565b82525050565b5f602082019050610af55f830184610ad3565b92915050565b5f80fd5b5f601f19601f8301169050919050565b610b1882610aff565b810181811067ffffffffffffffff82111715610b3757610b36610a53565b5b80604052505050565b5f610b496108de565b9050610b558282610b0f565b919050565b5f67ffffffffffffffff821115610b7457610b73610a53565b5b602082029050919050565b5f80fd5b5f610b95610b9084610b5a565b610b40565b90508060208402830185811115610baf57610bae610b7f565b5b835b81811015610bd85780610bc48882610931565b845260208401935050602081019050610bb1565b5050509392505050565b5f82601f830112610bf657610bf5610afb565b5b6002610c03848285610b83565b91505092915050565b5f60408284031215610c2157610c206108e7565b5b5f610c2e84828501610be2565b91505092915050565b5f67ffffffffffffffff821115610c5157610c50610a53565b5b602082029050919050565b5f610c6e610c6984610c37565b610b40565b90508060208402830185811115610c8857610c87610b7f565b5b835b81811015610cb15780610c9d8882610964565b845260208401935050602081019050610c8a565b5050509392505050565b5f82601f830112610ccf57610cce610afb565b5b6002610cdc848285610c5c565b91505092915050565b5f60408284031215610cfa57610cf96108e7565b5b5f610d0784828501610cbb565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610d6f81610945565b82525050565b610d7e8161090a565b82525050565b5f8115159050919050565b610d9881610d84565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f820151610ddb5f850182610d75565b506020820151610dee6020850182610d66565b506040820151610e016040850182610d66565b50505050565b5f610e128383610dc7565b60608301905092915050565b5f602082019050919050565b5f610e3482610d9e565b610e3e8185610da8565b9350610e4983610db8565b805f5b83811015610e79578151610e608882610e07565b9750610e6b83610e1e565b925050600181019050610e4c565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f610eba8383610d75565b60208301905092915050565b5f602082019050919050565b5f610edc82610e86565b610ee68185610e90565b9350610ef183610ea0565b805f5b83811015610f21578151610f088882610eaf565b9750610f1383610ec6565b925050600181019050610ef4565b5085935050505092915050565b5f61010083015f830151610f445f860182610d66565b506020830151610f576020860182610d75565b506040830151610f6a6040860182610d75565b506060830151610f7d6060860182610d66565b506080830151610f906080860182610d75565b5060a0830151610fa360a0860182610d8f565b5060c083015184820360c0860152610fbb8282610e2a565b91505060e083015184820360e0860152610fd58282610ed2565b9150508091505092915050565b5f610fed8383610f2e565b905092915050565b5f602082019050919050565b5f61100b82610d3d565b6110158185610d47565b93508360208202850161102785610d57565b805f5b8581101561106257848403895281516110438582610fe2565b945061104e83610ff5565b925060208a0199505060018101905061102a565b50829750879550505050505092915050565b5f6020820190508181035f83015261108c8184611001565b90509291505056fe'
12
+
13
+ const triCryptoFactoryBytecode =
14
+ '0x608060405234801561000f575f80fd5b50604051610fe6380380610fe6833981810160405281019061003191906108c9565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663956aae3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af9190610919565b5b91505f83836100bf9190610971565b67ffffffffffffffff8111156100d8576100d76109a4565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610756565b8152602001906001900390816100f65790505b5090505f8490505b8381101561072757610129610756565b5f8473ffffffffffffffffffffffffffffffffffffffff16633a1d5d8e846040518263ffffffff1660e01b815260040161016391906109e0565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a291906109f9565b905082825f01818152505080826020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610266573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028a9190610919565b8260600181815250505f8260a00190151590811515815250508473ffffffffffffffffffffffffffffffffffffffff1663daf297b9826040518263ffffffff1660e01b81526004016102dc9190610a33565b602060405180830381865afa92505050801561031657506040513d601f19601f8201168201806040525081019061031391906109f9565b60015b156103555780836080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505b5f8573ffffffffffffffffffffffffffffffffffffffff16639ac90d3d836040518263ffffffff1660e01b815260040161038f9190610a33565b606060405180830381865afa1580156103aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ce9190610b5d565b90505f8673ffffffffffffffffffffffffffffffffffffffff166352b51555846040518263ffffffff1660e01b815260040161040a9190610a33565b606060405180830381865afa158015610425573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104499190610c36565b90506104536107d9565b8773ffffffffffffffffffffffffffffffffffffffff166392e3cc2d856040518263ffffffff1660e01b815260040161048c9190610a33565b606060405180830381865afa9250505080156104c657506040513d601f19601f820116820180604052508101906104c39190610c36565b60015b156104d057809150505b600367ffffffffffffffff8111156104eb576104ea6109a4565b5b60405190808252806020026020018201604052801561052457816020015b6105116107fb565b8152602001906001900390816105095790505b508560c00181905250600367ffffffffffffffff811115610548576105476109a4565b5b6040519080825280602002602001820160405280156105765781602001602082028036833780820191505090505b508560e001819052505f5b60038110156106ea5783816003811061059d5761059c610c61565b5b60200201518660c0015182815181106105b9576105b8610c61565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816003811061060957610608610c61565b5b60200201518660c00151828151811061062557610624610c61565b5b6020026020010151602001818152505081816003811061064857610647610c61565b5b60200201518660c00151828151811061066457610663610c61565b5b6020026020010151604001818152505083816003811061068757610686610c61565b5b60200201518660e0015182815181106106a3576106a2610c61565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610581565b5084878b886106f99190610971565b8151811061070a57610709610c61565b5b602002602001018190525050505050508080600101915050610119565b505f8160405160200161073a9190610fc5565b6040516020818303038152906040529050602081018059038082f35b6040518061010001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081525090565b6040518060600160405280600390602082028036833780820191505090505090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108658261083c565b9050919050565b6108758161085b565b811461087f575f80fd5b50565b5f815190506108908161086c565b92915050565b5f819050919050565b6108a881610896565b81146108b2575f80fd5b50565b5f815190506108c38161089f565b92915050565b5f805f606084860312156108e0576108df610838565b5b5f6108ed86828701610882565b93505060206108fe868287016108b5565b925050604061090f868287016108b5565b9150509250925092565b5f6020828403121561092e5761092d610838565b5b5f61093b848285016108b5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61097b82610896565b915061098683610896565b925082820390508181111561099e5761099d610944565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6109da81610896565b82525050565b5f6020820190506109f35f8301846109d1565b92915050565b5f60208284031215610a0e57610a0d610838565b5b5f610a1b84828501610882565b91505092915050565b610a2d8161085b565b82525050565b5f602082019050610a465f830184610a24565b92915050565b5f80fd5b5f601f19601f8301169050919050565b610a6982610a50565b810181811067ffffffffffffffff82111715610a8857610a876109a4565b5b80604052505050565b5f610a9a61082f565b9050610aa68282610a60565b919050565b5f67ffffffffffffffff821115610ac557610ac46109a4565b5b602082029050919050565b5f80fd5b5f610ae6610ae184610aab565b610a91565b90508060208402830185811115610b0057610aff610ad0565b5b835b81811015610b295780610b158882610882565b845260208401935050602081019050610b02565b5050509392505050565b5f82601f830112610b4757610b46610a4c565b5b6003610b54848285610ad4565b91505092915050565b5f60608284031215610b7257610b71610838565b5b5f610b7f84828501610b33565b91505092915050565b5f67ffffffffffffffff821115610ba257610ba16109a4565b5b602082029050919050565b5f610bbf610bba84610b88565b610a91565b90508060208402830185811115610bd957610bd8610ad0565b5b835b81811015610c025780610bee88826108b5565b845260208401935050602081019050610bdb565b5050509392505050565b5f82601f830112610c2057610c1f610a4c565b5b6003610c2d848285610bad565b91505092915050565b5f60608284031215610c4b57610c4a610838565b5b5f610c5884828501610c0c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610cc081610896565b82525050565b610ccf8161085b565b82525050565b5f8115159050919050565b610ce981610cd5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f820151610d2c5f850182610cc6565b506020820151610d3f6020850182610cb7565b506040820151610d526040850182610cb7565b50505050565b5f610d638383610d18565b60608301905092915050565b5f602082019050919050565b5f610d8582610cef565b610d8f8185610cf9565b9350610d9a83610d09565b805f5b83811015610dca578151610db18882610d58565b9750610dbc83610d6f565b925050600181019050610d9d565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f610e0b8383610cc6565b60208301905092915050565b5f602082019050919050565b5f610e2d82610dd7565b610e378185610de1565b9350610e4283610df1565b805f5b83811015610e72578151610e598882610e00565b9750610e6483610e17565b925050600181019050610e45565b5085935050505092915050565b5f61010083015f830151610e955f860182610cb7565b506020830151610ea86020860182610cc6565b506040830151610ebb6040860182610cc6565b506060830151610ece6060860182610cb7565b506080830151610ee16080860182610cc6565b5060a0830151610ef460a0860182610ce0565b5060c083015184820360c0860152610f0c8282610d7b565b91505060e083015184820360e0860152610f268282610e23565b9150508091505092915050565b5f610f3e8383610e7f565b905092915050565b5f602082019050919050565b5f610f5c82610c8e565b610f668185610c98565b935083602082028501610f7885610ca8565b805f5b85811015610fb35784840389528151610f948582610f33565b9450610f9f83610f46565b925060208a01995050600181019050610f7b565b50829750879550505050505092915050565b5f6020820190508181035f830152610fdd8184610f52565b90509291505056fe'
15
+
16
+ const mainFactoryBytecode =
17
+ '0x608060405234801561000f575f80fd5b5060405161177838038061177883398181016040528101906100319190610df4565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663956aae3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af9190610e44565b5b91505f83836100bf9190610e9c565b67ffffffffffffffff8111156100d8576100d7610ecf565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610c5d565b8152602001906001900390816100f65790505b5090505f8490505b83811015610c2e57610129610c5d565b5f8473ffffffffffffffffffffffffffffffffffffffff16633a1d5d8e846040518263ffffffff1660e01b81526004016101639190610f0b565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610f24565b90505f8573ffffffffffffffffffffffffffffffffffffffff166356059ffb836040518263ffffffff1660e01b81526004016101de9190610f5e565b61028060405180830381865afa1580156101fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021e919061116c565b50905083835f0181815250508573ffffffffffffffffffffffffffffffffffffffff166337951049836040518263ffffffff1660e01b81526004016102639190610f5e565b602060405180830381865afa15801561027e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a29190610f24565b836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081836040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff166337951049836040518263ffffffff1660e01b815260040161034a9190610f5e565b602060405180830381865afa158015610365573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103899190610f24565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f59190610e44565b836060018181525050805f600a8110610411576104106111ac565b5b6020020151836080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663e4d332a9836040518263ffffffff1660e01b81526004016104869190610f5e565b602060405180830381865afa1580156104a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c5919061120e565b8360a00190151590811515815250505f808773ffffffffffffffffffffffffffffffffffffffff1663940494f1856040518263ffffffff1660e01b815260040161050f9190610f5e565b6040805180830381865afa158015610529573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054d9190611239565b915091505f8873ffffffffffffffffffffffffffffffffffffffff16639ac90d3d866040518263ffffffff1660e01b815260040161058b9190610f5e565b61010060405180830381865afa1580156105a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cb9190611325565b90505f8973ffffffffffffffffffffffffffffffffffffffff166352b51555876040518263ffffffff1660e01b81526004016106079190610f5e565b61010060405180830381865afa158015610623573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064791906113ff565b9050610651610ce0565b610659610d03565b8b73ffffffffffffffffffffffffffffffffffffffff166392e3cc2d896040518263ffffffff1660e01b81526004016106929190610f5e565b61010060405180830381865afa9250505080156106cd57506040513d601f19601f820116820180604052508101906106ca91906113ff565b60015b156106d757809150505b8b73ffffffffffffffffffffffffffffffffffffffff1663e4d332a9896040518263ffffffff1660e01b81526004016107109190610f5e565b602060405180830381865afa15801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f919061120e565b156107d0578b73ffffffffffffffffffffffffffffffffffffffff1663a77576ef896040518263ffffffff1660e01b815260040161078d9190610f5e565b61010060405180830381865afa1580156107a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cd9190611325565b91505b8567ffffffffffffffff8111156107ea576107e9610ecf565b5b60405190808252806020026020018201604052801561082357816020015b610810610d26565b8152602001906001900390816108085790505b508960c001819052508467ffffffffffffffff81111561084657610845610ecf565b5b6040519080825280602002602001820160405280156108745781602001602082028036833780820191505090505b508960e001819052508b73ffffffffffffffffffffffffffffffffffffffff1663e4d332a9896040518263ffffffff1660e01b81526004016108b69190610f5e565b602060405180830381865afa1580156108d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f5919061120e565b15610a82575f5b868110156109fb57848160088110610917576109166111ac565b5b60200201518a60c001518281518110610933576109326111ac565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160088110610983576109826111ac565b5b60200201518a60c00151828151811061099f5761099e6111ac565b5b602002602001015160200181815250508181600881106109c2576109c16111ac565b5b60200201518a60c0015182815181106109de576109dd6111ac565b5b6020026020010151604001818152505080806001019150506108fc565b505f5b85811015610a7c57828160088110610a1957610a186111ac565b5b60200201518a60e001518281518110610a3557610a346111ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506109fe565b50610bee565b5f5b86811015610bec57848160088110610a9f57610a9e6111ac565b5b60200201518a60c001518281518110610abb57610aba6111ac565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160088110610b0b57610b0a6111ac565b5b60200201518a60c001518281518110610b2757610b266111ac565b5b60200260200101516020018181525050818160088110610b4a57610b496111ac565b5b60200201518a60c001518281518110610b6657610b656111ac565b5b60200260200101516040018181525050848160088110610b8957610b886111ac565b5b60200201518a60e001518281518110610ba557610ba46111ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610a84565b505b888b8f8c610bfc9190610e9c565b81518110610c0d57610c0c6111ac565b5b60200260200101819052505050505050505050508080600101915050610119565b505f81604051602001610c419190611757565b6040516020818303038152906040529050602081018059038082f35b6040518061010001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081525090565b604051806101000160405280600890602082028036833780820191505090505090565b604051806101000160405280600890602082028036833780820191505090505090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d9082610d67565b9050919050565b610da081610d86565b8114610daa575f80fd5b50565b5f81519050610dbb81610d97565b92915050565b5f819050919050565b610dd381610dc1565b8114610ddd575f80fd5b50565b5f81519050610dee81610dca565b92915050565b5f805f60608486031215610e0b57610e0a610d63565b5b5f610e1886828701610dad565b9350506020610e2986828701610de0565b9250506040610e3a86828701610de0565b9150509250925092565b5f60208284031215610e5957610e58610d63565b5b5f610e6684828501610de0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ea682610dc1565b9150610eb183610dc1565b9250828203905081811115610ec957610ec8610e6f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f0581610dc1565b82525050565b5f602082019050610f1e5f830184610efc565b92915050565b5f60208284031215610f3957610f38610d63565b5b5f610f4684828501610dad565b91505092915050565b610f5881610d86565b82525050565b5f602082019050610f715f830184610f4f565b92915050565b5f80fd5b5f601f19601f8301169050919050565b610f9482610f7b565b810181811067ffffffffffffffff82111715610fb357610fb2610ecf565b5b80604052505050565b5f610fc5610d5a565b9050610fd18282610f8b565b919050565b5f67ffffffffffffffff821115610ff057610fef610ecf565b5b602082029050919050565b5f80fd5b5f61101161100c84610fd6565b610fbc565b9050806020840283018581111561102b5761102a610ffb565b5b835b8181101561105457806110408882610dad565b84526020840193505060208101905061102d565b5050509392505050565b5f82601f83011261107257611071610f77565b5b600a61107f848285610fff565b91505092915050565b5f67ffffffffffffffff8211156110a2576110a1610ecf565b5b602082029050919050565b5f81600f0b9050919050565b6110c2816110ad565b81146110cc575f80fd5b50565b5f815190506110dd816110b9565b92915050565b5f6110f56110f084611088565b610fbc565b9050806020840283018581111561110f5761110e610ffb565b5b835b81811015611138578061112488826110cf565b845260208401935050602081019050611111565b5050509392505050565b5f82601f83011261115657611155610f77565b5b600a6111638482856110e3565b91505092915050565b5f80610280838503121561118357611182610d63565b5b5f6111908582860161105e565b9250506101406111a285828601611142565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8115159050919050565b6111ed816111d9565b81146111f7575f80fd5b50565b5f81519050611208816111e4565b92915050565b5f6020828403121561122357611222610d63565b5b5f611230848285016111fa565b91505092915050565b5f806040838503121561124f5761124e610d63565b5b5f61125c85828601610de0565b925050602061126d85828601610de0565b9150509250929050565b5f67ffffffffffffffff82111561129157611290610ecf565b5b602082029050919050565b5f6112ae6112a984611277565b610fbc565b905080602084028301858111156112c8576112c7610ffb565b5b835b818110156112f157806112dd8882610dad565b8452602084019350506020810190506112ca565b5050509392505050565b5f82601f83011261130f5761130e610f77565b5b600861131c84828561129c565b91505092915050565b5f610100828403121561133b5761133a610d63565b5b5f611348848285016112fb565b91505092915050565b5f67ffffffffffffffff82111561136b5761136a610ecf565b5b602082029050919050565b5f61138861138384611351565b610fbc565b905080602084028301858111156113a2576113a1610ffb565b5b835b818110156113cb57806113b78882610de0565b8452602084019350506020810190506113a4565b5050509392505050565b5f82601f8301126113e9576113e8610f77565b5b60086113f6848285611376565b91505092915050565b5f610100828403121561141557611414610d63565b5b5f611422848285016113d5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61145d81610dc1565b82525050565b61146c81610d86565b82525050565b61147b816111d9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516114be5f850182611463565b5060208201516114d16020850182611454565b5060408201516114e46040850182611454565b50505050565b5f6114f583836114aa565b60608301905092915050565b5f602082019050919050565b5f61151782611481565b611521818561148b565b935061152c8361149b565b805f5b8381101561155c57815161154388826114ea565b975061154e83611501565b92505060018101905061152f565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61159d8383611463565b60208301905092915050565b5f602082019050919050565b5f6115bf82611569565b6115c98185611573565b93506115d483611583565b805f5b838110156116045781516115eb8882611592565b97506115f6836115a9565b9250506001810190506115d7565b5085935050505092915050565b5f61010083015f8301516116275f860182611454565b50602083015161163a6020860182611463565b50604083015161164d6040860182611463565b5060608301516116606060860182611454565b5060808301516116736080860182611463565b5060a083015161168660a0860182611472565b5060c083015184820360c086015261169e828261150d565b91505060e083015184820360e08601526116b882826115b5565b9150508091505092915050565b5f6116d08383611611565b905092915050565b5f602082019050919050565b5f6116ee8261142b565b6116f88185611435565b93508360208202850161170a85611445565b805f5b85811015611745578484038952815161172685826116c5565b9450611731836116d8565b925060208a0199505060018101905061170d565b50829750879550505050505092915050565b5f6020820190508181035f83015261176f81846116e4565b90509291505056fe'
18
+
19
+ const lendingOneWayFactoryBytecode =
20
+ '0x608060405234801561000f575f80fd5b50604051610fb4380380610fb483398181016040528101906100319190610a92565b5f8390505f821461004257816100b0565b8073ffffffffffffffffffffffffffffffffffffffff1663fd775c786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100af9190610ae2565b5b91505f83836100bf9190610b3a565b67ffffffffffffffff8111156100d8576100d7610b6d565b5b60405190808252806020026020018201604052801561011157816020015b6100fe610925565b8152602001906001900390816100f65790505b5090505f8490505b838110156108f657610129610925565b5f8473ffffffffffffffffffffffffffffffffffffffff16638c64ea4a846040518263ffffffff1660e01b81526004016101639190610ba9565b602060405180830381865afa15801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610bc2565b90505f81905083835f01818152505081836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081836040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561026a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e9190610ae2565b8360600181815250508573ffffffffffffffffffffffffffffffffffffffff1663b0539187856040518263ffffffff1660e01b81526004016102d09190610ba9565b602060405180830381865afa1580156102eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030f9190610bc2565b836080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600167ffffffffffffffff81111561036157610360610b6d565b5b60405190808252806020026020018201604052801561039a57816020015b6103876109b5565b81526020019060019003908161037f5790505b508360c001819052508073ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104109190610bc2565b8360c001515f8151811061042757610426610bed565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d19190610bc2565b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053d9190610ae2565b8360c001515f8151811061055457610553610bed565b5b602002602001015160200181815250508073ffffffffffffffffffffffffffffffffffffffff166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d19190610ae2565b8360c001515f815181106105e8576105e7610bed565b5b60200260200101516040018181525050600267ffffffffffffffff81111561061357610612610b6d565b5b6040519080825280602002602001820160405280156106415781602001602082028036833780820191505090505b508360e001819052508073ffffffffffffffffffffffffffffffffffffffff16632621db2f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b79190610bc2565b8360e001515f815181106106ce576106cd610bed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663765337b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610751573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107759190610bc2565b8360e0015160018151811061078d5761078c610bed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015610810573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108349190610ae2565b8361010001515f0181815250508073ffffffffffffffffffffffffffffffffffffffff1663a980497e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ae9190610ae2565b8361010001516020018181525050828589866108ca9190610b3a565b815181106108db576108da610bed565b5b60200260200101819052505050508080600101915050610119565b505f816040516020016109099190610f93565b6040516020818303038152906040529050602081018059038082f35b6040518061012001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f1515815260200160608152602001606081526020016109af6109e9565b81525090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b60405180604001604052805f81526020015f81525090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a2e82610a05565b9050919050565b610a3e81610a24565b8114610a48575f80fd5b50565b5f81519050610a5981610a35565b92915050565b5f819050919050565b610a7181610a5f565b8114610a7b575f80fd5b50565b5f81519050610a8c81610a68565b92915050565b5f805f60608486031215610aa957610aa8610a01565b5b5f610ab686828701610a4b565b9350506020610ac786828701610a7e565b9250506040610ad886828701610a7e565b9150509250925092565b5f60208284031215610af757610af6610a01565b5b5f610b0484828501610a7e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4482610a5f565b9150610b4f83610a5f565b9250828203905081811115610b6757610b66610b0d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ba381610a5f565b82525050565b5f602082019050610bbc5f830184610b9a565b92915050565b5f60208284031215610bd757610bd6610a01565b5b5f610be484828501610a4b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610c4c81610a5f565b82525050565b610c5b81610a24565b82525050565b5f8115159050919050565b610c7581610c61565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f820151610cb85f850182610c52565b506020820151610ccb6020850182610c43565b506040820151610cde6040850182610c43565b50505050565b5f610cef8383610ca4565b60608301905092915050565b5f602082019050919050565b5f610d1182610c7b565b610d1b8185610c85565b9350610d2683610c95565b805f5b83811015610d56578151610d3d8882610ce4565b9750610d4883610cfb565b925050600181019050610d29565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f610d978383610c52565b60208301905092915050565b5f602082019050919050565b5f610db982610d63565b610dc38185610d6d565b9350610dce83610d7d565b805f5b83811015610dfe578151610de58882610d8c565b9750610df083610da3565b925050600181019050610dd1565b5085935050505092915050565b604082015f820151610e1f5f850182610c43565b506020820151610e326020850182610c43565b50505050565b5f61014083015f830151610e4e5f860182610c43565b506020830151610e616020860182610c52565b506040830151610e746040860182610c52565b506060830151610e876060860182610c43565b506080830151610e9a6080860182610c52565b5060a0830151610ead60a0860182610c6c565b5060c083015184820360c0860152610ec58282610d07565b91505060e083015184820360e0860152610edf8282610daf565b915050610100830151610ef6610100860182610e0b565b508091505092915050565b5f610f0c8383610e38565b905092915050565b5f602082019050919050565b5f610f2a82610c1a565b610f348185610c24565b935083602082028501610f4685610c34565b805f5b85811015610f815784840389528151610f628582610f01565b9450610f6d83610f14565b925060208a01995050600181019050610f49565b50829750879550505050505092915050565b5f6020820190508181035f830152610fab8184610f20565b90509291505056fe'
21
+
22
+ export const gaugesBytecode = {
23
+ 1: '0x608060405234801561000f575f80fd5b5060405161110338038061110383398181016040528101906100319190610a30565b5f815190505f8167ffffffffffffffff8111156100515761005061089a565b5b60405190808252806020026020018201604052801561008a57816020015b610077610799565b81526020019060019003908161006f5790505b5090505f5b82811015610682575f8482815181106100ab576100aa610a77565b5b602002602001015190506100bd610799565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561015c57506040513d601f19601f820116820180604052508101906101599190610aa4565b60015b1561019b5780826020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505b8173ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561020357506040513d601f19601f820116820180604052508101906102009190610b04565b60015b1561065457808260400190151590811515815250505f15158115150361065257610232836106b160201b60201c565b8360600184608001828152508281525050508273ffffffffffffffffffffffffffffffffffffffff1663963c94b96040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156102ac57506040513d601f19601f820116820180604052508101906102a99190610b62565b60015b15610651578067ffffffffffffffff8111156102cb576102ca61089a565b5b60405190808252806020026020018201604052801561030457816020015b6102f16107f8565b8152602001906001900390816102e95790505b508360a001819052505f5b8181101561064e575f8573ffffffffffffffffffffffffffffffffffffffff166354c49fe9836040518263ffffffff1660e01b81526004016103519190610b9c565b602060405180830381865afa15801561036c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103909190610aa4565b905061039a6107f8565b5f8773ffffffffffffffffffffffffffffffffffffffff166348e9c65e846040518263ffffffff1660e01b81526004016103d49190610bc4565b60c060405180830381865afa1580156103ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104139190610c7e565b90505f83905083835f01515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561049b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104c39190610d59565b835f0151602001819052508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610516573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061053e9190610d59565b835f0151604001819052508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610592573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b69190610b62565b835f015160600181815250508160200151836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081604001518360400181815250508160600151836060018181525050828860a00151868151811061063257610631610a77565b5b602002602001018190525050505050808060010191505061030f565b50505b5b505b8084848151811061066857610667610a77565b5b60200260200101819052505050808060010191505061008f565b505f8160405160200161069591906110e2565b6040516020818303038152906040529050602081018059038082f35b5f808273ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561071b57506040513d601f19601f820116820180604052508101906107189190610b62565b60015b1561072557809150505b8273ffffffffffffffffffffffffffffffffffffffff1663180692d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107929190610b62565b9150915091565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f81526020015f8152602001606081525090565b604051806080016040528061080b610839565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6108d08261088a565b810181811067ffffffffffffffff821117156108ef576108ee61089a565b5b80604052505050565b5f610901610875565b905061090d82826108c7565b919050565b5f67ffffffffffffffff82111561092c5761092b61089a565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61096a82610941565b9050919050565b61097a81610960565b8114610984575f80fd5b50565b5f8151905061099581610971565b92915050565b5f6109ad6109a884610912565b6108f8565b905080838252602082019050602084028301858111156109d0576109cf61093d565b5b835b818110156109f957806109e58882610987565b8452602084019350506020810190506109d2565b5050509392505050565b5f82601f830112610a1757610a16610886565b5b8151610a2784826020860161099b565b91505092915050565b5f60208284031215610a4557610a4461087e565b5b5f82015167ffffffffffffffff811115610a6257610a61610882565b5b610a6e84828501610a03565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ab957610ab861087e565b5b5f610ac684828501610987565b91505092915050565b5f8115159050919050565b610ae381610acf565b8114610aed575f80fd5b50565b5f81519050610afe81610ada565b92915050565b5f60208284031215610b1957610b1861087e565b5b5f610b2684828501610af0565b91505092915050565b5f819050919050565b610b4181610b2f565b8114610b4b575f80fd5b50565b5f81519050610b5c81610b38565b92915050565b5f60208284031215610b7757610b7661087e565b5b5f610b8484828501610b4e565b91505092915050565b610b9681610b2f565b82525050565b5f602082019050610baf5f830184610b8d565b92915050565b610bbe81610960565b82525050565b5f602082019050610bd75f830184610bb5565b92915050565b5f80fd5b5f60c08284031215610bf657610bf5610bdd565b5b610c0060c06108f8565b90505f610c0f84828501610987565b5f830152506020610c2284828501610987565b6020830152506040610c3684828501610b4e565b6040830152506060610c4a84828501610b4e565b6060830152506080610c5e84828501610b4e565b60808301525060a0610c7284828501610b4e565b60a08301525092915050565b5f60c08284031215610c9357610c9261087e565b5b5f610ca084828501610be1565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115610cc757610cc661089a565b5b610cd08261088a565b9050602081019050919050565b8281835e5f83830152505050565b5f610cfd610cf884610cad565b6108f8565b905082815260208101848484011115610d1957610d18610ca9565b5b610d24848285610cdd565b509392505050565b5f82601f830112610d4057610d3f610886565b5b8151610d50848260208601610ceb565b91505092915050565b5f60208284031215610d6e57610d6d61087e565b5b5f82015167ffffffffffffffff811115610d8b57610d8a610882565b5b610d9784828501610d2c565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610dd281610960565b82525050565b610de181610acf565b82525050565b610df081610b2f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f610e4382610e1f565b610e4d8185610e29565b9350610e5d818560208601610cdd565b610e668161088a565b840191505092915050565b5f608083015f830151610e865f860182610dc9565b5060208301518482036020860152610e9e8282610e39565b91505060408301518482036040860152610eb88282610e39565b9150506060830151610ecd6060860182610de7565b508091505092915050565b5f608083015f8301518482035f860152610ef28282610e71565b9150506020830151610f076020860182610dc9565b506040830151610f1a6040860182610de7565b506060830151610f2d6060860182610de7565b508091505092915050565b5f610f438383610ed8565b905092915050565b5f602082019050919050565b5f610f6182610df6565b610f6b8185610e00565b935083602082028501610f7d85610e10565b805f5b85811015610fb85784840389528151610f998582610f38565b9450610fa483610f4b565b925060208a01995050600181019050610f80565b50829750879550505050505092915050565b5f60c083015f830151610fdf5f860182610dc9565b506020830151610ff26020860182610dc9565b5060408301516110056040860182610dd8565b5060608301516110186060860182610de7565b50608083015161102b6080860182610de7565b5060a083015184820360a08601526110438282610f57565b9150508091505092915050565b5f61105b8383610fca565b905092915050565b5f602082019050919050565b5f61107982610da0565b6110838185610daa565b93508360208202850161109585610dba565b805f5b858110156110d057848403895281516110b18582611050565b94506110bc83611063565b925060208a01995050600181019050611098565b50829750879550505050505092915050565b5f6020820190508181035f8301526110fa818461106f565b90509291505056fe',
24
+ 42161:
25
+ '0x608060405234801561000f575f80fd5b5060405161118938038061118983398181016040528101906100319190610a6d565b5f815190505f8167ffffffffffffffff811115610051576100506108d7565b5b60405190808252806020026020018201604052801561008a57816020015b6100776107d6565b81526020019060019003908161006f5790505b5090505f5b82811015610695575f8482815181106100ab576100aa610ab4565b5b602002602001015190506100bd6107d6565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610103826106c460201b60201c565b610667578173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561016f57506040513d601f19601f8201168201806040525081019061016c9190610ae1565b60015b156101ae5780826020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505b8173ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021657506040513d601f19601f820116820180604052508101906102139190610b41565b60015b1561066657808260400190151590811515815250505f15158115150361066457610245836106d560201b60201c565b8360600184608001828152508281525050508273ffffffffffffffffffffffffffffffffffffffff1663963c94b96040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156102bf57506040513d601f19601f820116820180604052508101906102bc9190610b9f565b60015b15610663578067ffffffffffffffff8111156102de576102dd6108d7565b5b60405190808252806020026020018201604052801561031757816020015b610304610835565b8152602001906001900390816102fc5790505b508360a001819052505f5b81811015610660575f8573ffffffffffffffffffffffffffffffffffffffff166354c49fe9836040518263ffffffff1660e01b81526004016103649190610bd9565b602060405180830381865afa15801561037f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a39190610ae1565b90506103ad610835565b5f8773ffffffffffffffffffffffffffffffffffffffff166348e9c65e846040518263ffffffff1660e01b81526004016103e79190610c01565b60a060405180830381865afa158015610402573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104269190610ca7565b90505f83905083835f01515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156104ae573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104d69190610d82565b835f0151602001819052508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610529573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105519190610d82565b835f0151604001819052508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c99190610b9f565b835f01516060018181525050815f0151836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081602001518360400181815250508160400151836060018181525050828860a00151868151811061064457610643610ab4565b5b6020026020010181905250505050508080600101915050610322565b50505b5b505b5b8084848151811061067b5761067a610ab4565b5b60200260200101819052505050808060010191505061008f565b505f816040516020016106a8919061110b565b6040516020818303038152906040529050602081018059038082f35b5f80823b90505f8114915050919050565b5f808273ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561073f57506040513d601f19601f8201168201806040525081019061073c9190610b9f565b60015b1561074957809150505b8273ffffffffffffffffffffffffffffffffffffffff1663fadd59ab62093a80426107749190611158565b6040518263ffffffff1660e01b81526004016107909190610bd9565b602060405180830381865afa1580156107ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cf9190610b9f565b9150915091565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f81526020015f8152602001606081525090565b6040518060800160405280610848610876565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61090d826108c7565b810181811067ffffffffffffffff8211171561092c5761092b6108d7565b5b80604052505050565b5f61093e6108b2565b905061094a8282610904565b919050565b5f67ffffffffffffffff821115610969576109686108d7565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109a78261097e565b9050919050565b6109b78161099d565b81146109c1575f80fd5b50565b5f815190506109d2816109ae565b92915050565b5f6109ea6109e58461094f565b610935565b90508083825260208201905060208402830185811115610a0d57610a0c61097a565b5b835b81811015610a365780610a2288826109c4565b845260208401935050602081019050610a0f565b5050509392505050565b5f82601f830112610a5457610a536108c3565b5b8151610a648482602086016109d8565b91505092915050565b5f60208284031215610a8257610a816108bb565b5b5f82015167ffffffffffffffff811115610a9f57610a9e6108bf565b5b610aab84828501610a40565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610af657610af56108bb565b5b5f610b03848285016109c4565b91505092915050565b5f8115159050919050565b610b2081610b0c565b8114610b2a575f80fd5b50565b5f81519050610b3b81610b17565b92915050565b5f60208284031215610b5657610b556108bb565b5b5f610b6384828501610b2d565b91505092915050565b5f819050919050565b610b7e81610b6c565b8114610b88575f80fd5b50565b5f81519050610b9981610b75565b92915050565b5f60208284031215610bb457610bb36108bb565b5b5f610bc184828501610b8b565b91505092915050565b610bd381610b6c565b82525050565b5f602082019050610bec5f830184610bca565b92915050565b610bfb8161099d565b82525050565b5f602082019050610c145f830184610bf2565b92915050565b5f80fd5b5f60a08284031215610c3357610c32610c1a565b5b610c3d60a0610935565b90505f610c4c848285016109c4565b5f830152506020610c5f84828501610b8b565b6020830152506040610c7384828501610b8b565b6040830152506060610c8784828501610b8b565b6060830152506080610c9b84828501610b8b565b60808301525092915050565b5f60a08284031215610cbc57610cbb6108bb565b5b5f610cc984828501610c1e565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115610cf057610cef6108d7565b5b610cf9826108c7565b9050602081019050919050565b8281835e5f83830152505050565b5f610d26610d2184610cd6565b610935565b905082815260208101848484011115610d4257610d41610cd2565b5b610d4d848285610d06565b509392505050565b5f82601f830112610d6957610d686108c3565b5b8151610d79848260208601610d14565b91505092915050565b5f60208284031215610d9757610d966108bb565b5b5f82015167ffffffffffffffff811115610db457610db36108bf565b5b610dc084828501610d55565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610dfb8161099d565b82525050565b610e0a81610b0c565b82525050565b610e1981610b6c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f610e6c82610e48565b610e768185610e52565b9350610e86818560208601610d06565b610e8f816108c7565b840191505092915050565b5f608083015f830151610eaf5f860182610df2565b5060208301518482036020860152610ec78282610e62565b91505060408301518482036040860152610ee18282610e62565b9150506060830151610ef66060860182610e10565b508091505092915050565b5f608083015f8301518482035f860152610f1b8282610e9a565b9150506020830151610f306020860182610df2565b506040830151610f436040860182610e10565b506060830151610f566060860182610e10565b508091505092915050565b5f610f6c8383610f01565b905092915050565b5f602082019050919050565b5f610f8a82610e1f565b610f948185610e29565b935083602082028501610fa685610e39565b805f5b85811015610fe15784840389528151610fc28582610f61565b9450610fcd83610f74565b925060208a01995050600181019050610fa9565b50829750879550505050505092915050565b5f60c083015f8301516110085f860182610df2565b50602083015161101b6020860182610df2565b50604083015161102e6040860182610e01565b5060608301516110416060860182610e10565b5060808301516110546080860182610e10565b5060a083015184820360a086015261106c8282610f80565b9150508091505092915050565b5f6110848383610ff3565b905092915050565b5f602082019050919050565b5f6110a282610dc9565b6110ac8185610dd3565b9350836020820285016110be85610de3565b805f5b858110156110f957848403895281516110da8582611079565b94506110e58361108c565b925060208a019950506001810190506110c1565b50829750879550505050505092915050565b5f6020820190508181035f8301526111238184611098565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61116282610b6c565b915061116d83610b6c565b92508261117d5761117c61112b565b5b82820490509291505056fe',
26
+ }
27
+ ;('0x608060405234801561000f575f80fd5b506040516111ef3803806111ef83398181016040528101906100319190610abf565b5f815190505f8167ffffffffffffffff81111561005157610050610929565b5b60405190808252806020026020018201604052801561008a57816020015b610077610828565b81526020019060019003908161006f5790505b5090505f5b82811015610682575f8482815181106100ab576100aa610b06565b5b602002602001015190506100bd610828565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561015c57506040513d601f19601f820116820180604052508101906101599190610b33565b60015b1561019b5780826020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505b8173ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561020357506040513d601f19601f820116820180604052508101906102009190610b93565b60015b1561065457808260400190151590811515815250505f15158115150361065257610232836106b160201b60201c565b8360600184608001828152508281525050508273ffffffffffffffffffffffffffffffffffffffff1663963c94b96040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156102ac57506040513d601f19601f820116820180604052508101906102a99190610bf1565b60015b15610651578067ffffffffffffffff8111156102cb576102ca610929565b5b60405190808252806020026020018201604052801561030457816020015b6102f1610887565b8152602001906001900390816102e95790505b508360a001819052505f5b8181101561064e575f8573ffffffffffffffffffffffffffffffffffffffff166354c49fe9836040518263ffffffff1660e01b81526004016103519190610c2b565b602060405180830381865afa15801561036c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103909190610b33565b905061039a610887565b5f8773ffffffffffffffffffffffffffffffffffffffff166348e9c65e846040518263ffffffff1660e01b81526004016103d49190610c53565b60c060405180830381865afa1580156103ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104139190610d0d565b90505f83905083835f01515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561049b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104c39190610de8565b835f0151602001819052508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610516573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061053e9190610de8565b835f0151604001819052508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610592573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b69190610bf1565b835f015160600181815250508160200151836020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081604001518360400181815250508160600151836060018181525050828860a00151868151811061063257610631610b06565b5b602002602001018190525050505050808060010191505061030f565b50505b5b505b8084848151811061066857610667610b06565b5b60200260200101819052505050808060010191505061008f565b505f816040516020016106959190611171565b6040516020818303038152906040529050602081018059038082f35b5f808273ffffffffffffffffffffffffffffffffffffffff166317e280896040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561071b57506040513d601f19601f820116820180604052508101906107189190610bf1565b60015b1561072557809150505b8273ffffffffffffffffffffffffffffffffffffffff1663180692d06040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561078d57506040513d601f19601f8201168201806040525081019061078a9190610bf1565b60015b61081e578273ffffffffffffffffffffffffffffffffffffffff1663fadd59ab62093a80426107bc91906111be565b6040518263ffffffff1660e01b81526004016107d89190610c2b565b602060405180830381865afa1580156107f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108179190610bf1565b9150610823565b809250505b915091565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f81526020015f8152602001606081525090565b604051806080016040528061089a6108c8565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61095f82610919565b810181811067ffffffffffffffff8211171561097e5761097d610929565b5b80604052505050565b5f610990610904565b905061099c8282610956565b919050565b5f67ffffffffffffffff8211156109bb576109ba610929565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109f9826109d0565b9050919050565b610a09816109ef565b8114610a13575f80fd5b50565b5f81519050610a2481610a00565b92915050565b5f610a3c610a37846109a1565b610987565b90508083825260208201905060208402830185811115610a5f57610a5e6109cc565b5b835b81811015610a885780610a748882610a16565b845260208401935050602081019050610a61565b5050509392505050565b5f82601f830112610aa657610aa5610915565b5b8151610ab6848260208601610a2a565b91505092915050565b5f60208284031215610ad457610ad361090d565b5b5f82015167ffffffffffffffff811115610af157610af0610911565b5b610afd84828501610a92565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610b4857610b4761090d565b5b5f610b5584828501610a16565b91505092915050565b5f8115159050919050565b610b7281610b5e565b8114610b7c575f80fd5b50565b5f81519050610b8d81610b69565b92915050565b5f60208284031215610ba857610ba761090d565b5b5f610bb584828501610b7f565b91505092915050565b5f819050919050565b610bd081610bbe565b8114610bda575f80fd5b50565b5f81519050610beb81610bc7565b92915050565b5f60208284031215610c0657610c0561090d565b5b5f610c1384828501610bdd565b91505092915050565b610c2581610bbe565b82525050565b5f602082019050610c3e5f830184610c1c565b92915050565b610c4d816109ef565b82525050565b5f602082019050610c665f830184610c44565b92915050565b5f80fd5b5f60c08284031215610c8557610c84610c6c565b5b610c8f60c0610987565b90505f610c9e84828501610a16565b5f830152506020610cb184828501610a16565b6020830152506040610cc584828501610bdd565b6040830152506060610cd984828501610bdd565b6060830152506080610ced84828501610bdd565b60808301525060a0610d0184828501610bdd565b60a08301525092915050565b5f60c08284031215610d2257610d2161090d565b5b5f610d2f84828501610c70565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115610d5657610d55610929565b5b610d5f82610919565b9050602081019050919050565b8281835e5f83830152505050565b5f610d8c610d8784610d3c565b610987565b905082815260208101848484011115610da857610da7610d38565b5b610db3848285610d6c565b509392505050565b5f82601f830112610dcf57610dce610915565b5b8151610ddf848260208601610d7a565b91505092915050565b5f60208284031215610dfd57610dfc61090d565b5b5f82015167ffffffffffffffff811115610e1a57610e19610911565b5b610e2684828501610dbb565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610e61816109ef565b82525050565b610e7081610b5e565b82525050565b610e7f81610bbe565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f610ed282610eae565b610edc8185610eb8565b9350610eec818560208601610d6c565b610ef581610919565b840191505092915050565b5f608083015f830151610f155f860182610e58565b5060208301518482036020860152610f2d8282610ec8565b91505060408301518482036040860152610f478282610ec8565b9150506060830151610f5c6060860182610e76565b508091505092915050565b5f608083015f8301518482035f860152610f818282610f00565b9150506020830151610f966020860182610e58565b506040830151610fa96040860182610e76565b506060830151610fbc6060860182610e76565b508091505092915050565b5f610fd28383610f67565b905092915050565b5f602082019050919050565b5f610ff082610e85565b610ffa8185610e8f565b93508360208202850161100c85610e9f565b805f5b8581101561104757848403895281516110288582610fc7565b945061103383610fda565b925060208a0199505060018101905061100f565b50829750879550505050505092915050565b5f60c083015f83015161106e5f860182610e58565b5060208301516110816020860182610e58565b5060408301516110946040860182610e67565b5060608301516110a76060860182610e76565b5060808301516110ba6080860182610e76565b5060a083015184820360a08601526110d28282610fe6565b9150508091505092915050565b5f6110ea8383611059565b905092915050565b5f602082019050919050565b5f61110882610e2f565b6111128185610e39565b93508360208202850161112485610e49565b805f5b8581101561115f578484038952815161114085826110df565b945061114b836110f2565b925060208a01995050600181019050611127565b50829750879550505050505092915050565b5f6020820190508181035f83015261118981846110fe565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6111c882610bbe565b91506111d383610bbe565b9250826111e3576111e2611191565b5b82820490509291505056fe')
28
+
29
+ export const gaugesWeightBytecode =
30
+ '0x608060405234801561000f575f80fd5b506040516106f53803806106f58339818101604052810190610031919061036a565b5f732f50d538606fa9edd2b11e2446beb18c9d5846bb90505f82146100565781610058565b835b91505f838361006791906103e7565b67ffffffffffffffff8111156100805761007f61041a565b5b6040519080825280602002602001820160405280156100b957816020015b6100a66102ff565b81526020019060019003908161009e5790505b5090505f8490505b838110156102d0575f8373ffffffffffffffffffffffffffffffffffffffff1663b0539187836040518263ffffffff1660e01b81526004016101039190610456565b602060405180830381865afa15801561011e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014291906104c9565b905061014c6102ff565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff166395cfcec3836040518263ffffffff1660e01b81526004016101bc9190610503565b6020604051808303815f875af11580156101d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101fc919061051c565b8160200181815250508473ffffffffffffffffffffffffffffffffffffffff16636472eee18362093a80426102319190610547565b6040518363ffffffff1660e01b815260040161024e92919061057a565b6020604051808303815f875af115801561026a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e919061051c565b816040018181525050808488856102a591906103e7565b815181106102b6576102b56105a1565b5b6020026020010181905250505080806001019150506100c1565b505f816040516020016102e391906106d4565b6040516020818303038152906040529050602081018059038082f35b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f80fd5b5f819050919050565b61034981610337565b8114610353575f80fd5b50565b5f8151905061036481610340565b92915050565b5f805f6060848603121561038157610380610333565b5b5f61038e86828701610356565b935050602061039f86828701610356565b92505060406103b086828701610356565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6103f182610337565b91506103fc83610337565b9250828203905081811115610414576104136103ba565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61045081610337565b82525050565b5f6020820190506104695f830184610447565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104988261046f565b9050919050565b6104a88161048e565b81146104b2575f80fd5b50565b5f815190506104c38161049f565b92915050565b5f602082840312156104de576104dd610333565b5b5f6104eb848285016104b5565b91505092915050565b6104fd8161048e565b82525050565b5f6020820190506105165f8301846104f4565b92915050565b5f6020828403121561053157610530610333565b5b5f61053e84828501610356565b91505092915050565b5f61055182610337565b915061055c83610337565b9250828201905080821115610574576105736103ba565b5b92915050565b5f60408201905061058d5f8301856104f4565b61059a6020830184610447565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6106008161048e565b82525050565b61060f81610337565b82525050565b606082015f8201516106295f8501826105f7565b50602082015161063c6020850182610606565b50604082015161064f6040850182610606565b50505050565b5f6106608383610615565b60608301905092915050565b5f602082019050919050565b5f610682826105ce565b61068c81856105d8565b9350610697836105e8565b805f5b838110156106c75781516106ae8882610655565b97506106b98361066c565b92505060018101905061069a565b5085935050505092915050565b5f6020820190508181035f8301526106ec8184610678565b90509291505056fe'
31
+
32
+ export const gaugesRegistryBytecode =
33
+ '0x608060405234801561000f575f80fd5b5060405161055b38038061055b8339818101604052810190610031919061027a565b5f73abc000d88f23bb45525e447528dbf656a9d55bf590505f821461005657816100cf565b8073ffffffffffffffffffffffffffffffffffffffff166338f31214856040518263ffffffff1660e01b815260040161008f91906102d9565b602060405180830381865afa1580156100aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ce91906102f2565b5b91505f83836100de919061034a565b67ffffffffffffffff8111156100f7576100f661037d565b5b6040519080825280602002602001820160405280156101255781602001602082028036833780820191505090505b5090505f8490505b83811015610214578273ffffffffffffffffffffffffffffffffffffffff1663f5de124887836040518363ffffffff1660e01b81526004016101709291906103aa565b602060405180830381865afa15801561018b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101af919061042b565b8286836101bc919061034a565b815181106101cd576101cc610456565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061012d565b505f81604051602001610227919061053a565b6040516020818303038152906040529050602081018059038082f35b5f80fd5b5f819050919050565b61025981610247565b8114610263575f80fd5b50565b5f8151905061027481610250565b92915050565b5f805f6060848603121561029157610290610243565b5b5f61029e86828701610266565b93505060206102af86828701610266565b92505060406102c086828701610266565b9150509250925092565b6102d381610247565b82525050565b5f6020820190506102ec5f8301846102ca565b92915050565b5f6020828403121561030757610306610243565b5b5f61031484828501610266565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61035482610247565b915061035f83610247565b92508282039050818111156103775761037661031d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6040820190506103bd5f8301856102ca565b6103ca60208301846102ca565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103fa826103d1565b9050919050565b61040a816103f0565b8114610414575f80fd5b50565b5f8151905061042581610401565b92915050565b5f602082840312156104405761043f610243565b5b5f61044d84828501610417565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104b5816103f0565b82525050565b5f6104c683836104ac565b60208301905092915050565b5f602082019050919050565b5f6104e882610483565b6104f2818561048d565b93506104fd8361049d565b805f5b8381101561052d57815161051488826104bb565b975061051f836104d2565b925050600181019050610500565b5085935050505092915050565b5f6020820190508181035f83015261055281846104de565b90509291505056fe'
34
+
35
+ export const curveApiDataBytecodes = [
36
+ classicFactoryBytecode,
37
+ ngFactoryBytecode,
38
+ twoCryptoFactoryBytecode,
39
+ triCryptoFactoryBytecode,
40
+ cryptoFactoryBytecode,
41
+ mainFactoryBytecode,
42
+ lendingOneWayFactoryBytecode,
43
+ ]
@@ -0,0 +1,56 @@
1
+ export type Registry = {
2
+ id: string
3
+ address: string
4
+ bytecodeIndex: number
5
+ isLending?: boolean
6
+ }
7
+
8
+ export const registries: { [chainId: number]: Registry[] } = {
9
+ 1: [
10
+ { id: 'main', address: '0x90E00ACe148ca3b23Ac1bC8C240C2a7Dd9c2d7f5', bytecodeIndex: 5 },
11
+ { id: 'crypto', address: '0x8F942C20D02bEfc377D41445793068908E2250D0', bytecodeIndex: 4 },
12
+ { id: 'factory-v2', address: '0xB9fC157394Af804a3578134A6585C0dc9cc990d4', bytecodeIndex: 0 },
13
+ { id: 'factory-crvusd', address: '0x4F8846Ae9380B90d2E71D5e3D042dff3E7ebb40d', bytecodeIndex: 0 },
14
+ { id: 'factory-crypto', address: '0xF18056Bbd320E96A48e3Fbf8bC061322531aac99', bytecodeIndex: 2 },
15
+ { id: 'factory-stable-ng', address: '0x6A8cbed756804B16E05E741eDaBd5cB544AE21bf', bytecodeIndex: 1 },
16
+ { id: 'factory-tricrypto', address: '0x0c0e5f2ff0ff18a3be9b835635039256dc4b4963', bytecodeIndex: 3 },
17
+ { id: 'factory-twocrypto', address: '0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F', bytecodeIndex: 2 },
18
+ { id: 'lending-oneway', address: '0xea6876dde9e3467564acbee1ed5bac88783205e0', bytecodeIndex: 6, isLending: true },
19
+ ],
20
+ 42161: [
21
+ { id: 'main', address: '0x445FE580eF8d70FF569aB36e80c647af338db351', bytecodeIndex: 5 },
22
+ // { id: 'crypto', address: '0x0E9fBb167DF83EdE3240D6a5fa5d40c6C6851e15', bytecodeIndex: 4 },
23
+ { id: 'factory-v2', address: '0xb17b674D9c5CB2e441F8e196a2f048A81355d031', bytecodeIndex: 0 },
24
+ { id: 'factory-stable-ng', address: '0x9AF14D26075f142eb3F292D5065EB3faa646167b', bytecodeIndex: 1 },
25
+ { id: 'factory-tricrypto', address: '0xbC0797015fcFc47d9C1856639CaE50D0e69FbEE8', bytecodeIndex: 3 },
26
+ { id: 'factory-twocrypto', address: '0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F', bytecodeIndex: 2 },
27
+ ],
28
+ }
29
+
30
+ export const lendingStartIndex = {
31
+ 1: 8,
32
+ 42161: 9999,
33
+ }
34
+
35
+ export const CHUNK_SIZE = 30
36
+ export const GAUGES_CHUNK_SIZE = { 1: 60, 42161: 40 }
37
+ export const TOKENS_CHUNK_SIZE = 100
38
+ export const GAUGES_WEIGHTS_CHUNK_SIZE = 130
39
+ export const GAUGES_REGISTRY_CHUNK_SIZE = 30
40
+ export const BROKEN_GAUGES = {
41
+ 1: ['0x210A1c8E5663CC328F799e1c91215B5dba2F4458', '0xd3dFD8f308c9e6d88d7C09c9a6575C691c810407'],
42
+ 42161: ['0x0304F3aAdcc16597D277c12f4b12213e1F075F80'],
43
+ }
44
+
45
+ export const CUSTOM_GAUGES = {
46
+ // "lpToken": "gauge"
47
+ 1: {
48
+ // crveth (CRV+ETH)
49
+ '0xEd4064f376cB8d68F770FB1Ff088a3d0F3FF5c4d': '0x1cEBdB0856dd985fAe9b8fEa2262469360B8a3a6',
50
+ // rai (RAI+3pool)
51
+ '0x6BA5b4e438FA0aAf7C1bD179285aF65d13bD3D90': '0x66ec719045bBD62db5eBB11184c18237D3Cc2E62',
52
+ // wbeth (ETH+wBETH)
53
+ '0xBfAb6FA95E0091ed66058ad493189D2cB29385E6': '0x50161102a240b1456d770Dbb55c76d8dc2D160Aa',
54
+ },
55
+ 42161: {},
56
+ }
@@ -0,0 +1,207 @@
1
+ import { ONE_YEAR, tokenWithId } from '@stake-dao/constants'
2
+ import { chunk, uniqBy } from 'lodash-es'
3
+ import { encodeAbiParameters, formatEther, formatUnits, parseAbiParameters, zeroAddress } from 'viem'
4
+ import { mainnet } from 'viem/chains'
5
+ import { LLAMA_API_URL } from '../../../../endpoints.js'
6
+ import { getLlamaTokenPrefix, getPricesFromCurve } from '../../../../prices.js'
7
+ import { batchJsonRpc, equalTlc } from '../../../../utils.js'
8
+ import { handlePromise } from '../../../utils/promise.js'
9
+ import { getCurveDataGaugesOutputTypeAbi } from './abi.js'
10
+ import { gaugesBytecode } from './bytecode.js'
11
+ import { BROKEN_GAUGES, CUSTOM_GAUGES, GAUGES_CHUNK_SIZE, TOKENS_CHUNK_SIZE } from './config.js'
12
+ import { getGaugesFromRegistry } from './getGaugesFromRegistry.js'
13
+ import type { GaugeWeight } from './getGaugesWeights.js'
14
+ import { getPoolsFromRegistries } from './getPoolsFromRegistries.ts.js'
15
+ import { getRegistries } from './getRegistries.js'
16
+
17
+ export const fetchCurveBase = async (rpc: string, chainId: number, gaugesWeights: GaugeWeight[]) => {
18
+ const { lendingCallsStartIndex, poolCounts } = await getRegistries(rpc, chainId)
19
+
20
+ const promises = await handlePromise(
21
+ [
22
+ getPricesFromCurve(chainId),
23
+ getPoolsFromRegistries(rpc, lendingCallsStartIndex, poolCounts),
24
+ ...(chainId === mainnet.id ? [] : [getGaugesFromRegistry(chainId, 'https://eth.public-rpc.com')]),
25
+ ],
26
+ 'getCurveApiData',
27
+ )
28
+
29
+ const curvePrices = promises[0].data
30
+ const pools = promises[1]
31
+ const gaugesFromPools: string[] = chainId === mainnet.id ? [] : promises[2]
32
+
33
+ if (chainId === mainnet.id) {
34
+ for (const p of pools) {
35
+ if (p.gauge !== zeroAddress && !BROKEN_GAUGES[chainId].includes(p.gauge)) {
36
+ gaugesFromPools.push(p.gauge)
37
+ }
38
+ }
39
+ } else {
40
+ for (let i = 0; i < gaugesFromPools.length; i++) {
41
+ const p = gaugesFromPools[i]
42
+ if (p === zeroAddress || BROKEN_GAUGES[chainId].includes(p)) {
43
+ gaugesFromPools.splice(i, 1)
44
+ }
45
+ }
46
+ }
47
+
48
+ for (const lpToken of Object.keys(CUSTOM_GAUGES[chainId])) gaugesFromPools.push(CUSTOM_GAUGES[chainId][lpToken])
49
+
50
+ const gaugesFromPoolsChunks = chunk(gaugesFromPools, GAUGES_CHUNK_SIZE[chainId])
51
+ const gaugesCalls = gaugesFromPoolsChunks.map((gauges) => {
52
+ const inputParams = [gauges]
53
+
54
+ const inputData = encodeAbiParameters(parseAbiParameters(['address[] gauges']) as any, inputParams)
55
+ return gaugesBytecode[chainId].concat(inputData.slice(2))
56
+ })
57
+
58
+ const gauges = await batchJsonRpc({
59
+ rpc,
60
+ calls: gaugesCalls,
61
+ outputTypeAbi: getCurveDataGaugesOutputTypeAbi,
62
+ parse: false,
63
+ callsKey: 'Fetch Curve Gauges',
64
+ })
65
+
66
+ const tokens = uniqBy(
67
+ pools.flatMap((p) => p.coins),
68
+ 'coinAddress',
69
+ )
70
+
71
+ const extraRewards = uniqBy(
72
+ gauges.flatMap((g) => g.rewards.map((r) => r.token)),
73
+ 'tokenAddress',
74
+ )
75
+
76
+ const tokensChunks = chunk([...tokens, ...extraRewards], TOKENS_CHUNK_SIZE)
77
+
78
+ const tokensCallsPromises = tokensChunks.map(async (tc) => {
79
+ const httpArgs = tc
80
+ // biome-ignore lint/complexity/useLiteralKeys: type error with loadash-es
81
+ .map((t) => `${getLlamaTokenPrefix(chainId)}:${t['coinAddress'] ? t['coinAddress'] : t['tokenAddress']}`)
82
+ .toString()
83
+ const httpRequest = await fetch(`${LLAMA_API_URL}/prices/current/${httpArgs}`)
84
+ const httpResponse = await httpRequest.json()
85
+ return httpResponse.coins
86
+ })
87
+
88
+ const parsedPrices: { address: string; symbol: string; price: number }[] = []
89
+ for (const results of await Promise.allSettled(tokensCallsPromises)) {
90
+ if (results.status === 'fulfilled') {
91
+ for (const key of Object.keys(results.value)) {
92
+ const tokenData = results.value[key]
93
+ parsedPrices.push({
94
+ address: key.replace(`${getLlamaTokenPrefix(chainId)}:`, ''),
95
+ symbol: tokenData.symbol,
96
+ price: tokenData.price,
97
+ })
98
+ }
99
+ }
100
+ }
101
+
102
+ const crv = parsedPrices.find((p) => equalTlc(p.address, tokenWithId('crv', chainId)?.address as string))
103
+
104
+ const augmentedPools = pools.map((p, index) => {
105
+ const poolTypeIndex = poolCounts.filter((i) => i.sumCount - 1 < index).length
106
+ const poolType = poolCounts[poolTypeIndex].id
107
+
108
+ const isLending = poolCounts[poolTypeIndex].isLending
109
+
110
+ const coinsWithUsdBalance = p.coins.map((c) => {
111
+ let coinUsdPrice = parsedPrices.find((price) => equalTlc(price.address, c.coinAddress))?.price || undefined
112
+ coinUsdPrice =
113
+ typeof coinUsdPrice === 'undefined'
114
+ ? curvePrices.find((price) => equalTlc(price.address, c.coinAddress))?.usd_price || undefined
115
+ : coinUsdPrice
116
+
117
+ const coinBalance = formatUnits(c.balance, Number(c.decimals))
118
+ return {
119
+ ...c,
120
+ decimals: Number(c.decimals),
121
+ balance: coinBalance,
122
+ usdBalance: coinUsdPrice ? Number(coinBalance) * coinUsdPrice : 0,
123
+ }
124
+ })
125
+
126
+ const usdTotal = coinsWithUsdBalance.reduce((total: number, x) => (total += x.usdBalance), 0)
127
+ const lpPriceInUsd = p.totalSupply > BigInt(0) ? usdTotal / Number(formatEther(p.totalSupply)) : 0
128
+
129
+ let gaugeFromPool = CUSTOM_GAUGES[p.lp] ? CUSTOM_GAUGES[p.lp] : p.gauge
130
+ const gaugeData = gauges.find((g) => equalTlc(g.gauge, gaugeFromPool) || equalTlc(g.lpToken, p.lp))
131
+
132
+ gaugeFromPool = gaugeData ? gaugeData.gauge : gaugeFromPool
133
+ const gaugeWeightData = gaugesWeights.find((g) => equalTlc(g.gauge, gaugeFromPool))
134
+
135
+ let minCrvApr: number = 0
136
+ let maxCrvApr: number = 0
137
+ let extraRewards = []
138
+ const active = gaugeData && gaugeWeightData && !gaugeData.isKilled
139
+
140
+ if (active) {
141
+ const inflationRate = Number(formatEther(gaugeData.inflationRate))
142
+ const relativeWeight = Number(formatEther(BigInt(gaugeWeightData.relativeWeight)))
143
+ const workingSupply = Number(formatEther(gaugeData.workingSupply))
144
+
145
+ if (lpPriceInUsd && lpPriceInUsd > 0 && workingSupply > 0) {
146
+ minCrvApr =
147
+ ((((inflationRate * relativeWeight * ONE_YEAR) / workingSupply) * 0.4 * (crv?.price || 0)) / lpPriceInUsd) *
148
+ 100
149
+ maxCrvApr = minCrvApr * 2.5
150
+ }
151
+
152
+ extraRewards = gaugeData.rewards.map((r) => {
153
+ const periodFinish = Number(r.periodFinish)
154
+ const now = Math.floor(Date.now() / 1000)
155
+ const isFinished = now > periodFinish
156
+
157
+ let apr = 0
158
+
159
+ if (!isFinished) {
160
+ const rewardPrice = parsedPrices.find((price) => equalTlc(price.address, r.token.tokenAddress))
161
+
162
+ apr =
163
+ rewardPrice && usdTotal > 0
164
+ ? ((Number(formatUnits(r.rate * BigInt(ONE_YEAR), Number(r.token.decimals))) * rewardPrice.price) /
165
+ usdTotal) *
166
+ 100
167
+ : 0
168
+ }
169
+
170
+ return {
171
+ distributor: r.distributor,
172
+ periodFinish,
173
+ rate: formatUnits(r.rate, Number(r.token.decimals)),
174
+ token: { ...r.token, decimals: Number(r.token.decimals) },
175
+ apr,
176
+ }
177
+ })
178
+ }
179
+
180
+ return {
181
+ id: formatUnits(p.id, 0),
182
+ poolType,
183
+ ...(p.isMetapool && { isMetapool: p.isMetapool }),
184
+ isLending,
185
+ lp: p.lp,
186
+ pool: p.pool,
187
+ totalSupply: formatEther(p.totalSupply),
188
+ coins: coinsWithUsdBalance,
189
+ underlyingCoins: p.underlyingCoins,
190
+ usdTotal,
191
+ lpPriceInUsd,
192
+ crvApr: [minCrvApr, maxCrvApr],
193
+ gauge: gaugeData
194
+ ? {
195
+ address: gaugeData.gauge,
196
+ isKilled: gaugeData.isKilled,
197
+ inflationRate: formatUnits(gaugeData.inflationRate, 0),
198
+ relativeWeight: gaugeWeightData?.relativeWeight || '0',
199
+ workingSupply: formatUnits(gaugeData.workingSupply, 0),
200
+ extraRewards,
201
+ }
202
+ : undefined,
203
+ }
204
+ })
205
+
206
+ return augmentedPools
207
+ }
@@ -0,0 +1,41 @@
1
+ import { contracts } from '@stake-dao/constants'
2
+ import { range } from 'lodash-es'
3
+ import { decodeAbiParameters, encodeAbiParameters, parseAbiParameters } from 'viem'
4
+ import { batchJsonRpc, rpcCall } from '../../../../utils.js'
5
+ import { gaugesRegistryBytecode } from './bytecode.js'
6
+ import { GAUGES_REGISTRY_CHUNK_SIZE } from './config.js'
7
+
8
+ export const getGaugesFromRegistry = async (chainId: number, rpc: string): Promise<string[]> => {
9
+ const nGaugesRequest = await rpcCall(rpc, [
10
+ {
11
+ to: contracts.curveGaugeRegistry![1]!,
12
+ data: `0x38f31214${encodeAbiParameters(parseAbiParameters(['uint256 chainId']) as any, [chainId]).slice(2)}`,
13
+ },
14
+ ])
15
+
16
+ const nGauges = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], nGaugesRequest[0].result))
17
+
18
+ const gaugesRegistryCalls = range(0, nGauges, GAUGES_REGISTRY_CHUNK_SIZE).map((skip) => {
19
+ const inputParams = [
20
+ chainId,
21
+ skip,
22
+ skip + GAUGES_REGISTRY_CHUNK_SIZE > nGauges ? nGauges : skip + GAUGES_REGISTRY_CHUNK_SIZE,
23
+ ]
24
+
25
+ const inputData = encodeAbiParameters(
26
+ parseAbiParameters(['uint256 chainId, uint256 skip, uint256 limit']) as any,
27
+ inputParams,
28
+ )
29
+ return gaugesRegistryBytecode.concat(inputData.slice(2))
30
+ })
31
+
32
+ const gaugesFromRegistry = await batchJsonRpc({
33
+ rpc,
34
+ calls: gaugesRegistryCalls,
35
+ outputTypeAbi: [{ type: 'address[]', name: 'returnData' }],
36
+ parse: false,
37
+ callsKey: 'Fetch Curve Gauges Weights',
38
+ })
39
+
40
+ return gaugesFromRegistry
41
+ }
@@ -0,0 +1,52 @@
1
+ import { contracts } from '@stake-dao/constants'
2
+ import { range } from 'lodash-es'
3
+ import { decodeAbiParameters, encodeAbiParameters, formatUnits, parseAbiParameters } from 'viem'
4
+ import { batchJsonRpc, rpcCall } from '../../../../utils.js'
5
+ import { getCurveDataGaugesWeightsOutputTypeAbi } from './abi.js'
6
+ import { gaugesWeightBytecode } from './bytecode.js'
7
+ import { GAUGES_WEIGHTS_CHUNK_SIZE } from './config.js'
8
+
9
+ export type GaugeWeight = {
10
+ gauge: string
11
+ relativeWeight: string
12
+ futureRelativeWeight: string
13
+ }
14
+
15
+ export type GaugesWeightsData = { gaugesCount: number; gauges: GaugeWeight[] }
16
+
17
+ export const getGaugesWeights = async (rpc: string): Promise<GaugesWeightsData> => {
18
+ const nGaugesRequest = await rpcCall(rpc, [{ to: contracts.curveGaugeController![1]!, data: '0xe93841d0' }])
19
+
20
+ const nGauges = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], nGaugesRequest[0].result))
21
+
22
+ const gaugesWeightsCalls = range(0, nGauges, GAUGES_WEIGHTS_CHUNK_SIZE).map((skip) => {
23
+ const inputParams = [
24
+ nGauges,
25
+ skip,
26
+ skip + GAUGES_WEIGHTS_CHUNK_SIZE > nGauges ? nGauges : skip + GAUGES_WEIGHTS_CHUNK_SIZE,
27
+ ]
28
+
29
+ const inputData = encodeAbiParameters(
30
+ parseAbiParameters(['uint256 maxLength, uint256 skip, uint256 limit']) as any,
31
+ inputParams,
32
+ )
33
+ return gaugesWeightBytecode.concat(inputData.slice(2))
34
+ })
35
+
36
+ const gaugesWeights = await batchJsonRpc({
37
+ rpc,
38
+ calls: gaugesWeightsCalls,
39
+ outputTypeAbi: getCurveDataGaugesWeightsOutputTypeAbi,
40
+ parse: false,
41
+ callsKey: 'Fetch Curve Gauges Weights',
42
+ })
43
+
44
+ return {
45
+ gaugesCount: nGauges,
46
+ gauges: gaugesWeights.map((gw) => ({
47
+ gauge: gw.gauge,
48
+ relativeWeight: formatUnits(gw.relativeWeight, 0),
49
+ futureRelativeWeight: formatUnits(gw.futureRelativeWeight, 0),
50
+ })),
51
+ }
52
+ }