@enclave-e3/contracts 0.1.11 → 0.1.13

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 (257) hide show
  1. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +3 -3
  2. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/artifacts.d.ts +3 -3
  3. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +3 -3
  5. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/artifacts.d.ts +4 -4
  6. package/artifacts/build-info/{solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.json → solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.json} +27 -12
  7. package/artifacts/build-info/solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.output.json +1 -0
  8. package/artifacts/contracts/E3RefundManager.sol/E3RefundManager.json +684 -0
  9. package/artifacts/contracts/E3RefundManager.sol/artifacts.d.ts +27 -0
  10. package/artifacts/contracts/Enclave.sol/Enclave.json +530 -182
  11. package/artifacts/contracts/Enclave.sol/artifacts.d.ts +4 -4
  12. package/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +14 -1
  13. package/artifacts/contracts/interfaces/IBondingRegistry.sol/artifacts.d.ts +2 -2
  14. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +55 -5
  15. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/artifacts.d.ts +2 -2
  16. package/artifacts/contracts/interfaces/IComputeProvider.sol/IComputeProvider.json +1 -1
  17. package/artifacts/contracts/interfaces/IComputeProvider.sol/artifacts.d.ts +1 -1
  18. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/IDecryptionVerifier.json +1 -1
  19. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/artifacts.d.ts +1 -1
  20. package/artifacts/contracts/interfaces/IE3Program.sol/IE3Program.json +19 -24
  21. package/artifacts/contracts/interfaces/IE3Program.sol/artifacts.d.ts +2 -2
  22. package/artifacts/contracts/interfaces/IE3RefundManager.sol/IE3RefundManager.json +470 -0
  23. package/artifacts/contracts/interfaces/IE3RefundManager.sol/artifacts.d.ts +27 -0
  24. package/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +383 -128
  25. package/artifacts/contracts/interfaces/IEnclave.sol/artifacts.d.ts +2 -2
  26. package/artifacts/contracts/interfaces/ISlashVerifier.sol/ISlashVerifier.json +1 -1
  27. package/artifacts/contracts/interfaces/ISlashVerifier.sol/artifacts.d.ts +1 -1
  28. package/artifacts/contracts/interfaces/ISlashingManager.sol/ISlashingManager.json +1 -1
  29. package/artifacts/contracts/interfaces/ISlashingManager.sol/artifacts.d.ts +1 -1
  30. package/artifacts/contracts/lib/ExitQueueLib.sol/ExitQueueLib.json +1 -1
  31. package/artifacts/contracts/lib/ExitQueueLib.sol/artifacts.d.ts +1 -1
  32. package/artifacts/contracts/registry/BondingRegistry.sol/BondingRegistry.json +16 -3
  33. package/artifacts/contracts/registry/BondingRegistry.sol/artifacts.d.ts +4 -4
  34. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/CiphernodeRegistryOwnable.json +91 -25
  35. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/artifacts.d.ts +6 -6
  36. package/artifacts/contracts/slashing/SlashingManager.sol/SlashingManager.json +3 -3
  37. package/artifacts/contracts/slashing/SlashingManager.sol/artifacts.d.ts +3 -3
  38. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.json +57 -7
  39. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.json +57 -7
  40. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/artifacts.d.ts +8 -8
  41. package/artifacts/contracts/test/MockComputeProvider.sol/MockComputeProvider.json +3 -3
  42. package/artifacts/contracts/test/MockComputeProvider.sol/artifacts.d.ts +3 -3
  43. package/artifacts/contracts/test/MockDecryptionVerifier.sol/MockDecryptionVerifier.json +1 -1
  44. package/artifacts/contracts/test/MockDecryptionVerifier.sol/artifacts.d.ts +1 -1
  45. package/artifacts/contracts/test/MockE3Program.sol/MockE3Program.json +21 -26
  46. package/artifacts/contracts/test/MockE3Program.sol/artifacts.d.ts +4 -4
  47. package/artifacts/contracts/test/MockSlashingVerifier.sol/MockSlashingVerifier.json +1 -1
  48. package/artifacts/contracts/test/MockSlashingVerifier.sol/artifacts.d.ts +1 -1
  49. package/artifacts/contracts/test/MockStableToken.sol/MockUSDC.json +3 -3
  50. package/artifacts/contracts/test/MockStableToken.sol/artifacts.d.ts +3 -3
  51. package/artifacts/contracts/token/EnclaveTicketToken.sol/EnclaveTicketToken.json +14 -22
  52. package/artifacts/contracts/token/EnclaveTicketToken.sol/artifacts.d.ts +4 -4
  53. package/artifacts/contracts/token/EnclaveToken.sol/EnclaveToken.json +10 -10
  54. package/artifacts/contracts/token/EnclaveToken.sol/artifacts.d.ts +4 -4
  55. package/artifacts/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.json +89 -0
  56. package/artifacts/contracts/verifier/DkgPkVerifier.sol/CommitmentSchemeLib.json +13 -0
  57. package/artifacts/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.json +186 -0
  58. package/artifacts/contracts/verifier/DkgPkVerifier.sol/FrLib.json +13 -0
  59. package/artifacts/contracts/verifier/DkgPkVerifier.sol/Honk.json +13 -0
  60. package/artifacts/contracts/verifier/DkgPkVerifier.sol/HonkVerificationKey.json +13 -0
  61. package/artifacts/contracts/verifier/DkgPkVerifier.sol/IVerifier.json +38 -0
  62. package/artifacts/contracts/verifier/DkgPkVerifier.sol/RelationsLib.json +13 -0
  63. package/artifacts/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.json +400 -0
  64. package/artifacts/contracts/verifier/DkgPkVerifier.sol/artifacts.d.ts +155 -0
  65. package/artifacts/poseidon-solidity/PoseidonT3.sol/PoseidonT3.json +1 -1
  66. package/artifacts/poseidon-solidity/PoseidonT3.sol/artifacts.d.ts +1 -1
  67. package/contracts/E3RefundManager.sol +365 -0
  68. package/contracts/Enclave.sol +426 -119
  69. package/contracts/interfaces/IBondingRegistry.sol +6 -0
  70. package/contracts/interfaces/ICiphernodeRegistry.sol +29 -7
  71. package/contracts/interfaces/IE3.sol +2 -6
  72. package/contracts/interfaces/IE3Program.sol +3 -7
  73. package/contracts/interfaces/IE3RefundManager.sol +150 -0
  74. package/contracts/interfaces/IEnclave.sol +186 -64
  75. package/contracts/registry/BondingRegistry.sol +9 -0
  76. package/contracts/registry/CiphernodeRegistryOwnable.sol +89 -42
  77. package/contracts/test/MockCiphernodeRegistry.sol +20 -6
  78. package/contracts/test/MockE3Program.sol +3 -8
  79. package/contracts/verifier/DkgPkVerifier.sol +3140 -0
  80. package/dist/hardhat.config.d.ts.map +1 -1
  81. package/dist/hardhat.config.js +4 -4
  82. package/dist/ignition/modules/dkgPkVerifier.d.ts +3 -0
  83. package/dist/ignition/modules/dkgPkVerifier.d.ts.map +1 -0
  84. package/dist/ignition/modules/dkgPkVerifier.js +10 -0
  85. package/dist/ignition/modules/e3RefundManager.d.ts +3 -0
  86. package/dist/ignition/modules/e3RefundManager.d.ts.map +1 -0
  87. package/dist/ignition/modules/e3RefundManager.js +23 -0
  88. package/dist/ignition/modules/enclave.d.ts.map +1 -1
  89. package/dist/ignition/modules/enclave.js +10 -0
  90. package/dist/scripts/deployAndSave/e3RefundManager.d.ts +20 -0
  91. package/dist/scripts/deployAndSave/e3RefundManager.d.ts.map +1 -0
  92. package/dist/scripts/deployAndSave/e3RefundManager.js +55 -0
  93. package/dist/scripts/deployAndSave/enclave.d.ts +13 -1
  94. package/dist/scripts/deployAndSave/enclave.d.ts.map +1 -1
  95. package/dist/scripts/deployAndSave/enclave.js +8 -1
  96. package/dist/scripts/deployAndSave/verifiers.d.ts +29 -0
  97. package/dist/scripts/deployAndSave/verifiers.d.ts.map +1 -0
  98. package/dist/scripts/deployAndSave/verifiers.js +109 -0
  99. package/dist/scripts/deployEnclave.d.ts.map +1 -1
  100. package/dist/scripts/deployEnclave.js +36 -0
  101. package/dist/scripts/deployVerifiers.d.ts +2 -0
  102. package/dist/scripts/deployVerifiers.d.ts.map +1 -0
  103. package/dist/scripts/deployVerifiers.js +33 -0
  104. package/dist/scripts/index.d.ts +1 -0
  105. package/dist/scripts/index.d.ts.map +1 -1
  106. package/dist/scripts/index.js +1 -0
  107. package/dist/tasks/enclave.d.ts +0 -2
  108. package/dist/tasks/enclave.d.ts.map +1 -1
  109. package/dist/tasks/enclave.js +8 -72
  110. package/dist/tasks/program.d.ts +2 -0
  111. package/dist/tasks/program.d.ts.map +1 -0
  112. package/dist/tasks/program.js +55 -0
  113. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts +2 -0
  114. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts.map +1 -0
  115. package/dist/test/E3Lifecycle/E3Integration.spec.js +757 -0
  116. package/dist/test/Enclave.spec.js +83 -406
  117. package/dist/test/Registry/CiphernodeRegistryOwnable.spec.js +133 -59
  118. package/dist/types/contracts/E3RefundManager.d.ts +379 -0
  119. package/dist/types/contracts/E3RefundManager.d.ts.map +1 -0
  120. package/dist/types/contracts/E3RefundManager.js +24 -0
  121. package/dist/types/contracts/Enclave.d.ts +325 -73
  122. package/dist/types/contracts/Enclave.d.ts.map +1 -1
  123. package/dist/types/contracts/Enclave.js +27 -3
  124. package/dist/types/contracts/index.d.ts +3 -0
  125. package/dist/types/contracts/index.d.ts.map +1 -1
  126. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts +11 -1
  127. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts.map +1 -1
  128. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts +35 -7
  129. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts.map +1 -1
  130. package/dist/types/contracts/interfaces/ICiphernodeRegistry.js +4 -0
  131. package/dist/types/contracts/interfaces/IE3Program.d.ts +16 -18
  132. package/dist/types/contracts/interfaces/IE3Program.d.ts.map +1 -1
  133. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts +238 -0
  134. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts.map +1 -0
  135. package/dist/types/contracts/interfaces/IE3RefundManager.js +16 -0
  136. package/dist/types/contracts/interfaces/IEnclave.d.ts +290 -62
  137. package/dist/types/contracts/interfaces/IEnclave.d.ts.map +1 -1
  138. package/dist/types/contracts/interfaces/IEnclave.js +27 -3
  139. package/dist/types/contracts/interfaces/index.d.ts +1 -0
  140. package/dist/types/contracts/interfaces/index.d.ts.map +1 -1
  141. package/dist/types/contracts/registry/BondingRegistry.d.ts +11 -1
  142. package/dist/types/contracts/registry/BondingRegistry.d.ts.map +1 -1
  143. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts +35 -7
  144. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts.map +1 -1
  145. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.js +4 -0
  146. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts +35 -7
  147. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts.map +1 -1
  148. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.js +4 -0
  149. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts +35 -7
  150. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
  151. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.js +4 -0
  152. package/dist/types/contracts/test/MockE3Program.d.ts +16 -18
  153. package/dist/types/contracts/test/MockE3Program.d.ts.map +1 -1
  154. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts +36 -0
  155. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts.map +1 -0
  156. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.js +1 -0
  157. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts +36 -0
  158. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts.map +1 -0
  159. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.js +1 -0
  160. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts +36 -0
  161. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts.map +1 -0
  162. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.js +1 -0
  163. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts +138 -0
  164. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts.map +1 -0
  165. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.js +1 -0
  166. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  167. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  168. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.js +1 -0
  169. package/dist/types/contracts/verifier/index.d.ts +3 -0
  170. package/dist/types/contracts/verifier/index.d.ts.map +1 -0
  171. package/dist/types/contracts/verifier/index.js +1 -0
  172. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
  173. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -1
  174. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +1 -1
  175. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts +1 -1
  176. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts.map +1 -1
  177. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.js +1 -1
  178. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts +540 -0
  179. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts.map +1 -0
  180. package/dist/types/factories/contracts/E3RefundManager__factory.js +706 -0
  181. package/dist/types/factories/contracts/Enclave__factory.d.ts +412 -143
  182. package/dist/types/factories/contracts/Enclave__factory.d.ts.map +1 -1
  183. package/dist/types/factories/contracts/Enclave__factory.js +528 -180
  184. package/dist/types/factories/contracts/index.d.ts +2 -0
  185. package/dist/types/factories/contracts/index.d.ts.map +1 -1
  186. package/dist/types/factories/contracts/index.js +2 -0
  187. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts +10 -0
  188. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts.map +1 -1
  189. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.js +13 -0
  190. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts +42 -4
  191. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts.map +1 -1
  192. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.js +54 -4
  193. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts +14 -18
  194. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts.map +1 -1
  195. package/dist/types/factories/contracts/interfaces/IE3Program__factory.js +18 -23
  196. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts +358 -0
  197. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts.map +1 -0
  198. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.js +471 -0
  199. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts +303 -103
  200. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts.map +1 -1
  201. package/dist/types/factories/contracts/interfaces/IEnclave__factory.js +382 -127
  202. package/dist/types/factories/contracts/interfaces/index.d.ts +1 -0
  203. package/dist/types/factories/contracts/interfaces/index.d.ts.map +1 -1
  204. package/dist/types/factories/contracts/interfaces/index.js +1 -0
  205. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts +11 -1
  206. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts.map +1 -1
  207. package/dist/types/factories/contracts/registry/BondingRegistry__factory.js +14 -1
  208. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts +62 -12
  209. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts.map +1 -1
  210. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.js +79 -13
  211. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts +1 -1
  212. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts.map +1 -1
  213. package/dist/types/factories/contracts/slashing/SlashingManager__factory.js +1 -1
  214. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts +43 -5
  215. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts.map +1 -1
  216. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.js +55 -5
  217. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts +43 -5
  218. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts.map +1 -1
  219. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.js +55 -5
  220. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts +1 -1
  221. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts.map +1 -1
  222. package/dist/types/factories/contracts/test/MockComputeProvider__factory.js +1 -1
  223. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts +15 -19
  224. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts.map +1 -1
  225. package/dist/types/factories/contracts/test/MockE3Program__factory.js +19 -24
  226. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts +1 -1
  227. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts.map +1 -1
  228. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.js +1 -1
  229. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts +1 -1
  230. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts.map +1 -1
  231. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.js +1 -1
  232. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts +1 -1
  233. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts.map +1 -1
  234. package/dist/types/factories/contracts/token/EnclaveToken__factory.js +1 -1
  235. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts +66 -0
  236. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts.map +1 -0
  237. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.js +90 -0
  238. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts +87 -0
  239. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts.map +1 -0
  240. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.js +122 -0
  241. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts +26 -0
  242. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts.map +1 -0
  243. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.js +39 -0
  244. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts +323 -0
  245. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts.map +1 -0
  246. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.js +422 -0
  247. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  248. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  249. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.js +7 -0
  250. package/dist/types/factories/contracts/verifier/index.d.ts +2 -0
  251. package/dist/types/factories/contracts/verifier/index.d.ts.map +1 -0
  252. package/dist/types/factories/contracts/verifier/index.js +4 -0
  253. package/dist/types/index.d.ts +12 -0
  254. package/dist/types/index.d.ts.map +1 -1
  255. package/dist/types/index.js +6 -0
  256. package/package.json +17 -3
  257. package/artifacts/build-info/solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.output.json +0 -1
@@ -30,6 +30,22 @@
30
30
  "name": "CiphertextOutputNotPublished",
31
31
  "type": "error"
32
32
  },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "uint256",
37
+ "name": "e3Id",
38
+ "type": "uint256"
39
+ },
40
+ {
41
+ "internalType": "uint256",
42
+ "name": "expiration",
43
+ "type": "uint256"
44
+ }
45
+ ],
46
+ "name": "CommitteeDutiesCompleted",
47
+ "type": "error"
48
+ },
33
49
  {
34
50
  "inputs": [],
35
51
  "name": "CommitteeSelectionFailed",
@@ -43,7 +59,7 @@
43
59
  "type": "uint256"
44
60
  }
45
61
  ],
46
- "name": "E3AlreadyActivated",
62
+ "name": "E3AlreadyComplete",
47
63
  "type": "error"
48
64
  },
49
65
  {
@@ -54,12 +70,7 @@
54
70
  "type": "uint256"
55
71
  }
56
72
  ],
57
- "name": "E3DoesNotExist",
58
- "type": "error"
59
- },
60
- {
61
- "inputs": [],
62
- "name": "E3Expired",
73
+ "name": "E3AlreadyFailed",
63
74
  "type": "error"
64
75
  },
65
76
  {
@@ -70,12 +81,7 @@
70
81
  "type": "uint256"
71
82
  }
72
83
  ],
73
- "name": "E3NotActivated",
74
- "type": "error"
75
- },
76
- {
77
- "inputs": [],
78
- "name": "E3NotReady",
84
+ "name": "E3DoesNotExist",
79
85
  "type": "error"
80
86
  },
81
87
  {
@@ -95,14 +101,9 @@
95
101
  "internalType": "uint256",
96
102
  "name": "e3Id",
97
103
  "type": "uint256"
98
- },
99
- {
100
- "internalType": "uint256",
101
- "name": "expiration",
102
- "type": "uint256"
103
104
  }
104
105
  ],
105
- "name": "InputDeadlineNotPassed",
106
+ "name": "FailureConditionNotMet",
106
107
  "type": "error"
107
108
  },
108
109
  {
@@ -114,11 +115,11 @@
114
115
  },
115
116
  {
116
117
  "internalType": "uint256",
117
- "name": "expiration",
118
+ "name": "inputDeadline",
118
119
  "type": "uint256"
119
120
  }
120
121
  ],
121
- "name": "InputDeadlinePassed",
122
+ "name": "InputDeadlineNotReached",
122
123
  "type": "error"
123
124
  },
124
125
  {
@@ -182,8 +183,36 @@
182
183
  "type": "error"
183
184
  },
184
185
  {
185
- "inputs": [],
186
- "name": "InvalidInput",
186
+ "inputs": [
187
+ {
188
+ "internalType": "uint256",
189
+ "name": "deadline",
190
+ "type": "uint256"
191
+ }
192
+ ],
193
+ "name": "InvalidInputDeadline",
194
+ "type": "error"
195
+ },
196
+ {
197
+ "inputs": [
198
+ {
199
+ "internalType": "uint256",
200
+ "name": "end",
201
+ "type": "uint256"
202
+ }
203
+ ],
204
+ "name": "InvalidInputDeadlineEnd",
205
+ "type": "error"
206
+ },
207
+ {
208
+ "inputs": [
209
+ {
210
+ "internalType": "uint256",
211
+ "name": "start",
212
+ "type": "uint256"
213
+ }
214
+ ],
215
+ "name": "InvalidInputDeadlineStart",
187
216
  "type": "error"
188
217
  },
189
218
  {
@@ -198,8 +227,24 @@
198
227
  "type": "error"
199
228
  },
200
229
  {
201
- "inputs": [],
202
- "name": "InvalidStartWindow",
230
+ "inputs": [
231
+ {
232
+ "internalType": "uint256",
233
+ "name": "e3Id",
234
+ "type": "uint256"
235
+ },
236
+ {
237
+ "internalType": "enum IEnclave.E3Stage",
238
+ "name": "expected",
239
+ "type": "uint8"
240
+ },
241
+ {
242
+ "internalType": "enum IEnclave.E3Stage",
243
+ "name": "actual",
244
+ "type": "uint8"
245
+ }
246
+ ],
247
+ "name": "InvalidStage",
203
248
  "type": "error"
204
249
  },
205
250
  {
@@ -356,8 +401,59 @@
356
401
  {
357
402
  "anonymous": false,
358
403
  "inputs": [
404
+ {
405
+ "indexed": true,
406
+ "internalType": "uint256",
407
+ "name": "e3Id",
408
+ "type": "uint256"
409
+ }
410
+ ],
411
+ "name": "CommitteeFinalized",
412
+ "type": "event"
413
+ },
414
+ {
415
+ "anonymous": false,
416
+ "inputs": [
417
+ {
418
+ "indexed": true,
419
+ "internalType": "uint256",
420
+ "name": "e3Id",
421
+ "type": "uint256"
422
+ }
423
+ ],
424
+ "name": "CommitteeFormed",
425
+ "type": "event"
426
+ },
427
+ {
428
+ "anonymous": false,
429
+ "inputs": [
430
+ {
431
+ "indexed": true,
432
+ "internalType": "uint256",
433
+ "name": "e3Id",
434
+ "type": "uint256"
435
+ },
436
+ {
437
+ "indexed": false,
438
+ "internalType": "enum IEnclave.E3Stage",
439
+ "name": "failedAtStage",
440
+ "type": "uint8"
441
+ },
359
442
  {
360
443
  "indexed": false,
444
+ "internalType": "enum IEnclave.FailureReason",
445
+ "name": "reason",
446
+ "type": "uint8"
447
+ }
448
+ ],
449
+ "name": "E3Failed",
450
+ "type": "event"
451
+ },
452
+ {
453
+ "anonymous": false,
454
+ "inputs": [
455
+ {
456
+ "indexed": true,
361
457
  "internalType": "uint256",
362
458
  "name": "e3Id",
363
459
  "type": "uint256"
@@ -365,17 +461,17 @@
365
461
  {
366
462
  "indexed": false,
367
463
  "internalType": "uint256",
368
- "name": "expiration",
464
+ "name": "paymentAmount",
369
465
  "type": "uint256"
370
466
  },
371
467
  {
372
468
  "indexed": false,
373
- "internalType": "bytes32",
374
- "name": "committeePublicKey",
375
- "type": "bytes32"
469
+ "internalType": "uint256",
470
+ "name": "honestNodeCount",
471
+ "type": "uint256"
376
472
  }
377
473
  ],
378
- "name": "E3Activated",
474
+ "name": "E3FailureProcessed",
379
475
  "type": "event"
380
476
  },
381
477
  {
@@ -404,6 +500,19 @@
404
500
  "name": "E3ProgramEnabled",
405
501
  "type": "event"
406
502
  },
503
+ {
504
+ "anonymous": false,
505
+ "inputs": [
506
+ {
507
+ "indexed": true,
508
+ "internalType": "address",
509
+ "name": "e3RefundManager",
510
+ "type": "address"
511
+ }
512
+ ],
513
+ "name": "E3RefundManagerSet",
514
+ "type": "event"
515
+ },
407
516
  {
408
517
  "anonymous": false,
409
518
  "inputs": [
@@ -432,19 +541,9 @@
432
541
  },
433
542
  {
434
543
  "internalType": "uint256[2]",
435
- "name": "startWindow",
544
+ "name": "inputWindow",
436
545
  "type": "uint256[2]"
437
546
  },
438
- {
439
- "internalType": "uint256",
440
- "name": "duration",
441
- "type": "uint256"
442
- },
443
- {
444
- "internalType": "uint256",
445
- "name": "expiration",
446
- "type": "uint256"
447
- },
448
547
  {
449
548
  "internalType": "bytes32",
450
549
  "name": "encryptionSchemeId",
@@ -506,6 +605,31 @@
506
605
  "name": "E3Requested",
507
606
  "type": "event"
508
607
  },
608
+ {
609
+ "anonymous": false,
610
+ "inputs": [
611
+ {
612
+ "indexed": true,
613
+ "internalType": "uint256",
614
+ "name": "e3Id",
615
+ "type": "uint256"
616
+ },
617
+ {
618
+ "indexed": false,
619
+ "internalType": "enum IEnclave.E3Stage",
620
+ "name": "previousStage",
621
+ "type": "uint8"
622
+ },
623
+ {
624
+ "indexed": false,
625
+ "internalType": "enum IEnclave.E3Stage",
626
+ "name": "newStage",
627
+ "type": "uint8"
628
+ }
629
+ ],
630
+ "name": "E3StageChanged",
631
+ "type": "event"
632
+ },
509
633
  {
510
634
  "anonymous": false,
511
635
  "inputs": [
@@ -666,23 +790,39 @@
666
790
  "type": "event"
667
791
  },
668
792
  {
793
+ "anonymous": false,
669
794
  "inputs": [
670
795
  {
671
- "internalType": "uint256",
672
- "name": "e3Id",
673
- "type": "uint256"
674
- }
675
- ],
676
- "name": "activate",
677
- "outputs": [
678
- {
679
- "internalType": "bool",
680
- "name": "success",
681
- "type": "bool"
796
+ "components": [
797
+ {
798
+ "internalType": "uint256",
799
+ "name": "dkgWindow",
800
+ "type": "uint256"
801
+ },
802
+ {
803
+ "internalType": "uint256",
804
+ "name": "computeWindow",
805
+ "type": "uint256"
806
+ },
807
+ {
808
+ "internalType": "uint256",
809
+ "name": "decryptionWindow",
810
+ "type": "uint256"
811
+ },
812
+ {
813
+ "internalType": "uint256",
814
+ "name": "gracePeriod",
815
+ "type": "uint256"
816
+ }
817
+ ],
818
+ "indexed": false,
819
+ "internalType": "struct IEnclave.E3TimeoutConfig",
820
+ "name": "config",
821
+ "type": "tuple"
682
822
  }
683
823
  ],
684
- "stateMutability": "nonpayable",
685
- "type": "function"
824
+ "name": "TimeoutConfigUpdated",
825
+ "type": "event"
686
826
  },
687
827
  {
688
828
  "inputs": [],
@@ -697,6 +837,30 @@
697
837
  "stateMutability": "view",
698
838
  "type": "function"
699
839
  },
840
+ {
841
+ "inputs": [
842
+ {
843
+ "internalType": "uint256",
844
+ "name": "e3Id",
845
+ "type": "uint256"
846
+ }
847
+ ],
848
+ "name": "checkFailureCondition",
849
+ "outputs": [
850
+ {
851
+ "internalType": "bool",
852
+ "name": "canFail",
853
+ "type": "bool"
854
+ },
855
+ {
856
+ "internalType": "enum IEnclave.FailureReason",
857
+ "name": "reason",
858
+ "type": "uint8"
859
+ }
860
+ ],
861
+ "stateMutability": "view",
862
+ "type": "function"
863
+ },
700
864
  {
701
865
  "inputs": [],
702
866
  "name": "ciphernodeRegistry",
@@ -738,13 +902,7 @@
738
902
  }
739
903
  ],
740
904
  "name": "disableE3Program",
741
- "outputs": [
742
- {
743
- "internalType": "bool",
744
- "name": "success",
745
- "type": "bool"
746
- }
747
- ],
905
+ "outputs": [],
748
906
  "stateMutability": "nonpayable",
749
907
  "type": "function"
750
908
  },
@@ -757,13 +915,7 @@
757
915
  }
758
916
  ],
759
917
  "name": "disableEncryptionScheme",
760
- "outputs": [
761
- {
762
- "internalType": "bool",
763
- "name": "success",
764
- "type": "bool"
765
- }
766
- ],
918
+ "outputs": [],
767
919
  "stateMutability": "nonpayable",
768
920
  "type": "function"
769
921
  },
@@ -824,6 +976,19 @@
824
976
  "stateMutability": "view",
825
977
  "type": "function"
826
978
  },
979
+ {
980
+ "inputs": [],
981
+ "name": "e3RefundManager",
982
+ "outputs": [
983
+ {
984
+ "internalType": "contract IE3RefundManager",
985
+ "name": "",
986
+ "type": "address"
987
+ }
988
+ ],
989
+ "stateMutability": "view",
990
+ "type": "function"
991
+ },
827
992
  {
828
993
  "inputs": [
829
994
  {
@@ -844,16 +1009,6 @@
844
1009
  "name": "requestBlock",
845
1010
  "type": "uint256"
846
1011
  },
847
- {
848
- "internalType": "uint256",
849
- "name": "duration",
850
- "type": "uint256"
851
- },
852
- {
853
- "internalType": "uint256",
854
- "name": "expiration",
855
- "type": "uint256"
856
- },
857
1012
  {
858
1013
  "internalType": "bytes32",
859
1014
  "name": "encryptionSchemeId",
@@ -912,13 +1067,7 @@
912
1067
  }
913
1068
  ],
914
1069
  "name": "enableE3Program",
915
- "outputs": [
916
- {
917
- "internalType": "bool",
918
- "name": "success",
919
- "type": "bool"
920
- }
921
- ],
1070
+ "outputs": [],
922
1071
  "stateMutability": "nonpayable",
923
1072
  "type": "function"
924
1073
  },
@@ -938,11 +1087,47 @@
938
1087
  {
939
1088
  "inputs": [
940
1089
  {
941
- "internalType": "bytes32",
942
- "name": "encryptionSchemeId",
943
- "type": "bytes32"
944
- }
945
- ],
1090
+ "internalType": "uint256",
1091
+ "name": "e3Id",
1092
+ "type": "uint256"
1093
+ }
1094
+ ],
1095
+ "name": "getDeadlines",
1096
+ "outputs": [
1097
+ {
1098
+ "components": [
1099
+ {
1100
+ "internalType": "uint256",
1101
+ "name": "dkgDeadline",
1102
+ "type": "uint256"
1103
+ },
1104
+ {
1105
+ "internalType": "uint256",
1106
+ "name": "computeDeadline",
1107
+ "type": "uint256"
1108
+ },
1109
+ {
1110
+ "internalType": "uint256",
1111
+ "name": "decryptionDeadline",
1112
+ "type": "uint256"
1113
+ }
1114
+ ],
1115
+ "internalType": "struct IEnclave.E3Deadlines",
1116
+ "name": "deadlines",
1117
+ "type": "tuple"
1118
+ }
1119
+ ],
1120
+ "stateMutability": "view",
1121
+ "type": "function"
1122
+ },
1123
+ {
1124
+ "inputs": [
1125
+ {
1126
+ "internalType": "bytes32",
1127
+ "name": "encryptionSchemeId",
1128
+ "type": "bytes32"
1129
+ }
1130
+ ],
946
1131
  "name": "getDecryptionVerifier",
947
1132
  "outputs": [
948
1133
  {
@@ -983,19 +1168,9 @@
983
1168
  },
984
1169
  {
985
1170
  "internalType": "uint256[2]",
986
- "name": "startWindow",
1171
+ "name": "inputWindow",
987
1172
  "type": "uint256[2]"
988
1173
  },
989
- {
990
- "internalType": "uint256",
991
- "name": "duration",
992
- "type": "uint256"
993
- },
994
- {
995
- "internalType": "uint256",
996
- "name": "expiration",
997
- "type": "uint256"
998
- },
999
1174
  {
1000
1175
  "internalType": "bytes32",
1001
1176
  "name": "encryptionSchemeId",
@@ -1061,14 +1236,9 @@
1061
1236
  },
1062
1237
  {
1063
1238
  "internalType": "uint256[2]",
1064
- "name": "startWindow",
1239
+ "name": "inputWindow",
1065
1240
  "type": "uint256[2]"
1066
1241
  },
1067
- {
1068
- "internalType": "uint256",
1069
- "name": "duration",
1070
- "type": "uint256"
1071
- },
1072
1242
  {
1073
1243
  "internalType": "contract IE3Program",
1074
1244
  "name": "e3Program",
@@ -1106,6 +1276,98 @@
1106
1276
  "stateMutability": "pure",
1107
1277
  "type": "function"
1108
1278
  },
1279
+ {
1280
+ "inputs": [
1281
+ {
1282
+ "internalType": "uint256",
1283
+ "name": "e3Id",
1284
+ "type": "uint256"
1285
+ }
1286
+ ],
1287
+ "name": "getE3Stage",
1288
+ "outputs": [
1289
+ {
1290
+ "internalType": "enum IEnclave.E3Stage",
1291
+ "name": "stage",
1292
+ "type": "uint8"
1293
+ }
1294
+ ],
1295
+ "stateMutability": "view",
1296
+ "type": "function"
1297
+ },
1298
+ {
1299
+ "inputs": [
1300
+ {
1301
+ "internalType": "uint256",
1302
+ "name": "e3Id",
1303
+ "type": "uint256"
1304
+ }
1305
+ ],
1306
+ "name": "getFailureReason",
1307
+ "outputs": [
1308
+ {
1309
+ "internalType": "enum IEnclave.FailureReason",
1310
+ "name": "reason",
1311
+ "type": "uint8"
1312
+ }
1313
+ ],
1314
+ "stateMutability": "view",
1315
+ "type": "function"
1316
+ },
1317
+ {
1318
+ "inputs": [
1319
+ {
1320
+ "internalType": "uint256",
1321
+ "name": "e3Id",
1322
+ "type": "uint256"
1323
+ }
1324
+ ],
1325
+ "name": "getRequester",
1326
+ "outputs": [
1327
+ {
1328
+ "internalType": "address",
1329
+ "name": "requester",
1330
+ "type": "address"
1331
+ }
1332
+ ],
1333
+ "stateMutability": "view",
1334
+ "type": "function"
1335
+ },
1336
+ {
1337
+ "inputs": [],
1338
+ "name": "getTimeoutConfig",
1339
+ "outputs": [
1340
+ {
1341
+ "components": [
1342
+ {
1343
+ "internalType": "uint256",
1344
+ "name": "dkgWindow",
1345
+ "type": "uint256"
1346
+ },
1347
+ {
1348
+ "internalType": "uint256",
1349
+ "name": "computeWindow",
1350
+ "type": "uint256"
1351
+ },
1352
+ {
1353
+ "internalType": "uint256",
1354
+ "name": "decryptionWindow",
1355
+ "type": "uint256"
1356
+ },
1357
+ {
1358
+ "internalType": "uint256",
1359
+ "name": "gracePeriod",
1360
+ "type": "uint256"
1361
+ }
1362
+ ],
1363
+ "internalType": "struct IEnclave.E3TimeoutConfig",
1364
+ "name": "config",
1365
+ "type": "tuple"
1366
+ }
1367
+ ],
1368
+ "stateMutability": "view",
1369
+ "type": "function"
1370
+ },
1109
1371
  {
1110
1372
  "inputs": [
1111
1373
  {
@@ -1123,6 +1385,11 @@
1123
1385
  "name": "_bondingRegistry",
1124
1386
  "type": "address"
1125
1387
  },
1388
+ {
1389
+ "internalType": "contract IE3RefundManager",
1390
+ "name": "_e3RefundManager",
1391
+ "type": "address"
1392
+ },
1126
1393
  {
1127
1394
  "internalType": "contract IERC20",
1128
1395
  "name": "_feeToken",
@@ -1133,6 +1400,33 @@
1133
1400
  "name": "_maxDuration",
1134
1401
  "type": "uint256"
1135
1402
  },
1403
+ {
1404
+ "components": [
1405
+ {
1406
+ "internalType": "uint256",
1407
+ "name": "dkgWindow",
1408
+ "type": "uint256"
1409
+ },
1410
+ {
1411
+ "internalType": "uint256",
1412
+ "name": "computeWindow",
1413
+ "type": "uint256"
1414
+ },
1415
+ {
1416
+ "internalType": "uint256",
1417
+ "name": "decryptionWindow",
1418
+ "type": "uint256"
1419
+ },
1420
+ {
1421
+ "internalType": "uint256",
1422
+ "name": "gracePeriod",
1423
+ "type": "uint256"
1424
+ }
1425
+ ],
1426
+ "internalType": "struct IEnclave.E3TimeoutConfig",
1427
+ "name": "config",
1428
+ "type": "tuple"
1429
+ },
1136
1430
  {
1137
1431
  "internalType": "bytes[]",
1138
1432
  "name": "_e3ProgramsParams",
@@ -1144,6 +1438,25 @@
1144
1438
  "stateMutability": "nonpayable",
1145
1439
  "type": "function"
1146
1440
  },
1441
+ {
1442
+ "inputs": [
1443
+ {
1444
+ "internalType": "uint256",
1445
+ "name": "e3Id",
1446
+ "type": "uint256"
1447
+ }
1448
+ ],
1449
+ "name": "markE3Failed",
1450
+ "outputs": [
1451
+ {
1452
+ "internalType": "enum IEnclave.FailureReason",
1453
+ "name": "reason",
1454
+ "type": "uint8"
1455
+ }
1456
+ ],
1457
+ "stateMutability": "nonpayable",
1458
+ "type": "function"
1459
+ },
1147
1460
  {
1148
1461
  "inputs": [],
1149
1462
  "name": "maxDuration",
@@ -1171,16 +1484,16 @@
1171
1484
  "type": "function"
1172
1485
  },
1173
1486
  {
1174
- "inputs": [],
1175
- "name": "owner",
1176
- "outputs": [
1487
+ "inputs": [
1177
1488
  {
1178
- "internalType": "address",
1179
- "name": "",
1180
- "type": "address"
1489
+ "internalType": "uint256",
1490
+ "name": "e3Id",
1491
+ "type": "uint256"
1181
1492
  }
1182
1493
  ],
1183
- "stateMutability": "view",
1494
+ "name": "onCommitteeFinalized",
1495
+ "outputs": [],
1496
+ "stateMutability": "nonpayable",
1184
1497
  "type": "function"
1185
1498
  },
1186
1499
  {
@@ -1191,24 +1504,57 @@
1191
1504
  "type": "uint256"
1192
1505
  },
1193
1506
  {
1194
- "internalType": "bytes",
1195
- "name": "ciphertextOutput",
1196
- "type": "bytes"
1507
+ "internalType": "bytes32",
1508
+ "name": "committeePublicKeyHash",
1509
+ "type": "bytes32"
1510
+ }
1511
+ ],
1512
+ "name": "onCommitteePublished",
1513
+ "outputs": [],
1514
+ "stateMutability": "nonpayable",
1515
+ "type": "function"
1516
+ },
1517
+ {
1518
+ "inputs": [
1519
+ {
1520
+ "internalType": "uint256",
1521
+ "name": "e3Id",
1522
+ "type": "uint256"
1197
1523
  },
1198
1524
  {
1199
- "internalType": "bytes",
1200
- "name": "proof",
1201
- "type": "bytes"
1525
+ "internalType": "uint8",
1526
+ "name": "reason",
1527
+ "type": "uint8"
1202
1528
  }
1203
1529
  ],
1204
- "name": "publishCiphertextOutput",
1530
+ "name": "onE3Failed",
1531
+ "outputs": [],
1532
+ "stateMutability": "nonpayable",
1533
+ "type": "function"
1534
+ },
1535
+ {
1536
+ "inputs": [],
1537
+ "name": "owner",
1205
1538
  "outputs": [
1206
1539
  {
1207
- "internalType": "bool",
1208
- "name": "success",
1209
- "type": "bool"
1540
+ "internalType": "address",
1541
+ "name": "",
1542
+ "type": "address"
1210
1543
  }
1211
1544
  ],
1545
+ "stateMutability": "view",
1546
+ "type": "function"
1547
+ },
1548
+ {
1549
+ "inputs": [
1550
+ {
1551
+ "internalType": "uint256",
1552
+ "name": "e3Id",
1553
+ "type": "uint256"
1554
+ }
1555
+ ],
1556
+ "name": "processE3Failure",
1557
+ "outputs": [],
1212
1558
  "stateMutability": "nonpayable",
1213
1559
  "type": "function"
1214
1560
  },
@@ -1221,11 +1567,16 @@
1221
1567
  },
1222
1568
  {
1223
1569
  "internalType": "bytes",
1224
- "name": "data",
1570
+ "name": "ciphertextOutput",
1571
+ "type": "bytes"
1572
+ },
1573
+ {
1574
+ "internalType": "bytes",
1575
+ "name": "proof",
1225
1576
  "type": "bytes"
1226
1577
  }
1227
1578
  ],
1228
- "name": "publishInput",
1579
+ "name": "publishCiphertextOutput",
1229
1580
  "outputs": [
1230
1581
  {
1231
1582
  "internalType": "bool",
@@ -1283,14 +1634,9 @@
1283
1634
  },
1284
1635
  {
1285
1636
  "internalType": "uint256[2]",
1286
- "name": "startWindow",
1637
+ "name": "inputWindow",
1287
1638
  "type": "uint256[2]"
1288
1639
  },
1289
- {
1290
- "internalType": "uint256",
1291
- "name": "duration",
1292
- "type": "uint256"
1293
- },
1294
1640
  {
1295
1641
  "internalType": "contract IE3Program",
1296
1642
  "name": "e3Program",
@@ -1343,19 +1689,9 @@
1343
1689
  },
1344
1690
  {
1345
1691
  "internalType": "uint256[2]",
1346
- "name": "startWindow",
1692
+ "name": "inputWindow",
1347
1693
  "type": "uint256[2]"
1348
1694
  },
1349
- {
1350
- "internalType": "uint256",
1351
- "name": "duration",
1352
- "type": "uint256"
1353
- },
1354
- {
1355
- "internalType": "uint256",
1356
- "name": "expiration",
1357
- "type": "uint256"
1358
- },
1359
1695
  {
1360
1696
  "internalType": "bytes32",
1361
1697
  "name": "encryptionSchemeId",
@@ -1419,13 +1755,7 @@
1419
1755
  }
1420
1756
  ],
1421
1757
  "name": "setBondingRegistry",
1422
- "outputs": [
1423
- {
1424
- "internalType": "bool",
1425
- "name": "success",
1426
- "type": "bool"
1427
- }
1428
- ],
1758
+ "outputs": [],
1429
1759
  "stateMutability": "nonpayable",
1430
1760
  "type": "function"
1431
1761
  },
@@ -1438,13 +1768,7 @@
1438
1768
  }
1439
1769
  ],
1440
1770
  "name": "setCiphernodeRegistry",
1441
- "outputs": [
1442
- {
1443
- "internalType": "bool",
1444
- "name": "success",
1445
- "type": "bool"
1446
- }
1447
- ],
1771
+ "outputs": [],
1448
1772
  "stateMutability": "nonpayable",
1449
1773
  "type": "function"
1450
1774
  },
@@ -1462,13 +1786,7 @@
1462
1786
  }
1463
1787
  ],
1464
1788
  "name": "setDecryptionVerifier",
1465
- "outputs": [
1466
- {
1467
- "internalType": "bool",
1468
- "name": "success",
1469
- "type": "bool"
1470
- }
1471
- ],
1789
+ "outputs": [],
1472
1790
  "stateMutability": "nonpayable",
1473
1791
  "type": "function"
1474
1792
  },
@@ -1481,13 +1799,20 @@
1481
1799
  }
1482
1800
  ],
1483
1801
  "name": "setE3ProgramsParams",
1484
- "outputs": [
1802
+ "outputs": [],
1803
+ "stateMutability": "nonpayable",
1804
+ "type": "function"
1805
+ },
1806
+ {
1807
+ "inputs": [
1485
1808
  {
1486
- "internalType": "bool",
1487
- "name": "success",
1488
- "type": "bool"
1809
+ "internalType": "contract IE3RefundManager",
1810
+ "name": "_e3RefundManager",
1811
+ "type": "address"
1489
1812
  }
1490
1813
  ],
1814
+ "name": "setE3RefundManager",
1815
+ "outputs": [],
1491
1816
  "stateMutability": "nonpayable",
1492
1817
  "type": "function"
1493
1818
  },
@@ -1500,13 +1825,7 @@
1500
1825
  }
1501
1826
  ],
1502
1827
  "name": "setFeeToken",
1503
- "outputs": [
1504
- {
1505
- "internalType": "bool",
1506
- "name": "success",
1507
- "type": "bool"
1508
- }
1509
- ],
1828
+ "outputs": [],
1510
1829
  "stateMutability": "nonpayable",
1511
1830
  "type": "function"
1512
1831
  },
@@ -1519,13 +1838,42 @@
1519
1838
  }
1520
1839
  ],
1521
1840
  "name": "setMaxDuration",
1522
- "outputs": [
1841
+ "outputs": [],
1842
+ "stateMutability": "nonpayable",
1843
+ "type": "function"
1844
+ },
1845
+ {
1846
+ "inputs": [
1523
1847
  {
1524
- "internalType": "bool",
1525
- "name": "success",
1526
- "type": "bool"
1848
+ "components": [
1849
+ {
1850
+ "internalType": "uint256",
1851
+ "name": "dkgWindow",
1852
+ "type": "uint256"
1853
+ },
1854
+ {
1855
+ "internalType": "uint256",
1856
+ "name": "computeWindow",
1857
+ "type": "uint256"
1858
+ },
1859
+ {
1860
+ "internalType": "uint256",
1861
+ "name": "decryptionWindow",
1862
+ "type": "uint256"
1863
+ },
1864
+ {
1865
+ "internalType": "uint256",
1866
+ "name": "gracePeriod",
1867
+ "type": "uint256"
1868
+ }
1869
+ ],
1870
+ "internalType": "struct IEnclave.E3TimeoutConfig",
1871
+ "name": "config",
1872
+ "type": "tuple"
1527
1873
  }
1528
1874
  ],
1875
+ "name": "setTimeoutConfig",
1876
+ "outputs": [],
1529
1877
  "stateMutability": "nonpayable",
1530
1878
  "type": "function"
1531
1879
  },
@@ -1543,11 +1891,11 @@
1543
1891
  "type": "function"
1544
1892
  }
1545
1893
  ],
1546
- "bytecode": "0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6130b8806100d65f395ff3fe608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80638da5cb5b11610109578063cbd168721161009e578063efe0308b1161006e578063efe0308b146104af578063f2fde38b146104c2578063fad8e111146104d5578063fd2f3d01146104e8575f5ffd5b8063cbd1687214610463578063cf0f34c414610476578063d016b08d14610489578063e59e46951461049c575f5ffd5b8063b260c42a116100d9578063b260c42a14610412578063b68fd1be14610425578063c4ccafa214610438578063cb6496171461045a575f5ffd5b80638da5cb5b146103aa5780638dcdd86b146103da5780639c8570c8146103ec578063ac4e410c146103ff575f5ffd5b8063459d92941161017f5780636db5c8fd1161014f5780636db5c8fd14610371578063715018a61461037a5780637edcd7ab146103845780638581424314610397575f5ffd5b8063459d92941461030a5780634e92ec63146103385780634fc772641461034b578063647846a51461035e575f5ffd5b806315cce224116101ba57806315cce2241461026e5780634017daf014610291578063406ed35c146102bd5780634147a360146102dd575f5ffd5b80630ef81b2f146101e057806310bc6281146102255780631408d1221461024d575b5f5ffd5b6102086101ee3660046123f1565b5f908152600760205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6102086102333660046123f1565b60076020525f90815260409020546001600160a01b031681565b61026061025b366004612408565b6104fb565b60405161021c9291906125df565b61028161027c366004612613565b610b2e565b604051901515815260200161021c565b6102a461029f3660046123f1565b610be4565b60405161021c9d9c9b9a9998979695949392919061262e565b6102d06102cb3660046123f1565b610dfd565b60405161021c91906126df565b6102fc6102eb3660046123f1565b60096020525f908152604090205481565b60405190815260200161021c565b6102816103183660046127a2565b805160208183018101805160088252928201919093012091525460ff1681565b6102816103463660046123f1565b61111d565b610281610359366004612613565b6111b1565b600254610208906001600160a01b031681565b6102fc60035481565b610382611255565b005b610281610392366004612819565b611268565b600154610208906001600160a01b031681565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610208565b5f54610208906001600160a01b031681565b6102816103fa366004612819565b611429565b6102fc61040d366004612408565b6115cc565b6102816104203660046123f1565b6115d6565b610281610433366004612943565b611745565b610281610446366004612613565b60056020525f908152604090205460ff1681565b6102fc60045481565b610281610471366004612975565b6117ef565b6102816104843660046123f1565b6118b0565b6102816104973660046129a3565b6118f2565b6102816104aa366004612613565b6119c9565b6103826104bd3660046129eb565b611a72565b6103826104d0366004612613565b611bf3565b6102816104e3366004612613565b611c30565b6102816104f6366004612613565b611cdb565b5f610504612263565b5f61050e846115cc565b905061051d6020850185612aa2565b63ffffffff166105336040860160208701612aa2565b63ffffffff161015801561055857505f6105506020860186612aa2565b63ffffffff16115b849061058157604051633744092160e21b81526004016105789190612aeb565b60405180910390fd5b50604084013560608501351080159061059e575042606085013510155b6105bb576040516308594fb760e01b815260040160405180910390fd5b5f84608001351180156105d45750600354846080013511155b8460800135906105fa576040516313b783af60e21b815260040161057891815260200190565b5060055f61060e60c0870160a08801612613565b6001600160a01b0316815260208101919091526040015f205460ff1661063a60c0860160a08701612613565b906106645760405163295a6a6f60e11b81526001600160a01b039091166004820152602401610578565b5060048054935083905f61067783612b0d565b90915550506040805144602080830191909152818301869052825180830384018152606090920183528151910120808452815180830183529091869060029083908390808284375f92019190915250505060208401524360408085019190915280518082018252908681019060029083908390808284375f920182905250606087019390935250506080808701359085015260a0808501919091526107229060c08701908701612613565b6001600160a01b031660e084015261073d60c0860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050506101008085019190915261078690860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506101208801949094525050506101608401819052610180840181905260408051602081019091528181526101a0850152336101c08501526107fc60c0870160a08801612613565b6001600160a01b031663fefd9a8b868461081960c08b018b612b25565b61082660e08d018d612b25565b6108346101008f018f612b25565b6040518963ffffffff1660e01b8152600401610857989796959493929190612b90565b6020604051808303815f875af1158015610873573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190612be6565b5f818152600760205260409020549091506001600160a01b031681816108d3576040516381c4951960e01b815260040161057891815260200190565b5060c085018290526001600160a01b0381166101408601525f868152600660209081526040909120865181559086015186919061091690600183019060026122f6565b5060408201518160020155606082015181600301906002610938929190612391565b506080820151600582015560a0820151600682015560c0820151600782015560e08201516008820180546001600160a01b0319166001600160a01b0390921691909117905561010082015160098201906109929082612c7b565b50610120820151600a8201906109a89082612c7b565b50610140820151600b820180546001600160a01b0319166001600160a01b03909216919091179055610160820151600c820155610180820151600d8201556101a0820151600e8201906109fb9082612c7b565b506101c09190910151600f90910180546001600160a01b0319166001600160a01b039283161790555f878152600960205260409020859055600254610a439116333087611d85565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b90610a7690899087908c90600401612d36565b6020604051808303815f875af1158015610a92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab69190612d51565b610ad357604051630d8dbe2560e01b815260040160405180910390fd5b610ae360c0880160a08901612613565b6001600160a01b03167f4ecb0221c454f0d5b8f84e30e1140e22464fe24db107d56ce81dadfaa1549a838787604051610b1d9291906125df565b60405180910390a250505050915091565b5f610b37611dfa565b6001600160a01b03821615801590610b5d57506002546001600160a01b03838116911614155b8290610b885760405163eddf07f560e01b81526001600160a01b039091166004820152602401610578565b5050600280546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f3906020015b60405180910390a1919050565b600660208190525f91825260409091208054600282015460058301549383015460078401546008850154600986018054959794969495939492936001600160a01b039092169291610c3490612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6090612bfd565b8015610cab5780601f10610c8257610100808354040283529160200191610cab565b820191905f5260205f20905b815481529060010190602001808311610c8e57829003601f168201915b50505050509080600a018054610cc090612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec90612bfd565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b505050600b840154600c850154600d860154600e8701805496976001600160a01b039094169692955090935090610d6d90612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990612bfd565b8015610de45780601f10610dbb57610100808354040283529160200191610de4565b820191905f5260205f20905b815481529060010190602001808311610dc757829003601f168201915b505050600f90930154919250506001600160a01b03168d565b610e05612263565b5f82815260066020908152604080832081516101e0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610e4057505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ea657505050918352505060058201546020820152600682015460408201526007820154606082015260088201546001600160a01b0316608082015260098201805460a090920191610f0790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3390612bfd565b8015610f7e5780601f10610f5557610100808354040283529160200191610f7e565b820191905f5260205f20905b815481529060010190602001808311610f6157829003601f168201915b50505050508152602001600a82018054610f9790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc390612bfd565b801561100e5780601f10610fe55761010080835404028352916020019161100e565b820191905f5260205f20905b815481529060010190602001808311610ff157829003601f168201915b5050509183525050600b8201546001600160a01b03166020820152600c8201546040820152600d8201546060820152600e8201805460809092019161105290612bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461107e90612bfd565b80156110c95780601f106110a0576101008083540402835291602001916110c9565b820191905f5260205f20905b8154815290600101906020018083116110ac57829003601f168201915b5050509183525050600f91909101546001600160a01b0390811660209092019190915260e08201519192508391166111175760405163cd6f4a4f60e01b815260040161057891815260200190565b50919050565b5f611126611dfa565b5f8281526007602052604090205482906001600160a01b031661115f576040516381c4951960e01b815260040161057891815260200190565b50505f818152600760205260409081902080546001600160a01b0319169055516001907f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc90610bd79084815260200190565b5f6111ba611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff16611200576040516321ac7c5f60e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff1916905590519182526001917f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79101610bd7565b61125d611dfa565b6112665f611e55565b565b5f5f61127387610dfd565b90505f8160a0015111879061129e5760405163166b4d0360e01b815260040161057891815260200190565b5061018081015187906112c75760405163032c20ef60e21b815260040161057891815260200190565b506101a0810151518790156112f2576040516360ec327960e01b815260040161057891815260200190565b505f878152600660205260409020600e0161130e868883612d70565b508061014001516001600160a01b0316632f0e1bbf888888604051611334929190612e2a565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168252611377929189908990600401612e39565b602060405180830381865afa158015611392573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b69190612d51565b91508585836113da57604051632f9f8ab960e01b8152600401610578929190612e62565b50506113e587611ec5565b867f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca1698787604051611417929190612e62565b60405180910390a25095945050505050565b5f5f61143487610dfd565b90505f8160a0015111879061145f5760405163166b4d0360e01b815260040161057891815260200190565b5060a0810151879042811115611491576040516370c05fb960e11b815260048101929092526024820152604401610578565b50506101808101518790156114bc57604051637eb9cea960e11b815260040161057891815260200190565b505f86866040516114ce929190612e2a565b604080519182900382205f8b8152600660205291909120600d0181905560e0840151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf90611521908b9085908a908a90600401612e39565b6020604051808303815f875af115801561153d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115619190612d51565b925086868461158557604051632f9f8ab960e01b8152600401610578929190612e62565b5050877f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade07188886040516115b9929190612e62565b60405180910390a2505095945050505050565b620f424080611117565b5f5f6115e183610dfd565b90508060a001515f14839061160c57604051633e26347b60e21b815260040161057891815260200190565b506060810151514210156116335760405163a0750b5160e01b815260040160405180910390fd5b60608101516020015142111561165c57604051633d82a7cd60e11b815260040160405180910390fd5b5f8054604051630e82f3b760e41b8152600481018690526001600160a01b039091169063e82f3b7090602401602060405180830381865afa1580156116a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190612be6565b90505f8260800151426116da9190612e75565b5f86815260066020818152604092839020918201849055600c90910185905581518881529081018390529081018490529091507f38d3b0e32ac79e8b5ba6e95ad66f2ff3ef525893ba853ac583cd0a7c14d09e8c9060600160405180910390a1506001949350505050565b5f61174e611dfa565b81515f5b818110156117ad576001600885838151811061177057611770612a76565b60200260200101516040516117859190612e88565b908152604051908190036020019020805491151560ff19909216919091179055600101611752565b50600191507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81836040516117e19190612e9e565b60405180910390a150919050565b5f6117f8611dfa565b6001600160a01b0382161580159061182957505f838152600760205260409020546001600160a01b03838116911614155b839061184b576040516381c4951960e01b815260040161057891815260200190565b50505f8281526007602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381526001917ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb69910160405180910390a192915050565b5f6118b9611dfa565b5060038190556040518181526001907fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b52355290602001610bd7565b5f5f6118fd85610dfd565b90505f8160a001511185906119285760405163166b4d0360e01b815260040161057891815260200190565b5060a081015185904281116119595760405163142c294360e31b815260048101929092526024820152604401610578565b50508060e001516001600160a01b031663d927910e863387876040518563ffffffff1660e01b81526004016119919493929190612f01565b5f604051808303815f87803b1580156119a8575f5ffd5b505af11580156119ba573d5f5f3e3d5ffd5b50600198975050505050505050565b5f6119d2611dfa565b6001600160a01b038216158015906119f857506001546001600160a01b03838116911614155b8290611a23576040516320252f0b60e01b81526001600160a01b039091166004820152602401610578565b5050600180546001600160a01b0319166001600160a01b03831690811782556040519081527fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a790602001610bd7565b5f611a7b612171565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015611aa75750825b90505f8267ffffffffffffffff166001148015611ac35750303b155b905081158015611ad1575080155b15611aef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b2357845468ff00000000000000001916680100000000000000001785555b611b2c3361219b565b611b35876118b0565b50611b3f8a611c30565b50611b49896119c9565b50611b5388610b2e565b50611b5d86611745565b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b038c8116911614611b9b57611b9b8b611bf3565b8315611be657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611bfb611dfa565b6001600160a01b038116611c2457604051631e4fbdf760e01b81525f6004820152602401610578565b611c2d81611e55565b50565b5f611c39611dfa565b6001600160a01b03821615801590611c5e57505f546001600160a01b03838116911614155b8290611c89576040516375ac4eb760e11b81526001600160a01b039091166004820152602401610578565b50505f80546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b690602001610bd7565b5f611ce4611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff1615611d2b5760405163b29d459560e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff19166001908117909155915192835290917fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679101610bd7565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052611df49085906121ac565b50505050565b33611e2c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112665760405163118cdaa760e01b8152336004820152602401610578565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa158015611f0b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f329190810190612f29565b80519091505f8167ffffffffffffffff811115611f5157611f516126f1565b604051908082528060200260200182016040528015611f7a578160200160208202803683370190505b505f8581526009602052604081205491925090611f98908490612fb9565b90505f5b83811015611fca5781838281518110611fb757611fb7612a76565b6020908102919091010152600101611f9c565b505f858152600960205260408082208054929055600254600154915163095ea7b360e01b81526001600160a01b0392831660048201526024810184905291169063095ea7b3906044016020604051808303815f875af115801561202f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120539190612d51565b50600154600254604051636ec640c760e11b81526001600160a01b039283169263dd8c818e9261208c929116908990889060040161304b565b5f604051808303815f87803b1580156120a3575f5ffd5b505af11580156120b5573d5f5f3e3d5ffd5b505060025460015460405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529116925063095ea7b391506044016020604051808303815f875af115801561210a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212e9190612d51565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a868560405161216192919061307e565b60405180910390a2505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b6121a3612218565b611c2d8161223d565b5f5f60205f8451602086015f885af1806121cb576040513d5f823e3d81fd5b50505f513d915081156121e25780600114156121ef565b6001600160a01b0384163b155b15611df457604051635274afe760e01b81526001600160a01b0385166004820152602401610578565b612220612245565b61126657604051631afcd79f60e31b815260040160405180910390fd5b611bfb612218565b5f61224e612171565b5468010000000000000000900460ff16919050565b604051806101e001604052805f815260200161227d6123bf565b81526020015f81526020016122906123bf565b81526020015f81526020015f81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215612381579160200282015f5b8382111561234f57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261230b565b801561237f5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261234f565b505b5061238d9291506123dd565b5090565b8260028101928215612381579160200282015b828111156123815782518255916020019190600101906123a4565b60405180604001604052806002906020820280368337509192915050565b5b8082111561238d575f81556001016123de565b5f60208284031215612401575f5ffd5b5035919050565b5f60208284031215612418575f5ffd5b813567ffffffffffffffff81111561242e575f5ffd5b82016101208185031215612440575f5ffd5b9392505050565b805f5b6002811015611df457815163ffffffff1684526020938401939091019060010161244a565b805f5b6002811015611df4578151845260209384019390910190600101612472565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b805182525f60208201516124d66020850182612447565b506040820151606084015260608201516124f3608085018261246f565b50608082015160c084015260a082015160e084015260c082015161010084015260e082015161252e6101208501826001600160a01b03169052565b5061010082015161022061014085015261254c610220850182612491565b90506101208301518482036101608601526125678282612491565b9150506101408301516125866101808601826001600160a01b03169052565b506101608301516101a08501526101808301516101c08501526101a08301518482036101e08601526125b88282612491565b9150506101c08301516125d76102008601826001600160a01b03169052565b509392505050565b828152604060208201525f6125f760408301846124bf565b949350505050565b6001600160a01b0381168114611c2d575f5ffd5b5f60208284031215612623575f5ffd5b8135612440816125ff565b8d81528c60208201528b60408201528a60608201528960808201526001600160a01b03891660a08201526101a060c08201525f61266f6101a083018a612491565b82810360e0840152612681818a612491565b6001600160a01b038916610100850152905086610120840152856101408401528281036101608401526126b48186612491565b9150506126cd6101808301846001600160a01b03169052565b9e9d5050505050505050505050505050565b602081525f61244060208301846124bf565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561272e5761272e6126f1565b604052919050565b5f82601f830112612745575f5ffd5b813567ffffffffffffffff81111561275f5761275f6126f1565b612772601f8201601f1916602001612705565b818152846020838601011115612786575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156127b2575f5ffd5b813567ffffffffffffffff8111156127c8575f5ffd5b6125f784828501612736565b5f5f83601f8401126127e4575f5ffd5b50813567ffffffffffffffff8111156127fb575f5ffd5b602083019150836020828501011115612812575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561282d575f5ffd5b85359450602086013567ffffffffffffffff81111561284a575f5ffd5b612856888289016127d4565b909550935050604086013567ffffffffffffffff811115612875575f5ffd5b612881888289016127d4565b969995985093965092949392505050565b5f67ffffffffffffffff8211156128ab576128ab6126f1565b5060051b60200190565b5f82601f8301126128c4575f5ffd5b81356128d76128d282612892565b612705565b8082825260208201915060208360051b8601019250858311156128f8575f5ffd5b602085015b8381101561293957803567ffffffffffffffff81111561291b575f5ffd5b61292a886020838a0101612736565b845250602092830192016128fd565b5095945050505050565b5f60208284031215612953575f5ffd5b813567ffffffffffffffff811115612969575f5ffd5b6125f7848285016128b5565b5f5f60408385031215612986575f5ffd5b823591506020830135612998816125ff565b809150509250929050565b5f5f5f604084860312156129b5575f5ffd5b83359250602084013567ffffffffffffffff8111156129d2575f5ffd5b6129de868287016127d4565b9497909650939450505050565b5f5f5f5f5f5f60c08789031215612a00575f5ffd5b8635612a0b816125ff565b95506020870135612a1b816125ff565b94506040870135612a2b816125ff565b93506060870135612a3b816125ff565b92506080870135915060a087013567ffffffffffffffff811115612a5d575f5ffd5b612a6989828a016128b5565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b803563ffffffff81168114612a9d575f5ffd5b919050565b5f60208284031215612ab2575f5ffd5b61244082612a8a565b805f5b6002811015611df45763ffffffff612ad583612a8a565b1684526020938401939190910190600101612abe565b604081016121958284612abb565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612b1e57612b1e612af9565b5060010190565b5f5f8335601e19843603018112612b3a575f5ffd5b83018035915067ffffffffffffffff821115612b54575f5ffd5b602001915036819003821315612812575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b88815287602082015260a060408201525f612baf60a08301888a612b68565b8281036060840152612bc2818789612b68565b90508281036080840152612bd7818587612b68565b9b9a5050505050505050505050565b5f60208284031215612bf6575f5ffd5b5051919050565b600181811c90821680612c1157607f821691505b60208210810361111757634e487b7160e01b5f52602260045260245ffd5b601f821115612c7657805f5260205f20601f840160051c81016020851015612c545750805b601f840160051c820191505b81811015612c73575f8155600101612c60565b50505b505050565b815167ffffffffffffffff811115612c9557612c956126f1565b612ca981612ca38454612bfd565b84612c2f565b6020601f821160018114612cdb575f8315612cc45750848201515b5f19600385901b1c1916600184901b178455612c73565b5f84815260208120601f198516915b82811015612d0a5787850151825560209485019460019092019101612cea565b5084821015612d2757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016125f76040830184612abb565b5f60208284031215612d61575f5ffd5b81518015158114612440575f5ffd5b67ffffffffffffffff831115612d8857612d886126f1565b612d9c83612d968354612bfd565b83612c2f565b5f601f841160018114612dcd575f8515612db65750838201355b5f19600387901b1c1916600186901b178355612c73565b5f83815260208120601f198716915b82811015612dfc5786850135825560209485019460019092019101612ddc565b5086821015612e18575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b848152836020820152606060408201525f612e58606083018486612b68565b9695505050505050565b602081525f6125f7602083018486612b68565b8082018082111561219557612195612af9565b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612ef557603f19878603018452612ee0858351612491565b94506020938401939190910190600101612ec4565b50929695505050505050565b8481526001600160a01b0384166020820152606060408201525f612e58606083018486612b68565b5f60208284031215612f39575f5ffd5b815167ffffffffffffffff811115612f4f575f5ffd5b8201601f81018413612f5f575f5ffd5b8051612f6d6128d282612892565b8082825260208201915060208360051b850101925086831115612f8e575f5ffd5b6020840193505b82841015612e58578351612fa8816125ff565b825260209384019390910190612f95565b5f82612fd357634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b828110156130115781516001600160a01b0316865260209586019590910190600101612fea565b5093949350505050565b5f8151808452602084019350602083015f5b8281101561301157815186526020958601959091019060010161302d565b6001600160a01b0384168152606060208201525f61306c6060830185612fd8565b8281036040840152612e58818561301b565b604081525f6130906040830185612fd8565b82810360208401526130a2818561301b565b9594505050505056fea164736f6c634300081c000a",
1547
- "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80638da5cb5b11610109578063cbd168721161009e578063efe0308b1161006e578063efe0308b146104af578063f2fde38b146104c2578063fad8e111146104d5578063fd2f3d01146104e8575f5ffd5b8063cbd1687214610463578063cf0f34c414610476578063d016b08d14610489578063e59e46951461049c575f5ffd5b8063b260c42a116100d9578063b260c42a14610412578063b68fd1be14610425578063c4ccafa214610438578063cb6496171461045a575f5ffd5b80638da5cb5b146103aa5780638dcdd86b146103da5780639c8570c8146103ec578063ac4e410c146103ff575f5ffd5b8063459d92941161017f5780636db5c8fd1161014f5780636db5c8fd14610371578063715018a61461037a5780637edcd7ab146103845780638581424314610397575f5ffd5b8063459d92941461030a5780634e92ec63146103385780634fc772641461034b578063647846a51461035e575f5ffd5b806315cce224116101ba57806315cce2241461026e5780634017daf014610291578063406ed35c146102bd5780634147a360146102dd575f5ffd5b80630ef81b2f146101e057806310bc6281146102255780631408d1221461024d575b5f5ffd5b6102086101ee3660046123f1565b5f908152600760205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6102086102333660046123f1565b60076020525f90815260409020546001600160a01b031681565b61026061025b366004612408565b6104fb565b60405161021c9291906125df565b61028161027c366004612613565b610b2e565b604051901515815260200161021c565b6102a461029f3660046123f1565b610be4565b60405161021c9d9c9b9a9998979695949392919061262e565b6102d06102cb3660046123f1565b610dfd565b60405161021c91906126df565b6102fc6102eb3660046123f1565b60096020525f908152604090205481565b60405190815260200161021c565b6102816103183660046127a2565b805160208183018101805160088252928201919093012091525460ff1681565b6102816103463660046123f1565b61111d565b610281610359366004612613565b6111b1565b600254610208906001600160a01b031681565b6102fc60035481565b610382611255565b005b610281610392366004612819565b611268565b600154610208906001600160a01b031681565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610208565b5f54610208906001600160a01b031681565b6102816103fa366004612819565b611429565b6102fc61040d366004612408565b6115cc565b6102816104203660046123f1565b6115d6565b610281610433366004612943565b611745565b610281610446366004612613565b60056020525f908152604090205460ff1681565b6102fc60045481565b610281610471366004612975565b6117ef565b6102816104843660046123f1565b6118b0565b6102816104973660046129a3565b6118f2565b6102816104aa366004612613565b6119c9565b6103826104bd3660046129eb565b611a72565b6103826104d0366004612613565b611bf3565b6102816104e3366004612613565b611c30565b6102816104f6366004612613565b611cdb565b5f610504612263565b5f61050e846115cc565b905061051d6020850185612aa2565b63ffffffff166105336040860160208701612aa2565b63ffffffff161015801561055857505f6105506020860186612aa2565b63ffffffff16115b849061058157604051633744092160e21b81526004016105789190612aeb565b60405180910390fd5b50604084013560608501351080159061059e575042606085013510155b6105bb576040516308594fb760e01b815260040160405180910390fd5b5f84608001351180156105d45750600354846080013511155b8460800135906105fa576040516313b783af60e21b815260040161057891815260200190565b5060055f61060e60c0870160a08801612613565b6001600160a01b0316815260208101919091526040015f205460ff1661063a60c0860160a08701612613565b906106645760405163295a6a6f60e11b81526001600160a01b039091166004820152602401610578565b5060048054935083905f61067783612b0d565b90915550506040805144602080830191909152818301869052825180830384018152606090920183528151910120808452815180830183529091869060029083908390808284375f92019190915250505060208401524360408085019190915280518082018252908681019060029083908390808284375f920182905250606087019390935250506080808701359085015260a0808501919091526107229060c08701908701612613565b6001600160a01b031660e084015261073d60c0860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050506101008085019190915261078690860186612b25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506101208801949094525050506101608401819052610180840181905260408051602081019091528181526101a0850152336101c08501526107fc60c0870160a08801612613565b6001600160a01b031663fefd9a8b868461081960c08b018b612b25565b61082660e08d018d612b25565b6108346101008f018f612b25565b6040518963ffffffff1660e01b8152600401610857989796959493929190612b90565b6020604051808303815f875af1158015610873573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190612be6565b5f818152600760205260409020549091506001600160a01b031681816108d3576040516381c4951960e01b815260040161057891815260200190565b5060c085018290526001600160a01b0381166101408601525f868152600660209081526040909120865181559086015186919061091690600183019060026122f6565b5060408201518160020155606082015181600301906002610938929190612391565b506080820151600582015560a0820151600682015560c0820151600782015560e08201516008820180546001600160a01b0319166001600160a01b0390921691909117905561010082015160098201906109929082612c7b565b50610120820151600a8201906109a89082612c7b565b50610140820151600b820180546001600160a01b0319166001600160a01b03909216919091179055610160820151600c820155610180820151600d8201556101a0820151600e8201906109fb9082612c7b565b506101c09190910151600f90910180546001600160a01b0319166001600160a01b039283161790555f878152600960205260409020859055600254610a439116333087611d85565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b90610a7690899087908c90600401612d36565b6020604051808303815f875af1158015610a92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab69190612d51565b610ad357604051630d8dbe2560e01b815260040160405180910390fd5b610ae360c0880160a08901612613565b6001600160a01b03167f4ecb0221c454f0d5b8f84e30e1140e22464fe24db107d56ce81dadfaa1549a838787604051610b1d9291906125df565b60405180910390a250505050915091565b5f610b37611dfa565b6001600160a01b03821615801590610b5d57506002546001600160a01b03838116911614155b8290610b885760405163eddf07f560e01b81526001600160a01b039091166004820152602401610578565b5050600280546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f3906020015b60405180910390a1919050565b600660208190525f91825260409091208054600282015460058301549383015460078401546008850154600986018054959794969495939492936001600160a01b039092169291610c3490612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6090612bfd565b8015610cab5780601f10610c8257610100808354040283529160200191610cab565b820191905f5260205f20905b815481529060010190602001808311610c8e57829003601f168201915b50505050509080600a018054610cc090612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec90612bfd565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b505050600b840154600c850154600d860154600e8701805496976001600160a01b039094169692955090935090610d6d90612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990612bfd565b8015610de45780601f10610dbb57610100808354040283529160200191610de4565b820191905f5260205f20905b815481529060010190602001808311610dc757829003601f168201915b505050600f90930154919250506001600160a01b03168d565b610e05612263565b5f82815260066020908152604080832081516101e0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610e4057505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ea657505050918352505060058201546020820152600682015460408201526007820154606082015260088201546001600160a01b0316608082015260098201805460a090920191610f0790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3390612bfd565b8015610f7e5780601f10610f5557610100808354040283529160200191610f7e565b820191905f5260205f20905b815481529060010190602001808311610f6157829003601f168201915b50505050508152602001600a82018054610f9790612bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc390612bfd565b801561100e5780601f10610fe55761010080835404028352916020019161100e565b820191905f5260205f20905b815481529060010190602001808311610ff157829003601f168201915b5050509183525050600b8201546001600160a01b03166020820152600c8201546040820152600d8201546060820152600e8201805460809092019161105290612bfd565b80601f016020809104026020016040519081016040528092919081815260200182805461107e90612bfd565b80156110c95780601f106110a0576101008083540402835291602001916110c9565b820191905f5260205f20905b8154815290600101906020018083116110ac57829003601f168201915b5050509183525050600f91909101546001600160a01b0390811660209092019190915260e08201519192508391166111175760405163cd6f4a4f60e01b815260040161057891815260200190565b50919050565b5f611126611dfa565b5f8281526007602052604090205482906001600160a01b031661115f576040516381c4951960e01b815260040161057891815260200190565b50505f818152600760205260409081902080546001600160a01b0319169055516001907f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc90610bd79084815260200190565b5f6111ba611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff16611200576040516321ac7c5f60e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff1916905590519182526001917f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79101610bd7565b61125d611dfa565b6112665f611e55565b565b5f5f61127387610dfd565b90505f8160a0015111879061129e5760405163166b4d0360e01b815260040161057891815260200190565b5061018081015187906112c75760405163032c20ef60e21b815260040161057891815260200190565b506101a0810151518790156112f2576040516360ec327960e01b815260040161057891815260200190565b505f878152600660205260409020600e0161130e868883612d70565b508061014001516001600160a01b0316632f0e1bbf888888604051611334929190612e2a565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168252611377929189908990600401612e39565b602060405180830381865afa158015611392573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b69190612d51565b91508585836113da57604051632f9f8ab960e01b8152600401610578929190612e62565b50506113e587611ec5565b867f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca1698787604051611417929190612e62565b60405180910390a25095945050505050565b5f5f61143487610dfd565b90505f8160a0015111879061145f5760405163166b4d0360e01b815260040161057891815260200190565b5060a0810151879042811115611491576040516370c05fb960e11b815260048101929092526024820152604401610578565b50506101808101518790156114bc57604051637eb9cea960e11b815260040161057891815260200190565b505f86866040516114ce929190612e2a565b604080519182900382205f8b8152600660205291909120600d0181905560e0840151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf90611521908b9085908a908a90600401612e39565b6020604051808303815f875af115801561153d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115619190612d51565b925086868461158557604051632f9f8ab960e01b8152600401610578929190612e62565b5050877f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade07188886040516115b9929190612e62565b60405180910390a2505095945050505050565b620f424080611117565b5f5f6115e183610dfd565b90508060a001515f14839061160c57604051633e26347b60e21b815260040161057891815260200190565b506060810151514210156116335760405163a0750b5160e01b815260040160405180910390fd5b60608101516020015142111561165c57604051633d82a7cd60e11b815260040160405180910390fd5b5f8054604051630e82f3b760e41b8152600481018690526001600160a01b039091169063e82f3b7090602401602060405180830381865afa1580156116a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190612be6565b90505f8260800151426116da9190612e75565b5f86815260066020818152604092839020918201849055600c90910185905581518881529081018390529081018490529091507f38d3b0e32ac79e8b5ba6e95ad66f2ff3ef525893ba853ac583cd0a7c14d09e8c9060600160405180910390a1506001949350505050565b5f61174e611dfa565b81515f5b818110156117ad576001600885838151811061177057611770612a76565b60200260200101516040516117859190612e88565b908152604051908190036020019020805491151560ff19909216919091179055600101611752565b50600191507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81836040516117e19190612e9e565b60405180910390a150919050565b5f6117f8611dfa565b6001600160a01b0382161580159061182957505f838152600760205260409020546001600160a01b03838116911614155b839061184b576040516381c4951960e01b815260040161057891815260200190565b50505f8281526007602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381526001917ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb69910160405180910390a192915050565b5f6118b9611dfa565b5060038190556040518181526001907fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b52355290602001610bd7565b5f5f6118fd85610dfd565b90505f8160a001511185906119285760405163166b4d0360e01b815260040161057891815260200190565b5060a081015185904281116119595760405163142c294360e31b815260048101929092526024820152604401610578565b50508060e001516001600160a01b031663d927910e863387876040518563ffffffff1660e01b81526004016119919493929190612f01565b5f604051808303815f87803b1580156119a8575f5ffd5b505af11580156119ba573d5f5f3e3d5ffd5b50600198975050505050505050565b5f6119d2611dfa565b6001600160a01b038216158015906119f857506001546001600160a01b03838116911614155b8290611a23576040516320252f0b60e01b81526001600160a01b039091166004820152602401610578565b5050600180546001600160a01b0319166001600160a01b03831690811782556040519081527fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a790602001610bd7565b5f611a7b612171565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015611aa75750825b90505f8267ffffffffffffffff166001148015611ac35750303b155b905081158015611ad1575080155b15611aef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b2357845468ff00000000000000001916680100000000000000001785555b611b2c3361219b565b611b35876118b0565b50611b3f8a611c30565b50611b49896119c9565b50611b5388610b2e565b50611b5d86611745565b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b038c8116911614611b9b57611b9b8b611bf3565b8315611be657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611bfb611dfa565b6001600160a01b038116611c2457604051631e4fbdf760e01b81525f6004820152602401610578565b611c2d81611e55565b50565b5f611c39611dfa565b6001600160a01b03821615801590611c5e57505f546001600160a01b03838116911614155b8290611c89576040516375ac4eb760e11b81526001600160a01b039091166004820152602401610578565b50505f80546001600160a01b0319166001600160a01b0383169081179091556040519081526001907f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b690602001610bd7565b5f611ce4611dfa565b6001600160a01b0382165f90815260056020526040902054829060ff1615611d2b5760405163b29d459560e01b81526001600160a01b039091166004820152602401610578565b50506001600160a01b0381165f81815260056020908152604091829020805460ff19166001908117909155915192835290917fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679101610bd7565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052611df49085906121ac565b50505050565b33611e2c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112665760405163118cdaa760e01b8152336004820152602401610578565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa158015611f0b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f329190810190612f29565b80519091505f8167ffffffffffffffff811115611f5157611f516126f1565b604051908082528060200260200182016040528015611f7a578160200160208202803683370190505b505f8581526009602052604081205491925090611f98908490612fb9565b90505f5b83811015611fca5781838281518110611fb757611fb7612a76565b6020908102919091010152600101611f9c565b505f858152600960205260408082208054929055600254600154915163095ea7b360e01b81526001600160a01b0392831660048201526024810184905291169063095ea7b3906044016020604051808303815f875af115801561202f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120539190612d51565b50600154600254604051636ec640c760e11b81526001600160a01b039283169263dd8c818e9261208c929116908990889060040161304b565b5f604051808303815f87803b1580156120a3575f5ffd5b505af11580156120b5573d5f5f3e3d5ffd5b505060025460015460405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529116925063095ea7b391506044016020604051808303815f875af115801561210a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212e9190612d51565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a868560405161216192919061307e565b60405180910390a2505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b6121a3612218565b611c2d8161223d565b5f5f60205f8451602086015f885af1806121cb576040513d5f823e3d81fd5b50505f513d915081156121e25780600114156121ef565b6001600160a01b0384163b155b15611df457604051635274afe760e01b81526001600160a01b0385166004820152602401610578565b612220612245565b61126657604051631afcd79f60e31b815260040160405180910390fd5b611bfb612218565b5f61224e612171565b5468010000000000000000900460ff16919050565b604051806101e001604052805f815260200161227d6123bf565b81526020015f81526020016122906123bf565b81526020015f81526020015f81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215612381579160200282015f5b8382111561234f57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261230b565b801561237f5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261234f565b505b5061238d9291506123dd565b5090565b8260028101928215612381579160200282015b828111156123815782518255916020019190600101906123a4565b60405180604001604052806002906020820280368337509192915050565b5b8082111561238d575f81556001016123de565b5f60208284031215612401575f5ffd5b5035919050565b5f60208284031215612418575f5ffd5b813567ffffffffffffffff81111561242e575f5ffd5b82016101208185031215612440575f5ffd5b9392505050565b805f5b6002811015611df457815163ffffffff1684526020938401939091019060010161244a565b805f5b6002811015611df4578151845260209384019390910190600101612472565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b805182525f60208201516124d66020850182612447565b506040820151606084015260608201516124f3608085018261246f565b50608082015160c084015260a082015160e084015260c082015161010084015260e082015161252e6101208501826001600160a01b03169052565b5061010082015161022061014085015261254c610220850182612491565b90506101208301518482036101608601526125678282612491565b9150506101408301516125866101808601826001600160a01b03169052565b506101608301516101a08501526101808301516101c08501526101a08301518482036101e08601526125b88282612491565b9150506101c08301516125d76102008601826001600160a01b03169052565b509392505050565b828152604060208201525f6125f760408301846124bf565b949350505050565b6001600160a01b0381168114611c2d575f5ffd5b5f60208284031215612623575f5ffd5b8135612440816125ff565b8d81528c60208201528b60408201528a60608201528960808201526001600160a01b03891660a08201526101a060c08201525f61266f6101a083018a612491565b82810360e0840152612681818a612491565b6001600160a01b038916610100850152905086610120840152856101408401528281036101608401526126b48186612491565b9150506126cd6101808301846001600160a01b03169052565b9e9d5050505050505050505050505050565b602081525f61244060208301846124bf565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561272e5761272e6126f1565b604052919050565b5f82601f830112612745575f5ffd5b813567ffffffffffffffff81111561275f5761275f6126f1565b612772601f8201601f1916602001612705565b818152846020838601011115612786575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156127b2575f5ffd5b813567ffffffffffffffff8111156127c8575f5ffd5b6125f784828501612736565b5f5f83601f8401126127e4575f5ffd5b50813567ffffffffffffffff8111156127fb575f5ffd5b602083019150836020828501011115612812575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561282d575f5ffd5b85359450602086013567ffffffffffffffff81111561284a575f5ffd5b612856888289016127d4565b909550935050604086013567ffffffffffffffff811115612875575f5ffd5b612881888289016127d4565b969995985093965092949392505050565b5f67ffffffffffffffff8211156128ab576128ab6126f1565b5060051b60200190565b5f82601f8301126128c4575f5ffd5b81356128d76128d282612892565b612705565b8082825260208201915060208360051b8601019250858311156128f8575f5ffd5b602085015b8381101561293957803567ffffffffffffffff81111561291b575f5ffd5b61292a886020838a0101612736565b845250602092830192016128fd565b5095945050505050565b5f60208284031215612953575f5ffd5b813567ffffffffffffffff811115612969575f5ffd5b6125f7848285016128b5565b5f5f60408385031215612986575f5ffd5b823591506020830135612998816125ff565b809150509250929050565b5f5f5f604084860312156129b5575f5ffd5b83359250602084013567ffffffffffffffff8111156129d2575f5ffd5b6129de868287016127d4565b9497909650939450505050565b5f5f5f5f5f5f60c08789031215612a00575f5ffd5b8635612a0b816125ff565b95506020870135612a1b816125ff565b94506040870135612a2b816125ff565b93506060870135612a3b816125ff565b92506080870135915060a087013567ffffffffffffffff811115612a5d575f5ffd5b612a6989828a016128b5565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b803563ffffffff81168114612a9d575f5ffd5b919050565b5f60208284031215612ab2575f5ffd5b61244082612a8a565b805f5b6002811015611df45763ffffffff612ad583612a8a565b1684526020938401939190910190600101612abe565b604081016121958284612abb565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612b1e57612b1e612af9565b5060010190565b5f5f8335601e19843603018112612b3a575f5ffd5b83018035915067ffffffffffffffff821115612b54575f5ffd5b602001915036819003821315612812575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b88815287602082015260a060408201525f612baf60a08301888a612b68565b8281036060840152612bc2818789612b68565b90508281036080840152612bd7818587612b68565b9b9a5050505050505050505050565b5f60208284031215612bf6575f5ffd5b5051919050565b600181811c90821680612c1157607f821691505b60208210810361111757634e487b7160e01b5f52602260045260245ffd5b601f821115612c7657805f5260205f20601f840160051c81016020851015612c545750805b601f840160051c820191505b81811015612c73575f8155600101612c60565b50505b505050565b815167ffffffffffffffff811115612c9557612c956126f1565b612ca981612ca38454612bfd565b84612c2f565b6020601f821160018114612cdb575f8315612cc45750848201515b5f19600385901b1c1916600184901b178455612c73565b5f84815260208120601f198516915b82811015612d0a5787850151825560209485019460019092019101612cea565b5084821015612d2757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016125f76040830184612abb565b5f60208284031215612d61575f5ffd5b81518015158114612440575f5ffd5b67ffffffffffffffff831115612d8857612d886126f1565b612d9c83612d968354612bfd565b83612c2f565b5f601f841160018114612dcd575f8515612db65750838201355b5f19600387901b1c1916600186901b178355612c73565b5f83815260208120601f198716915b82811015612dfc5786850135825560209485019460019092019101612ddc565b5086821015612e18575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b848152836020820152606060408201525f612e58606083018486612b68565b9695505050505050565b602081525f6125f7602083018486612b68565b8082018082111561219557612195612af9565b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612ef557603f19878603018452612ee0858351612491565b94506020938401939190910190600101612ec4565b50929695505050505050565b8481526001600160a01b0384166020820152606060408201525f612e58606083018486612b68565b5f60208284031215612f39575f5ffd5b815167ffffffffffffffff811115612f4f575f5ffd5b8201601f81018413612f5f575f5ffd5b8051612f6d6128d282612892565b8082825260208201915060208360051b850101925086831115612f8e575f5ffd5b6020840193505b82841015612e58578351612fa8816125ff565b825260209384019390910190612f95565b5f82612fd357634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602084019350602083015f5b828110156130115781516001600160a01b0316865260209586019590910190600101612fea565b5093949350505050565b5f8151808452602084019350602083015f5b8281101561301157815186526020958601959091019060010161302d565b6001600160a01b0384168152606060208201525f61306c6060830185612fd8565b8281036040840152612e58818561301b565b604081525f6130906040830185612fd8565b82810360208401526130a2818561301b565b9594505050505056fea164736f6c634300081c000a",
1894
+ "bytecode": "0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613f05806100d65f395ff3fe608060405234801561000f575f5ffd5b5060043610610260575f3560e01c80638da5cb5b1161014b578063cb649617116100bf578063f0691cba11610084578063f0691cba14610657578063f2fde38b1461066a578063f81b8ef61461067d578063fad8e11114610690578063fd2f3d01146106a3578063ff72aa51146106b6575f5ffd5b8063cb649617146105e6578063cbd16872146105ef578063cf0f34c414610602578063cfbdc98d14610615578063e59e469514610644575f5ffd5b8063929a8faf11610110578063929a8faf1461054257806399c6679d146105635780639c8570c81461058b578063b68fd1be1461059e578063bb2d1b82146105b1578063c4ccafa2146105c4575f5ffd5b80638da5cb5b146104a55780638dcdd86b146104ad57806390173a41146104bf5780639117173c146104fa578063923123861461050d575f5ffd5b8063459d9294116101e25780636db5c8fd116101a75780636db5c8fd14610448578063715018a6146104515780637cfa9d74146104595780637edcd7ab1461046c57806381476ec21461047f5780638581424314610492575f5ffd5b8063459d9294146103be5780634e92ec63146103fc5780634fc772641461040f578063647846a51461042257806369c5b34714610435575f5ffd5b806336c5d38a1161022857806336c5d38a146103135780634017daf014610342578063406ed35c1461036c5780634147a3601461038c57806341739f12146103ab575f5ffd5b806302a3a9c9146102645780630ef81b2f1461027957806310bc6281146102b757806315cce224146102df578063205cd34c146102f2575b5f5ffd5b610277610272366004613108565b6106d7565b005b6102a1610287366004613123565b5f908152600860205260409020546001600160a01b031690565b6040516102ae919061313a565b60405180910390f35b6102a16102c5366004613123565b60086020525f90815260409020546001600160a01b031681565b6102776102ed366004613108565b610783565b61030561030036600461314e565b610828565b6040519081526020016102ae565b610335610321366004613123565b5f908152600d602052604090205460ff1690565b6040516102ae91906131ad565b610355610350366004613123565b610834565b6040516102ae9b9a999897969594939291906131e9565b61037f61037a366004613123565b610a3e565b6040516102ae91906133c8565b61030561039a366004613123565b600a6020525f908152604090205481565b6102776103b93660046133ea565b610d44565b6103ec6103cc3660046134b3565b805160208183018101805160098252928201919093012091525460ff1681565b60405190151581526020016102ae565b61027761040a366004613123565b610d58565b61027761041d366004613108565b610de7565b6003546102a1906001600160a01b031681565b61027761044336600461359b565b610e7a565b61030560045481565b610277610fe0565b610277610467366004613123565b610ff3565b6103ec61047a366004613688565b6110f1565b61027761048d3660046136ff565b611312565b6001546102a1906001600160a01b031681565b6102a1611402565b5f546102a1906001600160a01b031681565b6104c7611430565b6040516102ae91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b610277610508366004613123565b611484565b61052061051b366004613123565b61161c565b60408051825181526020808401519082015291810151908201526060016102ae565b610555610550366004613123565b611675565b6040516102ae92919061371f565b6102a1610571366004613123565b5f908152600e60205260409020546001600160a01b031690565b6103ec610599366004613688565b61169c565b6102776105ac366004613735565b6118cf565b6102776105bf366004613766565b611972565b6103ec6105d2366004613108565b60066020525f908152604090205460ff1681565b61030560055481565b6102776105fd366004613799565b611a18565b610277610610366004613123565b611acb565b610637610623366004613123565b5f908152600b602052604090205460ff1690565b6040516102ae91906137cc565b610277610652366004613108565b611b08565b6002546102a1906001600160a01b031681565b610277610678366004613108565b611ba2565b61033561068b366004613123565b611bdc565b61027761069e366004613108565b611d6c565b6102776106b1366004613108565b611e04565b6106c96106c436600461314e565b611e9b565b6040516102ae9291906137da565b6106df612548565b6001600160a01b03811661073a5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964204533526566756e644d616e6167657220616464726573730060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9557d04c1c0b16f93f13b69aed23b3b6ab935bff3c53ac81d17896d3583542ed905f90a250565b61078b612548565b6001600160a01b038116158015906107b157506003546001600160a01b03828116911614155b81906107d15760405163eddf07f560e01b8152600401610731919061313a565b50600380546001600160a01b0319166001600160a01b0383161790556040517f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f39061081d90839061313a565b60405180910390a150565b620f4240805b50919050565b600760208190525f9182526040909120805460028201546005830154600684015494840180549395929491936001600160a01b0390931692610875906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546108a1906137f2565b80156108ec5780601f106108c3576101008083540402835291602001916108ec565b820191905f5260205f20905b8154815290600101906020018083116108cf57829003601f168201915b505050505090806008018054610901906137f2565b80601f016020809104026020016040519081016040528092919081815260200182805461092d906137f2565b80156109785780601f1061094f57610100808354040283529160200191610978565b820191905f5260205f20905b81548152906001019060200180831161095b57829003601f168201915b5050506009840154600a850154600b860154600c8701805496976001600160a01b0390941696929550909350906109ae906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546109da906137f2565b8015610a255780601f106109fc57610100808354040283529160200191610a25565b820191905f5260205f20905b815481529060010190602001808311610a0857829003601f168201915b505050600d90930154919250506001600160a01b03168b565b610a46612f72565b5f82815260076020908152604080832081516101a0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610a8157505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ae75750505091835250506005820154602082015260068201546001600160a01b03166040820152600782018054606090920191610b34906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b60906137f2565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050508152602001600882018054610bc4906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf0906137f2565b8015610c3b5780601f10610c1257610100808354040283529160200191610c3b565b820191905f5260205f20905b815481529060010190602001808311610c1e57829003601f168201915b505050918352505060098201546001600160a01b03166020820152600a8201546040820152600b8201546060820152600c82018054608090920191610c7f906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610cab906137f2565b8015610cf65780601f10610ccd57610100808354040283529160200191610cf6565b820191905f5260205f20905b815481529060010190602001808311610cd957829003601f168201915b5050509183525050600d91909101546001600160a01b0390811660209092019190915260a082015191925083911661082e5760405163cd6f4a4f60e01b815260040161073191815260200190565b610d4c612548565b610d558161257a565b50565b610d60612548565b5f8181526008602052604090205481906001600160a01b0316610d99576040516381c4951960e01b815260040161073191815260200190565b505f818152600860205260409081902080546001600160a01b0319169055517f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc9061081d9083815260200190565b610def612548565b6001600160a01b0381165f90815260066020526040902054819060ff16610e2a576040516321ac7c5f60e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19169055517f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79061081d90839061313a565b5f610e83612707565b805490915060ff600160401b82041615906001600160401b03165f81158015610ea95750825b90505f826001600160401b03166001148015610ec45750303b155b905081158015610ed2575080155b15610ef05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f1a57845460ff60401b1916600160401b1785555b610f2333612731565b610f2c88611acb565b610f358c611d6c565b610f3e8b611b08565b610f478a6106d7565b610f5089610783565b610f598761257a565b610f62866118cf565b610f6a611402565b6001600160a01b03168d6001600160a01b031614610f8b57610f8b8d611ba2565b8315610fd157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b610fe8612548565b610ff15f612742565b565b5f546001600160a01b0316331461101c5760405162461bcd60e51b815260040161073190613824565b5f818152600b602052604090205460ff16600181600681111561104157611041613185565b1461106657816001826040516337e1404160e01b815260040161073193929190613855565b5f828152600b60205260409020805460ff19166002179055600f5461108b904261388a565b5f838152600c602052604080822092909255905183917fc44405af9078047712501f519e1fb900c2896c62b488336f84529c72ae16e6f191a2815f516020613ed95f395f51905f52600160026040516110e592919061389d565b60405180910390a25050565b5f5f6110fc87610a3e565b5f888152600b602052604090205490915060ff16600481600681111561112457611124613185565b148860048390919261114c576040516337e1404160e01b815260040161073193929190613855565b5050505f888152600c602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052908990428110156111af576040516308f3034360e31b815260048101929092526024820152604401610731565b50505f898152600760205260409020600c016111cc888a83613917565b508261010001516001600160a01b0316632f0e1bbf8a8a8a6040516111f29291906139cb565b6040519081900381206001600160e01b031960e085901b16825261121d92918b908b90600401613a02565b602060405180830381865afa158015611238573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c9190613a2b565b935087878561128057604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff191660051790556112a3896127b2565b887f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca16989896040516112d5929190613a4a565b60405180910390a2885f516020613ed95f395f51905f52600460056040516112fe92919061389d565b60405180910390a250505095945050505050565b5f546001600160a01b0316331461133b5760405162461bcd60e51b815260040161073190613824565b5f828152600b602052604090205460ff16600281600681111561136057611360613185565b1461138557826002826040516337e1404160e01b815260040161073193929190613855565b5f838152600b60209081526040808320805460ff191660031790556007909152808220600a018490555184917f11df18edb9bc9cd90a79068e0e208b630202148643d797d6150e7bacb733e63c91a2825f516020613ed95f395f51905f52600260036040516113f592919061389d565b60405180910390a2505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b61145760405180608001604052805f81526020015f81526020015f81526020015f81525090565b5060408051608081018252600f548152601054602082015260115491810191909152601254606082015290565b5f818152600b602052604090205460ff1660068160068111156114a9576114a9613185565b146114e65760405162461bcd60e51b815260206004820152600d60248201526c114cc81b9bdd0819985a5b1959609a1b6044820152606401610731565b5f828152600a6020526040902054806115385760405162461bcd60e51b8152602060048201526014602482015273139bc81c185e5b595b9d081d1bc81c99599d5b9960621b6044820152606401610731565b5f838152600a6020526040812081905561155184612a5f565b600254600354919250611571916001600160a01b03908116911684612b54565b6002546040516345ac612360e11b81526001600160a01b0390911690638b58c246906115a590879086908690600401613aa0565b5f604051808303815f87803b1580156115bc575f5ffd5b505af11580156115ce573d5f5f3e3d5ffd5b50505050837f5297818f48a66292b8b3e2caab83eec531b669bb20807fd38cf006adb2a0731783835160405161160e929190918252602082015260400190565b60405180910390a250505050565b61163d60405180606001604052805f81526020015f81526020015f81525090565b505f908152600c6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b5f818152600b6020526040812054819060ff166116928482612bb1565b9250925050915091565b5f5f6116a787610a3e565b5f888152600c60209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509088904281101561170c576040516308f3034360e31b815260048101929092526024820152604401610731565b50506060820151602001518890428111156117435760405163017e35e560e71b815260048101929092526024820152604401610731565b505061014082015188901561176e57604051637eb9cea960e11b815260040161073191815260200190565b505f87876040516117809291906139cb565b604080519182900382205f8c8152600760205291909120600b0181905560a0850151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf906117d3908c9085908b908b90600401613a02565b6020604051808303815f875af11580156117ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118139190613a2b565b935087878561183757604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff1916600417905560115461185e904261388a565b5f8a8152600c602052604090819020600201919091555189907f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade071906118a6908b908b90613a4a565b60405180910390a2885f516020613ed95f395f51905f52600360046040516112fe92919061389d565b6118d7612548565b80515f5b8181101561193657600160098483815181106118f9576118f9613ac7565b602002602001015160405161190e9190613adb565b908152604051908190036020019020805491151560ff199092169190911790556001016118db565b507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81826040516119669190613af1565b60405180910390a15050565b5f546001600160a01b0316331461199b5760405162461bcd60e51b815260040161073190613824565b5f8160ff161180156119b15750600c8160ff1611155b6119f65760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103330b4b63ab932903932b0b9b7b760511b6044820152606401610731565b611a14828260ff16600c811115611a0f57611a0f613185565b612d39565b5050565b611a20612548565b6001600160a01b03811615801590611a5157505f828152600860205260409020546001600160a01b03828116911614155b8290611a73576040516381c4951960e01b815260040161073191815260200190565b505f8281526008602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381527ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb699101611966565b611ad3612548565b60048190556040518181527fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b5235529060200161081d565b611b10612548565b6001600160a01b03811615801590611b3657506001546001600160a01b03828116911614155b8190611b56576040516320252f0b60e01b8152600401610731919061313a565b50600180546001600160a01b0319166001600160a01b0383161790556040517fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a79061081d90839061313a565b611baa612548565b6001600160a01b038116611bd3575f604051631e4fbdf760e01b8152600401610731919061313a565b610d5581612742565b5f818152600b602052604081205460ff1681816006811115611c0057611c00613185565b03611c2557826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115611c3957611c39613185565b03611c5a5760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115611c6e57611c6e613185565b03611c8f57604051633de16e3560e11b815260048101849052602401610731565b5f611c9a8483612bb1565b9350905080611cbf57604051639f65d93560e01b815260048101859052602401610731565b5f848152600b60209081526040808320805460ff19908116600617909155600d9092529091208054859216600183600c811115611cfe57611cfe613185565b0217905550835f516020613ed95f395f51905f52836006604051611d2392919061389d565b60405180910390a2837fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb8385604051611d5d929190613b54565b60405180910390a25050919050565b611d74612548565b6001600160a01b03811615801590611d9957505f546001600160a01b03828116911614155b8190611db9576040516375ac4eb760e11b8152600401610731919061313a565b505f80546001600160a01b0319166001600160a01b0383161790556040517f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b69061081d90839061313a565b611e0c612548565b6001600160a01b0381165f90815260066020526040902054819060ff1615611e485760405163b29d459560e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19166001179055517fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679061081d90839061313a565b5f611ea4612f72565b611eb16020840184613b87565b63ffffffff16611ec76040850160208601613b87565b63ffffffff1610158015611eec57505f611ee46020850185613b87565b63ffffffff16115b8390611f0c57604051633744092160e21b81526004016107319190613bd0565b50604083013542811015611f3657604051630b99e87960e01b815260040161073191815260200190565b5060608301356040840135811015611f645760405163174b5a0760e21b815260040161073191815260200190565b506011546010545f9190611f7c426060880135613bde565b611f86919061388a565b611f90919061388a565b905060045481108190611fb9576040516313b783af60e21b815260040161073191815260200190565b5060065f611fcd60a0870160808801613108565b6001600160a01b0316815260208101919091526040015f205460ff16611ff960a0860160808701613108565b906120185760405163295a6a6f60e11b8152600401610731919061313a565b505f61202385610828565b60058054955090915084905f61203883613bf1565b90915550506040805144602080830191909152818301879052825180830384018152606090920183528151910120808552815180830183529091879060029083908390808284375f92019190915250505060208501524360408086019190915280518082018252908781019060029083908390808284375f92019190915250505060608501526120ce60a0870160808801613108565b6001600160a01b031660a0808601919091526120ec90870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505060c085015261213160e0870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525060e0890194909452505050610120850181905261014085018190526040805160208101909152818152610160860152336101808601526121a660a0880160808901613108565b6001600160a01b031663fefd9a8b87846121c360a08c018c613c09565b6121d060c08e018e613c09565b8e8060e001906121e09190613c09565b6040518963ffffffff1660e01b8152600401612203989796959493929190613c4b565b6020604051808303815f875af115801561221f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122439190613ca1565b5f818152600860205260409020549091506001600160a01b0316818161227f576040516381c4951960e01b815260040161073191815260200190565b50608086018290526001600160a01b0381166101008701525f87815260076020908152604090912087518155908701518791906122c29060018301906002612ff9565b50604082015181600201556060820151816003019060026122e4929190613094565b506080820151600582015560a08201516006820180546001600160a01b0319166001600160a01b0390921691909117905560c082015160078201906123299082613cb8565b5060e0820151600882019061233e9082613cb8565b506101008201516009820180546001600160a01b0319166001600160a01b03909216919091179055610120820151600a820155610140820151600b820155610160820151600c8201906123919082613cb8565b506101809190910151600d90910180546001600160a01b0319166001600160a01b039283161790555f888152600a602052604090208590556003546123d99116333087612e8a565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b9061240c908a9087908d90600401613d6d565b6020604051808303815f875af1158015612428573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244c9190613a2b565b61246957604051630d8dbe2560e01b815260040160405180910390fd5b5f878152600b60209081526040808320805460ff19166001179055600e82529091208054336001600160a01b03199091161790556010546060880151909101516124b3919061388a565b5f888152600c60205260409020600101556124d460a0890160808a01613108565b6001600160a01b03167fe009e1827a616eb52d6aa3823303e01f235985c9da7b43cbcc95f54b0338785d888860405161250e9291906137da565b60405180910390a2865f516020613ed95f395f51905f525f600160405161253692919061389d565b60405180910390a25050505050915091565b33612551611402565b6001600160a01b031614610ff1573360405163118cdaa760e01b8152600401610731919061313a565b80356125bd5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420444b472077696e646f7760701b6044820152606401610731565b5f8160200135116126095760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6d707574652077696e646f7760501b6044820152606401610731565b5f8160400135116126585760405162461bcd60e51b8152602060048201526019602482015278496e76616c69642064656372797074696f6e2077696e646f7760381b6044820152606401610731565b5f8160600135116126a25760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819dc9858d9481c195c9a5bd960621b6044820152606401610731565b8035600f819055602080830135601081905560408085013560118190556060808701356012819055835196875294860193909352908401528201527f78e25a99f479f23adb3b0ac527204b39c8f57afa01a2595ad3b9b605bf0be22e9060800161081d565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b612739612ec9565b610d5581612eee565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa1580156127f8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261281f9190810190613d88565b80519091505f816001600160401b0381111561283d5761283d613404565b604051908082528060200260200182016040528015612866578160200160208202803683370190505b505f858152600a602052604081205491925090612884908490613e17565b90505f5b838110156128b657818382815181106128a3576128a3613ac7565b6020908102919091010152600101612888565b505f858152600a60205260408082208054929055600354600154915163095ea7b360e01b81526001600160a01b039182169263095ea7b3926128ff929116908590600401613e36565b6020604051808303815f875af115801561291b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293f9190613a2b565b50600154600354604051636ec640c760e11b81526001600160a01b039283169263dd8c818e926129789291169089908890600401613e7f565b5f604051808303815f87803b15801561298f575f5ffd5b505af11580156129a1573d5f5f3e3d5ffd5b505060035460015460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b393506129dc92909116905f90600401613e36565b6020604051808303815f875af11580156129f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1c9190613a2b565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a8685604051612a4f929190613eb4565b60405180910390a2505050505050565b5f818152600d602052604090205460609060ff16600181600c811115612a8757612a87613185565b1480612aa45750600281600c811115612aa257612aa2613185565b145b15612adc575f5b604051908082528060200260200182016040528015612ad4578160200160208202803683370190505b509392505050565b5f54604051630a01649360e41b8152600481018590526001600160a01b039091169063a0164930906024015f60405180830381865afa925050508015612b4357506040513d5f823e601f3d908101601f19168201604052612b409190810190613d88565b60015b612b4d575f612aab565b9392505050565b612bac83846001600160a01b031663a9059cbb8585604051602401612b7a929190613e36565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612ef6565b505050565b5f828152600c60209081526040808320815160608101835281548152600182015493810193909352600201548282015282549051632800d82960e01b81526004810186905283929183916001600160a01b0390911690632800d82990602401602060405180830381865afa158015612c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4f9190613ca1565b90506001856006811115612c6557612c65613185565b148015612c7157508042115b15612c8457600180935093505050612d32565b6002856006811115612c9857612c98613185565b148015612ca55750815142115b15612cb95760016003935093505050612d32565b6003856006811115612ccd57612ccd613185565b148015612cdd5750816020015142115b15612cf15760016006935093505050612d32565b6004856006811115612d0557612d05613185565b148015612d155750816040015142115b15612d29576001600a935093505050612d32565b5f5f9350935050505b9250929050565b5f828152600b602052604081205460ff1690816006811115612d5d57612d5d613185565b03612d8257826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115612d9657612d96613185565b03612db75760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115612dcb57612dcb613185565b03612dec57604051633de16e3560e11b815260048101849052602401610731565b5f838152600b60209081526040808320805460ff19908116600617909155600d9092529091208054849216600183600c811115612e2b57612e2b613185565b0217905550825f516020613ed95f395f51905f52826006604051612e5092919061389d565b60405180910390a2827fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb82846040516113f5929190613b54565b6040516001600160a01b038481166024830152838116604483015260648201839052612ec39186918216906323b872dd90608401612b7a565b50505050565b612ed1612f59565b610ff157604051631afcd79f60e31b815260040160405180910390fd5b611baa612ec9565b5f5f60205f8451602086015f885af180612f15576040513d5f823e3d81fd5b50505f513d91508115612f2c578060011415612f39565b6001600160a01b0384163b155b15612ec35783604051635274afe760e01b8152600401610731919061313a565b5f612f62612707565b54600160401b900460ff16919050565b604051806101a001604052805f8152602001612f8c6130c2565b81526020015f8152602001612f9f6130c2565b81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215613084579160200282015f5b8382111561305257835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261300e565b80156130825782816101000a81549063ffffffff0219169055600401602081600301049283019260010302613052565b505b506130909291506130e0565b5090565b8260028101928215613084579160200282015b828111156130845782518255916020019190600101906130a7565b60405180604001604052806002906020820280368337509192915050565b5b80821115613090575f81556001016130e1565b6001600160a01b0381168114610d55575f5ffd5b5f60208284031215613118575f5ffd5b8135612b4d816130f4565b5f60208284031215613133575f5ffd5b5035919050565b6001600160a01b0391909116815260200190565b5f6020828403121561315e575f5ffd5b81356001600160401b03811115613173575f5ffd5b82016101008185031215612b4d575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b600d81106131a9576131a9613185565b9052565b6020810161272b8284613199565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8b81528a602082015289604082015260018060a01b038916606082015261016060808201525f61321d61016083018a6131bb565b82810360a084015261322f818a6131bb565b6001600160a01b03891660c085015260e084018890526101008401879052838103610120850152905061326281866131bb565b91505060018060a01b0383166101408301529c9b505050505050505050505050565b805f5b6002811015612ec357815163ffffffff16845260209384019390910190600101613287565b805f5b6002811015612ec35781518452602093840193909101906001016132af565b805182525f60208201516132e56020850182613284565b5060408201516060840152606082015161330260808501826132ac565b50608082015160c084015260a08201516001600160a01b03811660e08501525060c08201516101e061010085015261333e6101e08501826131bb565b905060e083015184820361012086015261335882826131bb565b9150506101008301516133776101408601826001600160a01b03169052565b506101208301516101608501526101408301516101808501526101608301518482036101a08601526133a982826131bb565b915050610180830151612ad46101c08601826001600160a01b03169052565b602081525f612b4d60208301846132ce565b5f6080828403121561082e575f5ffd5b5f608082840312156133fa575f5ffd5b612b4d83836133da565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561344057613440613404565b604052919050565b5f82601f830112613457575f5ffd5b81356001600160401b0381111561347057613470613404565b613483601f8201601f1916602001613418565b818152846020838601011115613497575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156134c3575f5ffd5b81356001600160401b038111156134d8575f5ffd5b6134e484828501613448565b949350505050565b5f6001600160401b0382111561350457613504613404565b5060051b60200190565b5f82601f83011261351d575f5ffd5b813561353061352b826134ec565b613418565b8082825260208201915060208360051b860101925085831115613551575f5ffd5b602085015b838110156135915780356001600160401b03811115613573575f5ffd5b613582886020838a0101613448565b84525060209283019201613556565b5095945050505050565b5f5f5f5f5f5f5f5f610160898b0312156135b3575f5ffd5b88356135be816130f4565b975060208901356135ce816130f4565b965060408901356135de816130f4565b955060608901356135ee816130f4565b945060808901356135fe816130f4565b935060a089013592506136148a60c08b016133da565b91506101408901356001600160401b0381111561362f575f5ffd5b61363b8b828c0161350e565b9150509295985092959890939650565b5f5f83601f84011261365b575f5ffd5b5081356001600160401b03811115613671575f5ffd5b602083019150836020828501011115612d32575f5ffd5b5f5f5f5f5f6060868803121561369c575f5ffd5b8535945060208601356001600160401b038111156136b8575f5ffd5b6136c48882890161364b565b90955093505060408601356001600160401b038111156136e2575f5ffd5b6136ee8882890161364b565b969995985093965092949392505050565b5f5f60408385031215613710575f5ffd5b50508035926020909101359150565b821515815260408101612b4d6020830184613199565b5f60208284031215613745575f5ffd5b81356001600160401b0381111561375a575f5ffd5b6134e48482850161350e565b5f5f60408385031215613777575f5ffd5b82359150602083013560ff8116811461378e575f5ffd5b809150509250929050565b5f5f604083850312156137aa575f5ffd5b82359150602083013561378e816130f4565b600781106131a9576131a9613185565b6020810161272b82846137bc565b828152604060208201525f6134e460408301846132ce565b600181811c9082168061380657607f821691505b60208210810361082e57634e487b7160e01b5f52602260045260245ffd5b6020808252601790820152764f6e6c79204369706865726e6f6465526567697374727960481b604082015260600190565b8381526060810161386960208301856137bc565b6134e460408301846137bc565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561272b5761272b613876565b604081016138ab82856137bc565b612b4d60208301846137bc565b601f821115612bac57805f5260205f20601f840160051c810160208510156138dd5750805b601f840160051c820191505b818110156138fc575f81556001016138e9565b5050505050565b5f19600383901b1c191660019190911b1790565b6001600160401b0383111561392e5761392e613404565b6139428361393c83546137f2565b836138b8565b5f601f84116001811461396e575f851561395c5750838201355b6139668682613903565b8455506138fc565b5f83815260208120601f198716915b8281101561399d578685013582556020948501946001909201910161397d565b50868210156139b9575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201525f613a216060830184866139da565b9695505050505050565b5f60208284031215613a3b575f5ffd5b81518015158114612b4d575f5ffd5b602081525f6134e46020830184866139da565b5f8151808452602084019350602083015f5b82811015613a965781516001600160a01b0316865260209586019590910190600101613a6f565b5093949350505050565b838152826020820152606060408201525f613abe6060830184613a5d565b95945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613b4857603f19878603018452613b338583516131bb565b94506020938401939190910190600101613b17565b50929695505050505050565b60408101613b6282856137bc565b612b4d6020830184613199565b803563ffffffff81168114613b82575f5ffd5b919050565b5f60208284031215613b97575f5ffd5b612b4d82613b6f565b805f5b6002811015612ec35763ffffffff613bba83613b6f565b1684526020938401939190910190600101613ba3565b6040810161272b8284613ba0565b8181038181111561272b5761272b613876565b5f60018201613c0257613c02613876565b5060010190565b5f5f8335601e19843603018112613c1e575f5ffd5b8301803591506001600160401b03821115613c37575f5ffd5b602001915036819003821315612d32575f5ffd5b88815287602082015260a060408201525f613c6a60a08301888a6139da565b8281036060840152613c7d8187896139da565b90508281036080840152613c928185876139da565b9b9a5050505050505050505050565b5f60208284031215613cb1575f5ffd5b5051919050565b81516001600160401b03811115613cd157613cd1613404565b613ce581613cdf84546137f2565b846138b8565b6020601f821160018114613d12575f8315613d005750848201515b613d0a8482613903565b8555506138fc565b5f84815260208120601f198516915b82811015613d415787850151825560209485019460019092019101613d21565b5084821015613d5e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016134e46040830184613ba0565b5f60208284031215613d98575f5ffd5b81516001600160401b03811115613dad575f5ffd5b8201601f81018413613dbd575f5ffd5b8051613dcb61352b826134ec565b8082825260208201915060208360051b850101925086831115613dec575f5ffd5b6020840193505b82841015613a21578351613e06816130f4565b825260209384019390910190613df3565b5f82613e3157634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03929092168252602082015260400190565b5f8151808452602084019350602083015f5b82811015613a96578151865260209586019590910190600101613e61565b6001600160a01b03841681526060602082018190525f90613ea290830185613a5d565b8281036040840152613a218185613e4f565b604081525f613ec66040830185613a5d565b8281036020840152613abe8185613e4f56fe1b418a230a21d37a078bf8f16decbde8ccceacd77159371f62f0d4ea00d19967a164736f6c634300081c000a",
1895
+ "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610260575f3560e01c80638da5cb5b1161014b578063cb649617116100bf578063f0691cba11610084578063f0691cba14610657578063f2fde38b1461066a578063f81b8ef61461067d578063fad8e11114610690578063fd2f3d01146106a3578063ff72aa51146106b6575f5ffd5b8063cb649617146105e6578063cbd16872146105ef578063cf0f34c414610602578063cfbdc98d14610615578063e59e469514610644575f5ffd5b8063929a8faf11610110578063929a8faf1461054257806399c6679d146105635780639c8570c81461058b578063b68fd1be1461059e578063bb2d1b82146105b1578063c4ccafa2146105c4575f5ffd5b80638da5cb5b146104a55780638dcdd86b146104ad57806390173a41146104bf5780639117173c146104fa578063923123861461050d575f5ffd5b8063459d9294116101e25780636db5c8fd116101a75780636db5c8fd14610448578063715018a6146104515780637cfa9d74146104595780637edcd7ab1461046c57806381476ec21461047f5780638581424314610492575f5ffd5b8063459d9294146103be5780634e92ec63146103fc5780634fc772641461040f578063647846a51461042257806369c5b34714610435575f5ffd5b806336c5d38a1161022857806336c5d38a146103135780634017daf014610342578063406ed35c1461036c5780634147a3601461038c57806341739f12146103ab575f5ffd5b806302a3a9c9146102645780630ef81b2f1461027957806310bc6281146102b757806315cce224146102df578063205cd34c146102f2575b5f5ffd5b610277610272366004613108565b6106d7565b005b6102a1610287366004613123565b5f908152600860205260409020546001600160a01b031690565b6040516102ae919061313a565b60405180910390f35b6102a16102c5366004613123565b60086020525f90815260409020546001600160a01b031681565b6102776102ed366004613108565b610783565b61030561030036600461314e565b610828565b6040519081526020016102ae565b610335610321366004613123565b5f908152600d602052604090205460ff1690565b6040516102ae91906131ad565b610355610350366004613123565b610834565b6040516102ae9b9a999897969594939291906131e9565b61037f61037a366004613123565b610a3e565b6040516102ae91906133c8565b61030561039a366004613123565b600a6020525f908152604090205481565b6102776103b93660046133ea565b610d44565b6103ec6103cc3660046134b3565b805160208183018101805160098252928201919093012091525460ff1681565b60405190151581526020016102ae565b61027761040a366004613123565b610d58565b61027761041d366004613108565b610de7565b6003546102a1906001600160a01b031681565b61027761044336600461359b565b610e7a565b61030560045481565b610277610fe0565b610277610467366004613123565b610ff3565b6103ec61047a366004613688565b6110f1565b61027761048d3660046136ff565b611312565b6001546102a1906001600160a01b031681565b6102a1611402565b5f546102a1906001600160a01b031681565b6104c7611430565b6040516102ae91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b610277610508366004613123565b611484565b61052061051b366004613123565b61161c565b60408051825181526020808401519082015291810151908201526060016102ae565b610555610550366004613123565b611675565b6040516102ae92919061371f565b6102a1610571366004613123565b5f908152600e60205260409020546001600160a01b031690565b6103ec610599366004613688565b61169c565b6102776105ac366004613735565b6118cf565b6102776105bf366004613766565b611972565b6103ec6105d2366004613108565b60066020525f908152604090205460ff1681565b61030560055481565b6102776105fd366004613799565b611a18565b610277610610366004613123565b611acb565b610637610623366004613123565b5f908152600b602052604090205460ff1690565b6040516102ae91906137cc565b610277610652366004613108565b611b08565b6002546102a1906001600160a01b031681565b610277610678366004613108565b611ba2565b61033561068b366004613123565b611bdc565b61027761069e366004613108565b611d6c565b6102776106b1366004613108565b611e04565b6106c96106c436600461314e565b611e9b565b6040516102ae9291906137da565b6106df612548565b6001600160a01b03811661073a5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964204533526566756e644d616e6167657220616464726573730060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9557d04c1c0b16f93f13b69aed23b3b6ab935bff3c53ac81d17896d3583542ed905f90a250565b61078b612548565b6001600160a01b038116158015906107b157506003546001600160a01b03828116911614155b81906107d15760405163eddf07f560e01b8152600401610731919061313a565b50600380546001600160a01b0319166001600160a01b0383161790556040517f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f39061081d90839061313a565b60405180910390a150565b620f4240805b50919050565b600760208190525f9182526040909120805460028201546005830154600684015494840180549395929491936001600160a01b0390931692610875906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546108a1906137f2565b80156108ec5780601f106108c3576101008083540402835291602001916108ec565b820191905f5260205f20905b8154815290600101906020018083116108cf57829003601f168201915b505050505090806008018054610901906137f2565b80601f016020809104026020016040519081016040528092919081815260200182805461092d906137f2565b80156109785780601f1061094f57610100808354040283529160200191610978565b820191905f5260205f20905b81548152906001019060200180831161095b57829003601f168201915b5050506009840154600a850154600b860154600c8701805496976001600160a01b0390941696929550909350906109ae906137f2565b80601f01602080910402602001604051908101604052809291908181526020018280546109da906137f2565b8015610a255780601f106109fc57610100808354040283529160200191610a25565b820191905f5260205f20905b815481529060010190602001808311610a0857829003601f168201915b505050600d90930154919250506001600160a01b03168b565b610a46612f72565b5f82815260076020908152604080832081516101a0810183528154815282518084019384905290949193850192909160018501916002918390855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610a8157505050928452505050600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610ae75750505091835250506005820154602082015260068201546001600160a01b03166040820152600782018054606090920191610b34906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b60906137f2565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050508152602001600882018054610bc4906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf0906137f2565b8015610c3b5780601f10610c1257610100808354040283529160200191610c3b565b820191905f5260205f20905b815481529060010190602001808311610c1e57829003601f168201915b505050918352505060098201546001600160a01b03166020820152600a8201546040820152600b8201546060820152600c82018054608090920191610c7f906137f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610cab906137f2565b8015610cf65780601f10610ccd57610100808354040283529160200191610cf6565b820191905f5260205f20905b815481529060010190602001808311610cd957829003601f168201915b5050509183525050600d91909101546001600160a01b0390811660209092019190915260a082015191925083911661082e5760405163cd6f4a4f60e01b815260040161073191815260200190565b610d4c612548565b610d558161257a565b50565b610d60612548565b5f8181526008602052604090205481906001600160a01b0316610d99576040516381c4951960e01b815260040161073191815260200190565b505f818152600860205260409081902080546001600160a01b0319169055517f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc9061081d9083815260200190565b610def612548565b6001600160a01b0381165f90815260066020526040902054819060ff16610e2a576040516321ac7c5f60e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19169055517f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e79061081d90839061313a565b5f610e83612707565b805490915060ff600160401b82041615906001600160401b03165f81158015610ea95750825b90505f826001600160401b03166001148015610ec45750303b155b905081158015610ed2575080155b15610ef05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f1a57845460ff60401b1916600160401b1785555b610f2333612731565b610f2c88611acb565b610f358c611d6c565b610f3e8b611b08565b610f478a6106d7565b610f5089610783565b610f598761257a565b610f62866118cf565b610f6a611402565b6001600160a01b03168d6001600160a01b031614610f8b57610f8b8d611ba2565b8315610fd157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b610fe8612548565b610ff15f612742565b565b5f546001600160a01b0316331461101c5760405162461bcd60e51b815260040161073190613824565b5f818152600b602052604090205460ff16600181600681111561104157611041613185565b1461106657816001826040516337e1404160e01b815260040161073193929190613855565b5f828152600b60205260409020805460ff19166002179055600f5461108b904261388a565b5f838152600c602052604080822092909255905183917fc44405af9078047712501f519e1fb900c2896c62b488336f84529c72ae16e6f191a2815f516020613ed95f395f51905f52600160026040516110e592919061389d565b60405180910390a25050565b5f5f6110fc87610a3e565b5f888152600b602052604090205490915060ff16600481600681111561112457611124613185565b148860048390919261114c576040516337e1404160e01b815260040161073193929190613855565b5050505f888152600c602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052908990428110156111af576040516308f3034360e31b815260048101929092526024820152604401610731565b50505f898152600760205260409020600c016111cc888a83613917565b508261010001516001600160a01b0316632f0e1bbf8a8a8a6040516111f29291906139cb565b6040519081900381206001600160e01b031960e085901b16825261121d92918b908b90600401613a02565b602060405180830381865afa158015611238573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c9190613a2b565b935087878561128057604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff191660051790556112a3896127b2565b887f02a24c3402076671e129905ba4579d884b1f94ded1c07fc03d26d11b60bca16989896040516112d5929190613a4a565b60405180910390a2885f516020613ed95f395f51905f52600460056040516112fe92919061389d565b60405180910390a250505095945050505050565b5f546001600160a01b0316331461133b5760405162461bcd60e51b815260040161073190613824565b5f828152600b602052604090205460ff16600281600681111561136057611360613185565b1461138557826002826040516337e1404160e01b815260040161073193929190613855565b5f838152600b60209081526040808320805460ff191660031790556007909152808220600a018490555184917f11df18edb9bc9cd90a79068e0e208b630202148643d797d6150e7bacb733e63c91a2825f516020613ed95f395f51905f52600260036040516113f592919061389d565b60405180910390a2505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b61145760405180608001604052805f81526020015f81526020015f81526020015f81525090565b5060408051608081018252600f548152601054602082015260115491810191909152601254606082015290565b5f818152600b602052604090205460ff1660068160068111156114a9576114a9613185565b146114e65760405162461bcd60e51b815260206004820152600d60248201526c114cc81b9bdd0819985a5b1959609a1b6044820152606401610731565b5f828152600a6020526040902054806115385760405162461bcd60e51b8152602060048201526014602482015273139bc81c185e5b595b9d081d1bc81c99599d5b9960621b6044820152606401610731565b5f838152600a6020526040812081905561155184612a5f565b600254600354919250611571916001600160a01b03908116911684612b54565b6002546040516345ac612360e11b81526001600160a01b0390911690638b58c246906115a590879086908690600401613aa0565b5f604051808303815f87803b1580156115bc575f5ffd5b505af11580156115ce573d5f5f3e3d5ffd5b50505050837f5297818f48a66292b8b3e2caab83eec531b669bb20807fd38cf006adb2a0731783835160405161160e929190918252602082015260400190565b60405180910390a250505050565b61163d60405180606001604052805f81526020015f81526020015f81525090565b505f908152600c6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b5f818152600b6020526040812054819060ff166116928482612bb1565b9250925050915091565b5f5f6116a787610a3e565b5f888152600c60209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509088904281101561170c576040516308f3034360e31b815260048101929092526024820152604401610731565b50506060820151602001518890428111156117435760405163017e35e560e71b815260048101929092526024820152604401610731565b505061014082015188901561176e57604051637eb9cea960e11b815260040161073191815260200190565b505f87876040516117809291906139cb565b604080519182900382205f8c8152600760205291909120600b0181905560a0850151632f0e1bbf60e01b83529092506001600160a01b031690632f0e1bbf906117d3908c9085908b908b90600401613a02565b6020604051808303815f875af11580156117ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118139190613a2b565b935087878561183757604051632f9f8ab960e01b8152600401610731929190613a4a565b50505f898152600b60205260409020805460ff1916600417905560115461185e904261388a565b5f8a8152600c602052604090819020600201919091555189907f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade071906118a6908b908b90613a4a565b60405180910390a2885f516020613ed95f395f51905f52600360046040516112fe92919061389d565b6118d7612548565b80515f5b8181101561193657600160098483815181106118f9576118f9613ac7565b602002602001015160405161190e9190613adb565b908152604051908190036020019020805491151560ff199092169190911790556001016118db565b507f027b83cad653f54850fef6faa8c705f73a53e7f8de50a3a33ac1e0e3a5c0be81826040516119669190613af1565b60405180910390a15050565b5f546001600160a01b0316331461199b5760405162461bcd60e51b815260040161073190613824565b5f8160ff161180156119b15750600c8160ff1611155b6119f65760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103330b4b63ab932903932b0b9b7b760511b6044820152606401610731565b611a14828260ff16600c811115611a0f57611a0f613185565b612d39565b5050565b611a20612548565b6001600160a01b03811615801590611a5157505f828152600860205260409020546001600160a01b03828116911614155b8290611a73576040516381c4951960e01b815260040161073191815260200190565b505f8281526008602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381527ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb699101611966565b611ad3612548565b60048190556040518181527fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b5235529060200161081d565b611b10612548565b6001600160a01b03811615801590611b3657506001546001600160a01b03828116911614155b8190611b56576040516320252f0b60e01b8152600401610731919061313a565b50600180546001600160a01b0319166001600160a01b0383161790556040517fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a79061081d90839061313a565b611baa612548565b6001600160a01b038116611bd3575f604051631e4fbdf760e01b8152600401610731919061313a565b610d5581612742565b5f818152600b602052604081205460ff1681816006811115611c0057611c00613185565b03611c2557826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115611c3957611c39613185565b03611c5a5760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115611c6e57611c6e613185565b03611c8f57604051633de16e3560e11b815260048101849052602401610731565b5f611c9a8483612bb1565b9350905080611cbf57604051639f65d93560e01b815260048101859052602401610731565b5f848152600b60209081526040808320805460ff19908116600617909155600d9092529091208054859216600183600c811115611cfe57611cfe613185565b0217905550835f516020613ed95f395f51905f52836006604051611d2392919061389d565b60405180910390a2837fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb8385604051611d5d929190613b54565b60405180910390a25050919050565b611d74612548565b6001600160a01b03811615801590611d9957505f546001600160a01b03828116911614155b8190611db9576040516375ac4eb760e11b8152600401610731919061313a565b505f80546001600160a01b0319166001600160a01b0383161790556040517f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b69061081d90839061313a565b611e0c612548565b6001600160a01b0381165f90815260066020526040902054819060ff1615611e485760405163b29d459560e01b8152600401610731919061313a565b506001600160a01b0381165f9081526006602052604090819020805460ff19166001179055517fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d4679061081d90839061313a565b5f611ea4612f72565b611eb16020840184613b87565b63ffffffff16611ec76040850160208601613b87565b63ffffffff1610158015611eec57505f611ee46020850185613b87565b63ffffffff16115b8390611f0c57604051633744092160e21b81526004016107319190613bd0565b50604083013542811015611f3657604051630b99e87960e01b815260040161073191815260200190565b5060608301356040840135811015611f645760405163174b5a0760e21b815260040161073191815260200190565b506011546010545f9190611f7c426060880135613bde565b611f86919061388a565b611f90919061388a565b905060045481108190611fb9576040516313b783af60e21b815260040161073191815260200190565b5060065f611fcd60a0870160808801613108565b6001600160a01b0316815260208101919091526040015f205460ff16611ff960a0860160808701613108565b906120185760405163295a6a6f60e11b8152600401610731919061313a565b505f61202385610828565b60058054955090915084905f61203883613bf1565b90915550506040805144602080830191909152818301879052825180830384018152606090920183528151910120808552815180830183529091879060029083908390808284375f92019190915250505060208501524360408086019190915280518082018252908781019060029083908390808284375f92019190915250505060608501526120ce60a0870160808801613108565b6001600160a01b031660a0808601919091526120ec90870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505060c085015261213160e0870187613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525060e0890194909452505050610120850181905261014085018190526040805160208101909152818152610160860152336101808601526121a660a0880160808901613108565b6001600160a01b031663fefd9a8b87846121c360a08c018c613c09565b6121d060c08e018e613c09565b8e8060e001906121e09190613c09565b6040518963ffffffff1660e01b8152600401612203989796959493929190613c4b565b6020604051808303815f875af115801561221f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122439190613ca1565b5f818152600860205260409020549091506001600160a01b0316818161227f576040516381c4951960e01b815260040161073191815260200190565b50608086018290526001600160a01b0381166101008701525f87815260076020908152604090912087518155908701518791906122c29060018301906002612ff9565b50604082015181600201556060820151816003019060026122e4929190613094565b506080820151600582015560a08201516006820180546001600160a01b0319166001600160a01b0390921691909117905560c082015160078201906123299082613cb8565b5060e0820151600882019061233e9082613cb8565b506101008201516009820180546001600160a01b0319166001600160a01b03909216919091179055610120820151600a820155610140820151600b820155610160820151600c8201906123919082613cb8565b506101809190910151600d90910180546001600160a01b0319166001600160a01b039283161790555f888152600a602052604090208590556003546123d99116333087612e8a565b5f5460405163291a691b60e01b81526001600160a01b039091169063291a691b9061240c908a9087908d90600401613d6d565b6020604051808303815f875af1158015612428573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244c9190613a2b565b61246957604051630d8dbe2560e01b815260040160405180910390fd5b5f878152600b60209081526040808320805460ff19166001179055600e82529091208054336001600160a01b03199091161790556010546060880151909101516124b3919061388a565b5f888152600c60205260409020600101556124d460a0890160808a01613108565b6001600160a01b03167fe009e1827a616eb52d6aa3823303e01f235985c9da7b43cbcc95f54b0338785d888860405161250e9291906137da565b60405180910390a2865f516020613ed95f395f51905f525f600160405161253692919061389d565b60405180910390a25050505050915091565b33612551611402565b6001600160a01b031614610ff1573360405163118cdaa760e01b8152600401610731919061313a565b80356125bd5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420444b472077696e646f7760701b6044820152606401610731565b5f8160200135116126095760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6d707574652077696e646f7760501b6044820152606401610731565b5f8160400135116126585760405162461bcd60e51b8152602060048201526019602482015278496e76616c69642064656372797074696f6e2077696e646f7760381b6044820152606401610731565b5f8160600135116126a25760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819dc9858d9481c195c9a5bd960621b6044820152606401610731565b8035600f819055602080830135601081905560408085013560118190556060808701356012819055835196875294860193909352908401528201527f78e25a99f479f23adb3b0ac527204b39c8f57afa01a2595ad3b9b605bf0be22e9060800161081d565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b612739612ec9565b610d5581612eee565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f8054604051630a01649360e41b8152600481018490526001600160a01b039091169063a0164930906024015f60405180830381865afa1580156127f8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261281f9190810190613d88565b80519091505f816001600160401b0381111561283d5761283d613404565b604051908082528060200260200182016040528015612866578160200160208202803683370190505b505f858152600a602052604081205491925090612884908490613e17565b90505f5b838110156128b657818382815181106128a3576128a3613ac7565b6020908102919091010152600101612888565b505f858152600a60205260408082208054929055600354600154915163095ea7b360e01b81526001600160a01b039182169263095ea7b3926128ff929116908590600401613e36565b6020604051808303815f875af115801561291b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293f9190613a2b565b50600154600354604051636ec640c760e11b81526001600160a01b039283169263dd8c818e926129789291169089908890600401613e7f565b5f604051808303815f87803b15801561298f575f5ffd5b505af11580156129a1573d5f5f3e3d5ffd5b505060035460015460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b393506129dc92909116905f90600401613e36565b6020604051808303815f875af11580156129f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1c9190613a2b565b50857fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a8685604051612a4f929190613eb4565b60405180910390a2505050505050565b5f818152600d602052604090205460609060ff16600181600c811115612a8757612a87613185565b1480612aa45750600281600c811115612aa257612aa2613185565b145b15612adc575f5b604051908082528060200260200182016040528015612ad4578160200160208202803683370190505b509392505050565b5f54604051630a01649360e41b8152600481018590526001600160a01b039091169063a0164930906024015f60405180830381865afa925050508015612b4357506040513d5f823e601f3d908101601f19168201604052612b409190810190613d88565b60015b612b4d575f612aab565b9392505050565b612bac83846001600160a01b031663a9059cbb8585604051602401612b7a929190613e36565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612ef6565b505050565b5f828152600c60209081526040808320815160608101835281548152600182015493810193909352600201548282015282549051632800d82960e01b81526004810186905283929183916001600160a01b0390911690632800d82990602401602060405180830381865afa158015612c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4f9190613ca1565b90506001856006811115612c6557612c65613185565b148015612c7157508042115b15612c8457600180935093505050612d32565b6002856006811115612c9857612c98613185565b148015612ca55750815142115b15612cb95760016003935093505050612d32565b6003856006811115612ccd57612ccd613185565b148015612cdd5750816020015142115b15612cf15760016006935093505050612d32565b6004856006811115612d0557612d05613185565b148015612d155750816040015142115b15612d29576001600a935093505050612d32565b5f5f9350935050505b9250929050565b5f828152600b602052604081205460ff1690816006811115612d5d57612d5d613185565b03612d8257826001826040516337e1404160e01b815260040161073193929190613855565b6005816006811115612d9657612d96613185565b03612db75760405163462c7bed60e01b815260048101849052602401610731565b6006816006811115612dcb57612dcb613185565b03612dec57604051633de16e3560e11b815260048101849052602401610731565b5f838152600b60209081526040808320805460ff19908116600617909155600d9092529091208054849216600183600c811115612e2b57612e2b613185565b0217905550825f516020613ed95f395f51905f52826006604051612e5092919061389d565b60405180910390a2827fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb82846040516113f5929190613b54565b6040516001600160a01b038481166024830152838116604483015260648201839052612ec39186918216906323b872dd90608401612b7a565b50505050565b612ed1612f59565b610ff157604051631afcd79f60e31b815260040160405180910390fd5b611baa612ec9565b5f5f60205f8451602086015f885af180612f15576040513d5f823e3d81fd5b50505f513d91508115612f2c578060011415612f39565b6001600160a01b0384163b155b15612ec35783604051635274afe760e01b8152600401610731919061313a565b5f612f62612707565b54600160401b900460ff16919050565b604051806101a001604052805f8152602001612f8c6130c2565b81526020015f8152602001612f9f6130c2565b81526020015f81526020015f6001600160a01b0316815260200160608152602001606081526020015f6001600160a01b031681526020015f81526020015f8152602001606081526020015f6001600160a01b031681525090565b600183019183908215613084579160200282015f5b8382111561305257835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030261300e565b80156130825782816101000a81549063ffffffff0219169055600401602081600301049283019260010302613052565b505b506130909291506130e0565b5090565b8260028101928215613084579160200282015b828111156130845782518255916020019190600101906130a7565b60405180604001604052806002906020820280368337509192915050565b5b80821115613090575f81556001016130e1565b6001600160a01b0381168114610d55575f5ffd5b5f60208284031215613118575f5ffd5b8135612b4d816130f4565b5f60208284031215613133575f5ffd5b5035919050565b6001600160a01b0391909116815260200190565b5f6020828403121561315e575f5ffd5b81356001600160401b03811115613173575f5ffd5b82016101008185031215612b4d575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b600d81106131a9576131a9613185565b9052565b6020810161272b8284613199565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8b81528a602082015289604082015260018060a01b038916606082015261016060808201525f61321d61016083018a6131bb565b82810360a084015261322f818a6131bb565b6001600160a01b03891660c085015260e084018890526101008401879052838103610120850152905061326281866131bb565b91505060018060a01b0383166101408301529c9b505050505050505050505050565b805f5b6002811015612ec357815163ffffffff16845260209384019390910190600101613287565b805f5b6002811015612ec35781518452602093840193909101906001016132af565b805182525f60208201516132e56020850182613284565b5060408201516060840152606082015161330260808501826132ac565b50608082015160c084015260a08201516001600160a01b03811660e08501525060c08201516101e061010085015261333e6101e08501826131bb565b905060e083015184820361012086015261335882826131bb565b9150506101008301516133776101408601826001600160a01b03169052565b506101208301516101608501526101408301516101808501526101608301518482036101a08601526133a982826131bb565b915050610180830151612ad46101c08601826001600160a01b03169052565b602081525f612b4d60208301846132ce565b5f6080828403121561082e575f5ffd5b5f608082840312156133fa575f5ffd5b612b4d83836133da565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561344057613440613404565b604052919050565b5f82601f830112613457575f5ffd5b81356001600160401b0381111561347057613470613404565b613483601f8201601f1916602001613418565b818152846020838601011115613497575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156134c3575f5ffd5b81356001600160401b038111156134d8575f5ffd5b6134e484828501613448565b949350505050565b5f6001600160401b0382111561350457613504613404565b5060051b60200190565b5f82601f83011261351d575f5ffd5b813561353061352b826134ec565b613418565b8082825260208201915060208360051b860101925085831115613551575f5ffd5b602085015b838110156135915780356001600160401b03811115613573575f5ffd5b613582886020838a0101613448565b84525060209283019201613556565b5095945050505050565b5f5f5f5f5f5f5f5f610160898b0312156135b3575f5ffd5b88356135be816130f4565b975060208901356135ce816130f4565b965060408901356135de816130f4565b955060608901356135ee816130f4565b945060808901356135fe816130f4565b935060a089013592506136148a60c08b016133da565b91506101408901356001600160401b0381111561362f575f5ffd5b61363b8b828c0161350e565b9150509295985092959890939650565b5f5f83601f84011261365b575f5ffd5b5081356001600160401b03811115613671575f5ffd5b602083019150836020828501011115612d32575f5ffd5b5f5f5f5f5f6060868803121561369c575f5ffd5b8535945060208601356001600160401b038111156136b8575f5ffd5b6136c48882890161364b565b90955093505060408601356001600160401b038111156136e2575f5ffd5b6136ee8882890161364b565b969995985093965092949392505050565b5f5f60408385031215613710575f5ffd5b50508035926020909101359150565b821515815260408101612b4d6020830184613199565b5f60208284031215613745575f5ffd5b81356001600160401b0381111561375a575f5ffd5b6134e48482850161350e565b5f5f60408385031215613777575f5ffd5b82359150602083013560ff8116811461378e575f5ffd5b809150509250929050565b5f5f604083850312156137aa575f5ffd5b82359150602083013561378e816130f4565b600781106131a9576131a9613185565b6020810161272b82846137bc565b828152604060208201525f6134e460408301846132ce565b600181811c9082168061380657607f821691505b60208210810361082e57634e487b7160e01b5f52602260045260245ffd5b6020808252601790820152764f6e6c79204369706865726e6f6465526567697374727960481b604082015260600190565b8381526060810161386960208301856137bc565b6134e460408301846137bc565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561272b5761272b613876565b604081016138ab82856137bc565b612b4d60208301846137bc565b601f821115612bac57805f5260205f20601f840160051c810160208510156138dd5750805b601f840160051c820191505b818110156138fc575f81556001016138e9565b5050505050565b5f19600383901b1c191660019190911b1790565b6001600160401b0383111561392e5761392e613404565b6139428361393c83546137f2565b836138b8565b5f601f84116001811461396e575f851561395c5750838201355b6139668682613903565b8455506138fc565b5f83815260208120601f198716915b8281101561399d578685013582556020948501946001909201910161397d565b50868210156139b9575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201525f613a216060830184866139da565b9695505050505050565b5f60208284031215613a3b575f5ffd5b81518015158114612b4d575f5ffd5b602081525f6134e46020830184866139da565b5f8151808452602084019350602083015f5b82811015613a965781516001600160a01b0316865260209586019590910190600101613a6f565b5093949350505050565b838152826020820152606060408201525f613abe6060830184613a5d565b95945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613b4857603f19878603018452613b338583516131bb565b94506020938401939190910190600101613b17565b50929695505050505050565b60408101613b6282856137bc565b612b4d6020830184613199565b803563ffffffff81168114613b82575f5ffd5b919050565b5f60208284031215613b97575f5ffd5b612b4d82613b6f565b805f5b6002811015612ec35763ffffffff613bba83613b6f565b1684526020938401939190910190600101613ba3565b6040810161272b8284613ba0565b8181038181111561272b5761272b613876565b5f60018201613c0257613c02613876565b5060010190565b5f5f8335601e19843603018112613c1e575f5ffd5b8301803591506001600160401b03821115613c37575f5ffd5b602001915036819003821315612d32575f5ffd5b88815287602082015260a060408201525f613c6a60a08301888a6139da565b8281036060840152613c7d8187896139da565b90508281036080840152613c928185876139da565b9b9a5050505050505050505050565b5f60208284031215613cb1575f5ffd5b5051919050565b81516001600160401b03811115613cd157613cd1613404565b613ce581613cdf84546137f2565b846138b8565b6020601f821160018114613d12575f8315613d005750848201515b613d0a8482613903565b8555506138fc565b5f84815260208120601f198516915b82811015613d415787850151825560209485019460019092019101613d21565b5084821015613d5e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b83815260208101839052608081016134e46040830184613ba0565b5f60208284031215613d98575f5ffd5b81516001600160401b03811115613dad575f5ffd5b8201601f81018413613dbd575f5ffd5b8051613dcb61352b826134ec565b8082825260208201915060208360051b850101925086831115613dec575f5ffd5b6020840193505b82841015613a21578351613e06816130f4565b825260209384019390910190613df3565b5f82613e3157634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b03929092168252602082015260400190565b5f8151808452602084019350602083015f5b82811015613a96578151865260209586019590910190600101613e61565b6001600160a01b03841681526060602082018190525f90613ea290830185613a5d565b8281036040840152613a218185613e4f565b604081525f613ec66040830185613a5d565b8281036020840152613abe8185613e4f56fe1b418a230a21d37a078bf8f16decbde8ccceacd77159371f62f0d4ea00d19967a164736f6c634300081c000a",
1548
1896
  "linkReferences": {},
1549
1897
  "deployedLinkReferences": {},
1550
1898
  "immutableReferences": {},
1551
1899
  "inputSourceName": "project/contracts/Enclave.sol",
1552
- "buildInfoId": "solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799"
1900
+ "buildInfoId": "solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e"
1553
1901
  }