0 txs
37 calls
constructor
constructor(address _privixToken, address _usdtToken, address _nftContract)
functions
activeStakers
viewfunction activeStakers(uint256) view returns (address)
canUnstake
viewfunction canUnstake(address user) view returns (bool)
currentDay
viewfunction currentDay() view returns (uint256)
dailyRewards
viewfunction dailyRewards(uint256) view returns (uint256 totalDeposited, uint256 activeStakers, uint256 rewardPerStaker, uint256 timestamp)
DIAMOND_END
viewfunction DIAMOND_END() view returns (uint256)
DIAMOND_START
viewfunction DIAMOND_START() view returns (uint256)
getAllActiveStakers
viewfunction getAllActiveStakers() view returns (address[])
getCurrentDay
viewfunction getCurrentDay() view returns (uint256)
getDailyRewardInfo
viewfunction getDailyRewardInfo(uint256 day) view returns (uint256 totalDeposited, uint256 activeStakers, uint256 rewardPerStaker, uint256 timestamp)
getPoolStats
viewfunction getPoolStats() view returns (uint256 _totalStaked, uint256 _totalStakers, uint256 _totalRewardsPaid, uint256 _contractUsdtBalance, uint256 _contractPrivixBalance, uint256 _totalDaysWithRewards, uint256 _totalDailyRewardsDeposited, uint256 _currentDay)
isStakeLiquidatable
viewfunction isStakeLiquidatable(address user) view returns (bool)
lastKnownUsdtBalance
viewfunction lastKnownUsdtBalance() view returns (uint256)
LOCKUP_PERIOD
viewfunction LOCKUP_PERIOD() view returns (uint256)
migrationDeadline
viewfunction migrationDeadline() view returns (uint256)
migrationMode
viewfunction migrationMode() view returns (bool)
nftContract
viewfunction nftContract() view returns (address)
nftUsedForStaking
viewfunction nftUsedForStaking(uint256) view returns (bool)
owner
viewfunction owner() view returns (address)
privixToken
viewfunction privixToken() view returns (address)
REWARD_PERIOD
viewfunction REWARD_PERIOD() view returns (uint256)
SECONDS_PER_DAY
viewfunction SECONDS_PER_DAY() view returns (uint256)
stakerIndex
viewfunction stakerIndex(address) view returns (uint256)
stakerStillOwnsNFT
viewfunction stakerStillOwnsNFT(address user) view returns (bool)
stakes
viewfunction stakes(address) view returns (uint256 amount, uint256 stakeTime, uint256 stakeDay, uint256 lastClaimTime, uint256 lastClaimDay, uint256 diamondTokenId, bool isActive, uint256 totalClaimed, uint256 accumulatedRewards)
STAKING_AMOUNT
viewfunction STAKING_AMOUNT() view returns (uint256)
totalDailyRewardsDeposited
viewfunction totalDailyRewardsDeposited() view returns (uint256)
totalDaysWithRewards
viewfunction totalDaysWithRewards() view returns (uint256)
totalRewardsPaid
viewfunction totalRewardsPaid() view returns (uint256)
totalStaked
viewfunction totalStaked() view returns (uint256)
totalStakers
viewfunction totalStakers() view returns (uint256)
usdtToken
viewfunction usdtToken() view returns (address)
userOwnsDiamondNFT
viewfunction userOwnsDiamondNFT(address user) view returns (bool, uint256[])
batchMigrateStakers
nonpayablefunction batchMigrateStakers(address[] users, uint256[] amounts, uint256[] stakeTimes, uint256[] lastClaimTimes, uint256[] diamondTokenIds, uint256[] totalsClaimed)
claimRewards
nonpayablefunction claimRewards()
depositDailyRewards
nonpayablefunction depositDailyRewards(uint256 amount)
disableMigrationMode
nonpayablefunction disableMigrationMode()
getClaimableRewards
nonpayablefunction getClaimableRewards(address user) returns (uint256)
getDailyAccumulatedRewards
nonpayablefunction getDailyAccumulatedRewards(address user) returns (uint256)
getStakingDashboard
nonpayablefunction getStakingDashboard(address user) returns (bool isStaking, uint256 stakedAmount, uint256 stakeTime, uint256 daysStaked, uint256 dailyAccumulated, uint256 claimableNow, uint256 nextClaimTime, uint256 lockupTimeLeft, bool canUnstakeNow)
liquidateStake
nonpayablefunction liquidateStake(address user)
migrateStaker
nonpayablefunction migrateStaker(address user, uint256 amount, uint256 stakeTime, uint256 lastClaimTime, uint256 diamondTokenId, uint256 totalClaimed)
ownerClaimDailyReward
nonpayablefunction ownerClaimDailyReward()
ownerWithdrawPrivix
nonpayablefunction ownerWithdrawPrivix(uint256 amount)
ownerWithdrawUsdt
nonpayablefunction ownerWithdrawUsdt(uint256 amount)
renounceOwnership
nonpayablefunction renounceOwnership()
stake
nonpayablefunction stake(uint256 diamondTokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake()
events
DailyRewardsDeposited
event DailyRewardsDeposited(uint256 indexed day, uint256 amount, uint256 activeStakers, uint256 rewardPerStaker)
MigrationModeDisabled
event MigrationModeDisabled()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardsClaimed
event RewardsClaimed(address indexed user, uint256 amount, uint256 timestamp, uint256 claimedUpToDay)
Staked
event Staked(address indexed user, uint256 amount, uint256 diamondTokenId, uint256 timestamp, uint256 stakeDay)
StakeLiquidated
event StakeLiquidated(address indexed user, uint256 amount, uint256 diamondTokenId, address indexed liquidator)
StakerMigrated
event StakerMigrated(address indexed user, uint256 amount, uint256 stakeTime, uint256 lastClaimTime, uint256 diamondTokenId)
Unstaked
event Unstaked(address indexed user, uint256 amount, uint256 timestamp)
errors
No errors.
creation bytecode
0x60e0604052600e805460ff191660011790553480156200001e57600080fd5b506040516200400138038062004001833981016040819052620000419162000135565b6200004c336200009b565b600180556001600160a01b0380841660805282811660a052811660c05262000073620000eb565b600355620000854262093a806200017f565b600f5550506001600a55506000600d55620001c4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620000fc426201518062000101565b905090565b60006200010f8284620001a1565b90505b92915050565b80516001600160a01b03811681146200013057600080fd5b919050565b6000806000606084860312156200014b57600080fd5b620001568462000118565b9250620001666020850162000118565b9150620001766040850162000118565b90509250925092565b808201808211156200011257634e487b7160e01b600052601160045260246000fd5b600082620001bf57634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c051613d6c62000295600039600081816106f7015281816108d10152818161211801528181612214015281816125fe0152818161272f01528181612e2001528181612f0b01528181612fac015261320b01526000818161063b015281816112a80152818161144c015281816114dc015281816115f2015281816117a90152818161185801528181611e5e01528181611f1501528181612ce501526135e801526000818161050301528181610dbb01528181611a790152818161285d0152612d650152613d6c6000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c8063817b1cd211610167578063b203dc60116100ce578063e7f5aad911610087578063e7f5aad91461074d578063ec16d076146102a5578063ed49893d1461075a578063f2fde38b14610763578063fb99c06414610776578063fe4eaa121461077f57600080fd5b8063b203dc6014610665578063b310ce5a1461069c578063bbb85188146106af578063d56d229d146106f2578063db14f6bc14610719578063ddd710fb1461073a57600080fd5b80638da5cb5b116101205780638da5cb5b146105f75780639699793314610608578063a082f83014610610578063a694fc3a14610623578063a98ad46c14610636578063aec5e1ee1461065d57600080fd5b8063817b1cd21461055b57806383924de01461056457806384ce14b01461056d57806385f4498b1461058057806386989038146105935780638b6740591461059c57600080fd5b80634ee13a881161020b57806374958e35116101c457806374958e35146104eb57806374f0314f146104f45780637628fd40146104fe57806378d60a5b146105255780637a01e2bd1461054557806380f199e61461055257600080fd5b80634ee13a881461048e5780634fc34e79146104a15780635ad05d08146104b45780635c9302c9146104c7578063715018a6146104d057806371aaad33146104d857600080fd5b806331b7f25d1161025d57806331b7f25d146103c957806333c13494146103f4578063372500ab146103fd5780633e6968b614610405578063485bc3931461040d578063489b58651461048557600080fd5b80630a171df8146102a557806316934fc4146102c257806326d02dea1461036657806329c44910146103995780632def6620146103ae578063308e401e146103b6575b600080fd5b6102af62278d0081565b6040519081526020015b60405180910390f35b6103206102d036600461383f565b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460068601546007870154600890970154959794969395929493919260ff909116919089565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a0850152151560c084015260e0830152610100820152610120016102b9565b61038961037436600461385c565b60066020526000908152604090205460ff1681565b60405190151581526020016102b9565b6103ac6103a73660046138c1565b610794565b005b6103ac610ca3565b6102af6103c436600461383f565b610f52565b6103dc6103d736600461385c565b611118565b6040516001600160a01b0390911681526020016102b9565b6102af600d5481565b6103ac611142565b6102af6115cc565b61046561041b36600461385c565b600090815260026020818152604092839020835160808101855281548082526001830154938201849052938201549481018590526003909101546060909101819052919390929190565b6040805194855260208501939093529183015260608201526080016102b9565b6102af60045481565b6103ac61049c36600461385c565b6115e0565b6103ac6104af36600461385c565b6116ec565b6102af6104c236600461383f565b6118d1565b6102af60035481565b6103ac611a55565b6103ac6104e636600461385c565b611a67565b6102af600b5481565b6102af6201518081565b6103dc7f000000000000000000000000000000000000000000000000000000000000000081565b6102af61053336600461383f565b60086020526000908152604090205481565b600e546103899060ff1681565b6102af600c5481565b6102af60095481565b6102af600f5481565b61038961057b36600461383f565b611ab8565b61038961058e36600461383f565b611aef565b6102af600a5481565b6105af6105aa36600461383f565b611b9d565b604080519915158a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e08301521515610100820152610120016102b9565b6000546001600160a01b03166103dc565b6103ac611d4e565b6103ac61061e366004613a04565b611ffe565b6103ac61063136600461385c565b6124ce565b6103dc7f000000000000000000000000000000000000000000000000000000000000000081565b6103ac612a70565b61046561067336600461385c565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b6103ac6106aa36600461383f565b612aad565b6106b7612cae565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016102b9565b6103dc7f000000000000000000000000000000000000000000000000000000000000000081565b61072c61072736600461383f565b612df9565b6040516102b9929190613a50565b61038961074836600461383f565b61315d565b6102af65048c2739500081565b6102af6101f581565b6103ac61077136600461383f565b6132a1565b6102af6103e881565b610787613317565b6040516102b99190613aa0565b61079c613379565b600e5460ff1680156107b05750600f544211155b6107fa5760405162461bcd60e51b8152602060048201526016602482015275135a59dc985d1a5bdb881c195c9a5bd908195b99195960521b60448201526064015b60405180910390fd5b8a8914801561080857508887145b801561081357508685145b801561081e57508483145b801561082957508281145b61086e5760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064016107f1565b60005b8b811015610c945760008d8d8381811061088d5761088d613aed565b90506020020160208101906108a2919061383f565b6001600160a01b03811660009081526005602052604090206006015490915060ff16156108cf5750610c82565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e87878581811061091057610910613aed565b905060200201356040518263ffffffff1660e01b815260040161093591815260200190565b602060405180830381865afa92505050801561096e575060408051601f3d908101601f1916820190925261096b91810190613b03565b60015b6109785750610c82565b816001600160a01b0316816001600160a01b031614610998575050610c82565b5060006109c9620151808c8c868181106109b4576109b4613aed565b905060200201356133d390919063ffffffff16565b905060006109e6620151808b8b878181106109b4576109b4613aed565b90506040518061012001604052808f8f87818110610a0657610a06613aed565b9050602002013581526020018d8d87818110610a2457610a24613aed565b9050602002013581526020018381526020018b8b87818110610a4857610a48613aed565b905060200201358152602001828152602001898987818110610a6c57610a6c613aed565b905060200201358152602001600115158152602001878787818110610a9357610a93613aed565b905060200201358152602001600081525060056000856001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff02191690831515021790555060e0820151816007015561010082015181600801559050506001600660008a8a88818110610b5557610b55613aed565b90506020020135815260200190815260200160002060006101000a81548160ff021916908315150217905550610b8a836133e6565b610bb78e8e86818110610b9f57610b9f613aed565b9050602002013560095461344790919063ffffffff16565b600955600a54610bc8906001613447565b600a556001600160a01b0383167ff68f5bdf452869d8cc1ec7c6332285985a124cbdf6c79917ce1494241f308f028f8f87818110610c0857610c08613aed565b905060200201358e8e88818110610c2157610c21613aed565b905060200201358d8d89818110610c3a57610c3a613aed565b905060200201358c8c8a818110610c5357610c53613aed565b604080519687526020878101969096528601939093525091020135606082015260800160405180910390a25050505b80610c8c81613b36565b915050610871565b50505050505050505050505050565b610cab613453565b3360009081526005602052604090206006015460ff16610cdd5760405162461bcd60e51b81526004016107f190613b4f565b610ce633611aef565b610d2b5760405162461bcd60e51b815260206004820152601660248201527514dd1a5b1b081a5b881b1bd8dadd5c081c195c9a5bd960521b60448201526064016107f1565b33600081815260056020818152604080842081516101208101835281548082526001830154828601526002830154828501526003830154606083015260048084015460808401529583015460a0830152600683015460ff16151560c0830152600783015460e0830152600890920154610100820152825163a9059cbb60e01b8152948501969096526024840152517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169363a9059cbb9360448082019493929183900301908290875af1158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190613b78565b610e775760405162461bcd60e51b8152602060048201526016602482015275141492559256081d1c985b9cd9995c8819985a5b195960521b60448201526064016107f1565b60a08101516000908152600660205260409020805460ff19169055610e9b336134ac565b33600090815260056020819052604082208281556001810183905560028101839055600381018390556004810183905590810182905560068101805460ff1916905560078101829055600801558051600954610ef6916135b2565b600955600a54610f079060016135b2565b600a5580516040805191825242602083015233917f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e910160405180910390a250610f5060018055565b565b6000610f5c6135c4565b6001600160a01b0382166000908152600560208181526040928390208351610120810185528154815260018201549281019290925260028101549382019390935260038301546060820152600483015460808201529082015460a0820152600682015460ff1615801560c0830152600783015460e08301526008909201546101008201529080610ff25750610ff08361315d565b155b156110005750600092915050565b60608101516110129062278d00613447565b4210156110225750600092915050565b600061103b8260600151426135b290919063ffffffff16565b9050600061104c8262278d006133d3565b9050600061106b6110608362278d0061368f565b606086015190613447565b9050600061107c82620151806133d3565b608086015190915060009081611093826001613447565b90505b83811161110a57600081815260026020818152604092839020835160808101855281548082526001830154938201939093529281015493830193909352600390920154606082015290156110f75760408101516110f4908590613447565b93505b508061110281613b36565b915050611096565b509098975050505050505050565b6007818154811061112857600080fd5b6000918252602090912001546001600160a01b0316905081565b61114a613453565b6111526135c4565b3360009081526005602052604090206006015460ff166111845760405162461bcd60e51b81526004016107f190613b4f565b61118d3361315d565b6111cf5760405162461bcd60e51b8152602060048201526013602482015272139195081b9bc81b1bdb99d95c881bdddb9959606a1b60448201526064016107f1565b336000908152600560205260409020600301546111ef9062278d00613447565b42101561123e5760405162461bcd60e51b815260206004820181905260248201527f4d75737420776169742033302064617973206265747765656e20636c61696d7360448201526064016107f1565b600061124933610f52565b9050600081116112915760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b60448201526064016107f1565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b9190613b9a565b10156113695760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e74205553445420696e20636f6e747261637400000060448201526064016107f1565b336000908152600560205260408120600301546113879042906135b2565b905060006113988262278d006133d3565b90506113c36113aa8262278d0061368f565b3360009081526005602052604090206003015490613447565b336000908152600560205260408120600301829055906113e690620151806133d3565b336000908152600560205260409020600481018290556007015490915061140d9085613447565b336000908152600560205260408082206007810193909355600890920155516370a0823160e01b81523060048201526114bd9085906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b79190613b9a565b906135b2565b600d5560405163a9059cbb60e01b8152336004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561152d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115519190613b78565b61156d5760405162461bcd60e51b81526004016107f190613bb3565b600b5461157a9085613447565b600b556040805185815242602082015290810182905233907f56253d287efacdb2c4cd76dd03624a4821c1ce721d1152e8f5f5718f6087c9bf9060600160405180910390a250505050610f5060018055565b60006115db42620151806133d3565b905090565b6115e8613379565b6115f0613453565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6116316000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190613b78565b6116e05760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107f1565b6116e960018055565b50565b6116f4613379565b600081116117445760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016107f1565b6007546117875760405162461bcd60e51b81526020600482015260116024820152704e6f20616374697665207374616b65727360781b60448201526064016107f1565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af11580156117fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181e9190613b78565b61183a5760405162461bcd60e51b81526004016107f190613bb3565b6118438161369b565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156118a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cb9190613b9a565b600d5550565b60006118db6135c4565b6001600160a01b0382166000908152600560208181526040928390208351610120810185528154815260018201549281019290925260028101549382019390935260038301546060820152600483015460808201529082015460a0820152600682015460ff1615801560c0830152600783015460e08301526008909201546101008201529080611971575061196f8361315d565b155b1561197f5750600092915050565b610100810151600061198f6115cc565b9050600083604001518460800151116119ac5783604001516119b2565b83608001515b905060006119c1826001613447565b90505b828111611a4a5760008181526002602081815260409283902083516080810185528154808252600183015493820193909352928101549383019390935260039092015460608201529015801590611a1f575060008160200151115b15611a37576040810151611a34908690613447565b94505b5080611a4281613b36565b9150506119c4565b509195945050505050565b611a5d613379565b610f5060006137da565b611a6f613379565b611a77613453565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6116316000546001600160a01b031690565b6001600160a01b03811660009081526005602052604081206006015460ff168015611ae95750611ae78261315d565b155b92915050565b6001600160a01b03811660009081526005602081815260408084208151610120810183528154815260018201549381019390935260028101549183019190915260038101546060830152600481015460808301529182015460a0820152600682015460ff16151560c08201819052600783015460e083015260089092015461010082015290611b815750600092915050565b6020810151611b939062278d00613447565b4210159392505050565b6000806000806000806000806000611bb36135c4565b6001600160a01b038a166000908152600560208181526040928390208351610120810185528154808252600183015493820184905260028301549582019590955260038201546060820152600482015460808201529281015460a0840152600681015460ff1615801560c08501819052600783015460e0860152600890920154610100850152909c50929a50985090611d4057611c6a62015180611c648360200151426135b290919063ffffffff16565b906133d3565b604051630b5a0ba160e31b81526001600160a01b038d1660048201529097503090635ad05d08906024016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd79190613b9a565b9550611ce28b610f52565b6060820151909550611cf79062278d00613447565b93506000611d1562278d00836020015161344790919063ffffffff16565b905080421015611d2e57611d2981426135b2565b611d31565b60005b9350611d3c8c611aef565b9250505b509193959799909294969850565b611d56613379565b611d5e613453565b6000611d686115cc565b6000818152600260208181526040928390208351608081018552815480825260018301549382019390935292810154938301939093526003909201546060820152919250611df85760405162461bcd60e51b815260206004820152601a60248201527f4e6f2072657761726473206465706f736974656420746f64617900000000000060448201526064016107f1565b6000816040015111611e425760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b60448201526064016107f1565b60408181015190516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed19190613b9a565b1015611f135760405162461bcd60e51b8152602060048201526011602482015270125b9cdd59999a58da595b9d081554d115607a1b60448201526064016107f1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611f546000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc59190613b78565b611fe15760405162461bcd60e51b81526004016107f190613bb3565b600b54611fee9082613447565b600b5550610f5091506135be9050565b612006613379565b600e5460ff16801561201a5750600f544211155b61205f5760405162461bcd60e51b8152602060048201526016602482015275135a59dc985d1a5bdb881c195c9a5bd908195b99195960521b60448201526064016107f1565b6001600160a01b03861660009081526005602052604090206006015460ff16156120cb5760405162461bcd60e51b815260206004820152601d60248201527f5573657220616c72656164792068617320616374697665207374616b6500000060448201526064016107f1565b6000851161210c5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016107f1565b856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e846040518263ffffffff1660e01b815260040161216491815260200190565b602060405180830381865afa158015612181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a59190613b03565b6001600160a01b0316146121fb5760405162461bcd60e51b815260206004820152601860248201527f5573657220646f65736e2774206f776e20746865204e4654000000000000000060448201526064016107f1565b604051632783162d60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f062c5a90602401600060405180830381865afa158015612263573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261228b9190810190613bf7565b604080518082019091526007815266111a585b5bdb9960ca1b6020918201528151908201209091507faadb29765cb3e4f21bde5ecd65db8e565d901b6c9394dcec22aa81b8ff2d6e2f1461231b5760405162461bcd60e51b815260206004820152601760248201527627232a1034b9903737ba102234b0b6b7b732103a34b2b960491b60448201526064016107f1565b600061232a86620151806133d3565b9050600061233b86620151806133d3565b90506040518061012001604052808981526020018881526020018381526020018781526020018281526020018681526020016001151581526020018581526020016000815250600560008b6001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff02191690831515021790555060e08201518160070155610100820151816008015590505060016006600087815260200190815260200160002060006101000a81548160ff02191690831515021790555061244f896133e6565b60095461245c9089613447565b600955600a5461246d906001613447565b600a556040805189815260208101899052908101879052606081018690526001600160a01b038a16907ff68f5bdf452869d8cc1ec7c6332285985a124cbdf6c79917ce1494241f308f029060800160405180910390a2505050505050505050565b6124d6613453565b600e5460ff16156125295760405162461bcd60e51b815260206004820152601a60248201527f436f6e747261637420696e206d6967726174696f6e206d6f646500000000000060448201526064016107f1565b3360009081526005602052604090206006015460ff161561257e5760405162461bcd60e51b815260206004820152600f60248201526e416c7265616479207374616b696e6760881b60448201526064016107f1565b6101f5811015801561259257506103e88111155b6125de5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206469616d6f6e6420746f6b656e204944000000000000000060448201526064016107f1565b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015612645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126699190613b03565b6001600160a01b0316146126b75760405162461bcd60e51b8152602060048201526015602482015274139bdd081bdddb995c881bd9881d1a1a5cc8139195605a1b60448201526064016107f1565b60008181526006602052604090205460ff16156127165760405162461bcd60e51b815260206004820152601c60248201527f4e465420616c7265616479207573656420666f72207374616b696e670000000060448201526064016107f1565b604051632783162d60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f062c5a90602401600060405180830381865afa15801561277e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127a69190810190613bf7565b604080518082019091526007815266111a585b5bdb9960ca1b6020918201528151908201209091507faadb29765cb3e4f21bde5ecd65db8e565d901b6c9394dcec22aa81b8ff2d6e2f146128365760405162461bcd60e51b815260206004820152601760248201527627232a1034b9903737ba102234b0b6b7b732103a34b2b960491b60448201526064016107f1565b6040516323b872dd60e01b815233600482015230602482015265048c2739500060448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af11580156128ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d29190613b78565b6129175760405162461bcd60e51b8152602060048201526016602482015275141492559256081d1c985b9cd9995c8819985a5b195960521b60448201526064016107f1565b60006129216115cc565b604080516101208101825265048c273950008152426020808301828152838501868152606085019384526080850187815260a086018b8152600160c08801818152600060e08a018181526101008b01828152338084526005808c528e85209d518e5599518d870155975160028d0155995160038c0155945160048b015592519589019590955593516006808901805492151560ff199384161790559251600789015595516008909701969096558a86529092529390922080549091169092179091559091506129ef906133e6565b600954612a029065048c27395000613447565b600955600a54612a13906001613447565b600a556040805165048c27395000815260208101859052428183015260608101839052905133917f9cfd25589d1eb8ad71e342a86a8524e83522e3936c0803048c08f6d9ad974f40919081900360800190a250506116e960018055565b612a78613379565b600e805460ff191690556040517f696f10054d6c1ede8f1a191c155c7e36b572da39bbd1faba110b029df808b1b790600090a1565b612ab5613379565b612abd613453565b6001600160a01b03811660009081526005602052604090206006015460ff16612af85760405162461bcd60e51b81526004016107f190613b4f565b612b0181611ab8565b612b465760405162461bcd60e51b81526020600482015260166024820152755374616b65206e6f74206c6971756964617461626c6560501b60448201526064016107f1565b6001600160a01b03811660009081526005602081815260408084208151610120810183528154815260018201548185015260028201548184015260038201546060820152600482015460808201529381015460a0850181905260068083015460ff16151560c0870152600783015460e08701526008909201546101008601528552909152909120805460ff19169055612bde826134ac565b6001600160a01b038216600090815260056020819052604082208281556001810183905560028101839055600381018390556004810183905590810182905560068101805460ff1916905560078101829055600801558051600954612c42916135b2565b600955600a54612c539060016135b2565b600a55805160a082015160408051928352602083019190915233916001600160a01b038516917fe828f4812dd0a9b1a5ba6610c6b803f3ab1ec0a4bcd3e916095401f808d0cd80910160405180910390a3506116e960018055565b600954600a54600b546040516370a0823160e01b815230600482015260009384938493849384938493849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d509190613b9a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd89190613b9a565b600454600c54600354969f959e50939c50919a509850965094509092509050565b6040516370a0823160e01b81526001600160a01b03828116600483015260009160609183917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8d9190613b9a565b905060008167ffffffffffffffff811115612eaa57612eaa613be1565b604051908082528060200260200182016040528015612ed3578160200160208202803683370190505b5090506000805b838110156130b257604051632f745c5960e01b81526001600160a01b038881166004830152602482018390526000917f000000000000000000000000000000000000000000000000000000000000000090911690632f745c5990604401602060405180830381865afa158015612f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f789190613b9a565b90506101f58110158015612f8e57506103e88111155b1561309f57604051632783162d60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f062c5a90602401600060405180830381865afa158015612ffb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130239190810190613bf7565b604080518082019091526007815266111a585b5bdb9960ca1b6020918201528151908201209091507f5524d689a34c1b0de421a1329a2471a9a26fe4936c6b2313dd557e4700d291d10161309d578185858151811061308457613084613aed565b60209081029190910101528361309981613b36565b9450505b505b50806130aa81613b36565b915050612eda565b5060008167ffffffffffffffff8111156130ce576130ce613be1565b6040519080825280602002602001820160405280156130f7578160200160208202803683370190505b50905060005b8281101561314e5783818151811061311757613117613aed565b602002602001015182828151811061313157613131613aed565b60209081029190910101528061314681613b36565b9150506130fd565b50901515969095509350505050565b6001600160a01b03811660009081526005602081815260408084208151610120810183528154815260018201549381019390935260028101549183019190915260038101546060830152600481015460808301529182015460a0820152600682015460ff16151560c08201819052600783015460e0830152600890920154610100820152906131ef5750600092915050565b60a08101516040516331a9108f60e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa925050508015613276575060408051601f3d908101601f1916820190925261327391810190613b03565b60015b6132835750600092915050565b836001600160a01b0316816001600160a01b03161492505050919050565b6132a9613379565b6001600160a01b03811661330e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f1565b6116e9816137da565b6060600780548060200260200160405190810160405280929190818152602001828054801561336f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613351575b5050505050905090565b6000546001600160a01b03163314610f505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f1565b60006133df8284613cc1565b9392505050565b600780546001600160a01b039092166000818152600860205260408120849055600184018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180546001600160a01b0319169091179055565b60006133df8284613ce3565b6002600154036134a55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107f1565b6002600155565b6001600160a01b0381166000908152600860205260408120546007549091906134d790600190613cf6565b905080821461355f576000600782815481106134f5576134f5613aed565b600091825260209091200154600780546001600160a01b03909216925082918590811061352457613524613aed565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526008909152604090208290555b600780548061357057613570613d09565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600890935250506040812055565b60006133df8284613cf6565b60018055565b6007546000036135d057565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365b9190613b9a565b9050600d548111156116e957600061367e600d54836135b290919063ffffffff16565b90506136898161369b565b50600d55565b60006133df8284613d1f565b60006136a56115cc565b600754600a54919250906000906136bd9085906133d3565b604080516080810182526000868152600260205291909120549192509081906136e69087613447565b815260200183815260200161371a83600260008881526020019081526020016000206002015461344790919063ffffffff16565b81524260209182015260008581526002808352604091829020845181559284015160018401559083015190820155606090910151600390910155600c546137619085613447565b600c5560008381526002602052604090205484900361378c57600454613788906001613447565b6004555b6003839055604080518581526020810184905290810182905283907fd95de07e994627b16be6571df38f6beabd459a12c90535ef70a0655643bd86629060600160405180910390a250505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146116e957600080fd5b60006020828403121561385157600080fd5b81356133df8161382a565b60006020828403121561386e57600080fd5b5035919050565b60008083601f84011261388757600080fd5b50813567ffffffffffffffff81111561389f57600080fd5b6020830191508360208260051b85010111156138ba57600080fd5b9250929050565b60008060008060008060008060008060008060c08d8f0312156138e357600080fd5b67ffffffffffffffff8d3511156138f957600080fd5b6139068e8e358f01613875565b909c509a5067ffffffffffffffff60208e0135111561392457600080fd5b6139348e60208f01358f01613875565b909a50985067ffffffffffffffff60408e0135111561395257600080fd5b6139628e60408f01358f01613875565b909850965067ffffffffffffffff60608e0135111561398057600080fd5b6139908e60608f01358f01613875565b909650945067ffffffffffffffff60808e013511156139ae57600080fd5b6139be8e60808f01358f01613875565b909450925067ffffffffffffffff60a08e013511156139dc57600080fd5b6139ec8e60a08f01358f01613875565b81935080925050509295989b509295989b509295989b565b60008060008060008060c08789031215613a1d57600080fd5b8635613a288161382a565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b60006040820184151583526020604081850152818551808452606086019150828701935060005b81811015613a9357845183529383019391830191600101613a77565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613ae15783516001600160a01b031683529284019291840191600101613abc565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613b1557600080fd5b81516133df8161382a565b634e487b7160e01b600052601160045260246000fd5b600060018201613b4857613b48613b20565b5060010190565b6020808252600f908201526e4e6f20616374697665207374616b6560881b604082015260600190565b600060208284031215613b8a57600080fd5b815180151581146133df57600080fd5b600060208284031215613bac57600080fd5b5051919050565b6020808252601490820152731554d115081d1c985b9cd9995c8819985a5b195960621b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215613c0a57600080fd5b825167ffffffffffffffff80821115613c2257600080fd5b818501915085601f830112613c3657600080fd5b815181811115613c4857613c48613be1565b604051601f8201601f19908116603f01168101908382118183101715613c7057613c70613be1565b816040528281528886848701011115613c8857600080fd5b600093505b82841015613caa5784840186015181850187015292850192613c8d565b600086848301015280965050505050505092915050565b600082613cde57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611ae957611ae9613b20565b81810381811115611ae957611ae9613b20565b634e487b7160e01b600052603160045260246000fd5b8082028115828204841417611ae957611ae9613b2056fea264697066735822122007ddeeaa85dfd61a949271c240dfd067f827a6c2a648668bcf9a15261c4af65364736f6c63430008140033000000000000000000000000afb942e2a12ac0861ad81b5c37682f588912c1d9000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000e0d947b837b42ea1bcd7dec7640d5b3bb2455d4e