@keep-network/tbtc-v2 1.6.0-dev.5 → 1.6.0-dev.7

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 (160) hide show
  1. package/artifacts/BLS.json +6 -6
  2. package/artifacts/Bank.json +17 -17
  3. package/artifacts/BeaconAuthorization.json +6 -6
  4. package/artifacts/BeaconDkg.json +6 -6
  5. package/artifacts/BeaconDkgValidator.json +9 -9
  6. package/artifacts/BeaconInactivity.json +6 -6
  7. package/artifacts/BeaconSortitionPool.json +16 -16
  8. package/artifacts/Bridge.json +32 -32
  9. package/artifacts/BridgeGovernance.json +14 -14
  10. package/artifacts/BridgeGovernanceParameters.json +7 -7
  11. package/artifacts/Deposit.json +7 -7
  12. package/artifacts/DepositSweep.json +7 -7
  13. package/artifacts/DonationVault.json +11 -11
  14. package/artifacts/EcdsaDkgValidator.json +7 -7
  15. package/artifacts/EcdsaInactivity.json +6 -6
  16. package/artifacts/EcdsaSortitionPool.json +16 -16
  17. package/artifacts/Fraud.json +7 -7
  18. package/artifacts/LightRelay.json +28 -28
  19. package/artifacts/LightRelayMaintainerProxy.json +24 -24
  20. package/artifacts/MaintainerProxy.json +37 -37
  21. package/artifacts/MovingFunds.json +7 -7
  22. package/artifacts/NuCypherToken.json +11 -11
  23. package/artifacts/RandomBeacon.json +23 -23
  24. package/artifacts/RandomBeaconChaosnet.json +11 -11
  25. package/artifacts/RandomBeaconGovernance.json +12 -12
  26. package/artifacts/Redemption.json +7 -7
  27. package/artifacts/ReimbursementPool.json +11 -11
  28. package/artifacts/T.json +11 -11
  29. package/artifacts/TBTC.json +19 -19
  30. package/artifacts/TBTCToken.json +19 -19
  31. package/artifacts/TBTCVault.json +36 -36
  32. package/artifacts/TokenStaking.json +156 -308
  33. package/artifacts/TokenholderGovernor.json +47 -47
  34. package/artifacts/TokenholderTimelock.json +36 -36
  35. package/artifacts/VendingMachine.json +22 -22
  36. package/artifacts/VendingMachineNuCypher.json +9 -9
  37. package/artifacts/VendingMachineV2.json +15 -15
  38. package/artifacts/VendingMachineV3.json +15 -15
  39. package/artifacts/WalletProposalValidator.json +437 -0
  40. package/artifacts/WalletRegistry.json +31 -31
  41. package/artifacts/WalletRegistryGovernance.json +56 -56
  42. package/artifacts/Wallets.json +7 -7
  43. package/artifacts/solcInputs/{d2d7e276da75d7184610fe11a4a103b7.json → b4e1c442421284b256fcad9f86102ecc.json} +4 -4
  44. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  45. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  46. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  47. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  48. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  49. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  50. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  51. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  52. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  53. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  54. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  55. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  56. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  57. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  58. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  59. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  60. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  61. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  62. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  63. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.dbg.json +4 -0
  64. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +323 -0
  65. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  66. package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  67. package/build/contracts/l2/L2WormholeGateway.sol/IWormholeTokenBridge.dbg.json +1 -1
  68. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  69. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  70. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  71. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  72. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  73. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  74. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  75. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  76. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  77. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  78. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  79. package/contracts/bridge/{WalletCoordinator.sol → WalletProposalValidator.sol} +129 -447
  80. package/deploy/39_deploy_wallet_proposal_validator.ts +33 -0
  81. package/export/artifacts/@keep-network/ecdsa/contracts/EcdsaDkgValidator.sol/EcdsaDkgValidator.json +24 -24
  82. package/export/artifacts/@keep-network/ecdsa/contracts/WalletRegistry.sol/WalletRegistry.json +4999 -4814
  83. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaDkg.sol/EcdsaDkg.json +2 -2
  84. package/export/artifacts/@keep-network/ecdsa/contracts/libraries/EcdsaInactivity.sol/EcdsaInactivity.json +23 -23
  85. package/export/artifacts/@keep-network/random-beacon/contracts/ReimbursementPool.sol/ReimbursementPool.json +53 -53
  86. package/export/artifacts/@keep-network/sortition-pools/contracts/Chaosnet.sol/Chaosnet.json +21 -21
  87. package/export/artifacts/@keep-network/sortition-pools/contracts/Rewards.sol/Rewards.json +16 -16
  88. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionPool.sol/SortitionPool.json +206 -206
  89. package/export/artifacts/@keep-network/sortition-pools/contracts/SortitionTree.sol/SortitionTree.json +26 -26
  90. package/export/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +46 -46
  91. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +36 -36
  92. package/export/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +78 -78
  93. package/export/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json +68 -68
  94. package/export/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +43 -43
  95. package/export/artifacts/@thesis/solidity-contracts/contracts/token/ERC20WithPermit.sol/ERC20WithPermit.json +79 -79
  96. package/export/artifacts/@thesis/solidity-contracts/contracts/token/MisfundRecovery.sol/MisfundRecovery.json +42 -42
  97. package/export/artifacts/contracts/bank/Bank.sol/Bank.json +77 -77
  98. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +320 -320
  99. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +108 -108
  100. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +63 -63
  101. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +65 -65
  102. package/export/artifacts/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +25381 -0
  103. package/export/artifacts/contracts/l2/L2TBTC.sol/L2TBTC.json +194 -194
  104. package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +98 -98
  105. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +149 -149
  106. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +76 -76
  107. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +62 -62
  108. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +79 -79
  109. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +358 -358
  110. package/export/artifacts/contracts/test/GoerliLightRelay.sol/GoerliLightRelay.json +78 -78
  111. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +4 -4
  112. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +78 -78
  113. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  114. package/export/artifacts/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.json +78 -78
  115. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +14 -14
  116. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +85 -85
  117. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +78 -78
  118. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +4 -4
  119. package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +37 -37
  120. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +104 -104
  121. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +19 -19
  122. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +184 -184
  123. package/export/deploy/39_deploy_wallet_proposal_validator.js +82 -0
  124. package/export/hardhat.config.js +0 -6
  125. package/export/typechain/factories/EcdsaAuthorization__factory.js +1 -1
  126. package/export/typechain/factories/IStaking__factory.js +24 -103
  127. package/export/typechain/factories/WalletProposalValidator__factory.js +402 -0
  128. package/export/typechain/factories/WalletRegistry__factory.js +1 -1
  129. package/export/typechain/index.js +3 -3
  130. package/package.json +2 -2
  131. package/artifacts/KeepRegistry.json +0 -99
  132. package/artifacts/KeepStake.json +0 -286
  133. package/artifacts/KeepToken.json +0 -711
  134. package/artifacts/KeepTokenStaking.json +0 -483
  135. package/artifacts/NuCypherStakingEscrow.json +0 -287
  136. package/artifacts/VendingMachineKeep.json +0 -400
  137. package/artifacts/WalletCoordinator.json +0 -1107
  138. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.dbg.json +0 -4
  139. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +0 -1042
  140. package/deploy/34_deploy_wallet_coordinator.ts +0 -43
  141. package/deploy/35_add_coordinator_address.ts +0 -20
  142. package/deploy/36_transfer_wallet_coordinator_ownership.ts +0 -19
  143. package/deploy/81_upgrade_wallet_coordinator_v2.ts +0 -99
  144. package/export/artifacts/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +0 -33310
  145. package/export/deploy/34_deploy_wallet_coordinator.js +0 -115
  146. package/export/deploy/35_add_coordinator_address.js +0 -60
  147. package/export/deploy/36_transfer_wallet_coordinator_ownership.js +0 -60
  148. package/export/deploy/81_upgrade_wallet_coordinator_v2.js +0 -140
  149. package/export/typechain/factories/WalletCoordinator__factory.js +0 -1121
  150. /package/deploy/{37_deploy_light_relay_maintainer_proxy.ts → 34_deploy_light_relay_maintainer_proxy.ts} +0 -0
  151. /package/deploy/{38_authorize_maintainer_in_light_relay_maintainer_proxy.ts → 35_authorize_maintainer_in_light_relay_maintainer_proxy.ts} +0 -0
  152. /package/deploy/{39_transfer_light_relay_maintainer_proxy_ownership.ts → 36_transfer_light_relay_maintainer_proxy_ownership.ts} +0 -0
  153. /package/deploy/{40_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.ts → 37_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.ts} +0 -0
  154. /package/deploy/{41_authorize_light_relay_maintainer_proxy_in_light_relay.ts → 38_authorize_light_relay_maintainer_proxy_in_light_relay.ts} +0 -0
  155. /package/export/deploy/{37_deploy_light_relay_maintainer_proxy.js → 34_deploy_light_relay_maintainer_proxy.js} +0 -0
  156. /package/export/deploy/{38_authorize_maintainer_in_light_relay_maintainer_proxy.js → 35_authorize_maintainer_in_light_relay_maintainer_proxy.js} +0 -0
  157. /package/export/deploy/{39_transfer_light_relay_maintainer_proxy_ownership.js → 36_transfer_light_relay_maintainer_proxy_ownership.js} +0 -0
  158. /package/export/deploy/{40_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js → 37_authorize_light_relay_maintainer_proxy_in_reimbursement_pool.js} +0 -0
  159. /package/export/deploy/{41_authorize_light_relay_maintainer_proxy_in_light_relay.js → 38_authorize_light_relay_maintainer_proxy_in_light_relay.js} +0 -0
  160. /package/export/typechain/{WalletCoordinator.js → WalletProposalValidator.js} +0 -0
@@ -1928,7 +1928,7 @@ var _abi = [
1928
1928
  type: "function",
1929
1929
  },
1930
1930
  ];
1931
- var _bytecode = "0x60c06040523480156200001157600080fd5b50604051620060ab380380620060ab833981016040819052620000349162000134565b6001600160a01b03808316608052811660a0526200005162000059565b505062000173565b606454610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60645460ff908116101562000119576064805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013157600080fd5b50565b600080604083850312156200014857600080fd5b825162000155816200011b565b602084015190925062000168816200011b565b809150509250929050565b60805160a051615e4e6200025d600039600081816104ea01528181610a3a01528181610a8701528181610adb01528181610b2901528181610d1501528181610f0901528181611374015281816115af0152818161169501528181611f31015281816122cb01526125d80152600081816107e601528181610aa801528181610afc01528181610b4a01528181610c2a01528181610fa501528181611119015281816112ff015281816118780152818161198b01528181611dbe0152818161216c0152818161236701528181612558015281816125f90152818161265801526127310152615e4e6000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80637e0049fd116101e9578063c9bacaad1161010f578063df07ce59116100ad578063f0820c921161007c578063f0820c921461097e578063f7186ce01461098f578063f854a27f146109a2578063fd2a4788146109b557600080fd5b8063df07ce5914610922578063e03e453514610935578063e686440f1461094a578063e83ab3a51461095d57600080fd5b8063d38bfff4116100e9578063d38bfff4146108c8578063d855c631146108db578063d8dc404d146108e3578063ded56d45146108f657600080fd5b8063c9bacaad1461088d578063cc562388146108a0578063d0bcc0e3146108b557600080fd5b8063a04e298011610187578063c09975cd11610156578063c09975cd14610828578063c0c53b8b1461083b578063c7c49c981461084e578063c88e70f41461087a57600080fd5b8063a04e2980146107c6578063b13b55b2146107d9578063b54a2374146107e1578063b5e9ce8b1461080857600080fd5b806388a59590116101c357806388a595901461073a5780638dcbdf4a146107755780639879d19b146107885780639c9de0281461079b57600080fd5b80637e0049fd146106e55780637e33cba6146106f8578063830f9e021461070b57600080fd5b806352902301116102ce5780636c9ecd641161026c578063770124d31161023b578063770124d3146105f2578063789d392a146105fa5780637b14729e146106755780637b35b4e6146106d257600080fd5b80636c9ecd64146105b15780636febd464146105c457806372cc8c6d146105d757806375e0ae5a146105df57600080fd5b8063663032cd116102a8578063663032cd1461057057806368c34948146105835780636a7f7a901461058b5780636b5f2bff1461059e57600080fd5b8063529023011461052f5780635aa6e6751461054a5780635c5b38701461055d57600080fd5b8063227fd44f1161033b5780633682a450116103155780633682a450146104bf57806342d86693146104d25780634cf088d9146104e55780634d99f4731461050c57600080fd5b8063227fd44f146104865780633137676614610499578063343bb927146104ac57600080fd5b8063167f051711610377578063167f0517146104325780631ae879e81461043a5780631c5b07621461044e5780631d35fa631461046157600080fd5b806308aa090b1461039e57806314a85474146103f1578063153622b314610406575b600080fd5b6103a66109c8565b6040516103e89190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b60405180910390f35b6104046103ff366004614e63565b610a2f565b005b6101065461041a906001600160a01b031681565b6040516001600160a01b0390911681526020016103e8565b610404610ad4565b6101055461041a906001600160a01b031681565b61040461045c366004614eae565b610b22565b60fc546001600160601b03165b6040516001600160601b0390911681526020016103e8565b610404610494366004614ecb565b610b72565b6104046104a7366004614ee8565b610bf1565b6104046104ba366004614f22565b610e40565b6104046104cd366004614eae565b610ea4565b6104046104e0366004614eae565b610eaf565b61041a7f000000000000000000000000000000000000000000000000000000000000000081565b61051f61051a366004614f22565b611064565b60405190151581526020016103e8565b60fd5460fe54604080519283526020830191909152016103e8565b60005461041a906001600160a01b031681565b61040461056b366004614ee8565b61107f565b61040461057e366004614eae565b6112b6565b61051f611358565b610404610599366004614e63565b611369565b6104046105ac366004614eae565b6113be565b6104046105bf366004614f3b565b611437565b6104046105d2366004614f3b565b6114a9565b610404611513565b6104046105ed366004614eae565b6115a8565b61051f6115d4565b610653610608366004614f22565b60408051606080820183526000808352602080840182905292840181905293845260ca8252928290208251938401835280548452600181015491840191909152600201549082015290565b60408051825181526020808401519082015291810151908201526060016103e8565b6106a36065546001600160601b038116916001600160401b03600160601b8304811692600160a01b90041690565b604080516001600160601b0390941684526001600160401b0392831660208501529116908201526060016103e8565b6104046106e0366004614eae565b6115e0565b6104046106f3366004614ee8565b611668565b61046e610706366004614eae565b61168c565b61072c610719366004614f22565b6101046020526000908152604090205481565b6040519081526020016103e8565b60ff5461010054610101546101025461010354604080519586526020860194909452928401919091526060830152608082015260a0016103e8565b610404610783366004614f5d565b6116ba565b610404610796366004614fdc565b611772565b6107ae6107a9366004614eae565b611b2b565b6040516001600160401b0390911681526020016103e8565b6104046107d436600461506a565b611b38565b610404611bea565b61041a7f000000000000000000000000000000000000000000000000000000000000000081565b61081b610816366004614f22565b611c51565b6040516103e891906150ff565b60325461041a906001600160a01b031681565b610404610849366004615112565b611c5e565b61041a61085c366004614eae565b6001600160a01b039081166000908152606660205260409020541690565b610404610888366004614f5d565b611e93565b61040461089b366004614e63565b611f26565b6108a8611f7b565b6040516103e89190615168565b6104046108c3366004614eae565b611f87565b6104046108d6366004614eae565b612000565b610404612094565b6104046108f1366004615190565b6120d1565b61041a610904366004614eae565b6001600160a01b039081166000908152606760205260409020541690565b61051f61093036600461520b565b612343565b61093d612534565b6040516103e891906152b2565b61051f610958366004614eae565b6125cf565b61097061096b366004614ee8565b61261e565b6040516103e89291906152c5565b6065546001600160601b031661046e565b61051f61099d366004614eae565b612636565b61046e6109b0366004614eae565b6126c5565b61046e6109c3366004614eae565b6127a3565b6109fa6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b506040805160a0810182526099548152609a546020820152609b5491810191909152609c546060820152609d54608082015290565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a805760405162461bcd60e51b8152600401610a77906152e0565b60405180910390fd5b610acf60657f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008686866127ca565b505050565b610b2060657f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612936565b565b610b6f60657f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612b10565b50565b6000546001600160a01b03163314610b9c5760405162461bcd60e51b8152600401610a7790615322565b60fc80546001600160601b0319166001600160601b0383169081179091556040519081527fe132b87eb6644ee4d4c3c32744f7e1c3906335a2d4f99330767bf573909c7d84906020015b60405180910390a150565b600080610bff609784612cef565b604051638871ca5d60e01b815263ffffffff8216600482015291935091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638871ca5d90602401602060405180830381865afa158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190615359565b6040805160018082528183019092529192506000919060208083019080368337019050506001600160a01b038084166000908152606760205260409020549192501681600081518110610cea57610cea61538c565b6001600160a01b03928316602091820292909201015260fc5460fd546040516383ddba8f60e01b81527f0000000000000000000000000000000000000000000000000000000000000000909316926383ddba8f92610d5a926001600160601b0390911691339087906004016153a2565b600060405180830381600087803b158015610d7457600080fd5b505af1925050508015610d85575060015b610dde5760fc54604080516001600160601b0390921682526001600160a01b038416602083015285917f14621289a12ab59e0737decc388bba91d929c723defb4682d5d19b9a12ecfecb910160405180910390a2610e2f565b60fc54604080516001600160601b0390921682526001600160a01b038416602083015285917f88f76c659db78142f88e94db3ca791869495394c6c1b3d412ced9022dc97c9e3910160405180910390a25b610e396097613058565b5050505050565b610105546001600160a01b03163314610e6b5760405162461bcd60e51b8152600401610a7790615415565b610e7660ca826130ac565b60405181907fa6ae4af610b8ada39d3675190ead27a5552631a8e33f53e4e37dbb082f11a73e90600090a250565b610b6f6065826130f9565b6001600160a01b038181166000908152606660205260409020541680610ee75760405162461bcd60e51b8152600401610a779061544c565b604051632de9480760e01b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690632de9480790602401606060405180830381865afa158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190615476565b50604051637104c0e560e11b81526001600160a01b0385811660048301528281166024830152919350600092507f00000000000000000000000000000000000000000000000000000000000000009091169063e20981ca906044016020604051808303816000875af1158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101491906154b8565b6040516001600160601b03821681529091506001600160a01b038516907f38532b6dea69d7266fa923c7813d190be37625f2454ddfa3d93c45c79482e3fd9060200160405180910390a250505050565b600081815260ca602052604081206001015415155b92915050565b60005a9050600061109160978461335c565b9050600080806110b660c08701356110ac60208901896154d5565b60ca929190613783565b925092509250856040516020016110cd919061575b565b60405160208183030381529060405280519060200120837fbe8f27cef1f3d94120c9c547c3614f5b992fdb0c0a497cc920fde06546291ab460405160405180910390a38351156111a5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663942f68928560fe54426111559190615784565b6040518363ffffffff1660e01b8152600401611172929190615797565b600060405180830381600087803b15801561118c57600080fd5b505af11580156111a0573d6000803e3d6000fd5b505050505b6101055460405163547d07a160e11b81526004810185905260248101849052604481018390526001600160a01b039091169063a8fa0f4290606401600060405180830381600087803b1580156111fa57600080fd5b505af115801561120e573d6000803e3d6000fd5b5050505061121c60976137fe565b603254610100546001600160a01b0390911690637ad226dc905a61124090896157b9565b60ff5461124d9190615784565b6112579190615784565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b15801561129657600080fd5b505af11580156112aa573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b031633146112e05760405162461bcd60e51b8152600401610a7790615322565b604051632a59250560e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a9649414906024015b600060405180830381600087803b15801561134457600080fd5b505af1158015610e39573d6000803e3d6000fd5b60006113646097613862565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113b15760405162461bcd60e51b8152600401610a77906152e0565b610acf60658484846138b3565b6000546001600160a01b031633146113e85760405162461bcd60e51b8152600401610a7790615322565b61010680546001600160a01b0319166001600160a01b0383169081179091556040519081527f2b34e21b6daa8fcf8cba1c3ed709cbed2b0231d5fb60e9ccd8c2e75a5674bcb390602001610be6565b6000546001600160a01b031633146114615760405162461bcd60e51b8152600401610a7790615322565b60fd82905560fe81905560408051838152602081018390527ff3a6ee10a78fb7d212e87d9be970fb16bd7324e9dc9c38d21cd7ecde781a1d2a91015b60405180910390a15050565b610106546001600160a01b031633146115045760405162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f74207468652052616e646f6d20426561636f6e006044820152606401610a77565b61150f609783613aee565b5050565b610105546001600160a01b0316331461153e5760405162461bcd60e51b8152600401610a7790615415565b6115486097613b9b565b610106546040516310da3b0360e21b81523060048201526001600160a01b0390911690634368ec0c90602401600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50505050565b610b6f60657f000000000000000000000000000000000000000000000000000000000000000083613c66565b60006113646097613ea7565b6000546001600160a01b0316331461160a5760405162461bcd60e51b8152600401610a7790615322565b6040516001600160a01b03821681527f0e2d2343d31b085b7c4e56d1c8a6ec79f7ab07460386f1c9a1756239fe2533ac9060200160405180910390a1603280546001600160a01b0319166001600160a01b0392909216919091179055565b61168161167860208301836154d5565b60ca9190613ee1565b610b6f60978261403a565b600061107960657f00000000000000000000000000000000000000000000000000000000000000008461434a565b6000546001600160a01b031633146116e45760405162461bcd60e51b8152600401610a7790615322565b6116ef609786614385565b6116fa6097856143e6565b611705609784614447565b611710609783614488565b61171b6097826144e9565b604080518681526020810186905290810184905260608101839052608081018290527f59ae8ed7b3a7e5f6dde4cff478f0ac0aa652c5edc4f4757b09a778a430b02c569060a0015b60405180910390a15050505050565b60005a8535600081815261010460205260409020549192509085146117c95760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610a77565b6000806117d760ca846145a3565b909250905060006117e960ca856145f3565b905086866040516020016117fe9291906157cc565b60405160208183030381529060405280519060200120811461185a5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642067726f7570206d656d6265727360581b6044820152606401610a77565b600073__$c28dd63714b1a086d50ecbb702fff9dbb7$__63f4df04be7f00000000000000000000000000000000000000000000000000000000000000008c87876040516020016118b4929190918252602082015260400190565b6040516020818303038152906040528d8d8d6040518763ffffffff1660e01b81526004016118e7969594939291906157ee565b600060405180830381865af4158015611904573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192c9190810190615925565b60008681526101046020526040812080549293509061194a836159c3565b9091555050604080518a815233602082015286917f326e1ff7c130ed708307116f79cf7dbca649503e7082e5e35a19ceeee1523b39910160405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663942f68928260fe54426119c79190615784565b6040518363ffffffff1660e01b81526004016119e4929190615797565b600060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b50611a279250505060608b0160408c016159dc565b15611a9a5761010554604051631ee74c0960e11b81526004810187905260248101869052604481018590526001600160a01b0390911690633dce981290606401600060405180830381600087803b158015611a8157600080fd5b505af1158015611a95573d6000803e3d6000fd5b505050505b603254610101546001600160a01b0390911690637ad226dc905a611abe908a6157b9565b611ac89190615784565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b158015611b0757600080fd5b505af1158015611b1b573d6000803e3d6000fd5b5050505050505050505050505050565b6000611079606583614635565b6000546001600160a01b03163314611b625760405162461bcd60e51b8152600401610a7790615322565b606580546001600160601b0319166001600160601b038516179055611b886065836146cd565b611b936065826146f5565b604080516001600160601b03851681526001600160401b03848116602083015283168183015290517f544b726e42801bb47073854eeedae851903f66fe32a5bd24e626e10b90027b519181900360600190a1505050565b60005a9050611bf9609761471d565b603254610102546001600160a01b0390911690637ad226dc905a611c1d90856157b9565b611c279190615784565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440161132a565b606061107960ca836147a4565b606454610100900460ff1615808015611c7e5750606454600160ff909116105b80611c985750303b158015611c98575060645460ff166001145b611cfb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a77565b6064805460ff191660011790558015611d1e576064805461ff0019166101001790555b61010680546001600160a01b038086166001600160a01b0319928316179092556032805492851692909116919091179055611d58336147df565b606580546001600160601b031916690878678326eac9000000179055611d826065623b53806146cd565b611d906065623b53806146f5565b60fc80546001600160601b0319166815af1d78b58c400000179055606460fd556212750060fe55611de360977f000000000000000000000000000000000000000000000000000000000000000086614839565b611df06097612d00614385565b611dfd6097612d006143e6565b611e0a609761c350614447565b611e176097610a0f614488565b611e23609760146144e9565b62046cd060ff55620119406101005562016b4861010155611c52610102556108fc6101035580156115a2576064805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b6000546001600160a01b03163314611ebd5760405162461bcd60e51b8152600401610a7790615322565b60ff859055610100849055610101839055610102829055610103819055604080518681526020810186905290810184905260608101839052608081018290527f8a3e64fa6013a36bccca7362e8826b11ba41e57fb60f55309c0ca48904dad0829060a001611763565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f6e5760405162461bcd60e51b8152600401610a77906152e0565b610acf606584848461492e565b600061136460976149fb565b6000546001600160a01b03163314611fb15760405162461bcd60e51b8152600401610a7790615322565b61010580546001600160a01b0319166001600160a01b0383169081179091556040519081527fa1993af5a189ba5ad4155263c920cfee33ce0593a8eb231a13bb3ce6f39459e390602001610be6565b6000546001600160a01b0316331461202a5760405162461bcd60e51b8152600401610a7790615322565b6001600160a01b03811661208b5760405162461bcd60e51b815260206004820152602260248201527f4e657720676f7665726e616e636520697320746865207a65726f206164647265604482015261737360f01b6064820152608401610a77565b610b6f816147df565b60005a90506120a36097614a92565b603254610103546001600160a01b0390911690637ad226dc905a6120c790856157b9565b611c2791906157b9565b610105546001600160a01b031633146120fc5760405162461bcd60e51b8152600401610a7790615415565b600061210960ca856145f3565b9050828260405160200161211e9291906157cc565b6040516020818303038152906040528051906020012081146121525760405162461bcd60e51b8152600401610a77906159f9565b604051637bfcd47d60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f7f9a8fa906121a390879087906004016157cc565b600060405180830381865afa1580156121c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121e89190810190615a3b565b90506000836001600160401b0381111561220457612204615376565b60405190808252806020026020018201604052801561222d578160200160208202803683370190505b50905060005b82518110156122b3576122778382815181106122515761225161538c565b60200260200101516001600160a01b039081166000908152606760205260409020541690565b8282815181106122895761228961538c565b6001600160a01b0390921660209283029190910190910152806122ab816159c3565b915050612233565b506040516383ddba8f60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906383ddba8f90612306908c908c908c9087906004016153a2565b600060405180830381600087803b15801561232057600080fd5b505af1158015612334573d6000803e3d6000fd5b50505050505050505050505050565b604051635a48b46b60e01b81526001600160a01b03838116600483015260009182917f00000000000000000000000000000000000000000000000000000000000000001690635a48b46b90602401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d29190615ac9565b90508063ffffffff1660000361242a5760405162461bcd60e51b815260206004820152601d60248201527f4e6f74206120736f72746974696f6e20706f6f6c206f70657261746f720000006044820152606401610a77565b600061243760ca896145f3565b9050868660405160200161244c9291906157cc565b6040516020818303038152906040528051906020012081146124805760405162461bcd60e51b8152600401610a77906159f9565b836001111580156124915750858411155b6124e95760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206d656d62657220696e646578206973206f7574206f662072616044820152626e676560e81b6064820152608401610a77565b63ffffffff821687876124fd6001886157b9565b81811061250c5761250c61538c565b90506020020160208101906125219190615ae6565b63ffffffff161498975050505050505050565b60a054604051636c2530b960e01b81526064600482015260248101919091526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636c2530b990604401600060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113649190810190615925565b600061107960657f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000085614b11565b6000606061262d609784614c85565b91509150915091565b6040516307b8c36760e51b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7186ce090602401602060405180830381865afa1580156126a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110799190615b03565b6000806126ea836001600160a01b039081166000908152606660205260409020541690565b90506001600160a01b0381166127125760405162461bcd60e51b8152600401610a779061544c565b60405163439f18fd60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063873e31fa90602401602060405180830381865afa158015612778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279c91906154b8565b9392505050565b6001600160a01b0381166000908152606860205260408120546001600160601b0316611079565b6001600160a01b03808416600090815260018801602052604090205416806127f2575061292e565b6040516307b8c36760e51b81526001600160a01b03828116600483015286169063f7186ce090602401602060405180830381865afa158015612838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285c9190615b03565b1561292c57846001600160a01b031663a4e2d6346040518163ffffffff1660e01b8152600401602060405180830381865afa15801561289f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c39190615b03565b1561292057604080516001600160601b038086168252841660208201526001600160a01b0380841692908716917f1b09380d63e78fd72c1d79a805a7e2dfadf02b22418e24bebff51376b7df33b0910160405180910390a361292c565b61292c87878784612b10565b505b505050505050565b3360008181526002850160205260409020546001600160a01b03168061296e5760405162461bcd60e51b8152600401610a779061544c565b6001600160a01b0381166000908152600386016020526040812080549091906129a5908890889086906001600160601b0316614d69565b9050806001600160601b0316600003612a005760405162461bcd60e51b815260206004820152601f60248201527f417574686f72697a6174696f6e2062656c6f7720746865206d696e696d756d006044820152606401610a77565b836001600160a01b0316836001600160a01b03167f5075aaa89894a888eb2cac81a27320c60855febb0cf1706b66bdc754e640d43360405160405180910390a3604051630483483160e31b81526001600160a01b0386169063241a418890612a6e9087908590600401615b20565b600060405180830381600087803b158015612a8857600080fd5b505af1158015612a9c573d6000803e3d6000fd5b5050835467fffffffffffffffe19600160601b9091046001600160401b031601915061292c9050578654612ae090600160601b90046001600160401b031642615b42565b82546001600160401b0391909116600160601b0267ffffffffffffffff60601b1990911617825550505050505050565b6001600160a01b0380821660009081526002860160205260409020541680612b4a5760405162461bcd60e51b8152600401610a779061544c565b6001600160a01b03808216600081815260038801602052604080822090519093861692917f1231fe5ee649a593b524a494cd53146a196380a872115a0d0fe16c0735afdf2691a36040516307b8c36760e51b81526001600160a01b03848116600483015285169063f7186ce090602401602060405180830381865afa158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb9190615b03565b15612c82578054600090612c1d908890889086906001600160601b0316614d69565b60405163dc7520c560e01b81529091506001600160a01b0386169063dc7520c590612c4e9087908590600401615b20565b600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050505b805467fffffffffffffffe19600160601b9091046001600160401b03160161292e578554612cc090600160601b90046001600160401b031642615b42565b81546001600160401b0391909116600160601b0267ffffffffffffffff60601b19909116178155505050505050565b6000806003612cfd856149fb565b6003811115612d0e57612d0e615152565b14612d5b5760405162461bcd60e51b815260206004820152601e60248201527f43757272656e74207374617465206973206e6f74204348414c4c454e474500006044820152606401610a77565b6003840154600c850154612d6f9190615784565b431115612dca5760405162461bcd60e51b815260206004820152602360248201527f4368616c6c656e676520706572696f642068617320616c7265616479207061736044820152621cd95960ea1b6064820152608401610a77565b83600b015483604051602001612de0919061575b565b6040516020818303038152906040528051906020012014612e695760405162461bcd60e51b815260206004820152603a60248201527f526573756c7420756e646572206368616c6c656e67652069732064696666657260448201527f656e74207468616e20746865207375626d6974746564206f6e650000000000006064820152608401610a77565b6001840154600985015460088601546040516373b33d5d60e11b81526001600160a01b039093169263e7667aba92612ea5928892600401615b69565b600060405180830381865afa925050508015612ee357506040513d6000823e601f3d908101601f19168201604052612ee09190810190615b8e565b60015b612f5857336001600160a01b031684600b01547f703feb01415a2995816e8d082fd7aad0eacada1a2f63fdb3226e47f8a0285436604051612f4b906020808252601390820152721d985b1a59185d1a5bdb881c995d995c9d1959606a1b604082015260600190565b60405180910390a3612fe7565b8115612f9e5760405162461bcd60e51b8152602060048201526015602482015274756e6a7573746966696564206368616c6c656e676560581b6044820152606401610a77565b336001600160a01b031686600b01547f703feb01415a2995816e8d082fd7aad0eacada1a2f63fdb3226e47f8a028543683604051612fdc91906150ff565b60405180910390a350505b600b8401549150612ffb60a0840184615c37565b613007600186356157b9565b8181106130165761301661538c565b905060200201602081019061302b9190615ae6565b905083600801544361303d91906157b9565b600a8501556000600b8501819055600c8501555b9250929050565b60048101545a1015610b6f5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f75676820657874726120676173206c656674000000000000006044820152606401610a77565b6000818152602083905260409020600101546130da5760405162461bcd60e51b8152600401610a7790615c80565b6000908152602091909152604081208181556001810182905560020155565b336001600160a01b0382166131505760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f722063616e206e6f74206265207a65726f20616464726573736044820152606401610a77565b6001600160a01b03818116600090815260018501602052604090205416156131d05760405162461bcd60e51b815260206004820152602d60248201527f4f70657261746f7220616c72656164792073657420666f72207468652073746160448201526c35b4b73390383937bb34b232b960991b6064820152608401610a77565b6001600160a01b038281166000908152600285016020526040902054161561323a5760405162461bcd60e51b815260206004820152601f60248201527f4f70657261746f72206164647265737320616c726561647920696e20757365006044820152606401610a77565b6001600160a01b038116600090815260038401602052604090208054600160601b90046001600160401b0316156132cd5760405162461bcd60e51b815260206004820152603160248201527f546865726520697320612070656e64696e6720617574686f72697a6174696f6e60448201527008191958dc99585cd9481c995c5d595cdd607a1b6064820152608401610a77565b826001600160a01b0316826001600160a01b03167fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c160405160405180910390a3506001600160a01b03908116600081815260018501602090815260408083208054959096166001600160a01b031995861681179096559482526002909501909452919092208054909216179055565b60606003613369846149fb565b600381111561337a5761337a615152565b146133c75760405162461bcd60e51b815260206004820152601e60248201527f43757272656e74207374617465206973206e6f74204348414c4c454e474500006044820152606401610a77565b6003830154600c8401546000916133dd91615784565b905080431161343a5760405162461bcd60e51b815260206004820152602360248201527f4368616c6c656e676520706572696f6420686173206e6f7420706173736564206044820152621e595d60ea1b6064820152608401610a77565b83600b015483604051602001613450919061575b565b60405160208183030381529060405280519060200120146134d95760405162461bcd60e51b815260206004820152603960248201527f526573756c7420756e64657220617070726f76616c206973206469666665726560448201527f6e74207468616e20746865207375626d6974746564206f6e65000000000000006064820152608401610a77565b83546000906001600160a01b0316638871ca5d6134f960a0870187615c37565b613505600189356157b9565b8181106135145761351461538c565b90506020020160208101906135299190615ae6565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa15801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358f9190615359565b9050336001600160a01b03821614806135b5575060068501546135b29083615784565b43115b6136335760405162461bcd60e51b815260206004820152604360248201527f4f6e6c792074686520444b4720726573756c74207375626d697474657220636160448201527f6e20617070726f76652074686520726573756c742061742074686973206d6f6d606482015262195b9d60ea1b608482015260a401610a77565b6136406040850185615c37565b90506001600160401b0381111561365957613659615376565b604051908082528060200260200182016040528015613682578160200160208202803683370190505b50925060005b6136956040860186615c37565b9050811015613749576136ab60a0860186615c37565b60016136ba6040890189615c37565b858181106136ca576136ca61538c565b90506020020160208101906136df9190615cd0565b6136e99190615ceb565b60ff168181106136fb576136fb61538c565b90506020020160208101906137109190615ae6565b8482815181106137225761372261538c565b63ffffffff9092166020928302919091019091015280613741816159c3565b915050613688565b50600b8501546040513391907fe6e9d5eba171e82025efb3f3d44fd35905e7283d104284cb9f3bbc5bf1e4276f90600090a3505092915050565b60008060008484604051613798929190615d04565b60405190819003902092506137b1602060008688615d14565b6137ba91615d3e565b91506137c98460208188615d14565b6137d291615d3e565b600084815260209890985260409097209586555060018501819055600290940185905594929392915050565b60006008820181905560098201819055600a8201819055600b8201819055600c820181905581546040805163a69df4b560e01b815290516001600160a01b039092169263a69df4b59260048084019382900301818387803b15801561134457600080fd5b6000600261386f836149fb565b600381111561388057613880615152565b14801561107957506005820154600a83015460088401546138a19190615784565b6138ab9190615784565b431192915050565b6001600160601b03811615806138d7575083546001600160601b0390811690821610155b6139415760405162461bcd60e51b815260206004820152603560248201527f417574686f72697a6174696f6e20616d6f756e742073686f756c642062652030604482015274206f722061626f766520746865206d696e696d756d60581b6064820152608401610a77565b6001600160a01b038084166000908152600186016020526040812054909116908161396d575042613977565b506001600160401b035b60006139838486615d5c565b6001600160a01b03871660009081526003890160205260409020805491925090600160601b90046001600160401b031680158015906139cb57506001600160401b0381811614155b15613a5e5788546139ec90600160a01b90046001600160401b031682615d7c565b6001600160401b0316421015613a5e5760405162461bcd60e51b815260206004820152603160248201527f4e6f7420656e6f7567682074696d65207061737365642073696e636520746865604482015270081bdc9a59da5b985b081c995c5d595cdd607a1b6064820152608401610a77565b81546001600160401b038516600160601b81026001600160a01b03199092166001600160601b0386811691909117929092178455604080518a8416815292891660208401528201526001600160a01b0386811691908a16907f545cbf267cef6fe43f11f6219417ab43a0e8e345adbaae5f626d9bc325e8535a9060600160405180910390a3505050505050505050565b6001613af9836149fb565b6003811115613b0a57613b0a615152565b14613b625760405162461bcd60e51b815260206004820152602260248201527f43757272656e74207374617465206973206e6f74204157414954494e475f5345604482015261115160f21b6064820152608401610a77565b60405181907fb2ad26c2940889d79df2ee9c758a8aefa00c5ca90eee119af0e5d795df3b98bb90600090a2436008830155600990910155565b6000613ba6826149fb565b6003811115613bb757613bb7615152565b14613bd45760405162461bcd60e51b8152600401610a7790615d9c565b6040517f5c3ed2397d4d21298b2fb5027ac8e2d42e3c9c72bbb55ddb030e2a36a0cdff6b90600090a1805460408051637c1e845d60e11b815290516001600160a01b039092169163f83d08ba9160048082019260009290919082900301818387803b158015613c4257600080fd5b505af1158015613c56573d6000803e3d6000fd5b5050505043816007018190555050565b6001600160a01b038116600090815260038401602052604090208054600160601b90046001600160401b0316613cea5760405162461bcd60e51b8152602060048201526024808201527f417574686f72697a6174696f6e206465637265617365206e6f742072657175656044820152631cdd195960e21b6064820152608401610a77565b805467fffffffffffffffe19600160601b9091046001600160401b031601613d695760405162461bcd60e51b815260206004820152602c60248201527f417574686f72697a6174696f6e2064656372656173652072657175657374206e60448201526b1bdd081858dd1a5d985d195960a21b6064820152608401610a77565b8054600160601b90046001600160401b0316421015613dda5760405162461bcd60e51b815260206004820152602760248201527f417574686f72697a6174696f6e2064656372656173652064656c6179206e6f74604482015266081c185cdcd95960ca1b6064820152608401610a77565b6040516001600160a01b038316907f50270a522c2fef97b6b7385c2aa4a4518adda681530e0a1fe9f5e840f6f2cd9d90600090a2604051633af0572d60e11b81526001600160a01b0383811660048301528416906375e0ae5a906024016020604051808303816000875af1158015613e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7a91906154b8565b50506001600160a01b031660009081526003909201602052506040902080546001600160a01b0319169055565b60006001613eb4836149fb565b6003811115613ec557613ec5615152565b1480156110795750600282015460078301546138ab9190615784565b60408114613f315760405162461bcd60e51b815260206004820181905260248201527f496e76616c6964206c656e677468206f6620746865207075626c6963206b65796044820152606401610a77565b60008282604051613f43929190615d04565b604080519182900390912060008181526020879052919091206001015490915015613fc85760405162461bcd60e51b815260206004820152602f60248201527f57616c6c657420776974682074686520676976656e207075626c6963206b657960448201526e20616c72656164792065786973747360881b6064820152608401610a77565b6000613fd76020828587615d14565b613fe091615d3e565b905080610e395760405162461bcd60e51b815260206004820152602260248201527f57616c6c6574207075626c6963206b6579206d757374206265206e6f6e2d7a65604482015261726f60f01b6064820152608401610a77565b6002614045836149fb565b600381111561405657614056615152565b146140af5760405162461bcd60e51b8152602060048201526024808201527f43757272656e74207374617465206973206e6f74204157414954494e475f524560448201526314d5531560e21b6064820152608401610a77565b6140b882613862565b156141055760405162461bcd60e51b815260206004820152601a60248201527f444b472074696d656f757420616c7265616479207061737365640000000000006044820152606401610a77565b81546040516307b8c36760e51b81523360048201526001600160a01b0390911690819063f7186ce090602401602060405180830381865afa15801561414e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141729190615b03565b6141ca5760405162461bcd60e51b815260206004820152602360248201527f5375626d6974746572206e6f7420696e2074686520736f72746974696f6e20706044820152621bdbdb60ea1b6064820152608401610a77565b336001600160a01b038216638871ca5d6141e760a0860186615c37565b6141f3600188356157b9565b8181106142025761420261538c565b90506020020160208101906142179190615ae6565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015614259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427d9190615359565b6001600160a01b0316146142d35760405162461bcd60e51b815260206004820152601a60248201527f556e6578706563746564207375626d697474657220696e6465780000000000006044820152606401610a77565b816040516020016142e4919061575b565b60408051601f19818403018152908290528051602090910120600b850181905543600c8601556009850154917f8e7fd4293d7db11807147d8890c287fad3396fbb09a4e92273fc7856076c153a9061433d90869061575b565b60405180910390a3505050565b6001600160a01b038116600090815260038401602052604081205461437d908590859085906001600160601b0316614d69565b949350505050565b6000614390836149fb565b60038111156143a1576143a1615152565b146143be5760405162461bcd60e51b8152600401610a7790615d9c565b600081116143de5760405162461bcd60e51b8152600401610a7790615dd3565b600290910155565b60006143f1836149fb565b600381111561440257614402615152565b1461441f5760405162461bcd60e51b8152600401610a7790615d9c565b6000811161443f5760405162461bcd60e51b8152600401610a7790615dd3565b600390910155565b6000614452836149fb565b600381111561446357614463615152565b146144805760405162461bcd60e51b8152600401610a7790615d9c565b600490910155565b6000614493836149fb565b60038111156144a4576144a4615152565b146144c15760405162461bcd60e51b8152600401610a7790615d9c565b600081116144e15760405162461bcd60e51b8152600401610a7790615dd3565b600590910155565b60006144f4836149fb565b600381111561450557614505615152565b146145225760405162461bcd60e51b8152600401610a7790615d9c565b6005820154811061459b5760405162461bcd60e51b815260206004820152603d60248201527f4e65772076616c75652073686f756c64206265206c657373207468616e20726560448201527f73756c74207375626d697373696f6e20706572696f64206c656e6774680000006064820152608401610a77565b600690910155565b60008181526020839052604081206001015481906145d35760405162461bcd60e51b8152600401610a7790615c80565b505060009081526020919091526040902060018101546002909101549091565b6000818152602083905260408120600101546146215760405162461bcd60e51b8152600401610a7790615c80565b506000908152602091909152604090205490565b6001600160a01b03811660009081526003830160205260408120805467fffffffffffffffe19600160601b9091046001600160401b031601614681576001600160401b03915050611079565b805442906001600160401b03600160601b9091048116908216116146c15781546146bc908290600160601b90046001600160401b0316615d7c565b6146c4565b60005b95945050505050565b81546001600160401b03909116600160601b0267ffffffffffffffff60601b19909116179055565b81546001600160401b03909116600160a01b0267ffffffffffffffff60a01b19909116179055565b61472681613ea7565b6147725760405162461bcd60e51b815260206004820152601f60248201527f4177616974696e67207365656420686173206e6f742074696d6564206f7574006044820152606401610a77565b6040517f68c52f05452e81639fa06f379aee3178cddee4725521fff886f244c99e868b5090600090a1610b6f816137fe565b60606000806147b385856145a3565b604080516020810193909352828101919091528051808303820181526060909201905295945050505050565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce80910161149d565b82546001600160a01b03161561489c5760405162461bcd60e51b815260206004820152602260248201527f536f72746974696f6e20506f6f6c206164647265737320616c72656164792073604482015261195d60f21b6064820152608401610a77565b60018301546001600160a01b0316156149015760405162461bcd60e51b815260206004820152602160248201527f444b472056616c696461746f72206164647265737320616c72656164792073656044820152601d60fa1b6064820152608401610a77565b82546001600160a01b03199081166001600160a01b03938416178455600190930180549093169116179055565b83546001600160601b03908116908216101561498c5760405162461bcd60e51b815260206004820152601f60248201527f417574686f72697a6174696f6e2062656c6f7720746865206d696e696d756d006044820152606401610a77565b6001600160a01b0383811660008181526001870160209081526040918290205482516001600160601b03888116825287169281019290925282519416938493927f87f9f9f59204f53d57a89a817c6083a17979cd0531791c91e18551a56e3cfdd7928290030190a35050505050565b805460408051632938b58d60e21b815290516000926001600160a01b03169163a4e2d6349160048083019260209291908290030181865afa158015614a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a689190615b03565b15614a8d5750600881015460019015614a8d5750600c81015460029015614a8d575060035b919050565b614a9b81613862565b614adf5760405162461bcd60e51b81526020600482015260156024820152741112d1c81a185cc81b9bdd081d1a5b5959081bdd5d605a1b6044820152606401610a77565b6040517f2852b3e178dd281713b041c3d90b4815bb55b7ec812931d1e8e8d8bb2ed72d3e90600090a1610b6f816137fe565b6001600160a01b03808216600090815260028601602052604081205490911680614b4d5760405162461bcd60e51b8152600401610a779061544c565b6001600160a01b038116600090815260038701602052604081208054909190614b84908990899086906001600160601b0316614d69565b6040516307b8c36760e51b81526001600160a01b0387811660048301529192509087169063f7186ce090602401602060405180830381865afa158015614bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bf29190615b03565b614c0a576001600160601b031615925061437d915050565b6040516304de824f60e41b81526001600160a01b03871690634de824f090614c389088908590600401615b20565b602060405180830381865afa158015614c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c799190615b03565b98975050505050505050565b600060606000846008015411614cdd5760405162461bcd60e51b815260206004820152601860248201527f444b4720686173206e6f74206265656e207374617274656400000000000000006044820152606401610a77565b6001840154600985015460088601546040516373b33d5d60e11b81526001600160a01b039093169263e7667aba92614d19928892600401615b69565b600060405180830381865afa158015614d36573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d5e9190810190615b8e565b915091509250929050565b604051637004922d60e11b81526001600160a01b038381166004830152306024830152600091829186169063e009245a90604401602060405180830381865afa158015614dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dde91906154b8565b90506000836001600160601b0316826001600160601b031611614e02576000614e0c565b614e0c8483615d5c565b87549091506001600160601b039081169082161015614e305760009250505061437d565b915061437d9050565b6001600160a01b0381168114610b6f57600080fd5b6001600160601b0381168114610b6f57600080fd5b600080600060608486031215614e7857600080fd5b8335614e8381614e39565b92506020840135614e9381614e4e565b91506040840135614ea381614e4e565b809150509250925092565b600060208284031215614ec057600080fd5b813561279c81614e39565b600060208284031215614edd57600080fd5b813561279c81614e4e565b600060208284031215614efa57600080fd5b81356001600160401b03811115614f1057600080fd5b820160e0818503121561279c57600080fd5b600060208284031215614f3457600080fd5b5035919050565b60008060408385031215614f4e57600080fd5b50508035926020909101359150565b600080600080600060a08688031215614f7557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008083601f840112614faa57600080fd5b5081356001600160401b03811115614fc157600080fd5b6020830191508360208260051b850101111561305157600080fd5b60008060008060608587031215614ff257600080fd5b84356001600160401b038082111561500957600080fd5b9086019060a0828903121561501d57600080fd5b909450602086013593506040860135908082111561503a57600080fd5b5061504787828801614f98565b95989497509550505050565b80356001600160401b0381168114614a8d57600080fd5b60008060006060848603121561507f57600080fd5b833561508a81614e4e565b925061509860208501615053565b91506150a660408501615053565b90509250925092565b60005b838110156150ca5781810151838201526020016150b2565b50506000910152565b600081518084526150eb8160208601602086016150af565b601f01601f19169290920160200192915050565b60208152600061279c60208301846150d3565b60008060006060848603121561512757600080fd5b833561513281614e39565b9250602084013561514281614e39565b91506040840135614ea381614e39565b634e487b7160e01b600052602160045260246000fd5b602081016004831061518a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060a087890312156151a957600080fd5b86356151b481614e4e565b95506020870135945060408701356151cb81614e39565b93506060870135925060808701356001600160401b038111156151ed57600080fd5b6151f989828a01614f98565b979a9699509497509295939492505050565b60008060008060006080868803121561522357600080fd5b8535945060208601356001600160401b0381111561524057600080fd5b61524c88828901614f98565b909550935050604086013561526081614e39565b949793965091946060013592915050565b600081518084526020808501945080840160005b838110156152a757815163ffffffff1687529582019590820190600101615285565b509495945050505050565b60208152600061279c6020830184615271565b821515815260406020820152600061437d60408301846150d3565b60208082526022908201527f43616c6c6572206973206e6f7420746865207374616b696e6720636f6e74726160408201526118dd60f21b606082015260800190565b6020808252601c908201527f43616c6c6572206973206e6f742074686520676f7665726e616e636500000000604082015260600190565b60006020828403121561536b57600080fd5b815161279c81614e39565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160601b038516815260208082018590526001600160a01b038481166040840152608060608401819052845190840181905260009285810192909160a0860190855b818110156154055785518416835294840194918401916001016153e7565b50909a9950505050505050505050565b6020808252601e908201527f43616c6c6572206973206e6f74207468652057616c6c6574204f776e65720000604082015260600190565b60208082526010908201526f2ab735b737bbb71037b832b930ba37b960811b604082015260600190565b60008060006060848603121561548b57600080fd5b835161549681614e39565b60208501519093506154a781614e39565b6040850151909250614ea381614e39565b6000602082840312156154ca57600080fd5b815161279c81614e4e565b6000808335601e198436030181126154ec57600080fd5b8301803591506001600160401b0382111561550657600080fd5b60200191503681900382131561305157600080fd5b6000808335601e1984360301811261553257600080fd5b83016020810192503590506001600160401b0381111561555157600080fd5b80360382131561305157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126155a057600080fd5b83016020810192503590506001600160401b038111156155bf57600080fd5b8060051b360382131561305157600080fd5b803560ff81168114614a8d57600080fd5b81835260006001600160fb1b038311156155fb57600080fd5b8260051b80836020870137939093016020019392505050565b63ffffffff81168114610b6f57600080fd5b8183526000602080850194508260005b858110156152a757813561564981615614565b63ffffffff1687529582019590820190600101615636565b80358252600060206156758184018461551b565b60e08387015261568960e087018284615560565b9150506156996040850185615589565b868303604088015280835290916000919084015b818310156156d55760ff6156c0856155d1565b168152928401926001929092019184016156ad565b6156e2606088018861551b565b9550935087810360608901526156f9818686615560565b94505050505061570c6080840184615589565b858303608087015261571f8382846155e2565b9250505061573060a0840184615589565b85830360a0870152615743838284615626565b9250505060c083013560c08501528091505092915050565b60208152600061279c6020830184615661565b634e487b7160e01b600052601160045260246000fd5b808201808211156110795761107961576e565b6040815260006157aa6040830185615271565b90508260208301529392505050565b818103818111156110795761107961576e565b60208152600061437d602083018486615626565b8015158114610b6f57600080fd5b60018060a01b038716815260a06020820152853560a082015260006158166020880188615589565b60a060c085015261582c610140850182846155e2565b915050604088013561583d816157e0565b151560e0840152615851606089018961551b565b609f19808685030161010087015261586a848385615560565b935061587960808c018c615589565b935091508086850301610120870152506158948383836155e2565b9250505082810360408401526158aa81886150d3565b905085606084015282810360808401526158c5818587615626565b9998505050505050505050565b604051601f8201601f191681016001600160401b03811182821017156158fa576158fa615376565b604052919050565b60006001600160401b0382111561591b5761591b615376565b5060051b60200190565b6000602080838503121561593857600080fd5b82516001600160401b0381111561594e57600080fd5b8301601f8101851361595f57600080fd5b805161597261596d82615902565b6158d2565b81815260059190911b8201830190838101908783111561599157600080fd5b928401925b828410156159b85783516159a981615614565b82529284019290840190615996565b979650505050505050565b6000600182016159d5576159d561576e565b5060010190565b6000602082840312156159ee57600080fd5b813561279c816157e0565b60208082526022908201527f496e76616c69642077616c6c6574206d656d62657273206964656e7469666965604082015261727360f01b606082015260800190565b60006020808385031215615a4e57600080fd5b82516001600160401b03811115615a6457600080fd5b8301601f81018513615a7557600080fd5b8051615a8361596d82615902565b81815260059190911b82018301908381019087831115615aa257600080fd5b928401925b828410156159b8578351615aba81614e39565b82529284019290840190615aa7565b600060208284031215615adb57600080fd5b815161279c81615614565b600060208284031215615af857600080fd5b813561279c81615614565b600060208284031215615b1557600080fd5b815161279c816157e0565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160401b03818116838216019080821115615b6257615b6261576e565b5092915050565b606081526000615b7c6060830186615661565b60208301949094525060400152919050565b60008060408385031215615ba157600080fd5b8251615bac816157e0565b60208401519092506001600160401b0380821115615bc957600080fd5b818501915085601f830112615bdd57600080fd5b815181811115615bef57615bef615376565b615c02601f8201601f19166020016158d2565b9150808252866020828501011115615c1957600080fd5b615c2a8160208401602086016150af565b5080925050509250929050565b6000808335601e19843603018112615c4e57600080fd5b8301803591506001600160401b03821115615c6857600080fd5b6020019150600581901b360382131561305157600080fd5b60208082526030908201527f57616c6c657420776974682074686520676976656e20494420686173206e6f7460408201526f081899595b881c9959da5cdd195c995960821b606082015260800190565b600060208284031215615ce257600080fd5b61279c826155d1565b60ff82811682821603908111156110795761107961576e565b8183823760009101908152919050565b60008085851115615d2457600080fd5b83861115615d3157600080fd5b5050820193919092039150565b8035602083101561107957600019602084900360031b1b1692915050565b6001600160601b03828116828216039080821115615b6257615b6261576e565b6001600160401b03828116828216039080821115615b6257615b6261576e565b60208082526019908201527f43757272656e74207374617465206973206e6f742049444c4500000000000000604082015260600190565b60208082526025908201527f4e65772076616c75652073686f756c642062652067726561746572207468616e604082015264207a65726f60d81b60608201526080019056fea2646970667358221220dd52292a16b552a8f59b2b23d682e4ced8af49e15cce16b8590816d8fcbe54c664736f6c63430008110033";
1931
+ var _bytecode = "0x60c06040523480156200001157600080fd5b50604051620060e4380380620060e4833981016040819052620000349162000134565b6001600160a01b03808316608052811660a0526200005162000059565b505062000173565b606454610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60645460ff908116101562000119576064805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013157600080fd5b50565b600080604083850312156200014857600080fd5b825162000155816200011b565b602084015190925062000168816200011b565b809150509250929050565b60805160a051615e876200025d600039600081816104ea01528181610a3a01528181610a8701528181610adb01528181610b2901528181610d4e01528181610f42015281816113ad015281816115e8015281816116ce01528181611f6a0152818161230401526126110152600081816107e601528181610aa801528181610afc01528181610b4a01528181610c6301528181610fde0152818161115201528181611338015281816118b1015281816119c401528181611df7015281816121a5015281816123a0015281816125910152818161263201528181612691015261276a0152615e876000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80637e0049fd116101e9578063c9bacaad1161010f578063df07ce59116100ad578063f0820c921161007c578063f0820c921461097e578063f7186ce01461098f578063f854a27f146109a2578063fd2a4788146109b557600080fd5b8063df07ce5914610922578063e03e453514610935578063e686440f1461094a578063e83ab3a51461095d57600080fd5b8063d38bfff4116100e9578063d38bfff4146108c8578063d855c631146108db578063d8dc404d146108e3578063ded56d45146108f657600080fd5b8063c9bacaad1461088d578063cc562388146108a0578063d0bcc0e3146108b557600080fd5b8063a04e298011610187578063c09975cd11610156578063c09975cd14610828578063c0c53b8b1461083b578063c7c49c981461084e578063c88e70f41461087a57600080fd5b8063a04e2980146107c6578063b13b55b2146107d9578063b54a2374146107e1578063b5e9ce8b1461080857600080fd5b806388a59590116101c357806388a595901461073a5780638dcbdf4a146107755780639879d19b146107885780639c9de0281461079b57600080fd5b80637e0049fd146106e55780637e33cba6146106f8578063830f9e021461070b57600080fd5b806352902301116102ce5780636c9ecd641161026c578063770124d31161023b578063770124d3146105f2578063789d392a146105fa5780637b14729e146106755780637b35b4e6146106d257600080fd5b80636c9ecd64146105b15780636febd464146105c457806372cc8c6d146105d757806375e0ae5a146105df57600080fd5b8063663032cd116102a8578063663032cd1461057057806368c34948146105835780636a7f7a901461058b5780636b5f2bff1461059e57600080fd5b8063529023011461052f5780635aa6e6751461054a5780635c5b38701461055d57600080fd5b8063227fd44f1161033b5780633682a450116103155780633682a450146104bf57806342d86693146104d25780634cf088d9146104e55780634d99f4731461050c57600080fd5b8063227fd44f146104865780633137676614610499578063343bb927146104ac57600080fd5b8063167f051711610377578063167f0517146104325780631ae879e81461043a5780631c5b07621461044e5780631d35fa631461046157600080fd5b806308aa090b1461039e57806314a85474146103f1578063153622b314610406575b600080fd5b6103a66109c8565b6040516103e89190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b60405180910390f35b6104046103ff366004614e9c565b610a2f565b005b6101065461041a906001600160a01b031681565b6040516001600160a01b0390911681526020016103e8565b610404610ad4565b6101055461041a906001600160a01b031681565b61040461045c366004614ee7565b610b22565b60fc546001600160601b03165b6040516001600160601b0390911681526020016103e8565b610404610494366004614f04565b610b72565b6104046104a7366004614f21565b610bf1565b6104046104ba366004614f5b565b610e79565b6104046104cd366004614ee7565b610edd565b6104046104e0366004614ee7565b610ee8565b61041a7f000000000000000000000000000000000000000000000000000000000000000081565b61051f61051a366004614f5b565b61109d565b60405190151581526020016103e8565b60fd5460fe54604080519283526020830191909152016103e8565b60005461041a906001600160a01b031681565b61040461056b366004614f21565b6110b8565b61040461057e366004614ee7565b6112ef565b61051f611391565b610404610599366004614e9c565b6113a2565b6104046105ac366004614ee7565b6113f7565b6104046105bf366004614f74565b611470565b6104046105d2366004614f74565b6114e2565b61040461154c565b6104046105ed366004614ee7565b6115e1565b61051f61160d565b610653610608366004614f5b565b60408051606080820183526000808352602080840182905292840181905293845260ca8252928290208251938401835280548452600181015491840191909152600201549082015290565b60408051825181526020808401519082015291810151908201526060016103e8565b6106a36065546001600160601b038116916001600160401b03600160601b8304811692600160a01b90041690565b604080516001600160601b0390941684526001600160401b0392831660208501529116908201526060016103e8565b6104046106e0366004614ee7565b611619565b6104046106f3366004614f21565b6116a1565b61046e610706366004614ee7565b6116c5565b61072c610719366004614f5b565b6101046020526000908152604090205481565b6040519081526020016103e8565b60ff5461010054610101546101025461010354604080519586526020860194909452928401919091526060830152608082015260a0016103e8565b610404610783366004614f96565b6116f3565b610404610796366004615015565b6117ab565b6107ae6107a9366004614ee7565b611b64565b6040516001600160401b0390911681526020016103e8565b6104046107d43660046150a3565b611b71565b610404611c23565b61041a7f000000000000000000000000000000000000000000000000000000000000000081565b61081b610816366004614f5b565b611c8a565b6040516103e89190615138565b60325461041a906001600160a01b031681565b61040461084936600461514b565b611c97565b61041a61085c366004614ee7565b6001600160a01b039081166000908152606660205260409020541690565b610404610888366004614f96565b611ecc565b61040461089b366004614e9c565b611f5f565b6108a8611fb4565b6040516103e891906151a1565b6104046108c3366004614ee7565b611fc0565b6104046108d6366004614ee7565b612039565b6104046120cd565b6104046108f13660046151c9565b61210a565b61041a610904366004614ee7565b6001600160a01b039081166000908152606760205260409020541690565b61051f610930366004615244565b61237c565b61093d61256d565b6040516103e891906152eb565b61051f610958366004614ee7565b612608565b61097061096b366004614f21565b612657565b6040516103e89291906152fe565b6065546001600160601b031661046e565b61051f61099d366004614ee7565b61266f565b61046e6109b0366004614ee7565b6126fe565b61046e6109c3366004614ee7565b6127dc565b6109fa6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b506040805160a0810182526099548152609a546020820152609b5491810191909152609c546060820152609d54608082015290565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a805760405162461bcd60e51b8152600401610a7790615319565b60405180910390fd5b610acf60657f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000868686612803565b505050565b610b2060657f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061296f565b565b610b6f60657f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612b49565b50565b6000546001600160a01b03163314610b9c5760405162461bcd60e51b8152600401610a779061535b565b60fc80546001600160601b0319166001600160601b0383169081179091556040519081527fe132b87eb6644ee4d4c3c32744f7e1c3906335a2d4f99330767bf573909c7d84906020015b60405180910390a150565b333214610c2a5760405162461bcd60e51b81526020600482015260076024820152664e6f7420454f4160c81b6044820152606401610a77565b600080610c38609784612d28565b604051638871ca5d60e01b815263ffffffff8216600482015291935091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638871ca5d90602401602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190615392565b6040805160018082528183019092529192506000919060208083019080368337019050506001600160a01b038084166000908152606760205260409020549192501681600081518110610d2357610d236153c5565b6001600160a01b03928316602091820292909201015260fc5460fd546040516383ddba8f60e01b81527f0000000000000000000000000000000000000000000000000000000000000000909316926383ddba8f92610d93926001600160601b0390911691339087906004016153db565b600060405180830381600087803b158015610dad57600080fd5b505af1925050508015610dbe575060015b610e175760fc54604080516001600160601b0390921682526001600160a01b038416602083015285917f14621289a12ab59e0737decc388bba91d929c723defb4682d5d19b9a12ecfecb910160405180910390a2610e68565b60fc54604080516001600160601b0390921682526001600160a01b038416602083015285917f88f76c659db78142f88e94db3ca791869495394c6c1b3d412ced9022dc97c9e3910160405180910390a25b610e726097613091565b5050505050565b610105546001600160a01b03163314610ea45760405162461bcd60e51b8152600401610a779061544e565b610eaf60ca826130e5565b60405181907fa6ae4af610b8ada39d3675190ead27a5552631a8e33f53e4e37dbb082f11a73e90600090a250565b610b6f606582613132565b6001600160a01b038181166000908152606660205260409020541680610f205760405162461bcd60e51b8152600401610a7790615485565b604051632de9480760e01b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690632de9480790602401606060405180830381865afa158015610f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faf91906154af565b50604051637104c0e560e11b81526001600160a01b0385811660048301528281166024830152919350600092507f00000000000000000000000000000000000000000000000000000000000000009091169063e20981ca906044016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d91906154f1565b6040516001600160601b03821681529091506001600160a01b038516907f38532b6dea69d7266fa923c7813d190be37625f2454ddfa3d93c45c79482e3fd9060200160405180910390a250505050565b600081815260ca602052604081206001015415155b92915050565b60005a905060006110ca609784613395565b9050600080806110ef60c08701356110e5602089018961550e565b60ca9291906137bc565b925092509250856040516020016111069190615794565b60405160208183030381529060405280519060200120837fbe8f27cef1f3d94120c9c547c3614f5b992fdb0c0a497cc920fde06546291ab460405160405180910390a38351156111de577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663942f68928560fe544261118e91906157bd565b6040518363ffffffff1660e01b81526004016111ab9291906157d0565b600060405180830381600087803b1580156111c557600080fd5b505af11580156111d9573d6000803e3d6000fd5b505050505b6101055460405163547d07a160e11b81526004810185905260248101849052604481018390526001600160a01b039091169063a8fa0f4290606401600060405180830381600087803b15801561123357600080fd5b505af1158015611247573d6000803e3d6000fd5b505050506112556097613837565b603254610100546001600160a01b0390911690637ad226dc905a61127990896157f2565b60ff5461128691906157bd565b61129091906157bd565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156112cf57600080fd5b505af11580156112e3573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b031633146113195760405162461bcd60e51b8152600401610a779061535b565b604051632a59250560e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a9649414906024015b600060405180830381600087803b15801561137d57600080fd5b505af1158015610e72573d6000803e3d6000fd5b600061139d609761389b565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113ea5760405162461bcd60e51b8152600401610a7790615319565b610acf60658484846138ec565b6000546001600160a01b031633146114215760405162461bcd60e51b8152600401610a779061535b565b61010680546001600160a01b0319166001600160a01b0383169081179091556040519081527f2b34e21b6daa8fcf8cba1c3ed709cbed2b0231d5fb60e9ccd8c2e75a5674bcb390602001610be6565b6000546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610a779061535b565b60fd82905560fe81905560408051838152602081018390527ff3a6ee10a78fb7d212e87d9be970fb16bd7324e9dc9c38d21cd7ecde781a1d2a91015b60405180910390a15050565b610106546001600160a01b0316331461153d5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f74207468652052616e646f6d20426561636f6e006044820152606401610a77565b611548609783613b27565b5050565b610105546001600160a01b031633146115775760405162461bcd60e51b8152600401610a779061544e565b6115816097613bd4565b610106546040516310da3b0360e21b81523060048201526001600160a01b0390911690634368ec0c90602401600060405180830381600087803b1580156115c757600080fd5b505af11580156115db573d6000803e3d6000fd5b50505050565b610b6f60657f000000000000000000000000000000000000000000000000000000000000000083613c9f565b600061139d6097613ee0565b6000546001600160a01b031633146116435760405162461bcd60e51b8152600401610a779061535b565b6040516001600160a01b03821681527f0e2d2343d31b085b7c4e56d1c8a6ec79f7ab07460386f1c9a1756239fe2533ac9060200160405180910390a1603280546001600160a01b0319166001600160a01b0392909216919091179055565b6116ba6116b1602083018361550e565b60ca9190613f1a565b610b6f609782614073565b60006110b260657f000000000000000000000000000000000000000000000000000000000000000084614383565b6000546001600160a01b0316331461171d5760405162461bcd60e51b8152600401610a779061535b565b6117286097866143be565b61173360978561441f565b61173e609784614480565b6117496097836144c1565b611754609782614522565b604080518681526020810186905290810184905260608101839052608081018290527f59ae8ed7b3a7e5f6dde4cff478f0ac0aa652c5edc4f4757b09a778a430b02c569060a0015b60405180910390a15050505050565b60005a8535600081815261010460205260409020549192509085146118025760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610a77565b60008061181060ca846145dc565b9092509050600061182260ca8561462c565b90508686604051602001611837929190615805565b6040516020818303038152906040528051906020012081146118935760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642067726f7570206d656d6265727360581b6044820152606401610a77565b600073__$c28dd63714b1a086d50ecbb702fff9dbb7$__63f4df04be7f00000000000000000000000000000000000000000000000000000000000000008c87876040516020016118ed929190918252602082015260400190565b6040516020818303038152906040528d8d8d6040518763ffffffff1660e01b815260040161192096959493929190615827565b600060405180830381865af415801561193d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611965919081019061595e565b600086815261010460205260408120805492935090611983836159fc565b9091555050604080518a815233602082015286917f326e1ff7c130ed708307116f79cf7dbca649503e7082e5e35a19ceeee1523b39910160405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663942f68928260fe5442611a0091906157bd565b6040518363ffffffff1660e01b8152600401611a1d9291906157d0565b600060405180830381600087803b158015611a3757600080fd5b505af1158015611a4b573d6000803e3d6000fd5b50611a609250505060608b0160408c01615a15565b15611ad35761010554604051631ee74c0960e11b81526004810187905260248101869052604481018590526001600160a01b0390911690633dce981290606401600060405180830381600087803b158015611aba57600080fd5b505af1158015611ace573d6000803e3d6000fd5b505050505b603254610101546001600160a01b0390911690637ad226dc905a611af7908a6157f2565b611b0191906157bd565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b158015611b4057600080fd5b505af1158015611b54573d6000803e3d6000fd5b5050505050505050505050505050565b60006110b260658361466e565b6000546001600160a01b03163314611b9b5760405162461bcd60e51b8152600401610a779061535b565b606580546001600160601b0319166001600160601b038516179055611bc1606583614706565b611bcc60658261472e565b604080516001600160601b03851681526001600160401b03848116602083015283168183015290517f544b726e42801bb47073854eeedae851903f66fe32a5bd24e626e10b90027b519181900360600190a1505050565b60005a9050611c326097614756565b603254610102546001600160a01b0390911690637ad226dc905a611c5690856157f2565b611c6091906157bd565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401611363565b60606110b260ca836147dd565b606454610100900460ff1615808015611cb75750606454600160ff909116105b80611cd15750303b158015611cd1575060645460ff166001145b611d345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a77565b6064805460ff191660011790558015611d57576064805461ff0019166101001790555b61010680546001600160a01b038086166001600160a01b0319928316179092556032805492851692909116919091179055611d9133614818565b606580546001600160601b031916690878678326eac9000000179055611dbb6065623b5380614706565b611dc96065623b538061472e565b60fc80546001600160601b0319166815af1d78b58c400000179055606460fd556212750060fe55611e1c60977f000000000000000000000000000000000000000000000000000000000000000086614872565b611e296097612d006143be565b611e366097612d0061441f565b611e43609761c350614480565b611e506097610a0f6144c1565b611e5c60976014614522565b62046cd060ff55620119406101005562016b4861010155611c52610102556108fc6101035580156115db576064805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b6000546001600160a01b03163314611ef65760405162461bcd60e51b8152600401610a779061535b565b60ff859055610100849055610101839055610102829055610103819055604080518681526020810186905290810184905260608101839052608081018290527f8a3e64fa6013a36bccca7362e8826b11ba41e57fb60f55309c0ca48904dad0829060a00161179c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611fa75760405162461bcd60e51b8152600401610a7790615319565b610acf6065848484614967565b600061139d6097614a34565b6000546001600160a01b03163314611fea5760405162461bcd60e51b8152600401610a779061535b565b61010580546001600160a01b0319166001600160a01b0383169081179091556040519081527fa1993af5a189ba5ad4155263c920cfee33ce0593a8eb231a13bb3ce6f39459e390602001610be6565b6000546001600160a01b031633146120635760405162461bcd60e51b8152600401610a779061535b565b6001600160a01b0381166120c45760405162461bcd60e51b815260206004820152602260248201527f4e657720676f7665726e616e636520697320746865207a65726f206164647265604482015261737360f01b6064820152608401610a77565b610b6f81614818565b60005a90506120dc6097614acb565b603254610103546001600160a01b0390911690637ad226dc905a61210090856157f2565b611c6091906157f2565b610105546001600160a01b031633146121355760405162461bcd60e51b8152600401610a779061544e565b600061214260ca8561462c565b90508282604051602001612157929190615805565b60405160208183030381529060405280519060200120811461218b5760405162461bcd60e51b8152600401610a7790615a32565b604051637bfcd47d60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f7f9a8fa906121dc9087908790600401615805565b600060405180830381865afa1580156121f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122219190810190615a74565b90506000836001600160401b0381111561223d5761223d6153af565b604051908082528060200260200182016040528015612266578160200160208202803683370190505b50905060005b82518110156122ec576122b083828151811061228a5761228a6153c5565b60200260200101516001600160a01b039081166000908152606760205260409020541690565b8282815181106122c2576122c26153c5565b6001600160a01b0390921660209283029190910190910152806122e4816159fc565b91505061226c565b506040516383ddba8f60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906383ddba8f9061233f908c908c908c9087906004016153db565b600060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b50505050505050505050505050565b604051635a48b46b60e01b81526001600160a01b03838116600483015260009182917f00000000000000000000000000000000000000000000000000000000000000001690635a48b46b90602401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b9190615b02565b90508063ffffffff166000036124635760405162461bcd60e51b815260206004820152601d60248201527f4e6f74206120736f72746974696f6e20706f6f6c206f70657261746f720000006044820152606401610a77565b600061247060ca8961462c565b90508686604051602001612485929190615805565b6040516020818303038152906040528051906020012081146124b95760405162461bcd60e51b8152600401610a7790615a32565b836001111580156124ca5750858411155b6125225760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206d656d62657220696e646578206973206f7574206f662072616044820152626e676560e81b6064820152608401610a77565b63ffffffff821687876125366001886157f2565b818110612545576125456153c5565b905060200201602081019061255a9190615b1f565b63ffffffff161498975050505050505050565b60a054604051636c2530b960e01b81526064600482015260248101919091526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636c2530b990604401600060405180830381865afa1580156125e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261139d919081019061595e565b60006110b260657f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000085614b4a565b60006060612666609784614cbe565b91509150915091565b6040516307b8c36760e51b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7186ce090602401602060405180830381865afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b29190615b3c565b600080612723836001600160a01b039081166000908152606660205260409020541690565b90506001600160a01b03811661274b5760405162461bcd60e51b8152600401610a7790615485565b60405163439f18fd60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063873e31fa90602401602060405180830381865afa1580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d591906154f1565b9392505050565b6001600160a01b0381166000908152606860205260408120546001600160601b03166110b2565b6001600160a01b038084166000908152600188016020526040902054168061282b5750612967565b6040516307b8c36760e51b81526001600160a01b03828116600483015286169063f7186ce090602401602060405180830381865afa158015612871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128959190615b3c565b1561296557846001600160a01b031663a4e2d6346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fc9190615b3c565b1561295957604080516001600160601b038086168252841660208201526001600160a01b0380841692908716917f1b09380d63e78fd72c1d79a805a7e2dfadf02b22418e24bebff51376b7df33b0910160405180910390a3612965565b61296587878784612b49565b505b505050505050565b3360008181526002850160205260409020546001600160a01b0316806129a75760405162461bcd60e51b8152600401610a7790615485565b6001600160a01b0381166000908152600386016020526040812080549091906129de908890889086906001600160601b0316614da2565b9050806001600160601b0316600003612a395760405162461bcd60e51b815260206004820152601f60248201527f417574686f72697a6174696f6e2062656c6f7720746865206d696e696d756d006044820152606401610a77565b836001600160a01b0316836001600160a01b03167f5075aaa89894a888eb2cac81a27320c60855febb0cf1706b66bdc754e640d43360405160405180910390a3604051630483483160e31b81526001600160a01b0386169063241a418890612aa79087908590600401615b59565b600060405180830381600087803b158015612ac157600080fd5b505af1158015612ad5573d6000803e3d6000fd5b5050835467fffffffffffffffe19600160601b9091046001600160401b03160191506129659050578654612b1990600160601b90046001600160401b031642615b7b565b82546001600160401b0391909116600160601b0267ffffffffffffffff60601b1990911617825550505050505050565b6001600160a01b0380821660009081526002860160205260409020541680612b835760405162461bcd60e51b8152600401610a7790615485565b6001600160a01b03808216600081815260038801602052604080822090519093861692917f1231fe5ee649a593b524a494cd53146a196380a872115a0d0fe16c0735afdf2691a36040516307b8c36760e51b81526001600160a01b03848116600483015285169063f7186ce090602401602060405180830381865afa158015612c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c349190615b3c565b15612cbb578054600090612c56908890889086906001600160601b0316614da2565b60405163dc7520c560e01b81529091506001600160a01b0386169063dc7520c590612c879087908590600401615b59565b600060405180830381600087803b158015612ca157600080fd5b505af1158015612cb5573d6000803e3d6000fd5b50505050505b805467fffffffffffffffe19600160601b9091046001600160401b031601612967578554612cf990600160601b90046001600160401b031642615b7b565b81546001600160401b0391909116600160601b0267ffffffffffffffff60601b19909116178155505050505050565b6000806003612d3685614a34565b6003811115612d4757612d4761518b565b14612d945760405162461bcd60e51b815260206004820152601e60248201527f43757272656e74207374617465206973206e6f74204348414c4c454e474500006044820152606401610a77565b6003840154600c850154612da891906157bd565b431115612e035760405162461bcd60e51b815260206004820152602360248201527f4368616c6c656e676520706572696f642068617320616c7265616479207061736044820152621cd95960ea1b6064820152608401610a77565b83600b015483604051602001612e199190615794565b6040516020818303038152906040528051906020012014612ea25760405162461bcd60e51b815260206004820152603a60248201527f526573756c7420756e646572206368616c6c656e67652069732064696666657260448201527f656e74207468616e20746865207375626d6974746564206f6e650000000000006064820152608401610a77565b6001840154600985015460088601546040516373b33d5d60e11b81526001600160a01b039093169263e7667aba92612ede928892600401615ba2565b600060405180830381865afa925050508015612f1c57506040513d6000823e601f3d908101601f19168201604052612f199190810190615bc7565b60015b612f9157336001600160a01b031684600b01547f703feb01415a2995816e8d082fd7aad0eacada1a2f63fdb3226e47f8a0285436604051612f84906020808252601390820152721d985b1a59185d1a5bdb881c995d995c9d1959606a1b604082015260600190565b60405180910390a3613020565b8115612fd75760405162461bcd60e51b8152602060048201526015602482015274756e6a7573746966696564206368616c6c656e676560581b6044820152606401610a77565b336001600160a01b031686600b01547f703feb01415a2995816e8d082fd7aad0eacada1a2f63fdb3226e47f8a0285436836040516130159190615138565b60405180910390a350505b600b840154915061303460a0840184615c70565b613040600186356157f2565b81811061304f5761304f6153c5565b90506020020160208101906130649190615b1f565b905083600801544361307691906157f2565b600a8501556000600b8501819055600c8501555b9250929050565b60048101545a1015610b6f5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f75676820657874726120676173206c656674000000000000006044820152606401610a77565b6000818152602083905260409020600101546131135760405162461bcd60e51b8152600401610a7790615cb9565b6000908152602091909152604081208181556001810182905560020155565b336001600160a01b0382166131895760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f722063616e206e6f74206265207a65726f20616464726573736044820152606401610a77565b6001600160a01b03818116600090815260018501602052604090205416156132095760405162461bcd60e51b815260206004820152602d60248201527f4f70657261746f7220616c72656164792073657420666f72207468652073746160448201526c35b4b73390383937bb34b232b960991b6064820152608401610a77565b6001600160a01b03828116600090815260028501602052604090205416156132735760405162461bcd60e51b815260206004820152601f60248201527f4f70657261746f72206164647265737320616c726561647920696e20757365006044820152606401610a77565b6001600160a01b038116600090815260038401602052604090208054600160601b90046001600160401b0316156133065760405162461bcd60e51b815260206004820152603160248201527f546865726520697320612070656e64696e6720617574686f72697a6174696f6e60448201527008191958dc99585cd9481c995c5d595cdd607a1b6064820152608401610a77565b826001600160a01b0316826001600160a01b03167fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c160405160405180910390a3506001600160a01b03908116600081815260018501602090815260408083208054959096166001600160a01b031995861681179096559482526002909501909452919092208054909216179055565b606060036133a284614a34565b60038111156133b3576133b361518b565b146134005760405162461bcd60e51b815260206004820152601e60248201527f43757272656e74207374617465206973206e6f74204348414c4c454e474500006044820152606401610a77565b6003830154600c840154600091613416916157bd565b90508043116134735760405162461bcd60e51b815260206004820152602360248201527f4368616c6c656e676520706572696f6420686173206e6f7420706173736564206044820152621e595d60ea1b6064820152608401610a77565b83600b0154836040516020016134899190615794565b60405160208183030381529060405280519060200120146135125760405162461bcd60e51b815260206004820152603960248201527f526573756c7420756e64657220617070726f76616c206973206469666665726560448201527f6e74207468616e20746865207375626d6974746564206f6e65000000000000006064820152608401610a77565b83546000906001600160a01b0316638871ca5d61353260a0870187615c70565b61353e600189356157f2565b81811061354d5761354d6153c5565b90506020020160208101906135629190615b1f565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa1580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c89190615392565b9050336001600160a01b03821614806135ee575060068501546135eb90836157bd565b43115b61366c5760405162461bcd60e51b815260206004820152604360248201527f4f6e6c792074686520444b4720726573756c74207375626d697474657220636160448201527f6e20617070726f76652074686520726573756c742061742074686973206d6f6d606482015262195b9d60ea1b608482015260a401610a77565b6136796040850185615c70565b90506001600160401b03811115613692576136926153af565b6040519080825280602002602001820160405280156136bb578160200160208202803683370190505b50925060005b6136ce6040860186615c70565b9050811015613782576136e460a0860186615c70565b60016136f36040890189615c70565b85818110613703576137036153c5565b90506020020160208101906137189190615d09565b6137229190615d24565b60ff16818110613734576137346153c5565b90506020020160208101906137499190615b1f565b84828151811061375b5761375b6153c5565b63ffffffff909216602092830291909101909101528061377a816159fc565b9150506136c1565b50600b8501546040513391907fe6e9d5eba171e82025efb3f3d44fd35905e7283d104284cb9f3bbc5bf1e4276f90600090a3505092915050565b600080600084846040516137d1929190615d3d565b60405190819003902092506137ea602060008688615d4d565b6137f391615d77565b91506138028460208188615d4d565b61380b91615d77565b600084815260209890985260409097209586555060018501819055600290940185905594929392915050565b60006008820181905560098201819055600a8201819055600b8201819055600c820181905581546040805163a69df4b560e01b815290516001600160a01b039092169263a69df4b59260048084019382900301818387803b15801561137d57600080fd5b600060026138a883614a34565b60038111156138b9576138b961518b565b1480156110b257506005820154600a83015460088401546138da91906157bd565b6138e491906157bd565b431192915050565b6001600160601b0381161580613910575083546001600160601b0390811690821610155b61397a5760405162461bcd60e51b815260206004820152603560248201527f417574686f72697a6174696f6e20616d6f756e742073686f756c642062652030604482015274206f722061626f766520746865206d696e696d756d60581b6064820152608401610a77565b6001600160a01b03808416600090815260018601602052604081205490911690816139a65750426139b0565b506001600160401b035b60006139bc8486615d95565b6001600160a01b03871660009081526003890160205260409020805491925090600160601b90046001600160401b03168015801590613a0457506001600160401b0381811614155b15613a97578854613a2590600160a01b90046001600160401b031682615db5565b6001600160401b0316421015613a975760405162461bcd60e51b815260206004820152603160248201527f4e6f7420656e6f7567682074696d65207061737365642073696e636520746865604482015270081bdc9a59da5b985b081c995c5d595cdd607a1b6064820152608401610a77565b81546001600160401b038516600160601b81026001600160a01b03199092166001600160601b0386811691909117929092178455604080518a8416815292891660208401528201526001600160a01b0386811691908a16907f545cbf267cef6fe43f11f6219417ab43a0e8e345adbaae5f626d9bc325e8535a9060600160405180910390a3505050505050505050565b6001613b3283614a34565b6003811115613b4357613b4361518b565b14613b9b5760405162461bcd60e51b815260206004820152602260248201527f43757272656e74207374617465206973206e6f74204157414954494e475f5345604482015261115160f21b6064820152608401610a77565b60405181907fb2ad26c2940889d79df2ee9c758a8aefa00c5ca90eee119af0e5d795df3b98bb90600090a2436008830155600990910155565b6000613bdf82614a34565b6003811115613bf057613bf061518b565b14613c0d5760405162461bcd60e51b8152600401610a7790615dd5565b6040517f5c3ed2397d4d21298b2fb5027ac8e2d42e3c9c72bbb55ddb030e2a36a0cdff6b90600090a1805460408051637c1e845d60e11b815290516001600160a01b039092169163f83d08ba9160048082019260009290919082900301818387803b158015613c7b57600080fd5b505af1158015613c8f573d6000803e3d6000fd5b5050505043816007018190555050565b6001600160a01b038116600090815260038401602052604090208054600160601b90046001600160401b0316613d235760405162461bcd60e51b8152602060048201526024808201527f417574686f72697a6174696f6e206465637265617365206e6f742072657175656044820152631cdd195960e21b6064820152608401610a77565b805467fffffffffffffffe19600160601b9091046001600160401b031601613da25760405162461bcd60e51b815260206004820152602c60248201527f417574686f72697a6174696f6e2064656372656173652072657175657374206e60448201526b1bdd081858dd1a5d985d195960a21b6064820152608401610a77565b8054600160601b90046001600160401b0316421015613e135760405162461bcd60e51b815260206004820152602760248201527f417574686f72697a6174696f6e2064656372656173652064656c6179206e6f74604482015266081c185cdcd95960ca1b6064820152608401610a77565b6040516001600160a01b038316907f50270a522c2fef97b6b7385c2aa4a4518adda681530e0a1fe9f5e840f6f2cd9d90600090a2604051633af0572d60e11b81526001600160a01b0383811660048301528416906375e0ae5a906024016020604051808303816000875af1158015613e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb391906154f1565b50506001600160a01b031660009081526003909201602052506040902080546001600160a01b0319169055565b60006001613eed83614a34565b6003811115613efe57613efe61518b565b1480156110b25750600282015460078301546138e491906157bd565b60408114613f6a5760405162461bcd60e51b815260206004820181905260248201527f496e76616c6964206c656e677468206f6620746865207075626c6963206b65796044820152606401610a77565b60008282604051613f7c929190615d3d565b6040805191829003909120600081815260208790529190912060010154909150156140015760405162461bcd60e51b815260206004820152602f60248201527f57616c6c657420776974682074686520676976656e207075626c6963206b657960448201526e20616c72656164792065786973747360881b6064820152608401610a77565b60006140106020828587615d4d565b61401991615d77565b905080610e725760405162461bcd60e51b815260206004820152602260248201527f57616c6c6574207075626c6963206b6579206d757374206265206e6f6e2d7a65604482015261726f60f01b6064820152608401610a77565b600261407e83614a34565b600381111561408f5761408f61518b565b146140e85760405162461bcd60e51b8152602060048201526024808201527f43757272656e74207374617465206973206e6f74204157414954494e475f524560448201526314d5531560e21b6064820152608401610a77565b6140f18261389b565b1561413e5760405162461bcd60e51b815260206004820152601a60248201527f444b472074696d656f757420616c7265616479207061737365640000000000006044820152606401610a77565b81546040516307b8c36760e51b81523360048201526001600160a01b0390911690819063f7186ce090602401602060405180830381865afa158015614187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ab9190615b3c565b6142035760405162461bcd60e51b815260206004820152602360248201527f5375626d6974746572206e6f7420696e2074686520736f72746974696f6e20706044820152621bdbdb60ea1b6064820152608401610a77565b336001600160a01b038216638871ca5d61422060a0860186615c70565b61422c600188356157f2565b81811061423b5761423b6153c5565b90506020020160208101906142509190615b1f565b6040516001600160e01b031960e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015614292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b69190615392565b6001600160a01b03161461430c5760405162461bcd60e51b815260206004820152601a60248201527f556e6578706563746564207375626d697474657220696e6465780000000000006044820152606401610a77565b8160405160200161431d9190615794565b60408051601f19818403018152908290528051602090910120600b850181905543600c8601556009850154917f8e7fd4293d7db11807147d8890c287fad3396fbb09a4e92273fc7856076c153a90614376908690615794565b60405180910390a3505050565b6001600160a01b03811660009081526003840160205260408120546143b6908590859085906001600160601b0316614da2565b949350505050565b60006143c983614a34565b60038111156143da576143da61518b565b146143f75760405162461bcd60e51b8152600401610a7790615dd5565b600081116144175760405162461bcd60e51b8152600401610a7790615e0c565b600290910155565b600061442a83614a34565b600381111561443b5761443b61518b565b146144585760405162461bcd60e51b8152600401610a7790615dd5565b600081116144785760405162461bcd60e51b8152600401610a7790615e0c565b600390910155565b600061448b83614a34565b600381111561449c5761449c61518b565b146144b95760405162461bcd60e51b8152600401610a7790615dd5565b600490910155565b60006144cc83614a34565b60038111156144dd576144dd61518b565b146144fa5760405162461bcd60e51b8152600401610a7790615dd5565b6000811161451a5760405162461bcd60e51b8152600401610a7790615e0c565b600590910155565b600061452d83614a34565b600381111561453e5761453e61518b565b1461455b5760405162461bcd60e51b8152600401610a7790615dd5565b600582015481106145d45760405162461bcd60e51b815260206004820152603d60248201527f4e65772076616c75652073686f756c64206265206c657373207468616e20726560448201527f73756c74207375626d697373696f6e20706572696f64206c656e6774680000006064820152608401610a77565b600690910155565b600081815260208390526040812060010154819061460c5760405162461bcd60e51b8152600401610a7790615cb9565b505060009081526020919091526040902060018101546002909101549091565b60008181526020839052604081206001015461465a5760405162461bcd60e51b8152600401610a7790615cb9565b506000908152602091909152604090205490565b6001600160a01b03811660009081526003830160205260408120805467fffffffffffffffe19600160601b9091046001600160401b0316016146ba576001600160401b039150506110b2565b805442906001600160401b03600160601b9091048116908216116146fa5781546146f5908290600160601b90046001600160401b0316615db5565b6146fd565b60005b95945050505050565b81546001600160401b03909116600160601b0267ffffffffffffffff60601b19909116179055565b81546001600160401b03909116600160a01b0267ffffffffffffffff60a01b19909116179055565b61475f81613ee0565b6147ab5760405162461bcd60e51b815260206004820152601f60248201527f4177616974696e67207365656420686173206e6f742074696d6564206f7574006044820152606401610a77565b6040517f68c52f05452e81639fa06f379aee3178cddee4725521fff886f244c99e868b5090600090a1610b6f81613837565b60606000806147ec85856145dc565b604080516020810193909352828101919091528051808303820181526060909201905295945050505050565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce8091016114d6565b82546001600160a01b0316156148d55760405162461bcd60e51b815260206004820152602260248201527f536f72746974696f6e20506f6f6c206164647265737320616c72656164792073604482015261195d60f21b6064820152608401610a77565b60018301546001600160a01b03161561493a5760405162461bcd60e51b815260206004820152602160248201527f444b472056616c696461746f72206164647265737320616c72656164792073656044820152601d60fa1b6064820152608401610a77565b82546001600160a01b03199081166001600160a01b03938416178455600190930180549093169116179055565b83546001600160601b0390811690821610156149c55760405162461bcd60e51b815260206004820152601f60248201527f417574686f72697a6174696f6e2062656c6f7720746865206d696e696d756d006044820152606401610a77565b6001600160a01b0383811660008181526001870160209081526040918290205482516001600160601b03888116825287169281019290925282519416938493927f87f9f9f59204f53d57a89a817c6083a17979cd0531791c91e18551a56e3cfdd7928290030190a35050505050565b805460408051632938b58d60e21b815290516000926001600160a01b03169163a4e2d6349160048083019260209291908290030181865afa158015614a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa19190615b3c565b15614ac65750600881015460019015614ac65750600c81015460029015614ac6575060035b919050565b614ad48161389b565b614b185760405162461bcd60e51b81526020600482015260156024820152741112d1c81a185cc81b9bdd081d1a5b5959081bdd5d605a1b6044820152606401610a77565b6040517f2852b3e178dd281713b041c3d90b4815bb55b7ec812931d1e8e8d8bb2ed72d3e90600090a1610b6f81613837565b6001600160a01b03808216600090815260028601602052604081205490911680614b865760405162461bcd60e51b8152600401610a7790615485565b6001600160a01b038116600090815260038701602052604081208054909190614bbd908990899086906001600160601b0316614da2565b6040516307b8c36760e51b81526001600160a01b0387811660048301529192509087169063f7186ce090602401602060405180830381865afa158015614c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c2b9190615b3c565b614c43576001600160601b03161592506143b6915050565b6040516304de824f60e41b81526001600160a01b03871690634de824f090614c719088908590600401615b59565b602060405180830381865afa158015614c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cb29190615b3c565b98975050505050505050565b600060606000846008015411614d165760405162461bcd60e51b815260206004820152601860248201527f444b4720686173206e6f74206265656e207374617274656400000000000000006044820152606401610a77565b6001840154600985015460088601546040516373b33d5d60e11b81526001600160a01b039093169263e7667aba92614d52928892600401615ba2565b600060405180830381865afa158015614d6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d979190810190615bc7565b915091509250929050565b604051637004922d60e11b81526001600160a01b038381166004830152306024830152600091829186169063e009245a90604401602060405180830381865afa158015614df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e1791906154f1565b90506000836001600160601b0316826001600160601b031611614e3b576000614e45565b614e458483615d95565b87549091506001600160601b039081169082161015614e69576000925050506143b6565b91506143b69050565b6001600160a01b0381168114610b6f57600080fd5b6001600160601b0381168114610b6f57600080fd5b600080600060608486031215614eb157600080fd5b8335614ebc81614e72565b92506020840135614ecc81614e87565b91506040840135614edc81614e87565b809150509250925092565b600060208284031215614ef957600080fd5b81356127d581614e72565b600060208284031215614f1657600080fd5b81356127d581614e87565b600060208284031215614f3357600080fd5b81356001600160401b03811115614f4957600080fd5b820160e081850312156127d557600080fd5b600060208284031215614f6d57600080fd5b5035919050565b60008060408385031215614f8757600080fd5b50508035926020909101359150565b600080600080600060a08688031215614fae57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008083601f840112614fe357600080fd5b5081356001600160401b03811115614ffa57600080fd5b6020830191508360208260051b850101111561308a57600080fd5b6000806000806060858703121561502b57600080fd5b84356001600160401b038082111561504257600080fd5b9086019060a0828903121561505657600080fd5b909450602086013593506040860135908082111561507357600080fd5b5061508087828801614fd1565b95989497509550505050565b80356001600160401b0381168114614ac657600080fd5b6000806000606084860312156150b857600080fd5b83356150c381614e87565b92506150d16020850161508c565b91506150df6040850161508c565b90509250925092565b60005b838110156151035781810151838201526020016150eb565b50506000910152565b600081518084526151248160208601602086016150e8565b601f01601f19169290920160200192915050565b6020815260006127d5602083018461510c565b60008060006060848603121561516057600080fd5b833561516b81614e72565b9250602084013561517b81614e72565b91506040840135614edc81614e72565b634e487b7160e01b600052602160045260246000fd5b60208101600483106151c357634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060008060a087890312156151e257600080fd5b86356151ed81614e87565b955060208701359450604087013561520481614e72565b93506060870135925060808701356001600160401b0381111561522657600080fd5b61523289828a01614fd1565b979a9699509497509295939492505050565b60008060008060006080868803121561525c57600080fd5b8535945060208601356001600160401b0381111561527957600080fd5b61528588828901614fd1565b909550935050604086013561529981614e72565b949793965091946060013592915050565b600081518084526020808501945080840160005b838110156152e057815163ffffffff16875295820195908201906001016152be565b509495945050505050565b6020815260006127d560208301846152aa565b82151581526040602082015260006143b6604083018461510c565b60208082526022908201527f43616c6c6572206973206e6f7420746865207374616b696e6720636f6e74726160408201526118dd60f21b606082015260800190565b6020808252601c908201527f43616c6c6572206973206e6f742074686520676f7665726e616e636500000000604082015260600190565b6000602082840312156153a457600080fd5b81516127d581614e72565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160601b038516815260208082018590526001600160a01b038481166040840152608060608401819052845190840181905260009285810192909160a0860190855b8181101561543e578551841683529484019491840191600101615420565b50909a9950505050505050505050565b6020808252601e908201527f43616c6c6572206973206e6f74207468652057616c6c6574204f776e65720000604082015260600190565b60208082526010908201526f2ab735b737bbb71037b832b930ba37b960811b604082015260600190565b6000806000606084860312156154c457600080fd5b83516154cf81614e72565b60208501519093506154e081614e72565b6040850151909250614edc81614e72565b60006020828403121561550357600080fd5b81516127d581614e87565b6000808335601e1984360301811261552557600080fd5b8301803591506001600160401b0382111561553f57600080fd5b60200191503681900382131561308a57600080fd5b6000808335601e1984360301811261556b57600080fd5b83016020810192503590506001600160401b0381111561558a57600080fd5b80360382131561308a57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126155d957600080fd5b83016020810192503590506001600160401b038111156155f857600080fd5b8060051b360382131561308a57600080fd5b803560ff81168114614ac657600080fd5b81835260006001600160fb1b0383111561563457600080fd5b8260051b80836020870137939093016020019392505050565b63ffffffff81168114610b6f57600080fd5b8183526000602080850194508260005b858110156152e05781356156828161564d565b63ffffffff168752958201959082019060010161566f565b80358252600060206156ae81840184615554565b60e0838701526156c260e087018284615599565b9150506156d260408501856155c2565b868303604088015280835290916000919084015b8183101561570e5760ff6156f98561560a565b168152928401926001929092019184016156e6565b61571b6060880188615554565b955093508781036060890152615732818686615599565b94505050505061574560808401846155c2565b858303608087015261575883828461561b565b9250505061576960a08401846155c2565b85830360a087015261577c83828461565f565b9250505060c083013560c08501528091505092915050565b6020815260006127d5602083018461569a565b634e487b7160e01b600052601160045260246000fd5b808201808211156110b2576110b26157a7565b6040815260006157e360408301856152aa565b90508260208301529392505050565b818103818111156110b2576110b26157a7565b6020815260006143b660208301848661565f565b8015158114610b6f57600080fd5b60018060a01b038716815260a06020820152853560a0820152600061584f60208801886155c2565b60a060c08501526158656101408501828461561b565b915050604088013561587681615819565b151560e084015261588a6060890189615554565b609f1980868503016101008701526158a3848385615599565b93506158b260808c018c6155c2565b935091508086850301610120870152506158cd83838361561b565b9250505082810360408401526158e3818861510c565b905085606084015282810360808401526158fe81858761565f565b9998505050505050505050565b604051601f8201601f191681016001600160401b0381118282101715615933576159336153af565b604052919050565b60006001600160401b03821115615954576159546153af565b5060051b60200190565b6000602080838503121561597157600080fd5b82516001600160401b0381111561598757600080fd5b8301601f8101851361599857600080fd5b80516159ab6159a68261593b565b61590b565b81815260059190911b820183019083810190878311156159ca57600080fd5b928401925b828410156159f15783516159e28161564d565b825292840192908401906159cf565b979650505050505050565b600060018201615a0e57615a0e6157a7565b5060010190565b600060208284031215615a2757600080fd5b81356127d581615819565b60208082526022908201527f496e76616c69642077616c6c6574206d656d62657273206964656e7469666965604082015261727360f01b606082015260800190565b60006020808385031215615a8757600080fd5b82516001600160401b03811115615a9d57600080fd5b8301601f81018513615aae57600080fd5b8051615abc6159a68261593b565b81815260059190911b82018301908381019087831115615adb57600080fd5b928401925b828410156159f1578351615af381614e72565b82529284019290840190615ae0565b600060208284031215615b1457600080fd5b81516127d58161564d565b600060208284031215615b3157600080fd5b81356127d58161564d565b600060208284031215615b4e57600080fd5b81516127d581615819565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160401b03818116838216019080821115615b9b57615b9b6157a7565b5092915050565b606081526000615bb5606083018661569a565b60208301949094525060400152919050565b60008060408385031215615bda57600080fd5b8251615be581615819565b60208401519092506001600160401b0380821115615c0257600080fd5b818501915085601f830112615c1657600080fd5b815181811115615c2857615c286153af565b615c3b601f8201601f191660200161590b565b9150808252866020828501011115615c5257600080fd5b615c638160208401602086016150e8565b5080925050509250929050565b6000808335601e19843603018112615c8757600080fd5b8301803591506001600160401b03821115615ca157600080fd5b6020019150600581901b360382131561308a57600080fd5b60208082526030908201527f57616c6c657420776974682074686520676976656e20494420686173206e6f7460408201526f081899595b881c9959da5cdd195c995960821b606082015260800190565b600060208284031215615d1b57600080fd5b6127d58261560a565b60ff82811682821603908111156110b2576110b26157a7565b8183823760009101908152919050565b60008085851115615d5d57600080fd5b83861115615d6a57600080fd5b5050820193919092039150565b803560208310156110b257600019602084900360031b1b1692915050565b6001600160601b03828116828216039080821115615b9b57615b9b6157a7565b6001600160401b03828116828216039080821115615b9b57615b9b6157a7565b60208082526019908201527f43757272656e74207374617465206973206e6f742049444c4500000000000000604082015260600190565b60208082526025908201527f4e65772076616c75652073686f756c642062652067726561746572207468616e604082015264207a65726f60d81b60608201526080019056fea26469706673582212206ecea0068e54294f1e3ec4488ca9b34a6f29837149cb06a9dc7e5389152e247c64736f6c63430008110033";
1932
1932
  var isSuperArgs = function (xs) {
1933
1933
  return (typeof xs[0] === "string" ||
1934
1934
  Array.isArray(xs[0]) ||
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IApproveAndCall__factory = exports.ERC20WithPermit__factory = exports.IERC165__factory = exports.ERC165__factory = exports.IERC721Receiver__factory = exports.IERC721__factory = exports.IERC721Metadata__factory = exports.ERC721__factory = exports.IERC20__factory = exports.IERC20Metadata__factory = exports.IERC20Permit__factory = exports.TransparentUpgradeableProxy__factory = exports.ProxyAdmin__factory = exports.Proxy__factory = exports.ERC1967Upgrade__factory = exports.ERC1967Proxy__factory = exports.IBeacon__factory = exports.IERC1822Proxiable__factory = exports.Ownable__factory = exports.IERC165Upgradeable__factory = exports.EIP712Upgradeable__factory = exports.ContextUpgradeable__factory = exports.IERC721Upgradeable__factory = exports.IERC20Upgradeable__factory = exports.IERC20MetadataUpgradeable__factory = exports.ERC20BurnableUpgradeable__factory = exports.IERC20PermitUpgradeable__factory = exports.ERC20PermitUpgradeable__factory = exports.ERC20Upgradeable__factory = exports.ReentrancyGuardUpgradeable__factory = exports.PausableUpgradeable__factory = exports.Initializable__factory = exports.OwnableUpgradeable__factory = exports.SortitionTree__factory = exports.SortitionPool__factory = exports.Rewards__factory = exports.Chaosnet__factory = exports.ReimbursementPool__factory = exports.Reimbursable__factory = exports.Governable__factory = exports.IRandomBeaconConsumer__factory = exports.IRandomBeacon__factory = exports.WalletRegistry__factory = exports.EcdsaInactivity__factory = exports.EcdsaDkg__factory = exports.EcdsaAuthorization__factory = exports.EcdsaDkgValidator__factory = exports.IWalletRegistry__factory = exports.IWalletOwner__factory = exports.BTCUtils__factory = void 0;
4
- exports.TBTCVault__factory = exports.TBTCOptimisticMinting__factory = exports.IVault__factory = exports.DonationVault__factory = exports.TBTC__factory = exports.WormholeBridgeStub__factory = exports.TestERC721__factory = exports.TestERC20__factory = exports.TestEcdsaLib__factory = exports.SystemTestRelay__factory = exports.SepoliaLightRelay__factory = exports.ReceiveApprovalStub__factory = exports.LightRelayStub__factory = exports.HeartbeatStub__factory = exports.GoerliLightRelay__factory = exports.BridgeStub__factory = exports.BankStub__factory = exports.LightRelayMaintainerProxy__factory = exports.LightRelay__factory = exports.ILightRelay__factory = exports.MaintainerProxy__factory = exports.L2WormholeGateway__factory = exports.IWormholeTokenBridge__factory = exports.L2TBTC__factory = exports.Wallets__factory = exports.WalletCoordinator__factory = exports.VendingMachineV3__factory = exports.VendingMachineV2__factory = exports.VendingMachine__factory = exports.Redemption__factory = exports.MovingFunds__factory = exports.IRelay__factory = exports.Fraud__factory = exports.DepositSweep__factory = exports.Deposit__factory = exports.BridgeState__factory = exports.BridgeGovernanceParameters__factory = exports.BridgeGovernance__factory = exports.Bridge__factory = exports.IReceiveBalanceApproval__factory = exports.Bank__factory = exports.IStaking__factory = exports.IApplication__factory = exports.MisfundRecovery__factory = exports.IReceiveApproval__factory = exports.IERC20WithPermit__factory = void 0;
4
+ exports.TBTCVault__factory = exports.TBTCOptimisticMinting__factory = exports.IVault__factory = exports.DonationVault__factory = exports.TBTC__factory = exports.WormholeBridgeStub__factory = exports.TestERC721__factory = exports.TestERC20__factory = exports.TestEcdsaLib__factory = exports.SystemTestRelay__factory = exports.SepoliaLightRelay__factory = exports.ReceiveApprovalStub__factory = exports.LightRelayStub__factory = exports.HeartbeatStub__factory = exports.GoerliLightRelay__factory = exports.BridgeStub__factory = exports.BankStub__factory = exports.LightRelayMaintainerProxy__factory = exports.LightRelay__factory = exports.ILightRelay__factory = exports.MaintainerProxy__factory = exports.L2WormholeGateway__factory = exports.IWormholeTokenBridge__factory = exports.L2TBTC__factory = exports.Wallets__factory = exports.WalletProposalValidator__factory = exports.VendingMachineV3__factory = exports.VendingMachineV2__factory = exports.VendingMachine__factory = exports.Redemption__factory = exports.MovingFunds__factory = exports.IRelay__factory = exports.Fraud__factory = exports.DepositSweep__factory = exports.Deposit__factory = exports.BridgeState__factory = exports.BridgeGovernanceParameters__factory = exports.BridgeGovernance__factory = exports.Bridge__factory = exports.IReceiveBalanceApproval__factory = exports.Bank__factory = exports.IStaking__factory = exports.IApplication__factory = exports.MisfundRecovery__factory = exports.IReceiveApproval__factory = exports.IERC20WithPermit__factory = void 0;
5
5
  var BTCUtils__factory_1 = require("./factories/BTCUtils__factory");
6
6
  Object.defineProperty(exports, "BTCUtils__factory", { enumerable: true, get: function () { return BTCUtils__factory_1.BTCUtils__factory; } });
7
7
  var IWalletOwner__factory_1 = require("./factories/IWalletOwner__factory");
@@ -142,8 +142,8 @@ var VendingMachineV2__factory_1 = require("./factories/VendingMachineV2__factory
142
142
  Object.defineProperty(exports, "VendingMachineV2__factory", { enumerable: true, get: function () { return VendingMachineV2__factory_1.VendingMachineV2__factory; } });
143
143
  var VendingMachineV3__factory_1 = require("./factories/VendingMachineV3__factory");
144
144
  Object.defineProperty(exports, "VendingMachineV3__factory", { enumerable: true, get: function () { return VendingMachineV3__factory_1.VendingMachineV3__factory; } });
145
- var WalletCoordinator__factory_1 = require("./factories/WalletCoordinator__factory");
146
- Object.defineProperty(exports, "WalletCoordinator__factory", { enumerable: true, get: function () { return WalletCoordinator__factory_1.WalletCoordinator__factory; } });
145
+ var WalletProposalValidator__factory_1 = require("./factories/WalletProposalValidator__factory");
146
+ Object.defineProperty(exports, "WalletProposalValidator__factory", { enumerable: true, get: function () { return WalletProposalValidator__factory_1.WalletProposalValidator__factory; } });
147
147
  var Wallets__factory_1 = require("./factories/Wallets__factory");
148
148
  Object.defineProperty(exports, "Wallets__factory", { enumerable: true, get: function () { return Wallets__factory_1.Wallets__factory; } });
149
149
  var L2TBTC__factory_1 = require("./factories/L2TBTC__factory");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keep-network/tbtc-v2",
3
- "version": "1.6.0-dev.5+main.f78fe3808733a56cdd5c9e4adcaaf84921cadd3b",
3
+ "version": "1.6.0-dev.7+main.05ec6c1c976866330bf03c09238bbbfd37c51303",
4
4
  "license": "GPL-3.0-only",
5
5
  "files": [
6
6
  "artifacts/",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@keep-network/bitcoin-spv-sol": "3.4.0-solc-0.8",
35
- "@keep-network/ecdsa": "2.1.0-dev.16",
35
+ "@keep-network/ecdsa": "2.1.0-dev.17",
36
36
  "@keep-network/random-beacon": "2.1.0-dev.17",
37
37
  "@keep-network/tbtc": "1.1.2-dev.1",
38
38
  "@openzeppelin/contracts": "^4.8.1",
@@ -1,99 +0,0 @@
1
- {
2
- "address": "0x8464135c8F25Da09e49BC8782676a84730C318bC",
3
- "abi": [
4
- {
5
- "inputs": [],
6
- "stateMutability": "nonpayable",
7
- "type": "constructor"
8
- },
9
- {
10
- "anonymous": false,
11
- "inputs": [
12
- {
13
- "indexed": false,
14
- "internalType": "address",
15
- "name": "operatorContract",
16
- "type": "address"
17
- }
18
- ],
19
- "name": "OperatorContractApproved",
20
- "type": "event"
21
- },
22
- {
23
- "inputs": [
24
- {
25
- "internalType": "address",
26
- "name": "operatorContract",
27
- "type": "address"
28
- }
29
- ],
30
- "name": "approveOperatorContract",
31
- "outputs": [],
32
- "stateMutability": "nonpayable",
33
- "type": "function"
34
- },
35
- {
36
- "inputs": [],
37
- "name": "registryKeeper",
38
- "outputs": [
39
- {
40
- "internalType": "address",
41
- "name": "",
42
- "type": "address"
43
- }
44
- ],
45
- "stateMutability": "view",
46
- "type": "function"
47
- }
48
- ],
49
- "transactionHash": "0xbd81a534c8665937baaa271ea505248871394e63eb1be00055d9d515bbb4776a",
50
- "receipt": {
51
- "to": null,
52
- "from": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
53
- "contractAddress": "0x8464135c8F25Da09e49BC8782676a84730C318bC",
54
- "transactionIndex": 0,
55
- "gasUsed": "137624",
56
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
57
- "blockHash": "0xef64ea7b8f6ceef8dcfe52075155bf0a89df9ac0c9b6811cb23e4694d71586fe",
58
- "transactionHash": "0xbd81a534c8665937baaa271ea505248871394e63eb1be00055d9d515bbb4776a",
59
- "logs": [],
60
- "blockNumber": 1,
61
- "cumulativeGasUsed": "137624",
62
- "status": 1,
63
- "byzantium": true
64
- },
65
- "args": [],
66
- "numDeployments": 1,
67
- "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractApproved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"approveOperatorContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryKeeper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/KeepRegistryStub.sol\":\"KeepRegistryStub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\"},\"contracts/test/IKeepRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity 0.8.9;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface IKeepRegistry {\\n function approveOperatorContract(address operatorContract) external;\\n\\n function registryKeeper() external view returns (address);\\n}\\n\",\"keccak256\":\"0x9e4f76f7cca77209bf4020d80ba1b0f8ad836ff8b96386b9c05fe8661d249e7d\",\"license\":\"GPL-3.0-or-later\"},\"contracts/test/KeepRegistryStub.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity 0.8.9;\\n\\nimport \\\"./IKeepRegistry.sol\\\";\\n\\ncontract KeepRegistryStub is IKeepRegistry {\\n address public registryKeeper;\\n\\n event OperatorContractApproved(address operatorContract);\\n\\n constructor() {\\n registryKeeper = msg.sender;\\n }\\n\\n function approveOperatorContract(address operatorContract) external {\\n emit OperatorContractApproved(operatorContract);\\n }\\n}\\n\",\"keccak256\":\"0x94d07c42d995af1bcc73fa858f669ed462f462c1b353d01a773e1e22e0ffacda\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
68
- "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163317905561011e806100326000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806302db580b14603757806384c07bd2146048575b600080fd5b6046604236600460a6565b606e565b005b600054605a906001600160a01b031681565b6040516065919060d4565b60405180910390f35b7fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb81604051609b919060d4565b60405180910390a150565b60006020828403121560b757600080fd5b81356001600160a01b038116811460cd57600080fd5b9392505050565b6001600160a01b039190911681526020019056fea26469706673582212205025ad4fd36a48b48a85ed551a01dca55f96c2d167396cb805cde45fef5338c964736f6c63430008090033",
69
- "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806302db580b14603757806384c07bd2146048575b600080fd5b6046604236600460a6565b606e565b005b600054605a906001600160a01b031681565b6040516065919060d4565b60405180910390f35b7fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb81604051609b919060d4565b60405180910390a150565b60006020828403121560b757600080fd5b81356001600160a01b038116811460cd57600080fd5b9392505050565b6001600160a01b039190911681526020019056fea26469706673582212205025ad4fd36a48b48a85ed551a01dca55f96c2d167396cb805cde45fef5338c964736f6c63430008090033",
70
- "devdoc": {
71
- "kind": "dev",
72
- "methods": {},
73
- "version": 1
74
- },
75
- "userdoc": {
76
- "kind": "user",
77
- "methods": {},
78
- "version": 1
79
- },
80
- "storageLayout": {
81
- "storage": [
82
- {
83
- "astId": 16737,
84
- "contract": "contracts/test/KeepRegistryStub.sol:KeepRegistryStub",
85
- "label": "registryKeeper",
86
- "offset": 0,
87
- "slot": "0",
88
- "type": "t_address"
89
- }
90
- ],
91
- "types": {
92
- "t_address": {
93
- "encoding": "inplace",
94
- "label": "address",
95
- "numberOfBytes": "20"
96
- }
97
- }
98
- }
99
- }