@across-protocol/contracts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +661 -0
  3. package/README.md +53 -0
  4. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.dbg.json +4 -0
  5. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.json +252 -0
  6. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.dbg.json +4 -0
  7. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.json +35 -0
  8. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.dbg.json +4 -0
  9. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +110 -0
  10. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.dbg.json +4 -0
  11. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.json +10 -0
  12. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  14. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.json +108 -0
  16. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  18. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.json +50 -0
  20. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +10 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.json +10 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.json +10 -0
  42. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  43. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  44. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.dbg.json +4 -0
  45. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.json +611 -0
  46. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.dbg.json +4 -0
  47. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.json +297 -0
  48. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.dbg.json +4 -0
  49. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.json +29 -0
  50. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.dbg.json +4 -0
  51. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.json +37 -0
  52. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  53. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  54. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  55. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  56. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  57. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  58. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  59. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  60. package/artifacts/build-info/1cd64db7a8ac0a153df93d26826ad4e9.json +1653 -0
  61. package/artifacts/build-info/1f738b56edd7602183f2f8d2f23f6e90.json +1592 -0
  62. package/artifacts/build-info/343b9221be36acd9ddaca3f3b83d2e75.json +3943 -0
  63. package/artifacts/build-info/622e561692c193f4cd0ff989b5a231e2.json +5661 -0
  64. package/artifacts/build-info/8e408b49e0ff2873bc28d45221a7ff71.json +277715 -0
  65. package/artifacts/build-info/9d1a3182633612bd337d811d567d5d60.json +2072 -0
  66. package/artifacts/build-info/a8cd9c443d245fe513d6650634b60f93.json +23776 -0
  67. package/artifacts/build-info/d302d9d63fbafb5c8d635cc62cb1cc7c.json +167529 -0
  68. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.dbg.json +4 -0
  69. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.json +10 -0
  70. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  71. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.json +10 -0
  72. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  73. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  74. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.dbg.json +4 -0
  75. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.json +30 -0
  76. package/artifacts/contracts/common/implementation/Testable.sol/Testable.dbg.json +4 -0
  77. package/artifacts/contracts/common/implementation/Testable.sol/Testable.json +50 -0
  78. package/artifacts/contracts/common/implementation/Timer.sol/Timer.dbg.json +4 -0
  79. package/artifacts/contracts/common/implementation/Timer.sol/Timer.json +42 -0
  80. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.dbg.json +4 -0
  81. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.json +69 -0
  82. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.dbg.json +4 -0
  83. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.json +42 -0
  84. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.dbg.json +4 -0
  85. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.json +235 -0
  86. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  87. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  88. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  89. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  90. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  91. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  92. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.dbg.json +4 -0
  93. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.json +1019 -0
  94. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.dbg.json +4 -0
  95. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.json +314 -0
  96. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.dbg.json +4 -0
  97. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.json +47 -0
  98. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.dbg.json +4 -0
  99. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.json +62 -0
  100. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.dbg.json +4 -0
  101. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.json +65 -0
  102. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.dbg.json +4 -0
  103. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.json +39 -0
  104. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  105. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  106. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  107. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.json +86 -0
  108. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.dbg.json +4 -0
  109. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.json +10 -0
  110. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.dbg.json +4 -0
  111. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.json +10 -0
  112. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.dbg.json +4 -0
  113. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.json +10 -0
  114. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.dbg.json +4 -0
  115. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.json +104 -0
  116. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.dbg.json +4 -0
  117. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.json +34 -0
  118. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.dbg.json +4 -0
  119. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.json +29 -0
  120. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.dbg.json +4 -0
  121. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.json +79 -0
  122. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.dbg.json +4 -0
  123. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.json +29 -0
  124. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.dbg.json +4 -0
  125. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.json +29 -0
  126. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.dbg.json +4 -0
  127. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.json +54 -0
  128. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.dbg.json +4 -0
  129. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.json +86 -0
  130. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.dbg.json +4 -0
  131. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.json +34 -0
  132. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.dbg.json +4 -0
  133. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.json +108 -0
  134. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.dbg.json +4 -0
  135. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.json +50 -0
  136. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.dbg.json +4 -0
  137. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.json +29 -0
  138. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.json +662 -0
  140. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.dbg.json +4 -0
  141. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.json +391 -0
  142. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.dbg.json +4 -0
  143. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.json +30 -0
  144. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.dbg.json +4 -0
  145. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.json +31 -0
  146. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.dbg.json +4 -0
  147. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.json +1709 -0
  148. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.dbg.json +4 -0
  149. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.json +1709 -0
  150. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.dbg.json +4 -0
  151. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.json +31 -0
  152. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.dbg.json +4 -0
  153. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.json +564 -0
  154. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.dbg.json +4 -0
  155. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.json +45 -0
  156. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  157. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  158. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.dbg.json +4 -0
  159. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.json +191 -0
  160. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.dbg.json +4 -0
  161. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.json +319 -0
  162. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.dbg.json +4 -0
  163. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.json +63 -0
  164. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.dbg.json +4 -0
  165. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.json +54 -0
  166. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.dbg.json +4 -0
  167. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.json +528 -0
  168. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  169. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  170. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.dbg.json +4 -0
  171. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.json +572 -0
  172. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.dbg.json +4 -0
  173. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.json +130 -0
  174. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.dbg.json +4 -0
  175. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.json +142 -0
  176. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.dbg.json +4 -0
  177. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.json +55 -0
  178. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  179. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.json +86 -0
  180. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.dbg.json +4 -0
  181. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.json +68 -0
  182. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.dbg.json +4 -0
  183. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.json +78 -0
  184. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.dbg.json +4 -0
  185. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.json +24 -0
  186. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.dbg.json +4 -0
  187. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.json +510 -0
  188. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.dbg.json +4 -0
  189. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.json +85 -0
  190. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.dbg.json +4 -0
  191. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.json +110 -0
  192. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.dbg.json +4 -0
  193. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.json +24 -0
  194. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.dbg.json +4 -0
  195. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.json +141 -0
  196. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.dbg.json +4 -0
  197. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.json +48 -0
  198. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.dbg.json +4 -0
  199. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.json +56 -0
  200. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.dbg.json +4 -0
  201. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.json +555 -0
  202. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.dbg.json +4 -0
  203. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.json +853 -0
  204. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.dbg.json +4 -0
  205. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.json +124 -0
  206. package/contracts/common/implementation/AncillaryData.sol +144 -0
  207. package/contracts/common/implementation/FixedPoint.sol +763 -0
  208. package/contracts/common/implementation/Lockable.sol +61 -0
  209. package/contracts/common/implementation/MultiCaller.sol +27 -0
  210. package/contracts/common/implementation/Testable.sol +52 -0
  211. package/contracts/common/implementation/Timer.sol +30 -0
  212. package/contracts/common/interfaces/AddressWhitelistInterface.sol +12 -0
  213. package/contracts/external/avm/AVM_CrossDomainEnabled.sol +43 -0
  214. package/contracts/external/avm/interfaces/ArbSys.sol +79 -0
  215. package/contracts/external/avm/interfaces/iArbitrum_Inbox.sol +28 -0
  216. package/contracts/external/avm/interfaces/iArbitrum_Outbox.sol +26 -0
  217. package/contracts/external/chainbridge/Bridge.sol +454 -0
  218. package/contracts/external/chainbridge/handlers/GenericHandler.sol +237 -0
  219. package/contracts/external/chainbridge/interfaces/IBridge.sol +20 -0
  220. package/contracts/external/chainbridge/interfaces/IDepositExecute.sol +29 -0
  221. package/contracts/external/chainbridge/interfaces/IERCHandler.sol +33 -0
  222. package/contracts/external/chainbridge/interfaces/IGenericHandler.sol +23 -0
  223. package/contracts/external/ovm/OVM_CrossDomainEnabled.sol +114 -0
  224. package/contracts/external/polygon/lib/Merkle.sol +36 -0
  225. package/contracts/external/polygon/lib/MerklePatriciaProof.sol +139 -0
  226. package/contracts/external/polygon/lib/RLPReader.sol +251 -0
  227. package/contracts/external/polygon/test/FxChildMock.sol +42 -0
  228. package/contracts/external/polygon/test/FxRootMock.sol +32 -0
  229. package/contracts/external/polygon/test/StateSyncMock.sol +26 -0
  230. package/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol +80 -0
  231. package/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol +185 -0
  232. package/contracts/insured-bridge/BridgeAdmin.sol +394 -0
  233. package/contracts/insured-bridge/BridgeDepositBox.sol +245 -0
  234. package/contracts/insured-bridge/BridgePool.sol +980 -0
  235. package/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol +144 -0
  236. package/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol +67 -0
  237. package/contracts/insured-bridge/avm/Arbitrum_Messenger.sol +72 -0
  238. package/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol +44 -0
  239. package/contracts/insured-bridge/interfaces/BridgePoolInterface.sol +14 -0
  240. package/contracts/insured-bridge/interfaces/MessengerInterface.sol +18 -0
  241. package/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol +135 -0
  242. package/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol +84 -0
  243. package/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol +89 -0
  244. package/contracts/insured-bridge/ovm/Optimism_Messenger.sol +34 -0
  245. package/contracts/insured-bridge/ovm/Optimism_Wrapper.sol +59 -0
  246. package/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol +41 -0
  247. package/contracts/insured-bridge/test/Arbitrum_InboxMock.sol +50 -0
  248. package/contracts/insured-bridge/test/BridgeDepositBoxMock.sol +113 -0
  249. package/contracts/insured-bridge/test/MessengerMock.sol +32 -0
  250. package/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol +16 -0
  251. package/contracts/oracle/implementation/Constants.sol +29 -0
  252. package/contracts/oracle/interfaces/FinderInterface.sol +22 -0
  253. package/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol +28 -0
  254. package/contracts/oracle/interfaces/OptimisticOracleInterface.sol +263 -0
  255. package/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol +251 -0
  256. package/contracts/oracle/interfaces/StoreInterface.sol +46 -0
  257. package/package.json +60 -0
@@ -0,0 +1,1709 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "BridgePool",
4
+ "sourceName": "contracts/insured-bridge/BridgePool.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "_lpTokenName",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "_lpTokenSymbol",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_bridgeAdmin",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "_l1Token",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "uint64",
30
+ "name": "_lpFeeRatePerSecond",
31
+ "type": "uint64"
32
+ },
33
+ {
34
+ "internalType": "bool",
35
+ "name": "_isWethPool",
36
+ "type": "bool"
37
+ },
38
+ {
39
+ "internalType": "address",
40
+ "name": "_timer",
41
+ "type": "address"
42
+ }
43
+ ],
44
+ "stateMutability": "nonpayable",
45
+ "type": "constructor"
46
+ },
47
+ {
48
+ "anonymous": false,
49
+ "inputs": [
50
+ {
51
+ "indexed": true,
52
+ "internalType": "address",
53
+ "name": "owner",
54
+ "type": "address"
55
+ },
56
+ {
57
+ "indexed": true,
58
+ "internalType": "address",
59
+ "name": "spender",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "indexed": false,
64
+ "internalType": "uint256",
65
+ "name": "value",
66
+ "type": "uint256"
67
+ }
68
+ ],
69
+ "name": "Approval",
70
+ "type": "event"
71
+ },
72
+ {
73
+ "anonymous": false,
74
+ "inputs": [
75
+ {
76
+ "indexed": false,
77
+ "internalType": "address",
78
+ "name": "oldAdmin",
79
+ "type": "address"
80
+ },
81
+ {
82
+ "indexed": false,
83
+ "internalType": "address",
84
+ "name": "newAdmin",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "BridgePoolAdminTransferred",
89
+ "type": "event"
90
+ },
91
+ {
92
+ "anonymous": false,
93
+ "inputs": [
94
+ {
95
+ "indexed": true,
96
+ "internalType": "bytes32",
97
+ "name": "depositHash",
98
+ "type": "bytes32"
99
+ },
100
+ {
101
+ "components": [
102
+ {
103
+ "internalType": "uint256",
104
+ "name": "chainId",
105
+ "type": "uint256"
106
+ },
107
+ {
108
+ "internalType": "uint64",
109
+ "name": "depositId",
110
+ "type": "uint64"
111
+ },
112
+ {
113
+ "internalType": "address payable",
114
+ "name": "l1Recipient",
115
+ "type": "address"
116
+ },
117
+ {
118
+ "internalType": "address",
119
+ "name": "l2Sender",
120
+ "type": "address"
121
+ },
122
+ {
123
+ "internalType": "uint256",
124
+ "name": "amount",
125
+ "type": "uint256"
126
+ },
127
+ {
128
+ "internalType": "uint64",
129
+ "name": "slowRelayFeePct",
130
+ "type": "uint64"
131
+ },
132
+ {
133
+ "internalType": "uint64",
134
+ "name": "instantRelayFeePct",
135
+ "type": "uint64"
136
+ },
137
+ {
138
+ "internalType": "uint32",
139
+ "name": "quoteTimestamp",
140
+ "type": "uint32"
141
+ }
142
+ ],
143
+ "indexed": false,
144
+ "internalType": "struct BridgePool.DepositData",
145
+ "name": "depositData",
146
+ "type": "tuple"
147
+ },
148
+ {
149
+ "components": [
150
+ {
151
+ "internalType": "enum BridgePool.RelayState",
152
+ "name": "relayState",
153
+ "type": "uint8"
154
+ },
155
+ {
156
+ "internalType": "address",
157
+ "name": "slowRelayer",
158
+ "type": "address"
159
+ },
160
+ {
161
+ "internalType": "uint32",
162
+ "name": "relayId",
163
+ "type": "uint32"
164
+ },
165
+ {
166
+ "internalType": "uint64",
167
+ "name": "realizedLpFeePct",
168
+ "type": "uint64"
169
+ },
170
+ {
171
+ "internalType": "uint32",
172
+ "name": "priceRequestTime",
173
+ "type": "uint32"
174
+ },
175
+ {
176
+ "internalType": "uint256",
177
+ "name": "proposerBond",
178
+ "type": "uint256"
179
+ },
180
+ {
181
+ "internalType": "uint256",
182
+ "name": "finalFee",
183
+ "type": "uint256"
184
+ }
185
+ ],
186
+ "indexed": false,
187
+ "internalType": "struct BridgePool.RelayData",
188
+ "name": "relay",
189
+ "type": "tuple"
190
+ },
191
+ {
192
+ "indexed": false,
193
+ "internalType": "bytes32",
194
+ "name": "relayAncillaryDataHash",
195
+ "type": "bytes32"
196
+ }
197
+ ],
198
+ "name": "DepositRelayed",
199
+ "type": "event"
200
+ },
201
+ {
202
+ "anonymous": false,
203
+ "inputs": [
204
+ {
205
+ "indexed": false,
206
+ "internalType": "uint256",
207
+ "name": "amount",
208
+ "type": "uint256"
209
+ },
210
+ {
211
+ "indexed": false,
212
+ "internalType": "uint256",
213
+ "name": "lpTokensMinted",
214
+ "type": "uint256"
215
+ },
216
+ {
217
+ "indexed": true,
218
+ "internalType": "address",
219
+ "name": "liquidityProvider",
220
+ "type": "address"
221
+ }
222
+ ],
223
+ "name": "LiquidityAdded",
224
+ "type": "event"
225
+ },
226
+ {
227
+ "anonymous": false,
228
+ "inputs": [
229
+ {
230
+ "indexed": false,
231
+ "internalType": "uint256",
232
+ "name": "amount",
233
+ "type": "uint256"
234
+ },
235
+ {
236
+ "indexed": false,
237
+ "internalType": "uint256",
238
+ "name": "lpTokensBurnt",
239
+ "type": "uint256"
240
+ },
241
+ {
242
+ "indexed": true,
243
+ "internalType": "address",
244
+ "name": "liquidityProvider",
245
+ "type": "address"
246
+ }
247
+ ],
248
+ "name": "LiquidityRemoved",
249
+ "type": "event"
250
+ },
251
+ {
252
+ "anonymous": false,
253
+ "inputs": [
254
+ {
255
+ "indexed": false,
256
+ "internalType": "uint64",
257
+ "name": "newLpFeeRatePerSecond",
258
+ "type": "uint64"
259
+ }
260
+ ],
261
+ "name": "LpFeeRateSet",
262
+ "type": "event"
263
+ },
264
+ {
265
+ "anonymous": false,
266
+ "inputs": [
267
+ {
268
+ "indexed": true,
269
+ "internalType": "bytes32",
270
+ "name": "depositHash",
271
+ "type": "bytes32"
272
+ },
273
+ {
274
+ "indexed": true,
275
+ "internalType": "bytes32",
276
+ "name": "relayHash",
277
+ "type": "bytes32"
278
+ },
279
+ {
280
+ "indexed": true,
281
+ "internalType": "address",
282
+ "name": "disputer",
283
+ "type": "address"
284
+ }
285
+ ],
286
+ "name": "RelayCanceled",
287
+ "type": "event"
288
+ },
289
+ {
290
+ "anonymous": false,
291
+ "inputs": [
292
+ {
293
+ "indexed": true,
294
+ "internalType": "bytes32",
295
+ "name": "depositHash",
296
+ "type": "bytes32"
297
+ },
298
+ {
299
+ "indexed": true,
300
+ "internalType": "bytes32",
301
+ "name": "relayHash",
302
+ "type": "bytes32"
303
+ },
304
+ {
305
+ "indexed": true,
306
+ "internalType": "address",
307
+ "name": "disputer",
308
+ "type": "address"
309
+ }
310
+ ],
311
+ "name": "RelayDisputed",
312
+ "type": "event"
313
+ },
314
+ {
315
+ "anonymous": false,
316
+ "inputs": [
317
+ {
318
+ "indexed": true,
319
+ "internalType": "bytes32",
320
+ "name": "depositHash",
321
+ "type": "bytes32"
322
+ },
323
+ {
324
+ "indexed": true,
325
+ "internalType": "address",
326
+ "name": "caller",
327
+ "type": "address"
328
+ },
329
+ {
330
+ "components": [
331
+ {
332
+ "internalType": "enum BridgePool.RelayState",
333
+ "name": "relayState",
334
+ "type": "uint8"
335
+ },
336
+ {
337
+ "internalType": "address",
338
+ "name": "slowRelayer",
339
+ "type": "address"
340
+ },
341
+ {
342
+ "internalType": "uint32",
343
+ "name": "relayId",
344
+ "type": "uint32"
345
+ },
346
+ {
347
+ "internalType": "uint64",
348
+ "name": "realizedLpFeePct",
349
+ "type": "uint64"
350
+ },
351
+ {
352
+ "internalType": "uint32",
353
+ "name": "priceRequestTime",
354
+ "type": "uint32"
355
+ },
356
+ {
357
+ "internalType": "uint256",
358
+ "name": "proposerBond",
359
+ "type": "uint256"
360
+ },
361
+ {
362
+ "internalType": "uint256",
363
+ "name": "finalFee",
364
+ "type": "uint256"
365
+ }
366
+ ],
367
+ "indexed": false,
368
+ "internalType": "struct BridgePool.RelayData",
369
+ "name": "relay",
370
+ "type": "tuple"
371
+ }
372
+ ],
373
+ "name": "RelaySettled",
374
+ "type": "event"
375
+ },
376
+ {
377
+ "anonymous": false,
378
+ "inputs": [
379
+ {
380
+ "indexed": true,
381
+ "internalType": "bytes32",
382
+ "name": "depositHash",
383
+ "type": "bytes32"
384
+ },
385
+ {
386
+ "indexed": true,
387
+ "internalType": "address",
388
+ "name": "instantRelayer",
389
+ "type": "address"
390
+ },
391
+ {
392
+ "components": [
393
+ {
394
+ "internalType": "enum BridgePool.RelayState",
395
+ "name": "relayState",
396
+ "type": "uint8"
397
+ },
398
+ {
399
+ "internalType": "address",
400
+ "name": "slowRelayer",
401
+ "type": "address"
402
+ },
403
+ {
404
+ "internalType": "uint32",
405
+ "name": "relayId",
406
+ "type": "uint32"
407
+ },
408
+ {
409
+ "internalType": "uint64",
410
+ "name": "realizedLpFeePct",
411
+ "type": "uint64"
412
+ },
413
+ {
414
+ "internalType": "uint32",
415
+ "name": "priceRequestTime",
416
+ "type": "uint32"
417
+ },
418
+ {
419
+ "internalType": "uint256",
420
+ "name": "proposerBond",
421
+ "type": "uint256"
422
+ },
423
+ {
424
+ "internalType": "uint256",
425
+ "name": "finalFee",
426
+ "type": "uint256"
427
+ }
428
+ ],
429
+ "indexed": false,
430
+ "internalType": "struct BridgePool.RelayData",
431
+ "name": "relay",
432
+ "type": "tuple"
433
+ }
434
+ ],
435
+ "name": "RelaySpedUp",
436
+ "type": "event"
437
+ },
438
+ {
439
+ "anonymous": false,
440
+ "inputs": [
441
+ {
442
+ "indexed": false,
443
+ "internalType": "bool",
444
+ "name": "newRelaysEnabled",
445
+ "type": "bool"
446
+ }
447
+ ],
448
+ "name": "RelaysEnabledSet",
449
+ "type": "event"
450
+ },
451
+ {
452
+ "anonymous": false,
453
+ "inputs": [
454
+ {
455
+ "indexed": true,
456
+ "internalType": "address",
457
+ "name": "from",
458
+ "type": "address"
459
+ },
460
+ {
461
+ "indexed": true,
462
+ "internalType": "address",
463
+ "name": "to",
464
+ "type": "address"
465
+ },
466
+ {
467
+ "indexed": false,
468
+ "internalType": "uint256",
469
+ "name": "value",
470
+ "type": "uint256"
471
+ }
472
+ ],
473
+ "name": "Transfer",
474
+ "type": "event"
475
+ },
476
+ {
477
+ "inputs": [
478
+ {
479
+ "internalType": "uint256",
480
+ "name": "l1TokenAmount",
481
+ "type": "uint256"
482
+ }
483
+ ],
484
+ "name": "addLiquidity",
485
+ "outputs": [],
486
+ "stateMutability": "payable",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [
491
+ {
492
+ "internalType": "address",
493
+ "name": "owner",
494
+ "type": "address"
495
+ },
496
+ {
497
+ "internalType": "address",
498
+ "name": "spender",
499
+ "type": "address"
500
+ }
501
+ ],
502
+ "name": "allowance",
503
+ "outputs": [
504
+ {
505
+ "internalType": "uint256",
506
+ "name": "",
507
+ "type": "uint256"
508
+ }
509
+ ],
510
+ "stateMutability": "view",
511
+ "type": "function"
512
+ },
513
+ {
514
+ "inputs": [
515
+ {
516
+ "internalType": "address",
517
+ "name": "spender",
518
+ "type": "address"
519
+ },
520
+ {
521
+ "internalType": "uint256",
522
+ "name": "amount",
523
+ "type": "uint256"
524
+ }
525
+ ],
526
+ "name": "approve",
527
+ "outputs": [
528
+ {
529
+ "internalType": "bool",
530
+ "name": "",
531
+ "type": "bool"
532
+ }
533
+ ],
534
+ "stateMutability": "nonpayable",
535
+ "type": "function"
536
+ },
537
+ {
538
+ "inputs": [
539
+ {
540
+ "internalType": "address",
541
+ "name": "account",
542
+ "type": "address"
543
+ }
544
+ ],
545
+ "name": "balanceOf",
546
+ "outputs": [
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "",
550
+ "type": "uint256"
551
+ }
552
+ ],
553
+ "stateMutability": "view",
554
+ "type": "function"
555
+ },
556
+ {
557
+ "inputs": [],
558
+ "name": "bonds",
559
+ "outputs": [
560
+ {
561
+ "internalType": "uint256",
562
+ "name": "",
563
+ "type": "uint256"
564
+ }
565
+ ],
566
+ "stateMutability": "view",
567
+ "type": "function"
568
+ },
569
+ {
570
+ "inputs": [],
571
+ "name": "bridgeAdmin",
572
+ "outputs": [
573
+ {
574
+ "internalType": "contract BridgeAdminInterface",
575
+ "name": "",
576
+ "type": "address"
577
+ }
578
+ ],
579
+ "stateMutability": "view",
580
+ "type": "function"
581
+ },
582
+ {
583
+ "inputs": [
584
+ {
585
+ "internalType": "address",
586
+ "name": "_newAdmin",
587
+ "type": "address"
588
+ }
589
+ ],
590
+ "name": "changeAdmin",
591
+ "outputs": [],
592
+ "stateMutability": "nonpayable",
593
+ "type": "function"
594
+ },
595
+ {
596
+ "inputs": [],
597
+ "name": "decimals",
598
+ "outputs": [
599
+ {
600
+ "internalType": "uint8",
601
+ "name": "",
602
+ "type": "uint8"
603
+ }
604
+ ],
605
+ "stateMutability": "view",
606
+ "type": "function"
607
+ },
608
+ {
609
+ "inputs": [
610
+ {
611
+ "internalType": "address",
612
+ "name": "spender",
613
+ "type": "address"
614
+ },
615
+ {
616
+ "internalType": "uint256",
617
+ "name": "subtractedValue",
618
+ "type": "uint256"
619
+ }
620
+ ],
621
+ "name": "decreaseAllowance",
622
+ "outputs": [
623
+ {
624
+ "internalType": "bool",
625
+ "name": "",
626
+ "type": "bool"
627
+ }
628
+ ],
629
+ "stateMutability": "nonpayable",
630
+ "type": "function"
631
+ },
632
+ {
633
+ "inputs": [
634
+ {
635
+ "components": [
636
+ {
637
+ "internalType": "uint256",
638
+ "name": "chainId",
639
+ "type": "uint256"
640
+ },
641
+ {
642
+ "internalType": "uint64",
643
+ "name": "depositId",
644
+ "type": "uint64"
645
+ },
646
+ {
647
+ "internalType": "address payable",
648
+ "name": "l1Recipient",
649
+ "type": "address"
650
+ },
651
+ {
652
+ "internalType": "address",
653
+ "name": "l2Sender",
654
+ "type": "address"
655
+ },
656
+ {
657
+ "internalType": "uint256",
658
+ "name": "amount",
659
+ "type": "uint256"
660
+ },
661
+ {
662
+ "internalType": "uint64",
663
+ "name": "slowRelayFeePct",
664
+ "type": "uint64"
665
+ },
666
+ {
667
+ "internalType": "uint64",
668
+ "name": "instantRelayFeePct",
669
+ "type": "uint64"
670
+ },
671
+ {
672
+ "internalType": "uint32",
673
+ "name": "quoteTimestamp",
674
+ "type": "uint32"
675
+ }
676
+ ],
677
+ "internalType": "struct BridgePool.DepositData",
678
+ "name": "depositData",
679
+ "type": "tuple"
680
+ },
681
+ {
682
+ "components": [
683
+ {
684
+ "internalType": "enum BridgePool.RelayState",
685
+ "name": "relayState",
686
+ "type": "uint8"
687
+ },
688
+ {
689
+ "internalType": "address",
690
+ "name": "slowRelayer",
691
+ "type": "address"
692
+ },
693
+ {
694
+ "internalType": "uint32",
695
+ "name": "relayId",
696
+ "type": "uint32"
697
+ },
698
+ {
699
+ "internalType": "uint64",
700
+ "name": "realizedLpFeePct",
701
+ "type": "uint64"
702
+ },
703
+ {
704
+ "internalType": "uint32",
705
+ "name": "priceRequestTime",
706
+ "type": "uint32"
707
+ },
708
+ {
709
+ "internalType": "uint256",
710
+ "name": "proposerBond",
711
+ "type": "uint256"
712
+ },
713
+ {
714
+ "internalType": "uint256",
715
+ "name": "finalFee",
716
+ "type": "uint256"
717
+ }
718
+ ],
719
+ "internalType": "struct BridgePool.RelayData",
720
+ "name": "relayData",
721
+ "type": "tuple"
722
+ }
723
+ ],
724
+ "name": "disputeRelay",
725
+ "outputs": [],
726
+ "stateMutability": "nonpayable",
727
+ "type": "function"
728
+ },
729
+ {
730
+ "inputs": [],
731
+ "name": "exchangeRateCurrent",
732
+ "outputs": [
733
+ {
734
+ "internalType": "uint256",
735
+ "name": "",
736
+ "type": "uint256"
737
+ }
738
+ ],
739
+ "stateMutability": "nonpayable",
740
+ "type": "function"
741
+ },
742
+ {
743
+ "inputs": [],
744
+ "name": "getAccumulatedFees",
745
+ "outputs": [
746
+ {
747
+ "internalType": "uint256",
748
+ "name": "",
749
+ "type": "uint256"
750
+ }
751
+ ],
752
+ "stateMutability": "view",
753
+ "type": "function"
754
+ },
755
+ {
756
+ "inputs": [],
757
+ "name": "getCurrentTime",
758
+ "outputs": [
759
+ {
760
+ "internalType": "uint256",
761
+ "name": "",
762
+ "type": "uint256"
763
+ }
764
+ ],
765
+ "stateMutability": "view",
766
+ "type": "function"
767
+ },
768
+ {
769
+ "inputs": [
770
+ {
771
+ "internalType": "uint256",
772
+ "name": "relayedAmount",
773
+ "type": "uint256"
774
+ }
775
+ ],
776
+ "name": "getLiquidityUtilization",
777
+ "outputs": [
778
+ {
779
+ "internalType": "uint256",
780
+ "name": "utilizationCurrent",
781
+ "type": "uint256"
782
+ },
783
+ {
784
+ "internalType": "uint256",
785
+ "name": "utilizationPostRelay",
786
+ "type": "uint256"
787
+ }
788
+ ],
789
+ "stateMutability": "nonpayable",
790
+ "type": "function"
791
+ },
792
+ {
793
+ "inputs": [
794
+ {
795
+ "components": [
796
+ {
797
+ "internalType": "uint256",
798
+ "name": "chainId",
799
+ "type": "uint256"
800
+ },
801
+ {
802
+ "internalType": "uint64",
803
+ "name": "depositId",
804
+ "type": "uint64"
805
+ },
806
+ {
807
+ "internalType": "address payable",
808
+ "name": "l1Recipient",
809
+ "type": "address"
810
+ },
811
+ {
812
+ "internalType": "address",
813
+ "name": "l2Sender",
814
+ "type": "address"
815
+ },
816
+ {
817
+ "internalType": "uint256",
818
+ "name": "amount",
819
+ "type": "uint256"
820
+ },
821
+ {
822
+ "internalType": "uint64",
823
+ "name": "slowRelayFeePct",
824
+ "type": "uint64"
825
+ },
826
+ {
827
+ "internalType": "uint64",
828
+ "name": "instantRelayFeePct",
829
+ "type": "uint64"
830
+ },
831
+ {
832
+ "internalType": "uint32",
833
+ "name": "quoteTimestamp",
834
+ "type": "uint32"
835
+ }
836
+ ],
837
+ "internalType": "struct BridgePool.DepositData",
838
+ "name": "depositData",
839
+ "type": "tuple"
840
+ },
841
+ {
842
+ "components": [
843
+ {
844
+ "internalType": "enum BridgePool.RelayState",
845
+ "name": "relayState",
846
+ "type": "uint8"
847
+ },
848
+ {
849
+ "internalType": "address",
850
+ "name": "slowRelayer",
851
+ "type": "address"
852
+ },
853
+ {
854
+ "internalType": "uint32",
855
+ "name": "relayId",
856
+ "type": "uint32"
857
+ },
858
+ {
859
+ "internalType": "uint64",
860
+ "name": "realizedLpFeePct",
861
+ "type": "uint64"
862
+ },
863
+ {
864
+ "internalType": "uint32",
865
+ "name": "priceRequestTime",
866
+ "type": "uint32"
867
+ },
868
+ {
869
+ "internalType": "uint256",
870
+ "name": "proposerBond",
871
+ "type": "uint256"
872
+ },
873
+ {
874
+ "internalType": "uint256",
875
+ "name": "finalFee",
876
+ "type": "uint256"
877
+ }
878
+ ],
879
+ "internalType": "struct BridgePool.RelayData",
880
+ "name": "relayData",
881
+ "type": "tuple"
882
+ }
883
+ ],
884
+ "name": "getRelayAncillaryData",
885
+ "outputs": [
886
+ {
887
+ "internalType": "bytes",
888
+ "name": "",
889
+ "type": "bytes"
890
+ }
891
+ ],
892
+ "stateMutability": "view",
893
+ "type": "function"
894
+ },
895
+ {
896
+ "inputs": [],
897
+ "name": "identifier",
898
+ "outputs": [
899
+ {
900
+ "internalType": "bytes32",
901
+ "name": "",
902
+ "type": "bytes32"
903
+ }
904
+ ],
905
+ "stateMutability": "view",
906
+ "type": "function"
907
+ },
908
+ {
909
+ "inputs": [
910
+ {
911
+ "internalType": "address",
912
+ "name": "spender",
913
+ "type": "address"
914
+ },
915
+ {
916
+ "internalType": "uint256",
917
+ "name": "addedValue",
918
+ "type": "uint256"
919
+ }
920
+ ],
921
+ "name": "increaseAllowance",
922
+ "outputs": [
923
+ {
924
+ "internalType": "bool",
925
+ "name": "",
926
+ "type": "bool"
927
+ }
928
+ ],
929
+ "stateMutability": "nonpayable",
930
+ "type": "function"
931
+ },
932
+ {
933
+ "inputs": [
934
+ {
935
+ "internalType": "bytes32",
936
+ "name": "",
937
+ "type": "bytes32"
938
+ }
939
+ ],
940
+ "name": "instantRelays",
941
+ "outputs": [
942
+ {
943
+ "internalType": "address",
944
+ "name": "",
945
+ "type": "address"
946
+ }
947
+ ],
948
+ "stateMutability": "view",
949
+ "type": "function"
950
+ },
951
+ {
952
+ "inputs": [],
953
+ "name": "isWethPool",
954
+ "outputs": [
955
+ {
956
+ "internalType": "bool",
957
+ "name": "",
958
+ "type": "bool"
959
+ }
960
+ ],
961
+ "stateMutability": "view",
962
+ "type": "function"
963
+ },
964
+ {
965
+ "inputs": [],
966
+ "name": "l1Token",
967
+ "outputs": [
968
+ {
969
+ "internalType": "contract IERC20",
970
+ "name": "",
971
+ "type": "address"
972
+ }
973
+ ],
974
+ "stateMutability": "view",
975
+ "type": "function"
976
+ },
977
+ {
978
+ "inputs": [],
979
+ "name": "lastLpFeeUpdate",
980
+ "outputs": [
981
+ {
982
+ "internalType": "uint32",
983
+ "name": "",
984
+ "type": "uint32"
985
+ }
986
+ ],
987
+ "stateMutability": "view",
988
+ "type": "function"
989
+ },
990
+ {
991
+ "inputs": [],
992
+ "name": "liquidReserves",
993
+ "outputs": [
994
+ {
995
+ "internalType": "uint256",
996
+ "name": "",
997
+ "type": "uint256"
998
+ }
999
+ ],
1000
+ "stateMutability": "view",
1001
+ "type": "function"
1002
+ },
1003
+ {
1004
+ "inputs": [],
1005
+ "name": "liquidityUtilizationCurrent",
1006
+ "outputs": [
1007
+ {
1008
+ "internalType": "uint256",
1009
+ "name": "",
1010
+ "type": "uint256"
1011
+ }
1012
+ ],
1013
+ "stateMutability": "nonpayable",
1014
+ "type": "function"
1015
+ },
1016
+ {
1017
+ "inputs": [
1018
+ {
1019
+ "internalType": "uint256",
1020
+ "name": "relayedAmount",
1021
+ "type": "uint256"
1022
+ }
1023
+ ],
1024
+ "name": "liquidityUtilizationPostRelay",
1025
+ "outputs": [
1026
+ {
1027
+ "internalType": "uint256",
1028
+ "name": "",
1029
+ "type": "uint256"
1030
+ }
1031
+ ],
1032
+ "stateMutability": "nonpayable",
1033
+ "type": "function"
1034
+ },
1035
+ {
1036
+ "inputs": [],
1037
+ "name": "lpFeeRatePerSecond",
1038
+ "outputs": [
1039
+ {
1040
+ "internalType": "uint64",
1041
+ "name": "",
1042
+ "type": "uint64"
1043
+ }
1044
+ ],
1045
+ "stateMutability": "view",
1046
+ "type": "function"
1047
+ },
1048
+ {
1049
+ "inputs": [
1050
+ {
1051
+ "internalType": "bytes[]",
1052
+ "name": "data",
1053
+ "type": "bytes[]"
1054
+ }
1055
+ ],
1056
+ "name": "multicall",
1057
+ "outputs": [
1058
+ {
1059
+ "internalType": "bytes[]",
1060
+ "name": "results",
1061
+ "type": "bytes[]"
1062
+ }
1063
+ ],
1064
+ "stateMutability": "payable",
1065
+ "type": "function"
1066
+ },
1067
+ {
1068
+ "inputs": [],
1069
+ "name": "name",
1070
+ "outputs": [
1071
+ {
1072
+ "internalType": "string",
1073
+ "name": "",
1074
+ "type": "string"
1075
+ }
1076
+ ],
1077
+ "stateMutability": "view",
1078
+ "type": "function"
1079
+ },
1080
+ {
1081
+ "inputs": [],
1082
+ "name": "numberOfRelays",
1083
+ "outputs": [
1084
+ {
1085
+ "internalType": "uint32",
1086
+ "name": "",
1087
+ "type": "uint32"
1088
+ }
1089
+ ],
1090
+ "stateMutability": "view",
1091
+ "type": "function"
1092
+ },
1093
+ {
1094
+ "inputs": [],
1095
+ "name": "optimisticOracle",
1096
+ "outputs": [
1097
+ {
1098
+ "internalType": "contract SkinnyOptimisticOracleInterface",
1099
+ "name": "",
1100
+ "type": "address"
1101
+ }
1102
+ ],
1103
+ "stateMutability": "view",
1104
+ "type": "function"
1105
+ },
1106
+ {
1107
+ "inputs": [],
1108
+ "name": "optimisticOracleLiveness",
1109
+ "outputs": [
1110
+ {
1111
+ "internalType": "uint32",
1112
+ "name": "",
1113
+ "type": "uint32"
1114
+ }
1115
+ ],
1116
+ "stateMutability": "view",
1117
+ "type": "function"
1118
+ },
1119
+ {
1120
+ "inputs": [],
1121
+ "name": "pendingReserves",
1122
+ "outputs": [
1123
+ {
1124
+ "internalType": "uint256",
1125
+ "name": "",
1126
+ "type": "uint256"
1127
+ }
1128
+ ],
1129
+ "stateMutability": "view",
1130
+ "type": "function"
1131
+ },
1132
+ {
1133
+ "inputs": [],
1134
+ "name": "proposerBondPct",
1135
+ "outputs": [
1136
+ {
1137
+ "internalType": "uint64",
1138
+ "name": "",
1139
+ "type": "uint64"
1140
+ }
1141
+ ],
1142
+ "stateMutability": "view",
1143
+ "type": "function"
1144
+ },
1145
+ {
1146
+ "inputs": [
1147
+ {
1148
+ "components": [
1149
+ {
1150
+ "internalType": "uint256",
1151
+ "name": "chainId",
1152
+ "type": "uint256"
1153
+ },
1154
+ {
1155
+ "internalType": "uint64",
1156
+ "name": "depositId",
1157
+ "type": "uint64"
1158
+ },
1159
+ {
1160
+ "internalType": "address payable",
1161
+ "name": "l1Recipient",
1162
+ "type": "address"
1163
+ },
1164
+ {
1165
+ "internalType": "address",
1166
+ "name": "l2Sender",
1167
+ "type": "address"
1168
+ },
1169
+ {
1170
+ "internalType": "uint256",
1171
+ "name": "amount",
1172
+ "type": "uint256"
1173
+ },
1174
+ {
1175
+ "internalType": "uint64",
1176
+ "name": "slowRelayFeePct",
1177
+ "type": "uint64"
1178
+ },
1179
+ {
1180
+ "internalType": "uint64",
1181
+ "name": "instantRelayFeePct",
1182
+ "type": "uint64"
1183
+ },
1184
+ {
1185
+ "internalType": "uint32",
1186
+ "name": "quoteTimestamp",
1187
+ "type": "uint32"
1188
+ }
1189
+ ],
1190
+ "internalType": "struct BridgePool.DepositData",
1191
+ "name": "depositData",
1192
+ "type": "tuple"
1193
+ },
1194
+ {
1195
+ "internalType": "uint64",
1196
+ "name": "realizedLpFeePct",
1197
+ "type": "uint64"
1198
+ }
1199
+ ],
1200
+ "name": "relayAndSpeedUp",
1201
+ "outputs": [],
1202
+ "stateMutability": "nonpayable",
1203
+ "type": "function"
1204
+ },
1205
+ {
1206
+ "inputs": [
1207
+ {
1208
+ "components": [
1209
+ {
1210
+ "internalType": "uint256",
1211
+ "name": "chainId",
1212
+ "type": "uint256"
1213
+ },
1214
+ {
1215
+ "internalType": "uint64",
1216
+ "name": "depositId",
1217
+ "type": "uint64"
1218
+ },
1219
+ {
1220
+ "internalType": "address payable",
1221
+ "name": "l1Recipient",
1222
+ "type": "address"
1223
+ },
1224
+ {
1225
+ "internalType": "address",
1226
+ "name": "l2Sender",
1227
+ "type": "address"
1228
+ },
1229
+ {
1230
+ "internalType": "uint256",
1231
+ "name": "amount",
1232
+ "type": "uint256"
1233
+ },
1234
+ {
1235
+ "internalType": "uint64",
1236
+ "name": "slowRelayFeePct",
1237
+ "type": "uint64"
1238
+ },
1239
+ {
1240
+ "internalType": "uint64",
1241
+ "name": "instantRelayFeePct",
1242
+ "type": "uint64"
1243
+ },
1244
+ {
1245
+ "internalType": "uint32",
1246
+ "name": "quoteTimestamp",
1247
+ "type": "uint32"
1248
+ }
1249
+ ],
1250
+ "internalType": "struct BridgePool.DepositData",
1251
+ "name": "depositData",
1252
+ "type": "tuple"
1253
+ },
1254
+ {
1255
+ "internalType": "uint64",
1256
+ "name": "realizedLpFeePct",
1257
+ "type": "uint64"
1258
+ }
1259
+ ],
1260
+ "name": "relayDeposit",
1261
+ "outputs": [],
1262
+ "stateMutability": "nonpayable",
1263
+ "type": "function"
1264
+ },
1265
+ {
1266
+ "inputs": [
1267
+ {
1268
+ "internalType": "bytes32",
1269
+ "name": "",
1270
+ "type": "bytes32"
1271
+ }
1272
+ ],
1273
+ "name": "relays",
1274
+ "outputs": [
1275
+ {
1276
+ "internalType": "bytes32",
1277
+ "name": "",
1278
+ "type": "bytes32"
1279
+ }
1280
+ ],
1281
+ "stateMutability": "view",
1282
+ "type": "function"
1283
+ },
1284
+ {
1285
+ "inputs": [],
1286
+ "name": "relaysEnabled",
1287
+ "outputs": [
1288
+ {
1289
+ "internalType": "bool",
1290
+ "name": "",
1291
+ "type": "bool"
1292
+ }
1293
+ ],
1294
+ "stateMutability": "view",
1295
+ "type": "function"
1296
+ },
1297
+ {
1298
+ "inputs": [
1299
+ {
1300
+ "internalType": "uint256",
1301
+ "name": "lpTokenAmount",
1302
+ "type": "uint256"
1303
+ },
1304
+ {
1305
+ "internalType": "bool",
1306
+ "name": "sendEth",
1307
+ "type": "bool"
1308
+ }
1309
+ ],
1310
+ "name": "removeLiquidity",
1311
+ "outputs": [],
1312
+ "stateMutability": "nonpayable",
1313
+ "type": "function"
1314
+ },
1315
+ {
1316
+ "inputs": [
1317
+ {
1318
+ "internalType": "uint256",
1319
+ "name": "time",
1320
+ "type": "uint256"
1321
+ }
1322
+ ],
1323
+ "name": "setCurrentTime",
1324
+ "outputs": [],
1325
+ "stateMutability": "nonpayable",
1326
+ "type": "function"
1327
+ },
1328
+ {
1329
+ "inputs": [
1330
+ {
1331
+ "internalType": "uint64",
1332
+ "name": "_newLpFeeRatePerSecond",
1333
+ "type": "uint64"
1334
+ }
1335
+ ],
1336
+ "name": "setLpFeeRatePerSecond",
1337
+ "outputs": [],
1338
+ "stateMutability": "nonpayable",
1339
+ "type": "function"
1340
+ },
1341
+ {
1342
+ "inputs": [
1343
+ {
1344
+ "internalType": "bool",
1345
+ "name": "_relaysEnabled",
1346
+ "type": "bool"
1347
+ }
1348
+ ],
1349
+ "name": "setRelaysEnabled",
1350
+ "outputs": [],
1351
+ "stateMutability": "nonpayable",
1352
+ "type": "function"
1353
+ },
1354
+ {
1355
+ "inputs": [
1356
+ {
1357
+ "components": [
1358
+ {
1359
+ "internalType": "uint256",
1360
+ "name": "chainId",
1361
+ "type": "uint256"
1362
+ },
1363
+ {
1364
+ "internalType": "uint64",
1365
+ "name": "depositId",
1366
+ "type": "uint64"
1367
+ },
1368
+ {
1369
+ "internalType": "address payable",
1370
+ "name": "l1Recipient",
1371
+ "type": "address"
1372
+ },
1373
+ {
1374
+ "internalType": "address",
1375
+ "name": "l2Sender",
1376
+ "type": "address"
1377
+ },
1378
+ {
1379
+ "internalType": "uint256",
1380
+ "name": "amount",
1381
+ "type": "uint256"
1382
+ },
1383
+ {
1384
+ "internalType": "uint64",
1385
+ "name": "slowRelayFeePct",
1386
+ "type": "uint64"
1387
+ },
1388
+ {
1389
+ "internalType": "uint64",
1390
+ "name": "instantRelayFeePct",
1391
+ "type": "uint64"
1392
+ },
1393
+ {
1394
+ "internalType": "uint32",
1395
+ "name": "quoteTimestamp",
1396
+ "type": "uint32"
1397
+ }
1398
+ ],
1399
+ "internalType": "struct BridgePool.DepositData",
1400
+ "name": "depositData",
1401
+ "type": "tuple"
1402
+ },
1403
+ {
1404
+ "components": [
1405
+ {
1406
+ "internalType": "enum BridgePool.RelayState",
1407
+ "name": "relayState",
1408
+ "type": "uint8"
1409
+ },
1410
+ {
1411
+ "internalType": "address",
1412
+ "name": "slowRelayer",
1413
+ "type": "address"
1414
+ },
1415
+ {
1416
+ "internalType": "uint32",
1417
+ "name": "relayId",
1418
+ "type": "uint32"
1419
+ },
1420
+ {
1421
+ "internalType": "uint64",
1422
+ "name": "realizedLpFeePct",
1423
+ "type": "uint64"
1424
+ },
1425
+ {
1426
+ "internalType": "uint32",
1427
+ "name": "priceRequestTime",
1428
+ "type": "uint32"
1429
+ },
1430
+ {
1431
+ "internalType": "uint256",
1432
+ "name": "proposerBond",
1433
+ "type": "uint256"
1434
+ },
1435
+ {
1436
+ "internalType": "uint256",
1437
+ "name": "finalFee",
1438
+ "type": "uint256"
1439
+ }
1440
+ ],
1441
+ "internalType": "struct BridgePool.RelayData",
1442
+ "name": "relayData",
1443
+ "type": "tuple"
1444
+ }
1445
+ ],
1446
+ "name": "settleRelay",
1447
+ "outputs": [],
1448
+ "stateMutability": "nonpayable",
1449
+ "type": "function"
1450
+ },
1451
+ {
1452
+ "inputs": [
1453
+ {
1454
+ "components": [
1455
+ {
1456
+ "internalType": "uint256",
1457
+ "name": "chainId",
1458
+ "type": "uint256"
1459
+ },
1460
+ {
1461
+ "internalType": "uint64",
1462
+ "name": "depositId",
1463
+ "type": "uint64"
1464
+ },
1465
+ {
1466
+ "internalType": "address payable",
1467
+ "name": "l1Recipient",
1468
+ "type": "address"
1469
+ },
1470
+ {
1471
+ "internalType": "address",
1472
+ "name": "l2Sender",
1473
+ "type": "address"
1474
+ },
1475
+ {
1476
+ "internalType": "uint256",
1477
+ "name": "amount",
1478
+ "type": "uint256"
1479
+ },
1480
+ {
1481
+ "internalType": "uint64",
1482
+ "name": "slowRelayFeePct",
1483
+ "type": "uint64"
1484
+ },
1485
+ {
1486
+ "internalType": "uint64",
1487
+ "name": "instantRelayFeePct",
1488
+ "type": "uint64"
1489
+ },
1490
+ {
1491
+ "internalType": "uint32",
1492
+ "name": "quoteTimestamp",
1493
+ "type": "uint32"
1494
+ }
1495
+ ],
1496
+ "internalType": "struct BridgePool.DepositData",
1497
+ "name": "depositData",
1498
+ "type": "tuple"
1499
+ },
1500
+ {
1501
+ "components": [
1502
+ {
1503
+ "internalType": "enum BridgePool.RelayState",
1504
+ "name": "relayState",
1505
+ "type": "uint8"
1506
+ },
1507
+ {
1508
+ "internalType": "address",
1509
+ "name": "slowRelayer",
1510
+ "type": "address"
1511
+ },
1512
+ {
1513
+ "internalType": "uint32",
1514
+ "name": "relayId",
1515
+ "type": "uint32"
1516
+ },
1517
+ {
1518
+ "internalType": "uint64",
1519
+ "name": "realizedLpFeePct",
1520
+ "type": "uint64"
1521
+ },
1522
+ {
1523
+ "internalType": "uint32",
1524
+ "name": "priceRequestTime",
1525
+ "type": "uint32"
1526
+ },
1527
+ {
1528
+ "internalType": "uint256",
1529
+ "name": "proposerBond",
1530
+ "type": "uint256"
1531
+ },
1532
+ {
1533
+ "internalType": "uint256",
1534
+ "name": "finalFee",
1535
+ "type": "uint256"
1536
+ }
1537
+ ],
1538
+ "internalType": "struct BridgePool.RelayData",
1539
+ "name": "relayData",
1540
+ "type": "tuple"
1541
+ }
1542
+ ],
1543
+ "name": "speedUpRelay",
1544
+ "outputs": [],
1545
+ "stateMutability": "nonpayable",
1546
+ "type": "function"
1547
+ },
1548
+ {
1549
+ "inputs": [],
1550
+ "name": "store",
1551
+ "outputs": [
1552
+ {
1553
+ "internalType": "contract StoreInterface",
1554
+ "name": "",
1555
+ "type": "address"
1556
+ }
1557
+ ],
1558
+ "stateMutability": "view",
1559
+ "type": "function"
1560
+ },
1561
+ {
1562
+ "inputs": [],
1563
+ "name": "symbol",
1564
+ "outputs": [
1565
+ {
1566
+ "internalType": "string",
1567
+ "name": "",
1568
+ "type": "string"
1569
+ }
1570
+ ],
1571
+ "stateMutability": "view",
1572
+ "type": "function"
1573
+ },
1574
+ {
1575
+ "inputs": [],
1576
+ "name": "sync",
1577
+ "outputs": [],
1578
+ "stateMutability": "nonpayable",
1579
+ "type": "function"
1580
+ },
1581
+ {
1582
+ "inputs": [],
1583
+ "name": "syncUmaEcosystemParams",
1584
+ "outputs": [],
1585
+ "stateMutability": "nonpayable",
1586
+ "type": "function"
1587
+ },
1588
+ {
1589
+ "inputs": [],
1590
+ "name": "syncWithBridgeAdminParams",
1591
+ "outputs": [],
1592
+ "stateMutability": "nonpayable",
1593
+ "type": "function"
1594
+ },
1595
+ {
1596
+ "inputs": [],
1597
+ "name": "timerAddress",
1598
+ "outputs": [
1599
+ {
1600
+ "internalType": "address",
1601
+ "name": "",
1602
+ "type": "address"
1603
+ }
1604
+ ],
1605
+ "stateMutability": "view",
1606
+ "type": "function"
1607
+ },
1608
+ {
1609
+ "inputs": [],
1610
+ "name": "totalSupply",
1611
+ "outputs": [
1612
+ {
1613
+ "internalType": "uint256",
1614
+ "name": "",
1615
+ "type": "uint256"
1616
+ }
1617
+ ],
1618
+ "stateMutability": "view",
1619
+ "type": "function"
1620
+ },
1621
+ {
1622
+ "inputs": [
1623
+ {
1624
+ "internalType": "address",
1625
+ "name": "recipient",
1626
+ "type": "address"
1627
+ },
1628
+ {
1629
+ "internalType": "uint256",
1630
+ "name": "amount",
1631
+ "type": "uint256"
1632
+ }
1633
+ ],
1634
+ "name": "transfer",
1635
+ "outputs": [
1636
+ {
1637
+ "internalType": "bool",
1638
+ "name": "",
1639
+ "type": "bool"
1640
+ }
1641
+ ],
1642
+ "stateMutability": "nonpayable",
1643
+ "type": "function"
1644
+ },
1645
+ {
1646
+ "inputs": [
1647
+ {
1648
+ "internalType": "address",
1649
+ "name": "sender",
1650
+ "type": "address"
1651
+ },
1652
+ {
1653
+ "internalType": "address",
1654
+ "name": "recipient",
1655
+ "type": "address"
1656
+ },
1657
+ {
1658
+ "internalType": "uint256",
1659
+ "name": "amount",
1660
+ "type": "uint256"
1661
+ }
1662
+ ],
1663
+ "name": "transferFrom",
1664
+ "outputs": [
1665
+ {
1666
+ "internalType": "bool",
1667
+ "name": "",
1668
+ "type": "bool"
1669
+ }
1670
+ ],
1671
+ "stateMutability": "nonpayable",
1672
+ "type": "function"
1673
+ },
1674
+ {
1675
+ "inputs": [],
1676
+ "name": "undistributedLpFees",
1677
+ "outputs": [
1678
+ {
1679
+ "internalType": "uint256",
1680
+ "name": "",
1681
+ "type": "uint256"
1682
+ }
1683
+ ],
1684
+ "stateMutability": "view",
1685
+ "type": "function"
1686
+ },
1687
+ {
1688
+ "inputs": [],
1689
+ "name": "utilizedReserves",
1690
+ "outputs": [
1691
+ {
1692
+ "internalType": "int256",
1693
+ "name": "",
1694
+ "type": "int256"
1695
+ }
1696
+ ],
1697
+ "stateMutability": "view",
1698
+ "type": "function"
1699
+ },
1700
+ {
1701
+ "stateMutability": "payable",
1702
+ "type": "receive"
1703
+ }
1704
+ ],
1705
+ "bytecode": "0x6080604052600a805461ff0019166101001790553480156200002057600080fd5b50604051620056343803806200563483398101604081905262000043916200094e565b600080546001600160a01b0319166001600160a01b0383161790558651879087906200007790600490602085019062000795565b5080516200008d90600590602084019062000795565b50506006805460ff1916600117905550865115801590620000ae5750855115155b620001005760405162461bcd60e51b815260206004820152601b60248201527f426164204c5020746f6b656e206e616d65206f722073796d626f6c000000000060448201526064015b60405180910390fd5b600e80546001600160a01b0319166001600160a01b038781169190911790915560068054610100600160a81b031916610100928716929092029190911790556200014962000202565b600a805462010000600160701b0319166a010000000000000000000063ffffffff939093169290920262010000600160501b03191691909117620100006001600160401b038616021760ff1916831515179055620001a6620002a7565b620001b06200052d565b600a54604051620100009091046001600160401b031681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a59060200160405180910390a15050505050505062000b22565b600080546001600160a01b031615620002a25760008054906101000a90046001600160a01b03166001600160a01b03166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d919062000a1b565b905090565b504290565b620002b162000741565b620002c16006805460ff19169055565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b1580156200030757600080fd5b505afa1580156200031c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000342919062000a35565b6040516302abf57960e61b81527f536b696e6e794f7074696d69737469634f7261636c650000000000000000000060048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b158015620003a557600080fd5b505afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e0919062000a35565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000a35565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b158015620004d857600080fd5b505afa158015620004ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000513919062000a5a565b51600b55506200052b6006805460ff19166001179055565b565b6200053762000741565b620005476006805460ff19169055565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059657600080fd5b505afa158015620005ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d1919062000a9f565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064657600080fd5b505afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000abd565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b158015620006f057600080fd5b505afa15801562000705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072b919062000a1b565b6011556200052b6006805460ff19166001179055565b60065460ff166200052b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401620000f7565b828054620007a39062000ae5565b90600052602060002090601f016020900481019282620007c7576000855562000812565b82601f10620007e257805160ff191683800117855562000812565b8280016001018555821562000812579182015b8281111562000812578251825591602001919060010190620007f5565b506200082092915062000824565b5090565b5b8082111562000820576000815560010162000825565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200087c576200087c6200083b565b604052919050565b600082601f8301126200089657600080fd5b81516001600160401b03811115620008b257620008b26200083b565b6020620008c8601f8301601f1916820162000851565b8281528582848701011115620008dd57600080fd5b60005b83811015620008fd578581018301518282018401528201620008e0565b838111156200090f5760008385840101525b5095945050505050565b80516001600160a01b03811681146200093157600080fd5b919050565b80516001600160401b03811681146200093157600080fd5b600080600080600080600060e0888a0312156200096a57600080fd5b87516001600160401b03808211156200098257600080fd5b620009908b838c0162000884565b985060208a0151915080821115620009a757600080fd5b50620009b68a828b0162000884565b965050620009c76040890162000919565b9450620009d76060890162000919565b9350620009e76080890162000936565b925060a08801518015158114620009fd57600080fd5b915062000a0d60c0890162000919565b905092959891949750929550565b60006020828403121562000a2e57600080fd5b5051919050565b60006020828403121562000a4857600080fd5b62000a538262000919565b9392505050565b60006020828403121562000a6d57600080fd5b604051602081016001600160401b038111828210171562000a925762000a926200083b565b6040529151825250919050565b60006020828403121562000ab257600080fd5b62000a538262000936565b60006020828403121562000ad057600080fd5b815163ffffffff8116811462000a5357600080fd5b600181811c9082168062000afa57607f821691505b6020821081141562000b1c57634e487b7160e01b600052602260045260246000fd5b50919050565b614b028062000b326000396000f3fe60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc81461097a578063ed4de3a3146109a7578063f1d24bab146109dc578063fff6cae914610a0057600080fd5b8063cefed55f146108f0578063d412f5a414610910578063dd62ed3e1461093457600080fd5b8063bec73ade116100d1578063bec73ade1461086a578063c01e1bd61461088a578063c73a32c3146108af578063cc2c929e146108d657600080fd5b8063b5351ee214610821578063bd6d894d14610836578063be0ba1221461084b57600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610795578063ac9650d8146107b5578063b2084202146107d5578063b454e326146107eb57600080fd5b8063975057e714610735578063a457c2d714610755578063a6af2dfe1461077557600080fd5b806370a082311461067e578063753b91bb146106b45780637998a1c4146106d457806387a515d3146106ea5780638f2839701461070057806395d89b411461072057600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a146106205780635df45a371461063357806362822d341461064857806366db52401461066857600080fd5b80633fa856c9146105ca5780634464fae4146105ea5780634f52fd171461060057600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057957806339509351146105955780633cc400b3146105b557600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a15565b60405161034c9190613e7f565b60405180910390f35b34801561036157600080fd5b50610375610370366004613ea0565b610aa7565b005b34801561038357600080fd5b50610397610392366004613edd565b610b46565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004614042565b610b5d565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e9e565b34801561049857600080fd5b5061033f6104a736600461407c565b610ec7565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614133565b610eea565b34801561053057600080fd5b5061039761053f36600461414c565b610f60565b34801561055057600080fd5b5061037561055f36600461418d565b611011565b34801561057057600080fd5b5061041b6110a7565b34801561058557600080fd5b506040516012815260200161034c565b3480156105a157600080fd5b506103976105b0366004613edd565b611147565b3480156105c157600080fd5b5061037561117e565b3480156105d657600080fd5b506103756105e536600461407c565b611373565b3480156105f657600080fd5b5061041b600c5481565b34801561060c57600080fd5b5061037561061b3660046141aa565b6117de565b61037561062e366004614133565b611957565b34801561063f57600080fd5b5061041b611afb565b34801561065457600080fd5b5061041b610663366004614133565b611b0d565b34801561067457600080fd5b5061041b60085481565b34801561068a57600080fd5b5061041b6106993660046141cf565b6001600160a01b031660009081526001602052604090205490565b3480156106c057600080fd5b506103756106cf366004614042565b611b37565b3480156106e057600080fd5b5061041b60115481565b3480156106f657600080fd5b5061041b60095481565b34801561070c57600080fd5b5061037561071b3660046141cf565b611fda565b34801561072c57600080fd5b5061033f612069565b34801561074157600080fd5b50600f546104cc906001600160a01b031681565b34801561076157600080fd5b50610397610770366004613edd565b612078565b34801561078157600080fd5b50600e546104cc906001600160a01b031681565b3480156107a157600080fd5b506103976107b0366004613edd565b612113565b6107c86107c33660046141ec565b612120565b60405161034c9190614260565b3480156107e157600080fd5b5061041b60075481565b3480156107f757600080fd5b506104cc610806366004614133565b6013602052600090815260409020546001600160a01b031681565b34801561082d57600080fd5b506103756122c5565b34801561084257600080fd5b5061041b61251d565b34801561085757600080fd5b50600a5461039790610100900460ff1681565b34801561087657600080fd5b5061037561088536600461407c565b612537565b34801561089657600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108bb57600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e257600080fd5b50600a546103979060ff1681565b3480156108fc57600080fd5b5061037561090b36600461407c565b61272b565b34801561091c57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561094057600080fd5b5061041b61094f3660046142c2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098657600080fd5b5061041b610995366004614133565b60126020526000908152604090205481565b3480156109b357600080fd5b506109c76109c2366004614133565b612918565b6040805192835260208301919091520161034c565b3480156109e857600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0c57600080fd5b5061037561294f565b606060048054610a24906142f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a50906142f0565b8015610a9d5780601f10610a7257610100808354040283529160200191610a9d565b820191906000526020600020905b815481529060010190602001808311610a8057829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ada5760405162461bcd60e51b8152600401610ad19061432b565b60405180910390fd5b610ae261296f565b610aea6129c1565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3390831515815260200190565b60405180910390a1610b436129cd565b50565b6000610b533384846129dc565b5060015b92915050565b600a54610100900460ff16610baa5760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b610bb261296f565b610bba6129c1565b6703782dace9d900008260a001516001600160401b031611158015610bf457506703782dace9d900008260c001516001600160401b031611155b8015610c1157506706f05b59d3b20000816001600160401b031611155b610c4c5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000610c5783612b01565b60008181526012602052604090205490915015610cad5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000610cb76110a7565b90506000610cc88560800151612b44565b905060006040518060e0016040528060016002811115610cea57610cea614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d158361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d7081612b64565b600085815260126020526040812091909155610d8c8783612b77565b90508660800151600954600754610da391906143b2565b1015610ded5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5484610dfd91906143c9565b9050876080015160096000828254610e1591906143c9565b9250508190555080600d6000828254610e2e91906143c9565b9091555050600654610e509061010090046001600160a01b0316333084612bcb565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e84939291906144eb565b60405180910390a2505050505050610e9a6129cd565b5050565b6000610ea861296f565b610eb06129c1565b610eba6000612c3c565b9050610ec46129cd565b90565b6060610ed161296f565b610ee3610ede8484612b77565b612cca565b9392505050565b6000546001600160a01b0316610eff57600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f4557600080fd5b505af1158015610f59573d6000803e3d6000fd5b5050505050565b6000610f6d848484612d07565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610ff25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad1565b611006853361100186856143b2565b6129dc565b506001949350505050565b600e546001600160a01b0316331461103b5760405162461bcd60e51b8152600401610ad19061432b565b61104361296f565b61104b6129c1565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b33565b600080546001600160a01b0316156111425760008054906101000a90046001600160a01b03166001600160a01b03166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190614517565b905090565b504290565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b539185906110019086906143c9565b61118661296f565b61118e6129c1565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111dc57600080fd5b505afa1580156111f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112149190614530565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b15801561128857600080fd5b505afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c0919061454d565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561132e57600080fd5b505afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190614517565b6011556113716129cd565b565b61137b61296f565b6113836129c1565b600061138e83612b01565b905061139a8183612edf565b6001825160028111156113af576113af614362565b146113ee5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610ad1565b6000600a60169054906101000a900463ffffffff168360800151611412919061456a565b905061141c6110a7565b8163ffffffff1611156114665760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610ad1565b82602001516001600160a01b0316336001600160a01b031614806114a157506114918161038461456a565b63ffffffff1661149f6110a7565b115b6114e05760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610ad1565b6040805160e0810190915261155490806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612b64565b60008381526012602052604081209190915560a085015160608501516115879161157d91614592565b8660800151612f6c565b856080015161159691906143b2565b905060006115a48486612f94565b600081815260136020526040902054600a549192506001600160a01b03169060ff1680156115d957506001600160a01b038116155b156115f1576115ec876040015184612fbf565b611626565b6116266001600160a01b03821661160c57876040015161160e565b815b60065461010090046001600160a01b03169085613088565b600061163a8860a001518960800151612f6c565b905060008760a001518860c0015161165291906143c9565b60208901519091506001600160a01b031633141561169a5760208801516116959061167d83856143c9565b60065461010090046001600160a01b03169190613088565b6116d8565b60208801516006546116bc916101009091046001600160a01b03169083613088565b6006546116d89061010090046001600160a01b03163384613088565b60006116e483876143c9565b90508960800151600960008282546116fc91906143b2565b92505081905550806007600082825461171591906143b2565b92505081905550806008600082825461172e91906145b4565b9250508190555081600d600082825461174791906143b2565b9091555061175590506130b8565b61176f61176a8a606001518c60800151612f6c565b6130ff565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516117a991906145f5565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9a91506129cd9050565b6117e661296f565b6117ee6129c1565b8015806117fd5750600a5460ff165b6118395760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610ad1565b6000670de0b6b3a764000061184c613132565b6118569085614603565b6118609190614638565b90508060095461187091906143c9565b60075410156118c15760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610ad1565b6118cb33846131aa565b80600760008282546118dd91906143b2565b909155505081156118f7576118f23382612fbf565b611913565b6006546119139061010090046001600160a01b03163383613088565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e9a6129cd565b61195f61296f565b6119676129c1565b600a5460ff16801561197857508034145b80611981575034155b6119cd5760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610ad1565b60006119d7613132565b6119e983670de0b6b3a7640000614603565b6119f39190614638565b90506119ff33826132f9565b8160076000828254611a1191906143c9565b90915550503415801590611a275750600a5460ff165b15611a9a57600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a7c57600080fd5b505af1158015611a90573d6000803e3d6000fd5b5050505050611ab7565b600654611ab79061010090046001600160a01b0316333085612bcb565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b436129cd565b6000611b0561296f565b61113d6133d8565b6000611b1761296f565b611b1f6129c1565b611b2882612c3c565b9050611b326129cd565b919050565b600a54610100900460ff16611b845760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b611b8c61296f565b611b946129c1565b6000611b9e6110a7565b90506703782dace9d900008360a001516001600160401b031611158015611bda57506703782dace9d900008360c001516001600160401b031611155b8015611bf757506706f05b59d3b20000826001600160401b031611155b611c325760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000611c3d84612b01565b60008181526012602052604090205490915015611c935760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000611ca28560800151612b44565b905060006040518060e0016040528060016002811115611cc457611cc4614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611cef8361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611d4d8783612b77565b9050611d5882612b64565b600085815260126020526040812091909155611d748584612f94565b6000818152601360205260409020549091506001600160a01b031615611dd65760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b8760800151600954600754611deb91906143b2565b1015611e355760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5485611e4591906143c9565b90506000611e798a60c001518b60a001518760600151611e659190614592565b611e6f9190614592565b8b60800151612f6c565b90506000818b60800151611e8d91906143b2565b905082600d6000828254611ea191906143c9565b909155505060808b015160098054600090611ebd9084906143c9565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611f0b9030611ef286856143c9565b60065461010090046001600160a01b0316929190612bcb565b600a5460ff1615611f2957611f248b6040015182612fbf565b611f4b565b60408b0151600654611f4b916101009091046001600160a01b03169083613088565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611f7f939291906144eb565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611fc191906145f5565b60405180910390a3505050505050505050610e9a6129cd565b600e546001600160a01b031633146120045760405162461bcd60e51b8152600401610ad19061432b565b61200c61296f565b6120146129c1565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b33565b606060058054610a24906142f0565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad1565b612109338561100186856143b2565b5060019392505050565b6000610b53338484612d07565b606034156121705760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610ad1565b816001600160401b0381111561218857612188613f09565b6040519080825280602002602001820160405280156121bb57816020015b60608152602001906001900390816121a65790505b50905060005b828110156122be57600080308686858181106121df576121df61465a565b90506020028101906121f19190614670565b6040516121ff9291906146bd565b600060405180830381855af49150503d806000811461223a576040519150601f19603f3d011682016040523d82523d6000602084013e61223f565b606091505b50915091508161228b5760448151101561225857600080fd5b6004810190508080602001905181019061227291906146cd565b60405162461bcd60e51b8152600401610ad19190613e7f565b8084848151811061229e5761229e61465a565b6020026020010181905250505080806122b69061476e565b9150506121c1565b5092915050565b6122cd61296f565b6122d56129c1565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561231a57600080fd5b505afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190614789565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156123ad57600080fd5b505afa1580156123c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e59190614789565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561244157600080fd5b505afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124799190614789565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251091906147a6565b51600b55506113716129cd565b600061252761296f565b61252f6129c1565b610eba613132565b61253f61296f565b6125476129c1565b600061255283612b01565b905061255e8183612edf565b600061256a8284612f94565b9050600a60169054906101000a900463ffffffff16836080015161258e919061456a565b63ffffffff1661259c6110a7565b1080156125bb57506001835160028111156125b9576125b9614362565b145b80156125dc57506000818152601360205260409020546001600160a01b0316155b6126225760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a08601516060860151612667929161265d91614592565b61157d9190614592565b9050600081866080015161267b91906143b2565b600a5490915060ff16156126b9576006546126a69061010090046001600160a01b0316333084612bcb565b6126b4866040015182612fbf565b6126dd565b60408601516006546126dd916101009091046001600160a01b031690339084612bcb565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b8760405161271791906145f5565b60405180910390a350505050610e9a6129cd565b61273361296f565b61273b6129c1565b6127436110a7565b600a54608083015161276291600160b01b900463ffffffff169061456a565b63ffffffff16116127a55760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610ad1565b6001815160028111156127ba576127ba614362565b146127f85760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610ad1565b600061280383612b01565b905061280f8183612edf565b600061281b8484612b77565b905060006128408460200151338660a001518760c0015161283b87612cca565b61344f565b90508360a001518460c0015161285691906143c9565b600d600082825461286791906143b2565b90915550506080850151600980546000906128839084906143b2565b909155505060008381526012602052604081205580156128d757336128a785612b64565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a461290d565b336128e185612b64565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e9a6129cd565b60008061292361296f565b61292b6129c1565b6129356000612c3c565b61293e84612c3c565b9150915061294a6129cd565b915091565b61295761296f565b61295f6129c1565b61296761378c565b6113716129cd565b60065460ff166113715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad1565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b038316612a3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad1565b6001600160a01b038216612a9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612b2791849161010090046001600160a01b0316906020016147e7565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5790600160701b90046001600160401b031683612f6c565b600081604051602001612b2791906145f5565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612bad949392919061480f565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612c369085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261384f565b50505050565b6000612c4661378c565b60008060085413612c58576000612c5c565b6008545b905060008160095485612c6f91906143c9565b612c7991906143c9565b9050600082600754612c8b91906143c9565b905080612ca45750670de0b6b3a7640000949350505050565b80612cb783670de0b6b3a7640000614603565b612cc19190614638565b95945050505050565b6060610b5760405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613921565b6001600160a01b038316612d6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad1565b6001600160a01b038216612dcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad1565b6001600160a01b03831660009081526001602052604090205481811015612e455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad1565b612e4f82826143b2565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612e859084906143c9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed191815260200190565b60405180910390a350505050565b612ee881612b64565b60008381526012602052604090205414610e9a576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610ad1565b6000670de0b6b3a7640000612f8a836001600160401b038616614603565b610ee39190614638565b6000828260600151604051602001612bad9291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612feb57600654610e9a9061010090046001600160a01b03168383613088565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561303557600080fd5b505af1158015613049573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015613083573d6000803e3d6000fd5b505050565b6040516001600160a01b03831660248201526044810182905261308390849063a9059cbb60e01b90606401612bff565b60006130c26133d8565b905080600c546130d291906143b2565b600c556130dd6110a7565b600a806101000a81548163ffffffff021916908363ffffffff16021790555050565b80600c600082825461311191906143c9565b92505081905550806008600082825461312a91906145b4565b909155505050565b600061313d60035490565b61314e5750670de0b6b3a764000090565b6131566130b8565b61315e61378c565b6000600c5460085460075461317391906145b4565b61317d9190614854565b905061318860035490565b61319a82670de0b6b3a7640000614603565b6131a49190614638565b91505090565b6001600160a01b03821661320a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad1565b6001600160a01b0382166000908152600160205260409020548181101561327e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad1565b61328882826143b2565b6001600160a01b038416600090815260016020526040812091909155600380548492906132b69084906143b2565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612af4565b6001600160a01b03821661334f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad1565b806003600082825461336191906143c9565b90915550506001600160a01b0382166000908152600160205260408120805483929061338e9084906143c9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff166133ff6110a7565b61340991906143b2565b600a54600c54613428916201000090046001600160401b031690614603565b6134329190614603565b61343c9190614638565b9050600c548110611b3257600c546131a4565b60008061345c85856143c9565b6010546006549192506134819161010090046001600160a01b03908116911683613967565b6010546011546001600160a01b039091169063af355d1e906134a16110a7565b86600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b81526004016134fc99989796959493929190614893565b602060405180830381600087803b15801561351657600080fd5b505af1925050508015613546575060408051601f3d908101601f1916820190925261354391810190614517565b60015b613593576006546135669061010090046001600160a01b03168883613088565b601054600654613589916001600160a01b03610100909204821691166000613967565b6000915050612cc1565b818110156135ee5760006135a782846143b2565b6006549091506135c69061010090046001600160a01b03168a83613088565b6010546006546135e9916001600160a01b03610100909204821691166000613967565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff1661365b6110a7565b61366591906143c9565b81526000602082015260400161367b88856143b2565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506136c49161010090046001600160a01b031690339030908690612bcb16565b6010546006546136e6916001600160a01b036101009092048216911684613967565b6010546011546001600160a01b0390911690639ce320c8906137066110a7565b87858c306040518763ffffffff1660e01b815260040161372b969594939291906148fe565b602060405180830381600087803b15801561374557600080fd5b505af1158015613759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377d9190614517565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156137d957600080fd5b505afa1580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138119190614517565b61381b91906143b2565b9050600754811115610b435760075461383490826143b2565b600860008282546138459190614854565b9091555050600755565b60006138a4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a8b9092919063ffffffff16565b80519091501561308357808060200190518101906138c291906149f7565b6130835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ad1565b6060600061392f8585613aa2565b9050848161393c85613ae4565b60405160200161394e93929190614a14565b6040516020818303038152906040529150509392505050565b8015806139f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156139b657600080fd5b505afa1580156139ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ee9190614517565b155b613a5b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610ad1565b6040516001600160a01b03831660248201526044810182905261308390849063095ea7b360e01b90606401612bff565b6060613a9a8484600085613b24565b949350505050565b815160609015613ad35781604051602001613abd9190614a57565b6040516020818303038152906040529050610b57565b81604051602001613abd9190614a8b565b6060613af3608083901c613c4c565b613afc83613c4c565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613b855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ad1565b843b613bd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad1565b600080866001600160a01b03168587604051613bef9190614ab0565b60006040518083038185875af1925050503d8060008114613c2c576040519150601f19603f3d011682016040523d82523d6000602084013e613c31565b606091505b5091509150613c41828286613dee565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613d7057613d70614622565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613dfd575081610ee3565b825115613e0d5782518084602001fd5b8160405162461bcd60e51b8152600401610ad19190613e7f565b60005b83811015613e42578181015183820152602001613e2a565b83811115612c365750506000910152565b60008151808452613e6b816020860160208601613e27565b601f01601f19169290920160200192915050565b602081526000610ee36020830184613e53565b8015158114610b4357600080fd5b600060208284031215613eb257600080fd5b8135610ee381613e92565b6001600160a01b0381168114610b4357600080fd5b8035611b3281613ebd565b60008060408385031215613ef057600080fd5b8235613efb81613ebd565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613f4157613f41613f09565b60405290565b6001600160401b0381168114610b4357600080fd5b8035611b3281613f47565b63ffffffff81168114610b4357600080fd5b8035611b3281613f67565b6000610100808385031215613f9857600080fd5b604051908101906001600160401b0382118183101715613fba57613fba613f09565b816040528092508335815260208401359150613fd582613f47565b816020820152613fe760408501613ed2565b6040820152613ff860608501613ed2565b60608201526080840135608082015261401360a08501613f5c565b60a082015261402460c08501613f5c565b60c082015261403560e08501613f79565b60e0820152505092915050565b600080610120838503121561405657600080fd5b6140608484613f84565b915061010083013561407181613f47565b809150509250929050565b6000808284036101e081121561409157600080fd5b61409b8585613f84565b925060e060ff19820112156140af57600080fd5b506140b8613f1f565b610100840135600381106140cb57600080fd5b81526140da6101208501613ed2565b60208201526140ec6101408501613f79565b60408201526140fe6101608501613f5c565b60608201526141106101808501613f79565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561414557600080fd5b5035919050565b60008060006060848603121561416157600080fd5b833561416c81613ebd565b9250602084013561417c81613ebd565b929592945050506040919091013590565b60006020828403121561419f57600080fd5b8135610ee381613f47565b600080604083850312156141bd57600080fd5b82359150602083013561407181613e92565b6000602082840312156141e157600080fd5b8135610ee381613ebd565b600080602083850312156141ff57600080fd5b82356001600160401b038082111561421657600080fd5b818501915085601f83011261422a57600080fd5b81358181111561423957600080fd5b8660208260051b850101111561424e57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142b557603f198886030184526142a3858351613e53565b94509285019290850190600101614287565b5092979650505050505050565b600080604083850312156142d557600080fd5b82356142e081613ebd565b9150602083013561407181613ebd565b600181811c9082168061430457607f821691505b6020821081141561432557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156143a8576143a8614378565b6001019392505050565b6000828210156143c4576143c4614378565b500390565b600082198211156143dc576143dc614378565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061447557634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906144a29084018263ffffffff169052565b5060608101516144bd60608401826001600160401b03169052565b5060808101516144d5608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b61020081016144fa82866143e1565b614508610100830185614455565b826101e0830152949350505050565b60006020828403121561452957600080fd5b5051919050565b60006020828403121561454257600080fd5b8151610ee381613f47565b60006020828403121561455f57600080fd5b8151610ee381613f67565b600063ffffffff80831681851680830382111561458957614589614378565b01949350505050565b60006001600160401b0380831681851680830382111561458957614589614378565b600080821280156001600160ff1b03849003851316156145d6576145d6614378565b600160ff1b83900384128116156145ef576145ef614378565b50500190565b60e08101610b578284614455565b600081600019048311821515161561461d5761461d614378565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261465557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261468757600080fd5b8301803591506001600160401b038211156146a157600080fd5b6020019150368190038213156146b657600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156146df57600080fd5b81516001600160401b03808211156146f657600080fd5b818401915084601f83011261470a57600080fd5b81518181111561471c5761471c613f09565b604051601f8201601f19908116603f0116810190838211818310171561474457614744613f09565b8160405282815287602084870101111561475d57600080fd5b613c41836020830160208801613e27565b600060001982141561478257614782614378565b5060010190565b60006020828403121561479b57600080fd5b8151610ee381613ebd565b6000602082840312156147b857600080fd5b604051602081018181106001600160401b03821117156147da576147da613f09565b6040529151825250919050565b61012081016147f682856143e1565b6001600160a01b03929092166101009190910152919050565b610160810161481e82876143e1565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561487257614872614378565b6001600160ff1b038401831381161561488d5761488d614378565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526148ba8285018c613e53565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261492481840188613e53565b91505061493d6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506149e26101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613c41565b600060208284031215614a0957600080fd5b8151610ee381613e92565b60008451614a26818460208901613e27565b845190830190614a3a818360208901613e27565b8451910190614a4d818360208801613e27565b0195945050505050565b600b60fa1b815260008251614a73816001850160208701613e27565b601d60f91b6001939091019283015250600201919050565b60008251614a9d818460208701613e27565b601d60f91b920191825250600101919050565b60008251614ac2818460208701613e27565b919091019291505056fea26469706673582212204714f4b2be10563baa241274ea1a6efe24cdfb5845d64a1fdefb484a5895776d64736f6c63430008090033",
1706
+ "deployedBytecode": "0x60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc81461097a578063ed4de3a3146109a7578063f1d24bab146109dc578063fff6cae914610a0057600080fd5b8063cefed55f146108f0578063d412f5a414610910578063dd62ed3e1461093457600080fd5b8063bec73ade116100d1578063bec73ade1461086a578063c01e1bd61461088a578063c73a32c3146108af578063cc2c929e146108d657600080fd5b8063b5351ee214610821578063bd6d894d14610836578063be0ba1221461084b57600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610795578063ac9650d8146107b5578063b2084202146107d5578063b454e326146107eb57600080fd5b8063975057e714610735578063a457c2d714610755578063a6af2dfe1461077557600080fd5b806370a082311461067e578063753b91bb146106b45780637998a1c4146106d457806387a515d3146106ea5780638f2839701461070057806395d89b411461072057600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a146106205780635df45a371461063357806362822d341461064857806366db52401461066857600080fd5b80633fa856c9146105ca5780634464fae4146105ea5780634f52fd171461060057600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057957806339509351146105955780633cc400b3146105b557600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a15565b60405161034c9190613e7f565b60405180910390f35b34801561036157600080fd5b50610375610370366004613ea0565b610aa7565b005b34801561038357600080fd5b50610397610392366004613edd565b610b46565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004614042565b610b5d565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e9e565b34801561049857600080fd5b5061033f6104a736600461407c565b610ec7565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614133565b610eea565b34801561053057600080fd5b5061039761053f36600461414c565b610f60565b34801561055057600080fd5b5061037561055f36600461418d565b611011565b34801561057057600080fd5b5061041b6110a7565b34801561058557600080fd5b506040516012815260200161034c565b3480156105a157600080fd5b506103976105b0366004613edd565b611147565b3480156105c157600080fd5b5061037561117e565b3480156105d657600080fd5b506103756105e536600461407c565b611373565b3480156105f657600080fd5b5061041b600c5481565b34801561060c57600080fd5b5061037561061b3660046141aa565b6117de565b61037561062e366004614133565b611957565b34801561063f57600080fd5b5061041b611afb565b34801561065457600080fd5b5061041b610663366004614133565b611b0d565b34801561067457600080fd5b5061041b60085481565b34801561068a57600080fd5b5061041b6106993660046141cf565b6001600160a01b031660009081526001602052604090205490565b3480156106c057600080fd5b506103756106cf366004614042565b611b37565b3480156106e057600080fd5b5061041b60115481565b3480156106f657600080fd5b5061041b60095481565b34801561070c57600080fd5b5061037561071b3660046141cf565b611fda565b34801561072c57600080fd5b5061033f612069565b34801561074157600080fd5b50600f546104cc906001600160a01b031681565b34801561076157600080fd5b50610397610770366004613edd565b612078565b34801561078157600080fd5b50600e546104cc906001600160a01b031681565b3480156107a157600080fd5b506103976107b0366004613edd565b612113565b6107c86107c33660046141ec565b612120565b60405161034c9190614260565b3480156107e157600080fd5b5061041b60075481565b3480156107f757600080fd5b506104cc610806366004614133565b6013602052600090815260409020546001600160a01b031681565b34801561082d57600080fd5b506103756122c5565b34801561084257600080fd5b5061041b61251d565b34801561085757600080fd5b50600a5461039790610100900460ff1681565b34801561087657600080fd5b5061037561088536600461407c565b612537565b34801561089657600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108bb57600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e257600080fd5b50600a546103979060ff1681565b3480156108fc57600080fd5b5061037561090b36600461407c565b61272b565b34801561091c57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561094057600080fd5b5061041b61094f3660046142c2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098657600080fd5b5061041b610995366004614133565b60126020526000908152604090205481565b3480156109b357600080fd5b506109c76109c2366004614133565b612918565b6040805192835260208301919091520161034c565b3480156109e857600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0c57600080fd5b5061037561294f565b606060048054610a24906142f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a50906142f0565b8015610a9d5780601f10610a7257610100808354040283529160200191610a9d565b820191906000526020600020905b815481529060010190602001808311610a8057829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ada5760405162461bcd60e51b8152600401610ad19061432b565b60405180910390fd5b610ae261296f565b610aea6129c1565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3390831515815260200190565b60405180910390a1610b436129cd565b50565b6000610b533384846129dc565b5060015b92915050565b600a54610100900460ff16610baa5760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b610bb261296f565b610bba6129c1565b6703782dace9d900008260a001516001600160401b031611158015610bf457506703782dace9d900008260c001516001600160401b031611155b8015610c1157506706f05b59d3b20000816001600160401b031611155b610c4c5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000610c5783612b01565b60008181526012602052604090205490915015610cad5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000610cb76110a7565b90506000610cc88560800151612b44565b905060006040518060e0016040528060016002811115610cea57610cea614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d158361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d7081612b64565b600085815260126020526040812091909155610d8c8783612b77565b90508660800151600954600754610da391906143b2565b1015610ded5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5484610dfd91906143c9565b9050876080015160096000828254610e1591906143c9565b9250508190555080600d6000828254610e2e91906143c9565b9091555050600654610e509061010090046001600160a01b0316333084612bcb565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e84939291906144eb565b60405180910390a2505050505050610e9a6129cd565b5050565b6000610ea861296f565b610eb06129c1565b610eba6000612c3c565b9050610ec46129cd565b90565b6060610ed161296f565b610ee3610ede8484612b77565b612cca565b9392505050565b6000546001600160a01b0316610eff57600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f4557600080fd5b505af1158015610f59573d6000803e3d6000fd5b5050505050565b6000610f6d848484612d07565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610ff25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad1565b611006853361100186856143b2565b6129dc565b506001949350505050565b600e546001600160a01b0316331461103b5760405162461bcd60e51b8152600401610ad19061432b565b61104361296f565b61104b6129c1565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b33565b600080546001600160a01b0316156111425760008054906101000a90046001600160a01b03166001600160a01b03166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190614517565b905090565b504290565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b539185906110019086906143c9565b61118661296f565b61118e6129c1565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111dc57600080fd5b505afa1580156111f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112149190614530565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b15801561128857600080fd5b505afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c0919061454d565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561132e57600080fd5b505afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190614517565b6011556113716129cd565b565b61137b61296f565b6113836129c1565b600061138e83612b01565b905061139a8183612edf565b6001825160028111156113af576113af614362565b146113ee5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610ad1565b6000600a60169054906101000a900463ffffffff168360800151611412919061456a565b905061141c6110a7565b8163ffffffff1611156114665760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610ad1565b82602001516001600160a01b0316336001600160a01b031614806114a157506114918161038461456a565b63ffffffff1661149f6110a7565b115b6114e05760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610ad1565b6040805160e0810190915261155490806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612b64565b60008381526012602052604081209190915560a085015160608501516115879161157d91614592565b8660800151612f6c565b856080015161159691906143b2565b905060006115a48486612f94565b600081815260136020526040902054600a549192506001600160a01b03169060ff1680156115d957506001600160a01b038116155b156115f1576115ec876040015184612fbf565b611626565b6116266001600160a01b03821661160c57876040015161160e565b815b60065461010090046001600160a01b03169085613088565b600061163a8860a001518960800151612f6c565b905060008760a001518860c0015161165291906143c9565b60208901519091506001600160a01b031633141561169a5760208801516116959061167d83856143c9565b60065461010090046001600160a01b03169190613088565b6116d8565b60208801516006546116bc916101009091046001600160a01b03169083613088565b6006546116d89061010090046001600160a01b03163384613088565b60006116e483876143c9565b90508960800151600960008282546116fc91906143b2565b92505081905550806007600082825461171591906143b2565b92505081905550806008600082825461172e91906145b4565b9250508190555081600d600082825461174791906143b2565b9091555061175590506130b8565b61176f61176a8a606001518c60800151612f6c565b6130ff565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516117a991906145f5565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9a91506129cd9050565b6117e661296f565b6117ee6129c1565b8015806117fd5750600a5460ff165b6118395760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610ad1565b6000670de0b6b3a764000061184c613132565b6118569085614603565b6118609190614638565b90508060095461187091906143c9565b60075410156118c15760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610ad1565b6118cb33846131aa565b80600760008282546118dd91906143b2565b909155505081156118f7576118f23382612fbf565b611913565b6006546119139061010090046001600160a01b03163383613088565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e9a6129cd565b61195f61296f565b6119676129c1565b600a5460ff16801561197857508034145b80611981575034155b6119cd5760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610ad1565b60006119d7613132565b6119e983670de0b6b3a7640000614603565b6119f39190614638565b90506119ff33826132f9565b8160076000828254611a1191906143c9565b90915550503415801590611a275750600a5460ff165b15611a9a57600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a7c57600080fd5b505af1158015611a90573d6000803e3d6000fd5b5050505050611ab7565b600654611ab79061010090046001600160a01b0316333085612bcb565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b436129cd565b6000611b0561296f565b61113d6133d8565b6000611b1761296f565b611b1f6129c1565b611b2882612c3c565b9050611b326129cd565b919050565b600a54610100900460ff16611b845760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b611b8c61296f565b611b946129c1565b6000611b9e6110a7565b90506703782dace9d900008360a001516001600160401b031611158015611bda57506703782dace9d900008360c001516001600160401b031611155b8015611bf757506706f05b59d3b20000826001600160401b031611155b611c325760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000611c3d84612b01565b60008181526012602052604090205490915015611c935760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000611ca28560800151612b44565b905060006040518060e0016040528060016002811115611cc457611cc4614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611cef8361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611d4d8783612b77565b9050611d5882612b64565b600085815260126020526040812091909155611d748584612f94565b6000818152601360205260409020549091506001600160a01b031615611dd65760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b8760800151600954600754611deb91906143b2565b1015611e355760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5485611e4591906143c9565b90506000611e798a60c001518b60a001518760600151611e659190614592565b611e6f9190614592565b8b60800151612f6c565b90506000818b60800151611e8d91906143b2565b905082600d6000828254611ea191906143c9565b909155505060808b015160098054600090611ebd9084906143c9565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611f0b9030611ef286856143c9565b60065461010090046001600160a01b0316929190612bcb565b600a5460ff1615611f2957611f248b6040015182612fbf565b611f4b565b60408b0151600654611f4b916101009091046001600160a01b03169083613088565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611f7f939291906144eb565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611fc191906145f5565b60405180910390a3505050505050505050610e9a6129cd565b600e546001600160a01b031633146120045760405162461bcd60e51b8152600401610ad19061432b565b61200c61296f565b6120146129c1565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b33565b606060058054610a24906142f0565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad1565b612109338561100186856143b2565b5060019392505050565b6000610b53338484612d07565b606034156121705760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610ad1565b816001600160401b0381111561218857612188613f09565b6040519080825280602002602001820160405280156121bb57816020015b60608152602001906001900390816121a65790505b50905060005b828110156122be57600080308686858181106121df576121df61465a565b90506020028101906121f19190614670565b6040516121ff9291906146bd565b600060405180830381855af49150503d806000811461223a576040519150601f19603f3d011682016040523d82523d6000602084013e61223f565b606091505b50915091508161228b5760448151101561225857600080fd5b6004810190508080602001905181019061227291906146cd565b60405162461bcd60e51b8152600401610ad19190613e7f565b8084848151811061229e5761229e61465a565b6020026020010181905250505080806122b69061476e565b9150506121c1565b5092915050565b6122cd61296f565b6122d56129c1565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561231a57600080fd5b505afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190614789565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156123ad57600080fd5b505afa1580156123c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e59190614789565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561244157600080fd5b505afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124799190614789565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251091906147a6565b51600b55506113716129cd565b600061252761296f565b61252f6129c1565b610eba613132565b61253f61296f565b6125476129c1565b600061255283612b01565b905061255e8183612edf565b600061256a8284612f94565b9050600a60169054906101000a900463ffffffff16836080015161258e919061456a565b63ffffffff1661259c6110a7565b1080156125bb57506001835160028111156125b9576125b9614362565b145b80156125dc57506000818152601360205260409020546001600160a01b0316155b6126225760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a08601516060860151612667929161265d91614592565b61157d9190614592565b9050600081866080015161267b91906143b2565b600a5490915060ff16156126b9576006546126a69061010090046001600160a01b0316333084612bcb565b6126b4866040015182612fbf565b6126dd565b60408601516006546126dd916101009091046001600160a01b031690339084612bcb565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b8760405161271791906145f5565b60405180910390a350505050610e9a6129cd565b61273361296f565b61273b6129c1565b6127436110a7565b600a54608083015161276291600160b01b900463ffffffff169061456a565b63ffffffff16116127a55760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610ad1565b6001815160028111156127ba576127ba614362565b146127f85760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610ad1565b600061280383612b01565b905061280f8183612edf565b600061281b8484612b77565b905060006128408460200151338660a001518760c0015161283b87612cca565b61344f565b90508360a001518460c0015161285691906143c9565b600d600082825461286791906143b2565b90915550506080850151600980546000906128839084906143b2565b909155505060008381526012602052604081205580156128d757336128a785612b64565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a461290d565b336128e185612b64565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e9a6129cd565b60008061292361296f565b61292b6129c1565b6129356000612c3c565b61293e84612c3c565b9150915061294a6129cd565b915091565b61295761296f565b61295f6129c1565b61296761378c565b6113716129cd565b60065460ff166113715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad1565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b038316612a3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad1565b6001600160a01b038216612a9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612b2791849161010090046001600160a01b0316906020016147e7565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5790600160701b90046001600160401b031683612f6c565b600081604051602001612b2791906145f5565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612bad949392919061480f565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612c369085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261384f565b50505050565b6000612c4661378c565b60008060085413612c58576000612c5c565b6008545b905060008160095485612c6f91906143c9565b612c7991906143c9565b9050600082600754612c8b91906143c9565b905080612ca45750670de0b6b3a7640000949350505050565b80612cb783670de0b6b3a7640000614603565b612cc19190614638565b95945050505050565b6060610b5760405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613921565b6001600160a01b038316612d6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad1565b6001600160a01b038216612dcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad1565b6001600160a01b03831660009081526001602052604090205481811015612e455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad1565b612e4f82826143b2565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612e859084906143c9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed191815260200190565b60405180910390a350505050565b612ee881612b64565b60008381526012602052604090205414610e9a576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610ad1565b6000670de0b6b3a7640000612f8a836001600160401b038616614603565b610ee39190614638565b6000828260600151604051602001612bad9291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612feb57600654610e9a9061010090046001600160a01b03168383613088565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561303557600080fd5b505af1158015613049573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015613083573d6000803e3d6000fd5b505050565b6040516001600160a01b03831660248201526044810182905261308390849063a9059cbb60e01b90606401612bff565b60006130c26133d8565b905080600c546130d291906143b2565b600c556130dd6110a7565b600a806101000a81548163ffffffff021916908363ffffffff16021790555050565b80600c600082825461311191906143c9565b92505081905550806008600082825461312a91906145b4565b909155505050565b600061313d60035490565b61314e5750670de0b6b3a764000090565b6131566130b8565b61315e61378c565b6000600c5460085460075461317391906145b4565b61317d9190614854565b905061318860035490565b61319a82670de0b6b3a7640000614603565b6131a49190614638565b91505090565b6001600160a01b03821661320a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad1565b6001600160a01b0382166000908152600160205260409020548181101561327e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad1565b61328882826143b2565b6001600160a01b038416600090815260016020526040812091909155600380548492906132b69084906143b2565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612af4565b6001600160a01b03821661334f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad1565b806003600082825461336191906143c9565b90915550506001600160a01b0382166000908152600160205260408120805483929061338e9084906143c9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff166133ff6110a7565b61340991906143b2565b600a54600c54613428916201000090046001600160401b031690614603565b6134329190614603565b61343c9190614638565b9050600c548110611b3257600c546131a4565b60008061345c85856143c9565b6010546006549192506134819161010090046001600160a01b03908116911683613967565b6010546011546001600160a01b039091169063af355d1e906134a16110a7565b86600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b81526004016134fc99989796959493929190614893565b602060405180830381600087803b15801561351657600080fd5b505af1925050508015613546575060408051601f3d908101601f1916820190925261354391810190614517565b60015b613593576006546135669061010090046001600160a01b03168883613088565b601054600654613589916001600160a01b03610100909204821691166000613967565b6000915050612cc1565b818110156135ee5760006135a782846143b2565b6006549091506135c69061010090046001600160a01b03168a83613088565b6010546006546135e9916001600160a01b03610100909204821691166000613967565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff1661365b6110a7565b61366591906143c9565b81526000602082015260400161367b88856143b2565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506136c49161010090046001600160a01b031690339030908690612bcb16565b6010546006546136e6916001600160a01b036101009092048216911684613967565b6010546011546001600160a01b0390911690639ce320c8906137066110a7565b87858c306040518763ffffffff1660e01b815260040161372b969594939291906148fe565b602060405180830381600087803b15801561374557600080fd5b505af1158015613759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377d9190614517565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156137d957600080fd5b505afa1580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138119190614517565b61381b91906143b2565b9050600754811115610b435760075461383490826143b2565b600860008282546138459190614854565b9091555050600755565b60006138a4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a8b9092919063ffffffff16565b80519091501561308357808060200190518101906138c291906149f7565b6130835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ad1565b6060600061392f8585613aa2565b9050848161393c85613ae4565b60405160200161394e93929190614a14565b6040516020818303038152906040529150509392505050565b8015806139f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156139b657600080fd5b505afa1580156139ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ee9190614517565b155b613a5b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610ad1565b6040516001600160a01b03831660248201526044810182905261308390849063095ea7b360e01b90606401612bff565b6060613a9a8484600085613b24565b949350505050565b815160609015613ad35781604051602001613abd9190614a57565b6040516020818303038152906040529050610b57565b81604051602001613abd9190614a8b565b6060613af3608083901c613c4c565b613afc83613c4c565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613b855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ad1565b843b613bd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad1565b600080866001600160a01b03168587604051613bef9190614ab0565b60006040518083038185875af1925050503d8060008114613c2c576040519150601f19603f3d011682016040523d82523d6000602084013e613c31565b606091505b5091509150613c41828286613dee565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613d7057613d70614622565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613dfd575081610ee3565b825115613e0d5782518084602001fd5b8160405162461bcd60e51b8152600401610ad19190613e7f565b60005b83811015613e42578181015183820152602001613e2a565b83811115612c365750506000910152565b60008151808452613e6b816020860160208601613e27565b601f01601f19169290920160200192915050565b602081526000610ee36020830184613e53565b8015158114610b4357600080fd5b600060208284031215613eb257600080fd5b8135610ee381613e92565b6001600160a01b0381168114610b4357600080fd5b8035611b3281613ebd565b60008060408385031215613ef057600080fd5b8235613efb81613ebd565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613f4157613f41613f09565b60405290565b6001600160401b0381168114610b4357600080fd5b8035611b3281613f47565b63ffffffff81168114610b4357600080fd5b8035611b3281613f67565b6000610100808385031215613f9857600080fd5b604051908101906001600160401b0382118183101715613fba57613fba613f09565b816040528092508335815260208401359150613fd582613f47565b816020820152613fe760408501613ed2565b6040820152613ff860608501613ed2565b60608201526080840135608082015261401360a08501613f5c565b60a082015261402460c08501613f5c565b60c082015261403560e08501613f79565b60e0820152505092915050565b600080610120838503121561405657600080fd5b6140608484613f84565b915061010083013561407181613f47565b809150509250929050565b6000808284036101e081121561409157600080fd5b61409b8585613f84565b925060e060ff19820112156140af57600080fd5b506140b8613f1f565b610100840135600381106140cb57600080fd5b81526140da6101208501613ed2565b60208201526140ec6101408501613f79565b60408201526140fe6101608501613f5c565b60608201526141106101808501613f79565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561414557600080fd5b5035919050565b60008060006060848603121561416157600080fd5b833561416c81613ebd565b9250602084013561417c81613ebd565b929592945050506040919091013590565b60006020828403121561419f57600080fd5b8135610ee381613f47565b600080604083850312156141bd57600080fd5b82359150602083013561407181613e92565b6000602082840312156141e157600080fd5b8135610ee381613ebd565b600080602083850312156141ff57600080fd5b82356001600160401b038082111561421657600080fd5b818501915085601f83011261422a57600080fd5b81358181111561423957600080fd5b8660208260051b850101111561424e57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142b557603f198886030184526142a3858351613e53565b94509285019290850190600101614287565b5092979650505050505050565b600080604083850312156142d557600080fd5b82356142e081613ebd565b9150602083013561407181613ebd565b600181811c9082168061430457607f821691505b6020821081141561432557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156143a8576143a8614378565b6001019392505050565b6000828210156143c4576143c4614378565b500390565b600082198211156143dc576143dc614378565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061447557634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906144a29084018263ffffffff169052565b5060608101516144bd60608401826001600160401b03169052565b5060808101516144d5608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b61020081016144fa82866143e1565b614508610100830185614455565b826101e0830152949350505050565b60006020828403121561452957600080fd5b5051919050565b60006020828403121561454257600080fd5b8151610ee381613f47565b60006020828403121561455f57600080fd5b8151610ee381613f67565b600063ffffffff80831681851680830382111561458957614589614378565b01949350505050565b60006001600160401b0380831681851680830382111561458957614589614378565b600080821280156001600160ff1b03849003851316156145d6576145d6614378565b600160ff1b83900384128116156145ef576145ef614378565b50500190565b60e08101610b578284614455565b600081600019048311821515161561461d5761461d614378565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261465557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261468757600080fd5b8301803591506001600160401b038211156146a157600080fd5b6020019150368190038213156146b657600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156146df57600080fd5b81516001600160401b03808211156146f657600080fd5b818401915084601f83011261470a57600080fd5b81518181111561471c5761471c613f09565b604051601f8201601f19908116603f0116810190838211818310171561474457614744613f09565b8160405282815287602084870101111561475d57600080fd5b613c41836020830160208801613e27565b600060001982141561478257614782614378565b5060010190565b60006020828403121561479b57600080fd5b8151610ee381613ebd565b6000602082840312156147b857600080fd5b604051602081018181106001600160401b03821117156147da576147da613f09565b6040529151825250919050565b61012081016147f682856143e1565b6001600160a01b03929092166101009190910152919050565b610160810161481e82876143e1565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561487257614872614378565b6001600160ff1b038401831381161561488d5761488d614378565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526148ba8285018c613e53565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261492481840188613e53565b91505061493d6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506149e26101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613c41565b600060208284031215614a0957600080fd5b8151610ee381613e92565b60008451614a26818460208901613e27565b845190830190614a3a818360208901613e27565b8451910190614a4d818360208801613e27565b0195945050505050565b600b60fa1b815260008251614a73816001850160208701613e27565b601d60f91b6001939091019283015250600201919050565b60008251614a9d818460208701613e27565b601d60f91b920191825250600101919050565b60008251614ac2818460208701613e27565b919091019291505056fea26469706673582212204714f4b2be10563baa241274ea1a6efe24cdfb5845d64a1fdefb484a5895776d64736f6c63430008090033",
1707
+ "linkReferences": {},
1708
+ "deployedLinkReferences": {}
1709
+ }