0 txs
2 calls
constructor
constructor()
functions
artProxy
viewfunction artProxy() view returns (address)
balanceOf
viewfunction balanceOf(address _owner) view returns (uint256)
balanceOfAtNFT
viewfunction balanceOfAtNFT(uint256 _tokenId, uint256 _block) view returns (uint256)
balanceOfNFT
viewfunction balanceOfNFT(uint256 _tokenId) view returns (uint256)
balanceOfNFTAt
viewfunction balanceOfNFTAt(uint256 _tokenId, uint256 _t) view returns (uint256)
blockNumber
viewfunction blockNumber() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_TYPEHASH
viewfunction DOMAIN_TYPEHASH() view returns (bytes32)
emissionsToken
viewfunction emissionsToken() view returns (address)
epoch
viewfunction epoch() view returns (uint256)
getApproved
viewfunction getApproved(uint256 _tokenId) view returns (address)
getLastUserSlope
viewfunction getLastUserSlope(uint256 _tokenId) view returns (int128)
idToDelegate
viewfunction idToDelegate(uint256) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address _owner, address _operator) view returns (bool)
isApprovedOrOwner
viewfunction isApprovedOrOwner(address _spender, uint256 _tokenId) view returns (bool)
isDelegate
viewfunction isDelegate(address _operator, uint256 _tokenId) view returns (bool)
latestTokenId
viewfunction latestTokenId() view returns (uint256)
locked__end
viewfunction locked__end(uint256 _tokenId) view returns (uint256)
locked
viewfunction locked(uint256) view returns (int128 amount, uint256 end)
MAXTIME
viewfunction MAXTIME() view returns (uint256)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 _tokenId) view returns (address)
ownershipChange
viewfunction ownershipChange(uint256) view returns (uint256)
pointHistory
viewfunction pointHistory(uint256) view returns (int128 bias, int128 slope, uint256 ts, uint256 blk)
slopeChanges
viewfunction slopeChanges(uint256) view returns (int128)
supply
viewfunction supply() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceID) view returns (bool)
symbol
viewfunction symbol() view returns (string)
team
viewfunction team() view returns (address)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address _owner, uint256 _tokenIndex) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupplyAt
viewfunction totalSupplyAt(uint256 _block) view returns (uint256)
totalSupplyAtT
viewfunction totalSupplyAtT(uint256 t) view returns (uint256)
userPointEpoch
viewfunction userPointEpoch(uint256) view returns (uint256)
userPointHistory
viewfunction userPointHistory(uint256, uint256) view returns (int128 bias, int128 slope, uint256 ts, uint256 blk)
userPointHistoryTs
viewfunction userPointHistoryTs(uint256 _tokenId, uint256 _idx) view returns (uint256)
version
viewfunction version() view returns (string)
voted
viewfunction voted(uint256) view returns (bool)
voter
viewfunction voter() view returns (address)
abstain
nonpayablefunction abstain(uint256 _tokenId)
approve
nonpayablefunction approve(address _approved, uint256 _tokenId)
checkpoint
nonpayablefunction checkpoint()
createLock
nonpayablefunction createLock(uint256 _value, uint256 _lockDuration) returns (uint256)
createLockFor
nonpayablefunction createLockFor(uint256 _value, uint256 _lockDuration, address _to) returns (uint256)
delegate
nonpayablefunction delegate(address _operator, uint256 _tokenId)
depositFor
nonpayablefunction depositFor(uint256 _tokenId, uint256 _value)
increaseAmount
nonpayablefunction increaseAmount(uint256 _tokenId, uint256 _value)
increaseUnlockTime
nonpayablefunction increaseUnlockTime(uint256 _tokenId, uint256 _lockDuration)
initialize
nonpayablefunction initialize(address _emissionsToken, address _artProxy, address _voter, address msig)
merge
nonpayablefunction merge(uint256 _from, uint256 _to)
resetDelegate
nonpayablefunction resetDelegate(uint256 _tokenId)
safeTransferFrom
nonpayablefunction safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address _from, address _to, uint256 _tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address _operator, bool _approved)
setDelegateForAll
nonpayablefunction setDelegateForAll(address _operator, bool _approved)
setTeam
nonpayablefunction setTeam(address _team)
split
nonpayablefunction split(uint256 _from, uint256 _amount) returns (uint256 newTokenId)
transferFrom
nonpayablefunction transferFrom(address _from, address _to, uint256 _tokenId)
voting
nonpayablefunction voting(uint256 _tokenId)
withdraw
nonpayablefunction withdraw(uint256 _tokenId)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
Delegate
event Delegate(address indexed owner, address indexed delegate, uint256 indexed tokenId)
DelegateForAll
event DelegateForAll(address indexed owner, address indexed delegate, bool approved)
Deposit
event Deposit(address indexed provider, uint256 tokenId, uint256 value, uint256 indexed locktime, uint8 deposit_type, uint256 ts)
Initialized
event Initialized(uint8 version)
Supply
event Supply(uint256 prevSupply, uint256 supply)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Withdraw
event Withdraw(address indexed provider, uint256 tokenId, uint256 value, uint256 ts)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b613dda80620000f36000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c806385f2aef2116101f4578063c2c4c5c11161011a578063ec32e6df116100ad578063f8a057631161007c578063f8a05763146109cc578063f8c8765e146109ef578063f8e3bf3c14610a02578063fd4a77f114610a1557600080fd5b8063ec32e6df14610978578063ee00ef3a1461098b578063f487f26c14610996578063f52a36f7146109a957600080fd5b8063e0514aba116100e9578063e0514aba146108f6578063e58f594714610909578063e7e242d414610929578063e985e9c51461093c57600080fd5b8063c2c4c5c11461089f578063c87b56dd146108a7578063ccc41a11146108ba578063d1c2babb146108e357600080fd5b8063981b24d011610192578063b45a3c0e11610161578063b45a3c0e1461081e578063b52c05fe14610866578063b88d4fde14610879578063c1f0fb9f1461088c57600080fd5b8063981b24d0146107d25780639d507b8b146107e5578063a22cb465146107f8578063b2383e551461080b57600080fd5b80638c2c9baf116101ce5780638c2c9baf146107935780638fbb38ff146107a6578063900cf0cf146107c957806395d89b411461043457600080fd5b806385f2aef2146107395780638ad4c4471461074c5780638c0e83491461078a57600080fd5b80632e1a7d4d116102d95780634b19becc1161027757806357e871e71161024657806357e871e7146106e45780636352211e146106ea57806370a08231146107135780637116c60c1461072657600080fd5b80634b19becc1461065c57806354fd4d501461066f5780635594a045146106ab5780635633e0a6146106be57600080fd5b806342842e0e116102b357806342842e0e146105e8578063430c2081146105fb57806344acb42a1461060e57806346c96aac1461064957600080fd5b80632e1a7d4d146105855780632f745c5914610598578063313ce567146105ce57600080fd5b8063095ea7b31161035157806320606b701161032057806320606b7014610512578063210ca05d1461053957806323857d511461055257806323b872dd1461057257600080fd5b8063095ea7b3146104d15780630ec84dda146104e457806318160ddd146104f75780631e077945146104ff57600080fd5b806305ae4f8c1161038d57806305ae4f8c1461042157806306fdde0314610434578063081812fc1461047d578063095cf5c6146104be57600080fd5b806301ffc9a7146103b4578063026e402b146103f6578063047fc9aa1461040b575b600080fd5b6103e16103c236600461374c565b6001600160e01b03191660009081526005602052604090205460ff1690565b60405190151581526020015b60405180910390f35b610409610404366004613785565b610a28565b005b610413610ad9565b6040519081526020016103ed565b61041361042f3660046137af565b610b50565b6104706040518060400160405280600681526020017f76654e555249000000000000000000000000000000000000000000000000000081525081565b6040516103ed9190613821565b6104a661048b366004613834565b6000908152600b60205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020016103ed565b6104096104cc36600461384d565b610b83565b6104096104df366004613785565b610bbc565b6104096104f23660046137af565b610ca4565b610413610dd1565b61040961050d366004613834565b610ddc565b6104137f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000546104a6906201000090046001600160a01b031681565b610413610560366004613834565b600d6020526000908152604090205481565b610409610580366004613868565b610e49565b610409610593366004613834565b610e5a565b6104136105a6366004613785565b6001600160a01b03919091166000908152600e60209081526040808320938352929052205490565b6105d6601281565b60405160ff90911681526020016103ed565b6104096105f6366004613868565b61110a565b6103e1610609366004613785565b611125565b61062161061c3660046137af565b611138565b60408051600f95860b81529390940b60208401529282015260608101919091526080016103ed565b6001546104a6906001600160a01b031681565b61041361066a3660046137af565b61117f565b6104706040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6003546104a6906001600160a01b031681565b6106d16106cc366004613834565b611367565b604051600f9190910b81526020016103ed565b43610413565b6104a66106f8366004613834565b6000908152600960205260409020546001600160a01b031690565b61041361072136600461384d565b6113aa565b610413610734366004613834565b6113c8565b6002546104a6906001600160a01b031681565b61062161075a366004613834565b600460205260009081526040902080546001820154600290920154600f82810b93600160801b909304900b919084565b61041360065481565b6104136107a13660046137af565b611428565b6103e16107b4366004613834565b60146020526000908152604090205460ff1681565b61041360075481565b6104136107e0366004613834565b611434565b6104096107f33660046137af565b6115d6565b6104096108063660046138b2565b6117d8565b6104096108193660046137af565b61185d565b61084c61082c366004613834565b60126020526000908152604090208054600190910154600f9190910b9082565b60408051600f9390930b83526020830191909152016103ed565b6104136108743660046137af565b611991565b610409610887366004613958565b6119d3565b61040961089a366004613834565b611b94565b610409611bc3565b6104706108b5366004613834565b611c03565b6104a66108c8366004613834565b6015602052600090815260409020546001600160a01b031681565b6104096108f13660046137af565b611d2f565b6104136109043660046137af565b611eb4565b610413610917366004613834565b60106020526000908152604090205481565b610413610937366004613834565b611ec0565b6103e161094a366004613a03565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205460ff1690565b610413610986366004613a36565b611ee8565b610413630784ce0081565b6103e16109a4366004613785565b611f2b565b6106d16109b7366004613834565b601360205260009081526040902054600f0b81565b6104136109da366004613834565b60009081526012602052604090206001015490565b6104096109fd366004613a6b565b611f7f565b610409610a103660046138b2565b61224f565b610409610a23366004613834565b6122c9565b6000818152600960205260409020546001600160a01b0316338114610a7d5760405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b60448201526064015b60405180910390fd5b60008281526015602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f510b11bb3f3c799b11307c01ab7db0d335683ef5b2da98f7697de744f465eacc91a4505050565b600080546040516370a0823160e01b8152306004820152620100009091046001600160a01b0316906370a0823190602401602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190613abf565b905090565b600082815260116020526040812082633b9aca008110610b7257610b72613ad8565b600302016001015490505b92915050565b6002546001600160a01b03163314610b9a57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600960205260409020546001600160a01b031680610bde57600080fd5b806001600160a01b0316836001600160a01b031603610bfc57600080fd5b6000828152600960209081526040808320546001600160a01b038581168552600c845282852033808752945291909320549216149060ff168180610c3d5750805b610c4657600080fd5b6000848152600b602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050505050565b60085460ff16600114610cb657600080fd5b6008805460ff1916600217905560008281526012602090815260409182902082518084019093528054600f0b8352600101549082015281610cf657600080fd5b60008160000151600f0b13610d4d5760405162461bcd60e51b815260206004820152601660248201527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006044820152606401610a74565b42816020015111610db05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742061646420746f20616e2065787069726564206c6f636b2e20576044820152666974686472617760c81b6064820152608401610a74565b610dbf838360008460006122fb565b50506008805460ff1916600117905550565b6000610b4b426113c8565b6000818152600960205260409020546001600160a01b03163314610e2b5760405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b6044820152606401610a74565b600090815260156020526040902080546001600160a01b0319169055565b610e5583838333612502565b505050565b60085460ff16600114610e6c57600080fd5b6008805460ff19166002179055610e8333826125fc565b610e8f57610e8f613aee565b60008181526014602052604090205460ff1615610eee5760405162461bcd60e51b815260206004820181905260248201527f564f5445442c20726573657420766f74657320616e642074727920616761696e6044820152606401610a74565b60008181526012602090815260409182902082518084019093528054600f0b835260010154908201819052421015610f685760405162461bcd60e51b815260206004820152600860248201527f21455850495245440000000000000000000000000000000000000000000000006044820152606401610a74565b8051604080518082018252600080825260208083018281528783526012909152928120915182546001600160801b0319166001600160801b039091161782559151600190910155600f9190910b90610fbe610ad9565b9050610fe4848460405180604001604052806000600f0b81526020016000815250612662565b60005460405163a9059cbb60e01b815233600482015260248101849052620100009091046001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e9190613b04565b61106a5761106a613aee565b61107384612c76565b60408051858152602081018490524281830152905133917f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94919081900360600190a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c816110df610ad9565b6040805192835260208301919091520160405180910390a150506008805460ff191660011790555050565b610e55838383604051806020016040528060008152506119d3565b600061113183836125fc565b9392505050565b601160205281600052604060002081633b9aca00811061115757600080fd5b6003020180546001820154600290920154600f82810b9550600160801b90920490910b925084565b600080821161118d57600080fd5b60008381526014602052604090205460ff16156111ec5760405162461bcd60e51b815260206004820181905260248201527f564f5445442c20726573657420766f74657320616e642074727920616761696e6044820152606401610a74565b6111f633846125fc565b6111ff57600080fd5b60008381526012602090815260409182902082518084019093528054600f0b80845260019091015491830182905290421061128c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742061646420746f20616e2065787069726564206c6f636b2e20576044820152666974686472617760c81b6064820152608401610a74565b80841061129857600080fd5b6040805180820190915260008082526020808301828152908501519052600680549091906112c590613b37565b909155506006546112d7903390612d5b565b5060408051808201909152600080825260208201526112f68684613b50565b600f0b8152602084810151818301908152600089815260129092526040909120825181546001600160801b0319166001600160801b039091161781559051600190910155611345878583612662565b6113596006548786602001518560056122fb565b505060065495945050505050565b6000818152601060209081526040808320546011909252822081633b9aca00811061139457611394613ad8565b6003020154600160801b9004600f0b9392505050565b6001600160a01b0381166000908152600a6020526040812054610b7d565b600754600081815260046020908152604080832081516080810183528154600f81810b8352600160801b909104900b938101939093526001810154918301919091526002015460608201529091906114208185612dbe565b949350505050565b60006111318383612eb7565b60004382111561144657611446613aee565b60075460006114558483613188565b600081815260046020908152604080832081516080810183528154600f81810b8352600160801b909104900b93810193909352600181015491830191909152600201546060820152919250838310156115645760006004816114b8866001613b63565b8152602080820192909252604090810160002081516080810183528154600f81810b8352600160801b909104900b938101939093526001810154918301919091526002015460608083018290528501519192501461155e57826060015181606001516115249190613b50565b836040015182604001516115389190613b50565b6060850151611547908a613b50565b6115519190613b76565b61155b9190613ba3565b91505b506115b3565b438260600151146115b357606082015161157e9043613b50565b604083015161158d9042613b50565b606084015161159c9089613b50565b6115a69190613b76565b6115b09190613ba3565b90505b6115cc828284604001516115c79190613b63565b612dbe565b9695505050505050565b60085460ff166001146115e857600080fd5b6008805460ff191660021790556115ff33836125fc565b61160b5761160b613aee565b600082815260126020908152604080832081518083019092528054600f0b825260010154918101919091529062093a80806116468542613b63565b6116509190613ba3565b61165a9190613b76565b9050428260200151116116af5760405162461bcd60e51b815260206004820152600c60248201527f4c6f636b206578706972656400000000000000000000000000000000000000006044820152606401610a74565b60008260000151600f0b136117065760405162461bcd60e51b815260206004820152601160248201527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006044820152606401610a74565b816020015181116117595760405162461bcd60e51b815260206004820152601f60248201527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e006044820152606401610a74565b611767630784ce0042613b63565b8111156117b65760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610a74565b6117c5846000838560036122fb565b50506008805460ff191660011790555050565b336001600160a01b038316036117f0576117f0613aee565b336000818152600c602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a35050565b60085460ff1660011461186f57600080fd5b6008805460ff1916600217905561188633836125fc565b61189257611892613aee565b60008281526012602090815260409182902082518084019093528054600f0b83526001015490820152816118c8576118c8613aee565b60008160000151600f0b1361191f5760405162461bcd60e51b815260206004820152601660248201527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006044820152606401610a74565b428160200151116119825760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742061646420746f20616e2065787069726564206c6f636b2e20576044820152666974686472617760c81b6064820152608401610a74565b610dbf838360008460026122fb565b60085460009060ff166001146119a657600080fd5b6008805460ff191660021790556119be838333613206565b90506008805460ff1916600117905592915050565b6119df84848433612502565b823b15611b8e57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611a18903390889087908790600401613bb7565b6020604051808303816000875af1925050508015611a53575060408051601f3d908101601f19168201909252611a5091810190613be9565b60015b611b06573d808015611a81576040519150601f19603f3d011682016040523d82523d6000602084013e611a86565b606091505b508051600003611afe5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610a74565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611b8c5760405162461bcd60e51b815260206004820152602660248201527f4552433732313a2045524337323152656365697665722072656a65637465642060448201527f746f6b656e7300000000000000000000000000000000000000000000000000006064820152608401610a74565b505b50505050565b6001546001600160a01b03163314611bab57600080fd5b6000908152601460205260409020805460ff19169055565b611c01600060405180604001604052806000600f0b8152602001600081525060405180604001604052806000600f0b81526020016000815250612662565b565b6000818152600960205260409020546060906001600160a01b0316611c6a5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610a74565b60008281526012602090815260409182902082518084019093528054600f0b835260010154908201526003546001600160a01b031663dd9ec14984611caf8142613374565b6020850151855160405160e086901b6001600160e01b0319168152600481019490945260248401929092526044830152600f0b6064820152608401600060405180830381865afa158015611d07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613c06565b60008281526014602052604090205460ff1615611d8e5760405162461bcd60e51b815260206004820181905260248201527f564f5445442c20726573657420766f74657320616e642074727920616761696e6044820152606401610a74565b808203611d9a57600080fd5b611da433836125fc565b611dad57600080fd5b611db733826125fc565b611dc057600080fd5b6000828152601260208181526040808420815180830183528154600f90810b825260019283015482860190815288885295855283872084518086019095528054820b855290920154938301849052805194519095929490910b921115611e2a578260200151611e30565b83602001515b604080518082018252600080825260208083018281528b835260128252848320935184546001600160801b0319166001600160801b0390911617845551600190930192909255825180840190935280835290820152909150611e959087908690612662565b611e9e86612c76565b611eac8583838660046122fb565b505050505050565b60006111318383613374565b6000818152600d6020526040812054439003611ede57506000919050565b610b7d8242613374565b60085460009060ff16600114611efd57600080fd5b6008805460ff19166002179055611f15848484613206565b90506008805460ff191660011790559392505050565b60008181526009602090815260408083205460158352818420546001600160a01b039182168086526016855283862088841680885295529285205492939116149060ff1681806115cc575095945050505050565b600054610100900460ff1615808015611f9f5750600054600160ff909116105b80611fb95750303b158015611fb9575060005460ff166001145b61202b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a74565b6000805460ff19166001179055801561204e576000805461ff0019166101001790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b0388811691909102919091178255600180546001600160a01b03199081168784161782556002805482168785161790556003805490911692881692909217909155437f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee55427f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed5560056020527fc01909ce2b517f8cd3a46ae0cfde9179f9b675cf633d3d84c8226585cc73c156805460ff1990811683179091557f072ad3113145b5af48d301e3b9fc3bd1c97c3f26a14f5d44904b71469875631e8054821683179055635b5e139f60e01b83527f3b767bd59d7164fff7ec5b80ca1165d9d6e12ee8656896fac4159b0760bfd9f780549091169091179055600654604051909130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a460065460405160009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a46008805460ff191660011790558015611b8c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b336001600160a01b0383160361226457600080fd5b3360008181526016602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f58781eab4a0743ab1c285a238be846a235f06cdb5b968030573a635e5f8c92fa9101611851565b6001546001600160a01b031633146122e057600080fd5b6000908152601460205260409020805460ff19166001179055565b816000612306610ad9565b6040805180820190915260008082526020820152909150825160208085015190830152600f0b815282518790849061233f908390613c74565b600f0b905250851561235357602083018690525b6000888152601260209081526040909120845181546001600160801b0319166001600160801b0390911617815590840151600190910155612395888285612662565b3387158015906123d4575060048560058111156123b4576123b4613cb3565b141580156123d4575060058560058111156123d1576123d1613cb3565b14155b15612469576000546040516323b872dd60e01b81526001600160a01b038381166004830152306024830152604482018b905262010000909204909116906323b872dd906064016020604051808303816000875af1158015612439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245d9190613b04565b61246957612469613aee565b8360200151816001600160a01b03167fff04ccafc360e16b67d682d17bd9503c4c6b9a131f6be6325762dc9ffc7de6248b8b89426040516124ad9493929190613cc9565b60405180910390a37f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c836124df610ad9565b6040805192835260208301919091520160405180910390a1505050505050505050565b60008281526014602052604090205460ff16156125615760405162461bcd60e51b815260206004820181905260248201527f564f5445442c20726573657420766f74657320616e642074727920616761696e6044820152606401610a74565b61256b81836125fc565b61257457600080fd5b61257e848361345e565b600082815260156020526040902080546001600160a01b03191690556125a484836134c5565b6125ae8383613546565b6000828152600d60205260408082204390555183916001600160a01b0380871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b600081815260096020908152604080832054600b8352818420546001600160a01b03918216808652600c855283862088841680885295529285205492938085149392909116149060ff16828061264f5750815b806126575750805b979650505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600754600090819087156127cd574287602001511180156126d2575060008760000151600f0b135b156127175786516126e890630784ce0090613d07565b600f0b602080870191909152870151612702904290613b50565b85602001516127119190613d4e565b600f0b85525b428660200151118015612731575060008660000151600f0b135b1561277657855161274790630784ce0090613d07565b600f0b602080860191909152860151612761904290613b50565b84602001516127709190613d4e565b600f0b84525b602080880151600090815260138252604090205490870151600f9190910b9350156127cd5786602001518660200151036127b2578291506127cd565b602080870151600090815260139091526040902054600f0b91505b604080516080810182526000808252602082015242918101919091524360608201528115612842575060008181526004602090815260409182902082516080810184528154600f81810b8352600160801b909104900b9281019290925260018101549282019290925260029091015460608201525b60408101518160004283101561288f5760408401516128619042613b50565b60608501516128709043613b50565b61288290670de0b6b3a7640000613b76565b61288c9190613ba3565b90505b600062093a8061289f8186613ba3565b6128a99190613b76565b905060005b60ff811015612a1b576128c462093a8083613b63565b91506000428311156128d8574292506128ec565b50600082815260136020526040902054600f0b5b6128f68684613b50565b87602001516129059190613d4e565b87518890612914908390613d6e565b600f0b90525060208701805182919061292e908390613c74565b600f90810b90915288516000910b1215905061294957600087525b60008760200151600f0b121561296157600060208801525b60408088018490528501519295508592670de0b6b3a7640000906129859085613b50565b61298f9086613b76565b6129999190613ba3565b85606001516129a89190613b63565b60608801526129b8600189613b63565b97504283036129cd5750436060870152612a1b565b6000888152600460209081526040918290208951918a01516001600160801b03908116600160801b0292169190911781559088015160018201556060880151600290910155506001016128ae565b505060078590558b15612aa65788602001518860200151612a3c9190613d6e565b84602001818151612a4d9190613c74565b600f0b90525088518851612a619190613d6e565b84518590612a70908390613c74565b600f90810b90915260208601516000910b12159050612a9157600060208501525b60008460000151600f0b1215612aa657600084525b6000858152600460209081526040918290208651918701516001600160801b03908116600160801b02921691909117815590850151600182015560608501516002909101558b15612c6857428b602001511115612b5d576020890151612b0c9088613c74565b96508a602001518a6020015103612b2f576020880151612b2c9088613d6e565b96505b60208b810151600090815260139091526040902080546001600160801b0319166001600160801b0389161790555b428a602001511115612bb8578a602001518a602001511115612bb8576020880151612b889087613d6e565b60208b810151600090815260139091526040902080546001600160801b0319166001600160801b03831617905595505b60008c815260106020526040812054612bd2906001613b63565b905080601060008f815260200190815260200160002081905550428960400181815250504389606001818152505088601160008f815260200190815260200160002082633b9aca008110612c2857612c28613ad8565b825160208401516001600160801b03908116600160801b029116176003919091029190910190815560408201516001820155606090910151600290910155505b505050505050505050505050565b612c8033826125fc565b612cf25760405162461bcd60e51b815260206004820152602f60248201527f5468652063616c6c6572206973206e6f7420746865206f776e65722c206e6f7260448201527f20676976656e20617070726f76616c00000000000000000000000000000000006064820152608401610a74565b6000818152600960205260408120546001600160a01b031690612d159083610bbc565b612d1f33836134c5565b60405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160a01b038316612d7357612d73613aee565b612d7d8383613546565b60405182906001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600192915050565b600080839050600062093a80808360400151612dda9190613ba3565b612de49190613b76565b905060005b60ff811015612e8f57612dff62093a8083613b63565b9150600085831115612e1357859250612e27565b50600082815260136020526040902054600f0b5b6040840151612e369084613b50565b8460200151612e459190613d4e565b84518590612e54908390613d6e565b600f0b905250858303612e675750612e8f565b8084602001818151612e799190613c74565b600f0b9052505060408301829052600101612de9565b5060008260000151600f0b1215612ea557600082525b50516001600160801b03169392505050565b600043821115612ec957612ec9613aee565b600083815260106020526040812054815b6080811015612f615781831015612f615760006002612ef98486613b63565b612f04906001613b63565b612f0e9190613ba3565b6000888152601160205260409020909150869082633b9aca008110612f3557612f35613ad8565b600302016002015411612f4a57809350612f58565b612f55600182613b50565b92505b50600101612eda565b50600085815260116020526040812083633b9aca008110612f8457612f84613ad8565b60408051608081018252600392909202929092018054600f81810b8452600160801b909104900b602083015260018101549282019290925260029091015460608201526007549091506000612fd98783613188565b600081815260046020908152604080832081516080810183528154600f81810b8352600160801b909104900b9381019390935260018101549183019190915260020154606082015291925080848410156130b857600060048161303d876001613b63565b8152602080820192909252604090810160002081516080810183528154600f81810b8352600160801b909104900b9381019390935260018101549183019190915260020154606080830182905286015191925061309a9190613b50565b9250836040015181604001516130b09190613b50565b9150506130dc565b60608301516130c79043613b50565b91508260400151426130d99190613b50565b90505b60408301518215613119578284606001518c6130f89190613b50565b6131029084613b76565b61310c9190613ba3565b6131169082613b63565b90505b60408701516131289082613b50565b87602001516131379190613d4e565b87518890613146908390613d6e565b600f90810b90915288516000910b12905061317657505093516001600160801b03169650610b7d95505050505050565b60009950505050505050505050610b7d565b60008082815b60808110156131fc57818310156131fc57600060026131ad8486613b63565b6131b8906001613b63565b6131c29190613ba3565b60008181526004602052604090206002015490915087106131e5578093506131f3565b6131f0600182613b50565b92505b5060010161318e565b5090949350505050565b60008062093a80806132188642613b63565b6132229190613ba3565b61322c9190613b76565b90506000851161323b57600080fd5b4281116132b05760405162461bcd60e51b815260206004820152602660248201527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e207468652060448201527f66757475726500000000000000000000000000000000000000000000000000006064820152608401610a74565b6132be630784ce0042613b63565b81111561330d5760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610a74565b60066000815461331c90613b37565b9091555060065461332d8482612d5b565b5060008181526012602090815260409182902082518084019093528054600f0b83526001908101549183019190915261336b918391899186916122fb565b95945050505050565b600082815260106020526040812054808203613394576000915050610b7d565b61339f8484836135dc565b60008581526011602052604081209192509082633b9aca0081106133c5576133c5613ad8565b60408051608081018252600392909202929092018054600f81810b8452600160801b909104900b6020830152600181015492820183905260020154606082015291506134119085613dad565b81602001516134209190613d4e565b8151829061342f908390613d6e565b600f90810b90915282516000910b1215905061344a57600081525b51600f0b9150610b7d9050565b5092915050565b6000818152600960205260409020546001600160a01b0383811691161461348757613487613aee565b6000818152600b60205260409020546001600160a01b0316156134c1576000818152600b6020526040902080546001600160a01b03191690555b5050565b6000818152600960205260409020546001600160a01b038381169116146134ee576134ee613aee565b600081815260096020526040902080546001600160a01b03191690556135148282613674565b6001600160a01b0382166000908152600a6020526040812080546001929061353d908490613b50565b90915550505050565b6000818152600960205260409020546001600160a01b03161561356b5761356b613aee565b600081815260096020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600a8084528285208054600e86528487208188528652848720889055878752600f86529386209390935590845290915280546001929061353d908490613b63565b60008082815b6080811015613669578183101561366957600060026136018486613b63565b61360c906001613b63565b6136169190613ba3565b6000898152601160205260409020909150879082633b9aca00811061363d5761363d613ad8565b60030201600101541161365257809350613660565b61365d600182613b50565b92505b506001016135e2565b509095945050505050565b6001600160a01b0382166000908152600a602052604081205461369990600190613b50565b6000838152600f60205260409020549091508082036136e8576001600160a01b0384166000908152600e602090815260408083208584528252808320839055858352600f909152812055611b8e565b6001600160a01b03939093166000908152600e6020908152604080832093835292815282822080548684528484208190558352600f9091528282209490945592839055908252812055565b6001600160e01b03198116811461374957600080fd5b50565b60006020828403121561375e57600080fd5b813561113181613733565b80356001600160a01b038116811461378057600080fd5b919050565b6000806040838503121561379857600080fd5b6137a183613769565b946020939093013593505050565b600080604083850312156137c257600080fd5b50508035926020909101359150565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b60208152600061113160208301846137f5565b60006020828403121561384657600080fd5b5035919050565b60006020828403121561385f57600080fd5b61113182613769565b60008060006060848603121561387d57600080fd5b61388684613769565b925061389460208501613769565b9150604084013590509250925092565b801515811461374957600080fd5b600080604083850312156138c557600080fd5b6138ce83613769565b915060208301356138de816138a4565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613928576139286138e9565b604052919050565b600067ffffffffffffffff82111561394a5761394a6138e9565b50601f01601f191660200190565b6000806000806080858703121561396e57600080fd5b61397785613769565b935061398560208601613769565b925060408501359150606085013567ffffffffffffffff8111156139a857600080fd5b8501601f810187136139b957600080fd5b80356139cc6139c782613930565b6138ff565b8181528860208385010111156139e157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215613a1657600080fd5b613a1f83613769565b9150613a2d60208401613769565b90509250929050565b600080600060608486031215613a4b57600080fd5b8335925060208401359150613a6260408501613769565b90509250925092565b60008060008060808587031215613a8157600080fd5b613a8a85613769565b9350613a9860208601613769565b9250613aa660408601613769565b9150613ab460608601613769565b905092959194509250565b600060208284031215613ad157600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600060208284031215613b1657600080fd5b8151611131816138a4565b634e487b7160e01b600052601160045260246000fd5b600060018201613b4957613b49613b21565b5060010190565b81810381811115610b7d57610b7d613b21565b80820180821115610b7d57610b7d613b21565b8082028115828204841417610b7d57610b7d613b21565b634e487b7160e01b600052601260045260246000fd5b600082613bb257613bb2613b8d565b500490565b60006001600160a01b038087168352808616602084015250836040830152608060608301526115cc60808301846137f5565b600060208284031215613bfb57600080fd5b815161113181613733565b600060208284031215613c1857600080fd5b815167ffffffffffffffff811115613c2f57600080fd5b8201601f81018413613c4057600080fd5b8051613c4e6139c782613930565b818152856020838501011115613c6357600080fd5b61336b8260208301602086016137d1565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610b7d57610b7d613b21565b634e487b7160e01b600052602160045260246000fd5b848152602081018490526080810160068410613cf557634e487b7160e01b600052602160045260246000fd5b60408201939093526060015292915050565b600081600f0b83600f0b80613d1e57613d1e613b8d565b6f7fffffffffffffffffffffffffffffff19821460001982141615613d4557613d45613b21565b90059392505050565b600082600f0b82600f0b0280600f0b915080821461345757613457613b21565b600f82810b9082900b036f7fffffffffffffffffffffffffffffff1981126f7fffffffffffffffffffffffffffffff82131715610b7d57610b7d613b21565b818103600083128015838313168383128216171561345757613457613b2156fea164736f6c6343000817000a