0 txs
11 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
earnedReward
viewfunction earnedReward(address account) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
incentiveEndsAt
viewfunction incentiveEndsAt() view returns (uint32)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
nextStakeId
viewfunction nextStakeId() view returns (uint64)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
rewardPerToken
viewfunction rewardPerToken() view returns (uint256)
rewardPerTokenStored
viewfunction rewardPerTokenStored() view returns (uint96)
rewardRate
viewfunction rewardRate() view returns (uint256)
rewardToken
viewfunction rewardToken() view returns (address)
stakedBy
viewfunction stakedBy(address) view returns (uint256)
stakes
viewfunction stakes(uint256) view returns (uint96 amount, uint32 withdrawAfter)
stakingToken
viewfunction stakingToken() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalStaked
viewfunction totalStaked() view returns (uint96)
unstakePeriod
viewfunction unstakePeriod() view returns (uint32)
updatedAt
viewfunction updatedAt() view returns (uint32)
userRewardPerTokenPaid
viewfunction userRewardPerTokenPaid(address) view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
changeUnstakePeriod
nonpayablefunction changeUnstakePeriod(uint32 newUnstakePeriod)
claimReward
nonpayablefunction claimReward(address account)
initialize
nonpayablefunction initialize(address stakingToken_, address rewardToken_, uint32 unstakePeriod_)
recover
nonpayablefunction recover(address token, address to)
renounceOwnership
nonpayablefunction renounceOwnership()
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)
stakeFor
nonpayablefunction stakeFor(address account, uint96 amount)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(address to, uint256[] stakeIds)
updateStakingIncentive
nonpayablefunction updateStakingIncentive(uint256 extraReward, uint256 incentiveDuration)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardClaimed
event RewardClaimed(address indexed account, uint256 amount)
Staked
event Staked(uint256 indexed stakeId, address indexed account, uint96 amount, uint32 withdrawAfter)
StakingIncentiveUpdated
event StakingIncentiveUpdated(uint256 reward, uint32 incentiveEndsAt)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Unstaked
event Unstaked(uint256 indexed stakeId, uint256 amount)
UnstakePeriodChanged
event UnstakePeriodChanged(uint256 newUnstakePeriod)
errors
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
InvalidIncentiveDuration
error InvalidIncentiveDuration(uint256 min, uint256 max)
InvalidInitialization
error InvalidInitialization()
InvalidReceiver
error InvalidReceiver(address account)
NoAvailableBalance
error NoAvailableBalance(address token)
NoReward
error NoReward()
NotInitializing
error NotInitializing()
NoUnclaimedReward
error NoUnclaimedReward(address account)
OnlyStakeOwner
error OnlyStakeOwner(uint256 stakeId, address owner)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SameStakingAndRewardToken
error SameStakingAndRewardToken()
StakeLocked
error StakeLocked(uint256 stakeId, uint256 secondsBeforeUnstake)
ZeroAmount
error ZeroAmount()
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61387d806100d96000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063817b1cd211610160578063bd83dbe5116100d8578063df136d651161008c578063e985e9c511610071578063e985e9c5146106b5578063f2fde38b1461071d578063f7c618c11461073057600080fd5b8063df136d651461065d578063e4aa64ab1461068557600080fd5b8063cd3daf9d116100bd578063cd3daf9d146105d3578063d279c191146105db578063d5a44f86146105ee57600080fd5b8063bd83dbe5146105ad578063c87b56dd146105c057600080fd5b806395d89b411161012f578063a22cb46511610114578063a22cb4651461055b578063a8968a2d1461056e578063b88d4fde1461059a57600080fd5b806395d89b411461054057806396ac65d11461054857600080fd5b8063817b1cd2146104835780638b616871146104d05780638b876347146104e35780638da5cb5b1461050357600080fd5b80636352211e116101f3578063715018a6116101c25780637519ab50116101a75780637519ab50146103f457806375506c96146104315780637b0a47ee1461047a57600080fd5b8063715018a6146103cc57806372f702f3146103d457600080fd5b80636352211e14610380578063648bf774146103935780636ecf2b22146103a657806370a08231146103b957600080fd5b806323b872dd1161024a57806342842e0e1161022f57806342842e0e1461032c5780635dbe47561461033f5780635f56a31a1461035257600080fd5b806323b872dd1461030657806326bd86431461031957600080fd5b806301ffc9a71461027c57806306fdde03146102a4578063081812fc146102b9578063095ea7b3146102f1575b600080fd5b61028f61028a366004612fbe565b610750565b60405190151581526020015b60405180910390f35b6102ac610835565b60405161029b9190613049565b6102cc6102c736600461305c565b6108eb565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b6103046102ff366004613097565b610940565b005b6103046103143660046130c3565b61094f565b61030461032736600461311d565b610a05565b61030461033a3660046130c3565b610a94565b61030461034d366004613138565b610ab4565b6103726103603660046131c2565b60056020526000908152604090205481565b60405190815260200161029b565b6102cc61038e36600461305c565b610ba5565b6103046103a13660046131df565b610bb0565b6103046103b4366004613218565b610d4c565b6103726103c73660046131c2565b611040565b6103046110e1565b6000546102cc9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461041c9074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff909116815260200161029b565b600354610461907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b61037260025481565b6000546104b3907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff909116815260200161029b565b6103726104de3660046131c2565b6110f5565b6103726104f13660046131c2565b60066020526000908152604090205481565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff166102cc565b6102ac611186565b61030461055636600461325f565b6111d7565b61030461056936600461328f565b6114ad565b60015461041c907801000000000000000000000000000000000000000000000000900463ffffffff1681565b6103046105a83660046132ec565b6114b8565b6103046105bb366004613411565b6114d0565b6102ac6105ce36600461305c565b61185f565b6103726118d4565b6103046105e93660046131c2565b6119b9565b6106346105fc36600461305c565b6004602052600090815260409020546bffffffffffffffffffffffff8116906c01000000000000000000000000900463ffffffff1682565b604080516bffffffffffffffffffffffff909316835263ffffffff90911660208301520161029b565b6003546104b3906c0100000000000000000000000090046bffffffffffffffffffffffff1681565b60015461041c907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b61028f6106c33660046131df565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b61030461072b3660046131c2565b611b43565b6001546102cc9073ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806107e357507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061082f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061086790613450565b80601f016020809104026020016040519081016040528092919081815260200182805461089390613450565b80156108e05780601f106108b5576101008083540402835291602001916108e0565b820191906000526020600020905b8154815290600101906020018083116108c357829003601f168201915b505050505091505090565b60006108f682611ba7565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff1661082f565b61094b828233611c25565b5050565b6000818152600460205260409020546bffffffffffffffffffffffff1661097584611c32565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260056020526040812080548392906109aa9084906134d2565b909155506109b9905083611c32565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260056020526040812080548392906109ee9084906134e5565b909155506109ff9050848484611d41565b50505050565b610a0d611e2c565b600180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527fe38e02a0993ebc1d22860019a45a3c26b72b3b377afebf7cc7b2c7caeee9e42a9060200160405180910390a150565b610aaf838383604051806020016040528060008152506114b8565b505050565b33610abe81611c32565b6000805b83811015610aff57610aeb858583818110610adf57610adf6134f8565b90506020020135611eba565b610af590836134e5565b9150600101610ac2565b506000546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d9190613527565b505050505050565b600061082f82611ba7565b610bb8611e2c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c499190613544565b60005490915073ffffffffffffffffffffffffffffffffffffffff90811690841603610ca957600054610ca2907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16826134d2565b9050610cea565b60015473ffffffffffffffffffffffffffffffffffffffff90811690841603610cea57600354610ce7906bffffffffffffffffffffffff16826134d2565b90505b80600003610d41576040517fed93fd4c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b610aaf8383836120f3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d975750825b905060008267ffffffffffffffff166001148015610db45750303b155b905081158015610dc2575080155b15610df9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e5a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603610ebf576040517fae84520200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ec833612180565b610f3c6040518060400160405280601181526020017f506572666f726d616e63652024415a55520000000000000000000000000000008152506040518060400160405280600581526020017f70415a5552000000000000000000000000000000000000000000000000000000815250612188565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691909117909155600180549189167bffffffffffffffff0000000000000000000000000000000000000000909216919091177c010000000000000000000000000000000000000000000000000000000063ffffffff89160217905583156110365784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166110b3576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610d38565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b6110e9611e2c565b6110f360006121cb565b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760209081526040808320546006909252822054670de0b6b3a7640000906111386118d4565b61114291906134d2565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260056020526040902054611172919061355d565b61117c9190613574565b61082f91906134e5565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161086790613450565b6111df611e2c565b60006111ea81611c32565b60018210806111fc57506305a39a8082115b15611240576040517fe0c5c620000000000000000000000000000000000000000000000000000000008152600160048201526305a39a806024820152604401610d38565b60008361124b612261565b61125591906134e5565b905080600003611291576040517f6e99268600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826112a482670de0b6b3a764000061355d565b6112ae9190613574565b6002556001805463ffffffff4290811674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff9092169190911790915561130b9084906134e5565b6001805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055600380548591906000906113809084906bffffffffffffffffffffffff166135af565b82546bffffffffffffffffffffffff9182166101009390930a9283029190920219909116179055506001546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810186905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015611425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114499190613527565b5060015460408051838152780100000000000000000000000000000000000000000000000090920463ffffffff1660208301527f981736d92e90ca302507e694011d6f3061011cd94afa729b12099353bb0cc33a910160405180910390a150505050565b61094b3383836122d9565b6114c384848461094f565b6109ff33858585856123fa565b816114da81611c32565b816bffffffffffffffffffffffff16600003611522576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff841603611589576040517f9cfea58300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d38565b6000546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526bffffffffffffffffffffffff8416604482015273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015611613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116379190613527565b5060038054600091780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018611672836135d3565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060006001601c9054906101000a900463ffffffff16426116c49190613600565b6040805180820182526bffffffffffffffffffffffff80881680835263ffffffff808616602080860191825260008a8152600482528781209651875493519094166c01000000000000000000000000027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931693909516929092171790935573ffffffffffffffffffffffffffffffffffffffff8a16825260059092529182208054939450909290919061177a9084906134e5565b9091555050600080548591906014906117ba9084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166135af565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506117f285836125f1565b604080516bffffffffffffffffffffffff8616815263ffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff87169184917f02f94abdb85d1a7b9ca59809af8a380cb5183813a7b04b930f89261f892bed60910160405180910390a35050505050565b606061186a82611ba7565b50600061188260408051602081019091526000815290565b905060008151116118a257604051806020016040528060008152506118cd565b806118ac846126a2565b6040516020016118bd92919061361c565b6040516020818303038152906040525b9392505050565b600080547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16810361192957506003546c0100000000000000000000000090046bffffffffffffffffffffffff1690565b6000546001546bffffffffffffffffffffffff7401000000000000000000000000000000000000000092839004169163ffffffff910416611968612760565b61197291906134d2565b60025461197f919061355d565b6119899190613574565b6003546119b491906c0100000000000000000000000090046bffffffffffffffffffffffff166134e5565b905090565b806119c381611c32565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205490819003611a3b576040517f843bdc9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d38565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600760205260408082209190915560015490517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810192909252602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed9190613527565b508273ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611b3691815260200190565b60405180910390a2505050565b611b4b611e2c565b73ffffffffffffffffffffffffffffffffffffffff8116611b9b576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610d38565b611ba4816121cb565b50565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff168061082f576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610d38565b610aaf83838360016127bc565b611c3a6118d4565b6003600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611c72612760565b6001805463ffffffff9290921674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff90921691909117905573ffffffffffffffffffffffffffffffffffffffff811615611ba457611ce5816110f5565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526007602090815260408083209390935560035460069091529190206c010000000000000000000000009091046bffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8216611d91576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610d38565b6000611d9e8383336129c8565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ff576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610d38565b33611e6b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610d38565b600080611ec683610ba5565b90503373ffffffffffffffffffffffffffffffffffffffff821614611f36576040517fc0ef93730000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff82166024820152604401610d38565b600083815260046020526040902080546c01000000000000000000000000900463ffffffff16421015611fc35780548490611f889042906c01000000000000000000000000900463ffffffff166134d2565b6040517f5ab9830100000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d38565b805433600090815260056020526040812080546bffffffffffffffffffffffff90931692839290611ff59084906134d2565b9091555050600080548291906014906120359084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1661364b565b82546bffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550600085815260046020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905561209a85612b8d565b6040516bffffffffffffffffffffffff8216815285907ffe67007f52a1bf967323b00fd406f9028a8e8a88aec274e07a63b2fabacc64a79060200160405180910390a26bffffffffffffffffffffffff16949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610aaf908490612bee565b611b4b612c92565b612190612c92565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806121bc84826136b6565b50600181016109ff83826136b6565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000670de0b6b3a764000042600160189054906101000a900463ffffffff1663ffffffff16116122925760006122c2565b6001546122c29042907801000000000000000000000000000000000000000000000000900463ffffffff166134d2565b6002546122cf919061355d565b6119b49190613574565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff831661235f576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d38565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83163b156125ea576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a029061246f9088908890879087906004016137cf565b6020604051808303816000875af19250505080156124c8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526124c59181019061382a565b60015b612557573d8080156124f6576040519150601f19603f3d011682016040523d82523d6000602084013e6124fb565b606091505b50805160000361254f576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d38565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014610b9d576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d38565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612641576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610d38565b600061264f838360006129c8565b905073ffffffffffffffffffffffffffffffffffffffff811615610aaf576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610d38565b606060006126af83612cf9565b600101905060008167ffffffffffffffff8111156126cf576126cf6132bd565b6040519080825280601f01601f1916602001820160405280156126f9576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461270357509392505050565b6001546000907801000000000000000000000000000000000000000000000000900463ffffffff1642106127b757506001547801000000000000000000000000000000000000000000000000900463ffffffff1690565b504290565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930081806127fe575073ffffffffffffffffffffffffffffffffffffffff831615155b1561297257600061280e85611ba7565b905073ffffffffffffffffffffffffffffffffffffffff84161580159061286157508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156128bf575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b1561290e576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d38565b821561297057848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff90811690841615612a4357612a43818587612ddb565b73ffffffffffffffffffffffffffffffffffffffff811615612abb57612a6d6000866000806127bc565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff861615612b065773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000612b9c60008360006129c8565b905073ffffffffffffffffffffffffffffffffffffffff811661094b576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610d38565b600080602060008451602086016000885af180612c11576040513d6000823e3d81fd5b50506000513d91508115612c29578060011415612c43565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156109ff576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d38565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166110f3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612d42577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612d6e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612d8c57662386f26fc10000830492506010015b6305f5e1008310612da4576305f5e100830492506008015b6127108310612db857612710830492506004015b60648310612dca576064830492506002015b600a831061082f5760010192915050565b612de6838383612e8b565b610aaf5773ffffffffffffffffffffffffffffffffffffffff8316612e3a576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610d38565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610d38565b600073ffffffffffffffffffffffffffffffffffffffff831615801590612f8857508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612f38575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80612f88575060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611ba457600080fd5b600060208284031215612fd057600080fd5b81356118cd81612f90565b60005b83811015612ff6578181015183820152602001612fde565b50506000910152565b60008151808452613017816020860160208601612fdb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006118cd6020830184612fff565b60006020828403121561306e57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611ba457600080fd5b600080604083850312156130aa57600080fd5b82356130b581613075565b946020939093013593505050565b6000806000606084860312156130d857600080fd5b83356130e381613075565b925060208401356130f381613075565b929592945050506040919091013590565b803563ffffffff8116811461311857600080fd5b919050565b60006020828403121561312f57600080fd5b6118cd82613104565b60008060006040848603121561314d57600080fd5b833561315881613075565b9250602084013567ffffffffffffffff81111561317457600080fd5b8401601f8101861361318557600080fd5b803567ffffffffffffffff81111561319c57600080fd5b8660208260051b84010111156131b157600080fd5b939660209190910195509293505050565b6000602082840312156131d457600080fd5b81356118cd81613075565b600080604083850312156131f257600080fd5b82356131fd81613075565b9150602083013561320d81613075565b809150509250929050565b60008060006060848603121561322d57600080fd5b833561323881613075565b9250602084013561324881613075565b915061325660408501613104565b90509250925092565b6000806040838503121561327257600080fd5b50508035926020909101359150565b8015158114611ba457600080fd5b600080604083850312156132a257600080fd5b82356132ad81613075565b9150602083013561320d81613281565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561330257600080fd5b843561330d81613075565b9350602085013561331d81613075565b925060408501359150606085013567ffffffffffffffff81111561334057600080fd5b8501601f8101871361335157600080fd5b803567ffffffffffffffff81111561336b5761336b6132bd565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156133d7576133d76132bd565b6040528181528282016020018910156133ef57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561342457600080fd5b823561342f81613075565b915060208301356bffffffffffffffffffffffff8116811461320d57600080fd5b600181811c9082168061346457607f821691505b60208210810361349d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561082f5761082f6134a3565b8082018082111561082f5761082f6134a3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561353957600080fd5b81516118cd81613281565b60006020828403121561355657600080fd5b5051919050565b808202811582820484141761082f5761082f6134a3565b6000826135aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6bffffffffffffffffffffffff818116838216019081111561082f5761082f6134a3565b600067ffffffffffffffff821667ffffffffffffffff81036135f7576135f76134a3565b60010192915050565b63ffffffff818116838216019081111561082f5761082f6134a3565b6000835161362e818460208801612fdb565b835190830190613642818360208801612fdb565b01949350505050565b6bffffffffffffffffffffffff828116828216039081111561082f5761082f6134a3565b601f821115610aaf57806000526020600020601f840160051c810160208510156136965750805b601f840160051c820191505b818110156125ea57600081556001016136a2565b815167ffffffffffffffff8111156136d0576136d06132bd565b6136e4816136de8454613450565b8461366f565b6020601f82116001811461373657600083156137005750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556125ea565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156137845787850151825560209485019460019092019101613764565b50848210156137c057868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006138206080830184612fff565b9695505050505050565b60006020828403121561383c57600080fd5b81516118cd81612f9056fea26469706673582212201338d036aa473860558f00f15ca18295bd037cdbe4738e4dbf3942e053cbb5bb64736f6c634300081c0033