0 txs
38 calls
constructor
constructor()
functions
accWstETHPerShare
viewfunction accWstETHPerShare() view returns (uint256)
burnaddress
viewfunction burnaddress() view returns (address)
daoAddress
viewfunction daoAddress() view returns (address)
exchangePool
viewfunction exchangePool() view returns (address)
hono
viewfunction hono() view returns (address)
lastUpdateTime
viewfunction lastUpdateTime() view returns (uint64)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingRewardsHONO
viewfunction pendingRewardsHONO(address account) view returns (uint256)
pendingRewardsWstETH
viewfunction pendingRewardsWstETH(address account) view returns (uint256)
periodFinish
viewfunction periodFinish() view returns (uint64)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rateNumber1
viewfunction rateNumber1() view returns (uint256)
rateNumber2
viewfunction rateNumber2() view returns (uint256)
rewardRateWstETH
viewfunction rewardRateWstETH() view returns (uint256)
rewardToken
viewfunction rewardToken() view returns (address)
streamDuration
viewfunction streamDuration() view returns (uint256)
token
viewfunction token() view returns (address)
totalStaked
viewfunction totalStaked() view returns (uint256)
unallocatedWstETH
viewfunction unallocatedWstETH() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userDAOVoteAmount
viewfunction userDAOVoteAmount(address) view returns (uint256)
userInfo
viewfunction userInfo(address) view returns (uint256 amount, uint256 rewardDebtWstETH, uint256 unclaimedWstETH, uint64 lastAction)
userLockedAmount3
viewfunction userLockedAmount3(address) view returns (uint256)
userMintVoteAmount
viewfunction userMintVoteAmount(address) view returns (uint256)
userRewardPerTokenPaid
viewfunction userRewardPerTokenPaid(address) view returns (uint256)
userVotingPower
viewfunction userVotingPower(address account) view returns (uint256)
wstETH
viewfunction wstETH() view returns (address)
claimRewards
nonpayablefunction claimRewards()
depositRewardsWstETH
nonpayablefunction depositRewardsWstETH(uint256 amount)
drainToken
nonpayablefunction drainToken(address _token, uint256 _amount, address _to)
initialize
nonpayablefunction initialize(address _stakingToken, address _hono, address _wstETH, address _exchangePool, address _daoAddress, address _prevContract, address[] initialUsers)
removeVote
nonpayablefunction removeVote(uint8 pool, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setPaused
nonpayablefunction setPaused(bool isPaused)
setStreamDuration
nonpayablefunction setStreamDuration(uint256 seconds_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateCore
nonpayablefunction updateCore(address _stakingToken, address _hono, address _exchangePool, address _daoAddress)
updateStakingToken
nonpayablefunction updateStakingToken(address _token)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
voteForDAO
nonpayablefunction voteForDAO(uint256 _amount)
voteForMint
nonpayablefunction voteForMint(uint256 _amount)
events
Claim
event Claim(address indexed user, address indexed hono, uint256 wstETHSpent, uint256 honoOut)
CoreUpdated
event CoreUpdated(address stakingToken, address hono, address exchangePool, address daoAddress)
DepositRewardsWstETH
event DepositRewardsWstETH(uint256 amount, uint256 accWstETHPerShare)
Initialized
event Initialized(uint64 version)
Lock
event Lock(address indexed token, uint256 amount, address indexed user, uint8 indexed pool)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PausedSet
event PausedSet(bool isPaused)
StreamDurationSet
event StreamDurationSet(uint256 seconds_)
TokensDrained
event TokensDrained(address indexed token, uint256 amount, address indexed to)
Unlock
event Unlock(address indexed token, uint256 amount, address indexed user, uint8 indexed pool)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
VoteAdded
event VoteAdded(address indexed user, uint8 indexed pool, uint256 amount)
VoteRemoved
event VoteRemoved(address indexed user, uint8 indexed pool, uint256 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612de36200010460003960008181611fb401528181611fdd01526121230152612de36000f3fe6080604052600436106102515760003560e01c80637da9dbd611610139578063ae2d2c39116100b6578063ebe2b12b1161007a578063ebe2b12b1461076a578063ee598bd81461078a578063f2fde38b146107aa578063f6b4563d146107ca578063f7c618c1146107f7578063fc0c546a1461081757600080fd5b8063ae2d2c39146106bf578063c8f33c91146106d5578063e013847614610714578063e5c5f1d514610734578063e6718e531461074a57600080fd5b806392e4d8d3116100fd57806392e4d8d3146105fe578063950846e01461061e5780639cb6a1841461063e578063a5f1e6431461066b578063ad3cb1cc1461068157600080fd5b80637da9dbd61461053e578063817b1cd21461055e57806383ad068c146105745780638b876347146105945780638da5cb5b146105c157600080fd5b80633834f723116101d257806352d1902d1161019657806352d1902d146104985780635c975abb146104ad578063612d2bb4146104dd57806364cbe5f9146104f357806369c413c914610509578063715018a61461052957600080fd5b80633834f7231461040f57806342a82b4f1461042f5780634aa07e641461044f5780634f1ef2861461046f5780635060176d1461048257600080fd5b80631cc1c7bc116102195780631cc1c7bc146103555780632131c68c1461037557806336b1b6a4146103ad57806336d5a8fa146103cd578063372500ab146103fa57600080fd5b80630d3cdb19146102565780630ff86edd1461027f57806316c38b3c1461029f5780631959a002146102c157806319ff1cf514610335575b600080fd5b34801561026257600080fd5b5061026c600d5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5061026c61029a366004612909565b610837565b3480156102ab57600080fd5b506102bf6102ba366004612934565b6109c6565b005b3480156102cd57600080fd5b5061030c6102dc366004612909565b600b602052600090815260409020805460018201546002830154600390930154919290916001600160401b031684565b604080519485526020850193909352918301526001600160401b03166060820152608001610276565b34801561034157600080fd5b506102bf610350366004612951565b610a22565b34801561036157600080fd5b506102bf610370366004612993565b610af0565b34801561038157600080fd5b50600754610395906001600160a01b031681565b6040516001600160a01b039091168152602001610276565b3480156103b957600080fd5b5061026c6103c8366004612909565b610c87565b3480156103d957600080fd5b5061026c6103e8366004612909565b60096020526000908152604090205481565b34801561040657600080fd5b506102bf610ccf565b34801561041b57600080fd5b506102bf61042a366004612993565b611025565b34801561043b57600080fd5b506102bf61044a3660046129ac565b611195565b34801561045b57600080fd5b50600354610395906001600160a01b031681565b6102bf61047d366004612aa6565b61164f565b34801561048e57600080fd5b5061026c60045481565b3480156104a457600080fd5b5061026c61166e565b3480156104b957600080fd5b50600080516020612d6e8339815191525460ff166040519015158152602001610276565b3480156104e957600080fd5b5061026c60125481565b3480156104ff57600080fd5b5061026c60105481565b34801561051557600080fd5b506102bf610524366004612993565b61168b565b34801561053557600080fd5b506102bf61176a565b34801561054a57600080fd5b5061026c610559366004612909565b61177c565b34801561056a57600080fd5b5061026c600c5481565b34801561058057600080fd5b506102bf61058f366004612909565b6117fd565b3480156105a057600080fd5b5061026c6105af366004612909565b60116020526000908152604090205481565b3480156105cd57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610395565b34801561060a57600080fd5b506102bf610619366004612b69565b611827565b34801561062a57600080fd5b506102bf610639366004612993565b6118d4565b34801561064a57600080fd5b5061026c610659366004612909565b600a6020526000908152604090205481565b34801561067757600080fd5b5061026c600e5481565b34801561068d57600080fd5b506106b2604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102769190612be9565b3480156106cb57600080fd5b5061026c60055481565b3480156106e157600080fd5b50600f546106fc90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610276565b34801561072057600080fd5b50600654610395906001600160a01b031681565b34801561074057600080fd5b5061039561dead81565b34801561075657600080fd5b50600154610395906001600160a01b031681565b34801561077657600080fd5b50600f546106fc906001600160401b031681565b34801561079657600080fd5b506102bf6107a5366004612c1c565b61194f565b3480156107b657600080fd5b506102bf6107c5366004612909565b611bff565b3480156107d657600080fd5b5061026c6107e5366004612909565b60086020526000908152604090205481565b34801561080357600080fd5b50600254610395906001600160a01b031681565b34801561082357600080fd5b50600054610395906001600160a01b031681565b6001600160a01b0381166000908152600b60209081526040808320815160808101835281548152600182015493810193909352600281015491830191909152600301546001600160401b039081166060830152600d54600f549091600160401b90910416421180156108ab57506000600c54115b80156108b957506000600e54115b1561096057600f546000906001600160401b031642106108e457600f546001600160401b03166108e6565b425b600f54909150600160401b90046001600160401b031681111561095e57600f5460009061092390600160401b90046001600160401b031683612c64565b9050600c5464e8d4a51000600e548361093c9190612c77565b6109469190612c77565b6109509190612c8e565b61095a9084612cb0565b9250505b505b815160000361097457506040015192915050565b600064e8d4a5100082846000015161098c9190612c77565b6109969190612c8e565b905060008360200151826109aa9190612c64565b90508084604001516109bc9190612cb0565b9695505050505050565b6109ce611c3a565b80156109e1576109dc611c95565b6109e9565b6109e9611cf2565b60405181151581527f40db37ff5c0bdc2c427fbb2078c8f24afea940abac0e3c23bb4ea3bf2da2b212906020015b60405180910390a150565b610a2a611c3a565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9d9190612cc3565b50806001600160a01b0316836001600160a01b03167f4a1011553a96b6a66fb917ad57fd1fdec9997f883ef313d89dc0683636ab731284604051610ae391815260200190565b60405180910390a3505050565b610af8611d38565b610b00611d69565b60008111610b295760405162461bcd60e51b8152600401610b2090612ce0565b60405180910390fd5b6000546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba49190612cc3565b503360009081526009602052604081208054839290610bc4908490612cb0565b925050819055508060056000828254610bdd9190612cb0565b90915550610bed90503382611da1565b60005460405182815260029133916001600160a01b03909116907fb7e8834a5d7fc810f9c77164aea21fd9d01248765a6cf4c16ad3a9db51c6fbb89060200160405180910390a460405181815260029033907f2e83fb0a51909154d0bfab69231b40f9ddc84eb3748fb9f6823fcc66f078cb68906020015b60405180910390a3610c846001600080516020612d8e83398151915255565b50565b6001600160a01b0381166000908152600a602090815260408083205460098352818420546008909352908320549091610cbf91612cb0565b610cc99190612cb0565b92915050565b610cd7611d69565b610ce033611e88565b336000908152600b602052604090206002015480610d335760405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b6044820152606401610b20565b336000908152600b602052604080822060029081018390555490516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db49190612d02565b60035460015460405163095ea7b360e01b81526001600160a01b03918216600482015260248101869052929350169063095ea7b3906044016020604051808303816000875af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2f9190612cc3565b5060015460405163272a522f60e01b8152600481018490526001600160a01b039091169063272a522f90602401600060405180830381600087803b158015610e7657600080fd5b505af1158015610e8a573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd9190612d02565b90506000610f0b8383612c64565b905060008111610f485760405162461bcd60e51b815260206004820152600860248201526706d696e7465643d360c41b6044820152606401610b20565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190612cc3565b5060015460408051868152602081018490526001600160a01b039092169133917f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e94645910160405180910390a3505050506110236001600080516020612d8e83398151915255565b565b61102d611d38565b611035611d69565b600081116110555760405162461bcd60e51b8152600401610b2090612ce0565b6000546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156110ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d09190612cc3565b5033600090815260086020526040812080548392906110f0908490612cb0565b9250508190555080600460008282546111099190612cb0565b9091555061111990503382611da1565b60005460405182815260019133916001600160a01b03909116907fb7e8834a5d7fc810f9c77164aea21fd9d01248765a6cf4c16ad3a9db51c6fbb89060200160405180910390a460405181815260019033907f2e83fb0a51909154d0bfab69231b40f9ddc84eb3748fb9f6823fcc66f078cb6890602001610c65565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156111da5750825b90506000826001600160401b031660011480156111f65750303b155b905081158015611204575080155b156112225760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561124c57845460ff60401b1916600160401b1785555b61125533611f70565b61125d611f81565b611265611f91565b61126d611fa1565b8c6000806101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600260006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555088600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000600481905550600060058190555062093a8060108190555042600f60086101000a8154816001600160401b0302191690836001600160401b0316021790555042600f60006101000a8154816001600160401b0302191690836001600160401b0316021790555060006001600160a01b0316886001600160a01b0316141580156113e057508515155b156115fa578760005b878110156115f757600089898381811061140557611405612d1b565b905060200201602081019061141a9190612909565b60405163197b73bb60e11b81526001600160a01b0380831660048301529192506000918516906332f6e77690602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190612d02565b60405163411ccaad60e11b81526001600160a01b038481166004830152919250600091861690638239955a90602401602060405180830381865afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190612d02565b905060006115088284612cb0565b90508060000361151b57505050506115ef565b6001600160a01b03841660009081526008602090815260408083208690556009909152812083905560048054859290611555908490612cb0565b92505081905550816005600082825461156e9190612cb0565b90915550506001600160a01b0384166000908152600b60205260409020818155600d5464e8d4a51000906115a29084612c77565b6115ac9190612c8e565b600182015560038101805467ffffffffffffffff1916426001600160401b0316179055600c80548391906000906115e4908490612cb0565b909155505050505050505b6001016113e9565b50505b831561164057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b611657611fa9565b6116608261204e565b61166a8282612056565b5050565b6000611678612118565b50600080516020612d4e83398151915290565b600081116116ab5760405162461bcd60e51b8152600401610b2090612ce0565b6003546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611702573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117269190612cc3565b5061173081612161565b600d546040805183815260208101929092527f14570aa0258884c8ecb24b31c8c95ec967d195abe7d7d4dd0a7fc41f4cfe725a9101610a17565b611772611c3a565b61102360006121e6565b60008061178883610837565b600154604051636a53a7bf60e01b8152600481018390529192506001600160a01b031690636a53a7bf90602401602060405180830381865afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190612d02565b9392505050565b611805611c3a565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61182f611c3a565b600080546001600160a01b038681166001600160a01b03199283168117909355600180548783169084168117909155600280548416821790556006805487841690851681179091556007805493871693909416831790935560408051948552602085019190915283019190915260608201527fcc4f90792c31cb1ee2a7a97bc18d16dc17ae3d2a5068dd55e11dee0297aaec429060800160405180910390a150505050565b6118dc611c3a565b624f1a0081111561191a5760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b6044820152606401610b20565b60108190556040518181527f5d75cffdc4ee1ee2ca89919f6f7fe77547409c8bbcca566377ba27c8a3b7f8fd90602001610a17565b611957611d38565b61195f611d69565b6000811161197f5760405162461bcd60e51b8152600401610b2090612ce0565b8160ff16600103611a1c57336000908152600860205260409020548111156119d95760405162461bcd60e51b815260206004820152600d60248201526c1b1bd8dad9590f185b5bdd5b9d609a1b6044820152606401610b20565b33600090815260086020526040812080548392906119f8908490612c64565b925050819055508060046000828254611a119190612c64565b90915550611ae59050565b8160ff16600203611aae5733600090815260096020526040902054811115611a765760405162461bcd60e51b815260206004820152600d60248201526c1b1bd8dad9590f185b5bdd5b9d609a1b6044820152606401610b20565b3360009081526009602052604081208054839290611a95908490612c64565b925050819055508060056000828254611a119190612c64565b60405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081c1bdbdb60a21b6044820152606401610b20565b611aef3382612257565b60005460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b649190612cc3565b5060005460405182815260ff84169133916001600160a01b03909116907fcfe262dac8c1dee9ec9fb4094def3a2e25751740c7acd74aec3e6c529284c0a69060200160405180910390a460405181815260ff83169033907f190bfee93589240538d35cc913b1469129f47760fe42fef116404112298711559060200160405180910390a361166a6001600080516020612d8e83398151915255565b611c07611c3a565b6001600160a01b038116611c3157604051631e4fbdf760e01b815260006004820152602401610b20565b610c84816121e6565b33611c6c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146110235760405163118cdaa760e01b8152336004820152602401610b20565b611c9d611d38565b600080516020612d6e833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b039091168152602001610a17565b611cfa612342565b600080516020612d6e833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611cda565b600080516020612d6e8339815191525460ff16156110235760405163d93c066560e01b815260040160405180910390fd5b600080516020612d8e833981519152805460011901611d9b57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b80600003611dad575050565b611db682611e88565b6001600160a01b0382166000908152600b602052604081208054839290611dde908490612cb0565b9250508190555080600c6000828254611df79190612cb0565b9091555050600d546001600160a01b0383166000908152600b602052604090205464e8d4a5100091611e2891612c77565b611e329190612c8e565b6001600160a01b03929092166000908152600b60205260409020600181019290925550600301805467ffffffffffffffff1916426001600160401b0316179055565b6001600080516020612d8e83398151915255565b611e90612372565b6001600160a01b0381166000908152600b60205260409020805415611f0c57600064e8d4a51000600d548360000154611ec99190612c77565b611ed39190612c8e565b90506000826001015482611ee79190612c64565b90508015611f095780836002016000828254611f039190612cb0565b90915550505b50505b600d54815464e8d4a5100091611f2191612c77565b611f2b9190612c8e565b6001820155600d546001600160a01b0392909216600090815260116020526040902091909155600301805467ffffffffffffffff1916426001600160401b0316179055565b611f78612473565b610c84816124bc565b611f89612473565b6110236124c4565b611f99612473565b6110236124e5565b611023612473565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061203057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612024600080516020612d4e833981519152546001600160a01b031690565b6001600160a01b031614155b156110235760405163703e46dd60e11b815260040160405180910390fd5b610c84611c3a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156120b0575060408051601f3d908101601f191682019092526120ad91810190612d02565b60015b6120d857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b20565b600080516020612d4e833981519152811461210957604051632a87526960e21b815260048101829052602401610b20565b61211383836124ed565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110235760405163703e46dd60e11b815260040160405180910390fd5b60045460055460006121738284612cb0565b90508060000361218c5761218684612543565b50505050565b6000816121998587612c77565b6121a39190612c8e565b905060006121b18287612c64565b905081156121c2576121c282612543565b80156121de576007546121de906001600160a01b031682612687565b505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b80600003612263575050565b61226c82611e88565b6001600160a01b0382166000908152600b6020526040902080548211156122cb5760405162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d081cdd185ad959606a1b6044820152606401610b20565b818160000160008282546122df9190612c64565b9250508190555081600c60008282546122f89190612c64565b9091555050600d54815464e8d4a510009161231291612c77565b61231c9190612c8e565b6001820155600301805467ffffffffffffffff1916426001600160401b03161790555050565b600080516020612d6e8339815191525460ff1661102357604051638dfc202b60e01b815260040160405180910390fd5b600c546000036123ac5761238461274b565b600f60086101000a8154816001600160401b0302191690836001600160401b03160217905550565b60006123b661274b565b600f54909150600160401b90046001600160401b0316811180156123dc57506000600e54115b1561244657600f5460009061240190600160401b90046001600160401b031683612c64565b9050600c5464e8d4a51000600e548361241a9190612c77565b6124249190612c77565b61242e9190612c8e565b600d600082825461243f9190612cb0565b9091555050505b600f80546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661102357604051631afcd79f60e31b815260040160405180910390fd5b611c07612473565b6124cc612473565b600080516020612d6e833981519152805460ff19169055565b611e74612473565b6124f682612775565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561253b5761211382826127da565b61166a612850565b8060000361254e5750565b612556612372565b60105460008190036125bd57600c54156125a257600c5461257c64e8d4a5100084612c77565b6125869190612c8e565b600d60008282546125979190612cb0565b9091555061166a9050565b81601260008282546125b49190612cb0565b90915550505050565b600f546001600160401b031642106125e1576125d98183612c8e565b600e5561262a565b600f546000906125fb9042906001600160401b0316612c64565b90506000600e548261260d9190612c77565b90508261261a8286612cb0565b6126249190612c8e565b600e5550505b600f80546001600160401b0342908116600160401b0267ffffffffffffffff60401b1990921691909117909155612662908290612cb0565b600f805467ffffffffffffffff19166001600160401b03929092169190911790555050565b80600003612693575050565b60035460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156126e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270a9190612cc3565b61166a5760405162461bcd60e51b81526020600482015260126024820152711ddcdd115512081cd95b990819985a5b195960721b6044820152606401610b20565b600f546000906001600160401b031642106127705750600f546001600160401b031690565b504290565b806001600160a01b03163b6000036127ab57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b20565b600080516020612d4e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516127f79190612d31565b600060405180830381855af49150503d8060008114612832576040519150601f19603f3d011682016040523d82523d6000602084013e612837565b606091505b509150915061284785838361286f565b95945050505050565b34156110235760405163b398979f60e01b815260040160405180910390fd5b6060826128845761287f826128cb565b6117f6565b815115801561289b57506001600160a01b0384163b155b156128c457604051639996b31560e01b81526001600160a01b0385166004820152602401610b20565b5092915050565b8051156128db5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610c8457600080fd5b60006020828403121561291b57600080fd5b81356117f6816128f4565b8015158114610c8457600080fd5b60006020828403121561294657600080fd5b81356117f681612926565b60008060006060848603121561296657600080fd5b8335612971816128f4565b9250602084013591506040840135612988816128f4565b809150509250925092565b6000602082840312156129a557600080fd5b5035919050565b60008060008060008060008060e0898b0312156129c857600080fd5b88356129d3816128f4565b975060208901356129e3816128f4565b965060408901356129f3816128f4565b95506060890135612a03816128f4565b94506080890135612a13816128f4565b935060a0890135612a23816128f4565b925060c08901356001600160401b0380821115612a3f57600080fd5b818b0191508b601f830112612a5357600080fd5b813581811115612a6257600080fd5b8c60208260051b8501011115612a7757600080fd5b6020830194508093505050509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ab957600080fd5b8235612ac4816128f4565b915060208301356001600160401b0380821115612ae057600080fd5b818501915085601f830112612af457600080fd5b813581811115612b0657612b06612a90565b604051601f8201601f19908116603f01168101908382118183101715612b2e57612b2e612a90565b81604052828152886020848701011115612b4757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060808587031215612b7f57600080fd5b8435612b8a816128f4565b93506020850135612b9a816128f4565b92506040850135612baa816128f4565b91506060850135612bba816128f4565b939692955090935050565b60005b83811015612be0578181015183820152602001612bc8565b50506000910152565b6020815260008251806020840152612c08816040850160208701612bc5565b601f01601f19169190910160400192915050565b60008060408385031215612c2f57600080fd5b823560ff81168114612c4057600080fd5b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cc957610cc9612c4e565b8082028115828204841417610cc957610cc9612c4e565b600082612cab57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cc957610cc9612c4e565b600060208284031215612cd557600080fd5b81516117f681612926565b6020808252600890820152670616d6f756e743d360c41b604082015260600190565b600060208284031215612d1457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008251612d43818460208701612bc5565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220a09838c2f2eaceb7f873d13e298ef773567cf0b2c1438fbc95b6a7c5eecdd5d364736f6c63430008180033