More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 30 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Staking Enab... | 15852385 | 705 days ago | IN | 0 ETH | 0.00053666 | ||||
Reset Staking | 15852379 | 705 days ago | IN | 0 ETH | 0.00039765 | ||||
Force Payout | 15852377 | 705 days ago | IN | 0 ETH | 0.00085027 | ||||
Force Payout | 15852366 | 705 days ago | IN | 0 ETH | 0.00085435 | ||||
Claim Prize | 15852298 | 705 days ago | IN | 0 ETH | 0.00103115 | ||||
Set Winning Pool | 15852293 | 705 days ago | IN | 0 ETH | 0.00091733 | ||||
Set Staking Enab... | 15851950 | 705 days ago | IN | 0 ETH | 0.0002855 | ||||
Stake | 15851895 | 705 days ago | IN | 0 ETH | 0.00162942 | ||||
Stake | 15851821 | 705 days ago | IN | 0 ETH | 0.00133703 | ||||
Stake | 15851385 | 705 days ago | IN | 0 ETH | 0.00152522 | ||||
Stake | 15849864 | 705 days ago | IN | 0 ETH | 0.00202909 | ||||
Stake | 15849863 | 705 days ago | IN | 0 ETH | 0.00233103 | ||||
Set Staking Enab... | 15846720 | 705 days ago | IN | 0 ETH | 0.0006414 | ||||
Reset Staking | 15846710 | 705 days ago | IN | 0 ETH | 0.00052649 | ||||
Claim Prize | 15846698 | 705 days ago | IN | 0 ETH | 0.001461 | ||||
Set Winning Pool | 15846693 | 705 days ago | IN | 0 ETH | 0.00126027 | ||||
Set Staking Enab... | 15846692 | 705 days ago | IN | 0 ETH | 0.0003811 | ||||
Set Deposit Fee | 15846347 | 705 days ago | IN | 0 ETH | 0.00026342 | ||||
Stake | 15846318 | 705 days ago | IN | 0 ETH | 0.0016293 | ||||
Stake | 15845980 | 705 days ago | IN | 0 ETH | 0.00162858 | ||||
Stake | 15845912 | 705 days ago | IN | 0 ETH | 0.00195429 | ||||
Stake | 15845904 | 705 days ago | IN | 0 ETH | 0.00195429 | ||||
Stake | 15845866 | 705 days ago | IN | 0 ETH | 0.00211809 | ||||
Stake | 15845857 | 705 days ago | IN | 0 ETH | 0.00244287 | ||||
Stake | 15845510 | 706 days ago | IN | 0 ETH | 0.00162858 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
AegisStaking
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-23 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.0 <0.9.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * Multiple authorisation system. */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } /** * @dev Representation of a fraction */ struct Fraction { uint16 numerator; uint16 denominator; } /** * @dev Describes each possible pool status: Inactive it did not begin yet, active people can stake and unstake, * finished means the staking is over but the prize has not yet been entirely given, cleared means this match is entirely over and stakes done. */ enum Status { INACTIVE, ACTIVE, FINISHED, CLEARED } /** * @dev There are two pools to bet on when staking, pool A and pool B. * pool A is the ID 0 and pool B is the id 1. */ struct Match { bool stakingEnabled; int8 winningPool; mapping (uint256 => uint256) poolStakedTokens; mapping (uint256 => mapping (address => uint256)) poolStakes; Status matchStatus; uint256 totalPrize; uint256 winningPoolTokens; uint256 iteration; } contract AegisStaking is Auth { address public stakingToken; Fraction internal depositFee = Fraction(1, 4); address internal feeReceiver; Match internal stakingMatch; uint256 internal reentrancyStatus; event Stake(address indexed staker, uint256 indexed poolId, uint256 amount); event Unstake(address indexed staker, uint256 indexed poolId, uint256 amount); event WinningPool(uint256 indexed poolId); event NewStakingPools(); event StakingOpen(); event StakingClosed(); constructor(address t, address fr) Auth(msg.sender) { stakingToken = t; feeReceiver = fr; stakingMatch.winningPool = -1; stakingMatch.matchStatus = Status.ACTIVE; stakingMatch.stakingEnabled = true; stakingMatch.iteration = 1; } modifier validPool(uint256 poolId) { require(poolId == 0 || poolId == 1, "Only valid pool IDs are 0 and 1."); _; } modifier validTokenAmount(uint256 amount) { require(amount > 0, "Amount needs to be bigger than 0"); _; } modifier stakingIsEnabled { require(stakingMatch.stakingEnabled, "Staking is not currently enabled."); _; } modifier nonReentrant() { require(reentrancyStatus == 0, "Reentrant call"); reentrancyStatus = 1; _; reentrancyStatus = 0; } /** * @dev Add your betting stake to a pool. */ function stake(uint256 externalPoolId, uint256 amount) external validPool(externalPoolId) validTokenAmount(amount) stakingIsEnabled nonReentrant { // Transfer tokens from the owner to the staking contract. IERC20(stakingToken).transferFrom(msg.sender, address(this), amount); // If appliable, get the deposit fee and send to the set receiver. uint256 toStake = amount; Fraction memory df = depositFee; if (df.numerator > 0 && df.denominator > 0) { uint256 fee = amount * df.numerator / df.denominator; toStake = amount - fee; IERC20(stakingToken).transfer(feeReceiver, fee); } uint256 realPoolId = getRealPoolID(externalPoolId); // Add stake to corresponding pool. stakeFor(msg.sender, realPoolId, toStake); emit Stake(msg.sender, externalPoolId, toStake); } function stakeFor(address staker, uint256 realPoolId, uint256 amount) internal { stakingMatch.poolStakes[realPoolId][staker] += amount; stakingMatch.poolStakedTokens[realPoolId] += amount; } function getRealPoolID(uint256 externalPoolId) internal view returns (uint256) { uint256 realPoolId; if (externalPoolId == 0) { realPoolId = getPoolAID(); } else { realPoolId = getPoolBID(); } return realPoolId; } /** * @dev Unstake to remove part or the entirety of a stake. */ function unstake(uint256 externalPoolId, uint256 amount) external validPool(externalPoolId) validTokenAmount(amount) stakingIsEnabled nonReentrant { uint256 realPoolId = getRealPoolID(externalPoolId); uint256 toUnstake = unstakeFor(msg.sender, realPoolId, amount); if (toUnstake > 0) { IERC20(stakingToken).transfer(msg.sender, toUnstake); emit Unstake(msg.sender, externalPoolId, toUnstake); } } function unstakeFor(address staker, uint256 realPoolId, uint256 amount) internal returns (uint256) { // Check staked tokens status and update the amount. uint256 toUnstake = amount; if (stakingMatch.poolStakes[realPoolId][staker] == 0) { return 0; } // If attempting to unstake more than staked simply unstake all at once. if (amount > stakingMatch.poolStakes[realPoolId][staker]) { toUnstake = stakingMatch.poolStakes[realPoolId][staker]; } stakingMatch.poolStakes[realPoolId][staker] -= toUnstake; stakingMatch.poolStakedTokens[realPoolId] -= toUnstake; return toUnstake; } function setWinningPool(uint256 externalPoolId) external validPool(externalPoolId) authorized { require(stakingMatch.matchStatus == Status.INACTIVE, "The staking must have been closed before picking a winning pool."); stakingMatch.matchStatus = Status.FINISHED; stakingMatch.winningPool = int8(uint8(externalPoolId)); uint256 realAID = getPoolAID(); uint256 realBID = getPoolBID(); uint256 poolAStake = stakingMatch.poolStakedTokens[realAID]; uint256 poolBStake = stakingMatch.poolStakedTokens[realBID]; stakingMatch.totalPrize = externalPoolId == 0 ? poolBStake : poolAStake; stakingMatch.winningPoolTokens = externalPoolId == 0 ? poolAStake : poolBStake; emit WinningPool(externalPoolId); } /** * @dev Sets which address receives the deposit fee. */ function setFeeReceiver(address newFeeReceier) external authorized { feeReceiver = newFeeReceier; } function setDepositFee(uint16 numerator, uint16 denominator) external authorized { depositFee.numerator = numerator; depositFee.denominator = denominator; } function getTotalStakedTokens() public view returns (uint256) { uint256 realAID = getPoolAID(); uint256 realBID = getPoolBID(); uint256 poolAStake = stakingMatch.poolStakedTokens[realAID]; uint256 poolBStake = stakingMatch.poolStakedTokens[realBID]; return poolAStake + poolBStake; } function getPoolAStakedTokens() external view returns (uint256) { uint256 poolAID = getPoolAID(); return stakingMatch.poolStakedTokens[poolAID]; } function getPoolBStakedTokens() external view returns (uint256) { uint256 poolBID = getPoolBID(); return stakingMatch.poolStakedTokens[poolBID]; } function getUserStakedTokens(address user, uint256 externalPoolId) public view returns (uint256) { uint256 realPoolId = getRealPoolID(externalPoolId); return stakingMatch.poolStakes[realPoolId][user]; } function isStakingEnabled() external view returns (bool) { return stakingMatch.stakingEnabled; } function getCurrentStakingStatus() public view returns (Status) { return stakingMatch.matchStatus; } function getTotalPrize() external view returns (uint256) { return stakingMatch.totalPrize; } function getWinningPoolTokens() external view returns (uint256) { return stakingMatch.winningPoolTokens; } function getWinningPool() external view returns (int8) { return stakingMatch.winningPool; } function setStakingEnabled(bool enabled) external authorized { if (enabled) { // Enable staking from either uninitialised state or restarting the stake before a winner is picked. require(stakingMatch.matchStatus == Status.INACTIVE, "Staking must be inactive."); stakingMatch.stakingEnabled = true; stakingMatch.matchStatus = Status.ACTIVE; emit StakingOpen(); } else { // Turn staking off in order to decide a winning pool or to temporarily pause the stake process. require(stakingMatch.matchStatus == Status.ACTIVE, "Staking must be active."); stakingMatch.stakingEnabled = false; stakingMatch.matchStatus = Status.INACTIVE; emit StakingClosed(); } } function forcePayout(address staker) external authorized { processPayout(staker); } function claimPrize() external { processPayout(msg.sender); } /** * @dev Claim the stake and prize from a winning pool stake. */ function processPayout(address staker) internal nonReentrant { require(stakingMatch.matchStatus == Status.FINISHED, "Winning bets can only be claimed when a winning pool has been decided."); uint256 win = uint256(uint8(stakingMatch.winningPool)); require(win == 0 || win == 1, "Winning pool is not correctly set!"); uint256 stakedTokens = getUserStakedTokens(staker, win); require(stakedTokens > 0, "No stake on winning pool."); uint256 prize = getUserPrize(staker); require(prize > 0, "No prize to claim."); uint256 toGive = prize + stakedTokens; // Reset staking for user. uint256 realPoolId = getRealPoolID(win); stakingMatch.poolStakes[realPoolId][staker] = 0; stakingMatch.poolStakedTokens[realPoolId] -= stakedTokens; if (stakingMatch.poolStakedTokens[realPoolId] == 0) { stakingMatch.matchStatus = Status.CLEARED; } IERC20(stakingToken).transfer(staker, toGive); } function resetStaking() external authorized { require( stakingMatch.matchStatus == Status.CLEARED || getTotalStakedTokens() == 0, "New staking can only be started when previous one is cleared." ); stakingMatch.winningPool = -1; stakingMatch.matchStatus = Status.INACTIVE; stakingMatch.iteration += 1; stakingMatch.stakingEnabled = false; stakingMatch.totalPrize = 0; stakingMatch.winningPoolTokens = 0; emit NewStakingPools(); } /** * @dev Gets the price for a specific staker. */ function getUserPrize(address staker) public view returns (uint256) { uint256 stakedTokens; uint256 realPoolID; int8 win = stakingMatch.winningPool; // Wrongly set winning pool. if (win < 0 || win > 1) { return 0; } // Winner is pool A. if (win == 0) { realPoolID = getPoolAID(); } else { // Winner is pool B. realPoolID = getPoolBID(); } stakedTokens = stakingMatch.poolStakes[realPoolID][staker]; if (stakedTokens > 0) { return calculatePrize(stakedTokens, stakingMatch.winningPoolTokens, stakingMatch.totalPrize); } return 0; } /** * @dev Calculates a price from the total prize and stake in a pool. */ function calculatePrize(uint256 stakedTokens, uint256 totalPoolStake, uint256 prize) public pure returns (uint256) { if (stakedTokens == 0 || totalPoolStake == 0 || prize == 0) { return 0; } // Factor used to avoid losing digits to rounding. uint256 factor = 10000; uint256 part = stakedTokens * factor / totalPoolStake; return part * prize / factor; } function recoverDust() external authorized { require(stakingMatch.matchStatus == Status.CLEARED, "Requires all prizes to have been given out."); IERC20 st = IERC20(stakingToken); st.transfer(feeReceiver, st.balanceOf(address(this))); } /** * @dev Internal pool IDs. Public IDs are always 0 for A and 1 for B. */ function getPoolAID() public view returns (uint256) { return stakingMatch.iteration * 2 - 1; } function getPoolBID() public view returns (uint256) { return stakingMatch.iteration * 2; } function getCurrentIteration() external view returns (uint256) { return stakingMatch.iteration; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"t","type":"address"},{"internalType":"address","name":"fr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"NewStakingPools","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[],"name":"StakingClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"StakingOpen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"WinningPool","type":"event"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakedTokens","type":"uint256"},{"internalType":"uint256","name":"totalPoolStake","type":"uint256"},{"internalType":"uint256","name":"prize","type":"uint256"}],"name":"calculatePrize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"claimPrize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"forcePayout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentIteration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentStakingStatus","outputs":[{"internalType":"enum Status","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolAID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolAStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolBID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolBStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalPrize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getUserPrize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"externalPoolId","type":"uint256"}],"name":"getUserStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWinningPool","outputs":[{"internalType":"int8","name":"","type":"int8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWinningPoolTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"numerator","type":"uint16"},{"internalType":"uint16","name":"denominator","type":"uint16"}],"name":"setDepositFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeReceier","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setStakingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"externalPoolId","type":"uint256"}],"name":"setWinningPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"externalPoolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"externalPoolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526001608052600460a0526003805463ffffffff1916620400011790553480156200002d57600080fd5b5060405162001f8838038062001f888339810160408190526200005091620000ea565b60008054336001600160a01b0319918216811783558252600160208190526040909220805460ff1990811684179091556002805483166001600160a01b039687161790556004805490921693909416929092179091556005805460088054909416831790935561ffff1990921661ff0117909155600b5562000122565b80516001600160a01b0381168114620000e557600080fd5b919050565b60008060408385031215620000fe57600080fd5b6200010983620000cd565b91506200011960208401620000cd565b90509250929050565b611e5680620001326000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80639e2c8a5b11610104578063efdcd974116100a2578063f589e38211610071578063f589e382146103a9578063f5fa0113146103b1578063f93b03bc146103c4578063fe9fbb80146103d757600080fd5b8063efdcd9741461035d578063f0b37c0414610370578063f2fde38b14610383578063f3409fa31461039657600080fd5b8063bce8567e116100de578063bce8567e1461032f578063db2793de14610342578063e29a93701461034a578063e35bed261461035557600080fd5b80639e2c8a5b14610301578063adeaa85114610314578063b6a5d7de1461031c57600080fd5b80635af098d91161017c57806372f702f31161014b57806372f702f3146102a257806375f47da5146102cd5780637a02a973146102e65780637b0472f0146102ee57600080fd5b80635af098d91461027757806360ea98591461028a5780636faabf5f1461029257806370740ac91461029a57600080fd5b806326e90775116101b857806326e90775146102225780632f54bf6e1461023557806348e37cc51461026757806351d185981461026f57600080fd5b8063028da340146101df5780630bcdec0014610205578063218a69851461020d575b600080fd5b6101f26101ed366004611bae565b610403565b6040519081526020015b60405180910390f35b600a546101f2565b61022061021b366004611bae565b6104aa565b005b6101f2610230366004611bcb565b61051a565b610257610243366004611bae565b6000546001600160a01b0391821691161490565b60405190151581526020016101fc565b6101f261057a565b6101f261059a565b60085460ff166040516101fc9190611c26565b6101f26105de565b600b546101f2565b6102206105f4565b6002546102b5906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b60055460405161010090910460000b81526020016101fc565b6102206105ff565b6102206102fc366004611c67565b61078a565b61022061030f366004611c67565b610b05565b6009546101f2565b61022061032a366004611bae565b610d73565b61022061033d366004611c97565b610df4565b610220610fb0565b60055460ff16610257565b6101f26111c0565b61022061036b366004611bae565b6111cb565b61022061037e366004611bae565b611264565b610220610391366004611bae565b6112df565b6102206103a4366004611ccb565b6113bd565b6101f261145f565b6102206103bf366004611cfe565b61147d565b6101f26103d2366004611d17565b611689565b6102576103e5366004611bae565b6001600160a01b031660009081526001602052604090205460ff1690565b600554600090819081906101009004810b81811280610425575060018160000b135b1561043557506000949350505050565b8060000b60000361044f5761044861145f565b915061045a565b6104576105de565b91505b60008281526007602090815260408083206001600160a01b03891684529091529020549250821561049f57600a5460095461049691859161051a565b95945050505050565b506000949350505050565b3360009081526001602052604090205460ff1661050e5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610517816116c2565b50565b6000831580610527575082155b80610530575081155b1561053d57506000610573565b61271060008461054d8388611d72565b6105579190611d89565b9050816105648583611d72565b61056e9190611d89565b925050505b9392505050565b6000806105856105de565b60009081526006602052604090205492915050565b6000806105a561145f565b905060006105b16105de565b60008381526006602052604080822054838352912054919250906105d58183611dc4565b94505050505090565b600b546000906105ef906002611d72565b905090565b6105fd336116c2565b565b3360009081526001602052604090205460ff1661065e5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600360085460ff16600381111561067757610677611bf7565b1480610688575061068661059a565b155b6106fa5760405162461bcd60e51b815260206004820152603d60248201527f4e6577207374616b696e672063616e206f6e6c7920626520737461727465642060448201527f7768656e2070726576696f7573206f6e6520697320636c65617265642e0000006064820152608401610505565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661ff001790556008805460ff19169055600b805460019190600090610746908490611dc4565b90915550506005805460ff1916905560006009819055600a8190556040517f86309a62863391b778982dbd53cd7130bb1998117eb485fbe4c1c83d2797858d9190a1565b818015806107985750806001145b6107e45760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792076616c696420706f6f6c2049447320617265203020616e6420312e6044820152606401610505565b81600081116108355760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206e6565647320746f20626520626967676572207468616e20306044820152606401610505565b60055460ff166108ad5760405162461bcd60e51b815260206004820152602160248201527f5374616b696e67206973206e6f742063757272656e746c7920656e61626c656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610505565b600c54156108fd5760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c0000000000000000000000000000000000006044820152606401610505565b6001600c556002546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190611dd7565b506040805180820190915260035461ffff80821680845262010000909204166020830152849190158015906109d357506000816020015161ffff16115b15610aa8576000816020015161ffff16826000015161ffff16876109f79190611d72565b610a019190611d89565b9050610a0d8187611df4565b600254600480546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216928101929092526024820185905292955091169063a9059cbb906044016020604051808303816000875af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611dd7565b50505b6000610ab387611a31565b9050610ac0338285611a53565b604051838152879033907f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b69060200160405180910390a350506000600c555050505050565b81801580610b135750806001145b610b5f5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792076616c696420706f6f6c2049447320617265203020616e6420312e6044820152606401610505565b8160008111610bb05760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206e6565647320746f20626520626967676572207468616e20306044820152606401610505565b60055460ff16610c285760405162461bcd60e51b815260206004820152602160248201527f5374616b696e67206973206e6f742063757272656e746c7920656e61626c656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610505565b600c5415610c785760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c0000000000000000000000000000000000006044820152606401610505565b6001600c556000610c8885611a31565b90506000610c97338387611ab2565b90508015610d66576002546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2d9190611dd7565b50604051818152869033907ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb2809060200160405180910390a35b50506000600c5550505050565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610505565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff16610e535760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b8015610f0857600060085460ff166003811115610e7257610e72611bf7565b14610ebf5760405162461bcd60e51b815260206004820152601960248201527f5374616b696e67206d75737420626520696e6163746976652e000000000000006044820152606401610505565b60058054600160ff1991821681179092556008805490911690911790556040517f498c93799a3655388526fc8a7d51b9a969053b6f047380f4f16a8e311b313a3790600090a150565b600160085460ff166003811115610f2157610f21611bf7565b14610f6e5760405162461bcd60e51b815260206004820152601760248201527f5374616b696e67206d757374206265206163746976652e0000000000000000006044820152606401610505565b6005805460ff199081169091556008805490911690556040517f5e0ff495077a830a1f92088545bae65274cc65d979385b39703c9fc05f2dc42090600090a150565b3360009081526001602052604090205460ff1661100f5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600360085460ff16600381111561102857611028611bf7565b1461109b5760405162461bcd60e51b815260206004820152602b60248201527f526571756972657320616c6c207072697a657320746f2068617665206265656e60448201527f20676976656e206f75742e0000000000000000000000000000000000000000006064820152608401610505565b600254600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0392831692839263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111359190611e07565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bc9190611dd7565b5050565b60008061058561145f565b3360009081526001602052604090205460ff1661122a5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112be5760405162461bcd60e51b815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610505565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146113395760405162461bcd60e51b815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610505565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526001602052604090205460ff1661141c5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b6003805461ffff92831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009091169290931691909117919091179055565b600b54600090600190611473906002611d72565b6105ef9190611df4565b8080158061148b5750806001145b6114d75760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792076616c696420706f6f6c2049447320617265203020616e6420312e6044820152606401610505565b3360009081526001602052604090205460ff166115365760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600060085460ff16600381111561154f5761154f611bf7565b146115c4576040805162461bcd60e51b81526020600482015260248101919091527f546865207374616b696e67206d7573742068617665206265656e20636c6f736560448201527f64206265666f7265207069636b696e6720612077696e6e696e6720706f6f6c2e6064820152608401610505565b6008805460ff191660021790556005805460ff8416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055600061160e61145f565b9050600061161a6105de565b600083815260066020526040808220548383529120549192509085156116405781611642565b805b60095585156116515780611653565b815b600a5560405186907fe2d4f35ba735bbd93e2a0771ab147b23e8e4adad5031fe0511546252d9b4e6e490600090a2505050505050565b60008061169583611a31565b60009081526007602090815260408083206001600160a01b03881684529091529020549150505b92915050565b600c54156117125760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c0000000000000000000000000000000000006044820152606401610505565b6001600c55600260085460ff16600381111561173057611730611bf7565b146117c95760405162461bcd60e51b815260206004820152604660248201527f57696e6e696e6720626574732063616e206f6e6c7920626520636c61696d656460448201527f207768656e20612077696e6e696e6720706f6f6c20686173206265656e20646560648201527f63696465642e0000000000000000000000000000000000000000000000000000608482015260a401610505565b600554610100900460ff168015806117e15750806001145b6118535760405162461bcd60e51b815260206004820152602260248201527f57696e6e696e6720706f6f6c206973206e6f7420636f72726563746c7920736560448201527f74210000000000000000000000000000000000000000000000000000000000006064820152608401610505565b600061185f8383611689565b9050600081116118b15760405162461bcd60e51b815260206004820152601960248201527f4e6f207374616b65206f6e2077696e6e696e6720706f6f6c2e000000000000006044820152606401610505565b60006118bc84610403565b90506000811161190e5760405162461bcd60e51b815260206004820152601260248201527f4e6f207072697a6520746f20636c61696d2e00000000000000000000000000006044820152606401610505565b600061191a8383611dc4565b9050600061192785611a31565b60008181526007602090815260408083206001600160a01b038b1684528252808320839055838352600690915281208054929350869290919061196b908490611df4565b90915550506000818152600660205260408120549003611993576008805460ff191660031790555b6002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156119ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a239190611dd7565b50506000600c555050505050565b60008082600003611a4b57611a4461145f565b90506116bc565b6105736105de565b60008281526007602090815260408083206001600160a01b038716845290915281208054839290611a85908490611dc4565b909155505060008281526006602052604081208054839290611aa8908490611dc4565b9091555050505050565b60008281526007602090815260408083206001600160a01b038716845290915281205482908203611ae7576000915050610573565b60008481526007602090815260408083206001600160a01b0389168452909152902054831115611b36575060008381526007602090815260408083206001600160a01b03881684529091529020545b60008481526007602090815260408083206001600160a01b038916845290915281208054839290611b68908490611df4565b909155505060008481526006602052604081208054839290611b8b908490611df4565b909155509095945050505050565b6001600160a01b038116811461051757600080fd5b600060208284031215611bc057600080fd5b813561057381611b99565b600080600060608486031215611be057600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160048310611c61577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215611c7a57600080fd5b50508035926020909101359150565b801515811461051757600080fd5b600060208284031215611ca957600080fd5b813561057381611c89565b803561ffff81168114611cc657600080fd5b919050565b60008060408385031215611cde57600080fd5b611ce783611cb4565b9150611cf560208401611cb4565b90509250929050565b600060208284031215611d1057600080fd5b5035919050565b60008060408385031215611d2a57600080fd5b8235611d3581611b99565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176116bc576116bc611d43565b600082611dbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156116bc576116bc611d43565b600060208284031215611de957600080fd5b815161057381611c89565b818103818111156116bc576116bc611d43565b600060208284031215611e1957600080fd5b505191905056fea26469706673582212208ea5765c814fa1b507e82eb26c870fe1b9d963d1f34e455b2edb9c7c10c89de864736f6c634300081100330000000000000000000000003e4c87bf57d48935d1643a7b8a3383b928b040de00000000000000000000000010b665a34088e489dffce90a520dcc44d2a7d537
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80639e2c8a5b11610104578063efdcd974116100a2578063f589e38211610071578063f589e382146103a9578063f5fa0113146103b1578063f93b03bc146103c4578063fe9fbb80146103d757600080fd5b8063efdcd9741461035d578063f0b37c0414610370578063f2fde38b14610383578063f3409fa31461039657600080fd5b8063bce8567e116100de578063bce8567e1461032f578063db2793de14610342578063e29a93701461034a578063e35bed261461035557600080fd5b80639e2c8a5b14610301578063adeaa85114610314578063b6a5d7de1461031c57600080fd5b80635af098d91161017c57806372f702f31161014b57806372f702f3146102a257806375f47da5146102cd5780637a02a973146102e65780637b0472f0146102ee57600080fd5b80635af098d91461027757806360ea98591461028a5780636faabf5f1461029257806370740ac91461029a57600080fd5b806326e90775116101b857806326e90775146102225780632f54bf6e1461023557806348e37cc51461026757806351d185981461026f57600080fd5b8063028da340146101df5780630bcdec0014610205578063218a69851461020d575b600080fd5b6101f26101ed366004611bae565b610403565b6040519081526020015b60405180910390f35b600a546101f2565b61022061021b366004611bae565b6104aa565b005b6101f2610230366004611bcb565b61051a565b610257610243366004611bae565b6000546001600160a01b0391821691161490565b60405190151581526020016101fc565b6101f261057a565b6101f261059a565b60085460ff166040516101fc9190611c26565b6101f26105de565b600b546101f2565b6102206105f4565b6002546102b5906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b60055460405161010090910460000b81526020016101fc565b6102206105ff565b6102206102fc366004611c67565b61078a565b61022061030f366004611c67565b610b05565b6009546101f2565b61022061032a366004611bae565b610d73565b61022061033d366004611c97565b610df4565b610220610fb0565b60055460ff16610257565b6101f26111c0565b61022061036b366004611bae565b6111cb565b61022061037e366004611bae565b611264565b610220610391366004611bae565b6112df565b6102206103a4366004611ccb565b6113bd565b6101f261145f565b6102206103bf366004611cfe565b61147d565b6101f26103d2366004611d17565b611689565b6102576103e5366004611bae565b6001600160a01b031660009081526001602052604090205460ff1690565b600554600090819081906101009004810b81811280610425575060018160000b135b1561043557506000949350505050565b8060000b60000361044f5761044861145f565b915061045a565b6104576105de565b91505b60008281526007602090815260408083206001600160a01b03891684529091529020549250821561049f57600a5460095461049691859161051a565b95945050505050565b506000949350505050565b3360009081526001602052604090205460ff1661050e5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b610517816116c2565b50565b6000831580610527575082155b80610530575081155b1561053d57506000610573565b61271060008461054d8388611d72565b6105579190611d89565b9050816105648583611d72565b61056e9190611d89565b925050505b9392505050565b6000806105856105de565b60009081526006602052604090205492915050565b6000806105a561145f565b905060006105b16105de565b60008381526006602052604080822054838352912054919250906105d58183611dc4565b94505050505090565b600b546000906105ef906002611d72565b905090565b6105fd336116c2565b565b3360009081526001602052604090205460ff1661065e5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600360085460ff16600381111561067757610677611bf7565b1480610688575061068661059a565b155b6106fa5760405162461bcd60e51b815260206004820152603d60248201527f4e6577207374616b696e672063616e206f6e6c7920626520737461727465642060448201527f7768656e2070726576696f7573206f6e6520697320636c65617265642e0000006064820152608401610505565b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661ff001790556008805460ff19169055600b805460019190600090610746908490611dc4565b90915550506005805460ff1916905560006009819055600a8190556040517f86309a62863391b778982dbd53cd7130bb1998117eb485fbe4c1c83d2797858d9190a1565b818015806107985750806001145b6107e45760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792076616c696420706f6f6c2049447320617265203020616e6420312e6044820152606401610505565b81600081116108355760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206e6565647320746f20626520626967676572207468616e20306044820152606401610505565b60055460ff166108ad5760405162461bcd60e51b815260206004820152602160248201527f5374616b696e67206973206e6f742063757272656e746c7920656e61626c656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610505565b600c54156108fd5760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c0000000000000000000000000000000000006044820152606401610505565b6001600c556002546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190611dd7565b506040805180820190915260035461ffff80821680845262010000909204166020830152849190158015906109d357506000816020015161ffff16115b15610aa8576000816020015161ffff16826000015161ffff16876109f79190611d72565b610a019190611d89565b9050610a0d8187611df4565b600254600480546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216928101929092526024820185905292955091169063a9059cbb906044016020604051808303816000875af1158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611dd7565b50505b6000610ab387611a31565b9050610ac0338285611a53565b604051838152879033907f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b69060200160405180910390a350506000600c555050505050565b81801580610b135750806001145b610b5f5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792076616c696420706f6f6c2049447320617265203020616e6420312e6044820152606401610505565b8160008111610bb05760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206e6565647320746f20626520626967676572207468616e20306044820152606401610505565b60055460ff16610c285760405162461bcd60e51b815260206004820152602160248201527f5374616b696e67206973206e6f742063757272656e746c7920656e61626c656460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610505565b600c5415610c785760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c0000000000000000000000000000000000006044820152606401610505565b6001600c556000610c8885611a31565b90506000610c97338387611ab2565b90508015610d66576002546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2d9190611dd7565b50604051818152869033907ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb2809060200160405180910390a35b50506000600c5550505050565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610505565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff16610e535760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b8015610f0857600060085460ff166003811115610e7257610e72611bf7565b14610ebf5760405162461bcd60e51b815260206004820152601960248201527f5374616b696e67206d75737420626520696e6163746976652e000000000000006044820152606401610505565b60058054600160ff1991821681179092556008805490911690911790556040517f498c93799a3655388526fc8a7d51b9a969053b6f047380f4f16a8e311b313a3790600090a150565b600160085460ff166003811115610f2157610f21611bf7565b14610f6e5760405162461bcd60e51b815260206004820152601760248201527f5374616b696e67206d757374206265206163746976652e0000000000000000006044820152606401610505565b6005805460ff199081169091556008805490911690556040517f5e0ff495077a830a1f92088545bae65274cc65d979385b39703c9fc05f2dc42090600090a150565b3360009081526001602052604090205460ff1661100f5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600360085460ff16600381111561102857611028611bf7565b1461109b5760405162461bcd60e51b815260206004820152602b60248201527f526571756972657320616c6c207072697a657320746f2068617665206265656e60448201527f20676976656e206f75742e0000000000000000000000000000000000000000006064820152608401610505565b600254600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0392831692839263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111359190611e07565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bc9190611dd7565b5050565b60008061058561145f565b3360009081526001602052604090205460ff1661122a5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112be5760405162461bcd60e51b815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610505565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146113395760405162461bcd60e51b815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610505565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526001602052604090205460ff1661141c5760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b6003805461ffff92831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009091169290931691909117919091179055565b600b54600090600190611473906002611d72565b6105ef9190611df4565b8080158061148b5750806001145b6114d75760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792076616c696420706f6f6c2049447320617265203020616e6420312e6044820152606401610505565b3360009081526001602052604090205460ff166115365760405162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610505565b600060085460ff16600381111561154f5761154f611bf7565b146115c4576040805162461bcd60e51b81526020600482015260248101919091527f546865207374616b696e67206d7573742068617665206265656e20636c6f736560448201527f64206265666f7265207069636b696e6720612077696e6e696e6720706f6f6c2e6064820152608401610505565b6008805460ff191660021790556005805460ff8416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116179055600061160e61145f565b9050600061161a6105de565b600083815260066020526040808220548383529120549192509085156116405781611642565b805b60095585156116515780611653565b815b600a5560405186907fe2d4f35ba735bbd93e2a0771ab147b23e8e4adad5031fe0511546252d9b4e6e490600090a2505050505050565b60008061169583611a31565b60009081526007602090815260408083206001600160a01b03881684529091529020549150505b92915050565b600c54156117125760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c0000000000000000000000000000000000006044820152606401610505565b6001600c55600260085460ff16600381111561173057611730611bf7565b146117c95760405162461bcd60e51b815260206004820152604660248201527f57696e6e696e6720626574732063616e206f6e6c7920626520636c61696d656460448201527f207768656e20612077696e6e696e6720706f6f6c20686173206265656e20646560648201527f63696465642e0000000000000000000000000000000000000000000000000000608482015260a401610505565b600554610100900460ff168015806117e15750806001145b6118535760405162461bcd60e51b815260206004820152602260248201527f57696e6e696e6720706f6f6c206973206e6f7420636f72726563746c7920736560448201527f74210000000000000000000000000000000000000000000000000000000000006064820152608401610505565b600061185f8383611689565b9050600081116118b15760405162461bcd60e51b815260206004820152601960248201527f4e6f207374616b65206f6e2077696e6e696e6720706f6f6c2e000000000000006044820152606401610505565b60006118bc84610403565b90506000811161190e5760405162461bcd60e51b815260206004820152601260248201527f4e6f207072697a6520746f20636c61696d2e00000000000000000000000000006044820152606401610505565b600061191a8383611dc4565b9050600061192785611a31565b60008181526007602090815260408083206001600160a01b038b1684528252808320839055838352600690915281208054929350869290919061196b908490611df4565b90915550506000818152600660205260408120549003611993576008805460ff191660031790555b6002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156119ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a239190611dd7565b50506000600c555050505050565b60008082600003611a4b57611a4461145f565b90506116bc565b6105736105de565b60008281526007602090815260408083206001600160a01b038716845290915281208054839290611a85908490611dc4565b909155505060008281526006602052604081208054839290611aa8908490611dc4565b9091555050505050565b60008281526007602090815260408083206001600160a01b038716845290915281205482908203611ae7576000915050610573565b60008481526007602090815260408083206001600160a01b0389168452909152902054831115611b36575060008381526007602090815260408083206001600160a01b03881684529091529020545b60008481526007602090815260408083206001600160a01b038916845290915281208054839290611b68908490611df4565b909155505060008481526006602052604081208054839290611b8b908490611df4565b909155509095945050505050565b6001600160a01b038116811461051757600080fd5b600060208284031215611bc057600080fd5b813561057381611b99565b600080600060608486031215611be057600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160048310611c61577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060408385031215611c7a57600080fd5b50508035926020909101359150565b801515811461051757600080fd5b600060208284031215611ca957600080fd5b813561057381611c89565b803561ffff81168114611cc657600080fd5b919050565b60008060408385031215611cde57600080fd5b611ce783611cb4565b9150611cf560208401611cb4565b90509250929050565b600060208284031215611d1057600080fd5b5035919050565b60008060408385031215611d2a57600080fd5b8235611d3581611b99565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176116bc576116bc611d43565b600082611dbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156116bc576116bc611d43565b600060208284031215611de957600080fd5b815161057381611c89565b818103818111156116bc576116bc611d43565b600060208284031215611e1957600080fd5b505191905056fea26469706673582212208ea5765c814fa1b507e82eb26c870fe1b9d963d1f34e455b2edb9c7c10c89de864736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003e4c87bf57d48935d1643a7b8a3383b928b040de00000000000000000000000010b665a34088e489dffce90a520dcc44d2a7d537
-----Decoded View---------------
Arg [0] : t (address): 0x3e4c87bf57d48935d1643A7b8a3383B928B040de
Arg [1] : fr (address): 0x10b665a34088e489DffCe90A520DCC44D2A7d537
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e4c87bf57d48935d1643a7b8a3383b928b040de
Arg [1] : 00000000000000000000000010b665a34088e489dffce90a520dcc44d2a7d537
Deployed Bytecode Sourcemap
2735:10301:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11323:600;;;;;;:::i;:::-;;:::i;:::-;;;571:25:1;;;559:2;544:18;11323:600:0;;;;;;;;8693:111;8769:30;;8693:111;;9621:88;;;;;;:::i;:::-;;:::i;:::-;;12011:376;;;;;;:::i;:::-;;:::i;1432:103::-;;;;;;:::i;:::-;1487:4;1522:5;-1:-1:-1;;;;;1511:16:0;;;1522:5;;1511:16;;1432:103;;;;1093:14:1;;1086:22;1068:41;;1056:2;1041:18;1432:103:0;928:187:1;8001:154:0;;;:::i;7537:300::-;;;:::i;8481:105::-;8557:24;;;;8481:105;;;;;;:::i;12831:95::-;;;:::i;12931:102::-;13006:22;;12931:102;;9714:66;;;:::i;2769:27::-;;;;;-1:-1:-1;;;;;2769:27:0;;;;;;-1:-1:-1;;;;;1873:55:1;;;1855:74;;1843:2;1828:18;2769:27:0;1709:226:1;8809:96:0;8876:12;:24;8809:96;;8876:24;;;;8858:4;8876:24;2080:40:1;;2068:2;2053:18;8809:96:0;1940:186:1;10791:467:0;;;:::i;4071:813::-;;;;;;:::i;:::-;;:::i;5410:420::-;;;;;;:::i;:::-;;:::i;8591:97::-;8660:23;;8591:97;;1225:94;;;;;;:::i;:::-;;:::i;8910:706::-;;;;;;:::i;:::-;;:::i;12392:246::-;;;:::i;8375:101::-;8444:12;:27;;;8375:101;;7842:154;;;:::i;7259:104::-;;;;;;:::i;:::-;;:::i;1327:97::-;;;;;;:::i;:::-;;:::i;1658:173::-;;;;;;:::i;:::-;;:::i;7368:164::-;;;;;;:::i;:::-;;:::i;12727:99::-;;;:::i;6459:728::-;;;;;;:::i;:::-;;:::i;8160:210::-;;;;;;:::i;:::-;;:::i;1543:107::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1623:19:0;1599:4;1623:19;;;:14;:19;;;;;;;;;1543:107;11323:600;11455:12;:24;11382:7;;;;;;11455:24;;;;;11522:7;;;;:18;;;11539:1;11533:3;:7;;;11522:18;11518:44;;;-1:-1:-1;11555:1:0;;11323:600;-1:-1:-1;;;;11323:600:0:o;11518:44::-;11596:3;:8;;11603:1;11596:8;11592:119;;11625:12;:10;:12::i;:::-;11612:25;;11592:119;;;11693:12;:10;:12::i;:::-;11680:25;;11592:119;11730:35;;;;:23;:35;;;;;;;;-1:-1:-1;;;;;11730:43:0;;;;;;;;;;;-1:-1:-1;11782:16:0;;11778:126;;11842:30;;11874:23;;11813:85;;11828:12;;11813:14;:85::i;:::-;11806:92;11323:600;-1:-1:-1;;;;;11323:600:0:o;11778:126::-;-1:-1:-1;11917:1:0;;11323:600;-1:-1:-1;;;;11323:600:0:o;9621:88::-;1179:10;1599:4;1623:19;;;:14;:19;;;;;;;;1158:48;;;;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0;;;4127:21:1;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0;;;;;;;;;9683:21:::1;9697:6;9683:13;:21::i;:::-;9621:88:::0;:::o;12011:376::-;12117:7;12135:17;;;:40;;-1:-1:-1;12156:19:0;;12135:40;:54;;;-1:-1:-1;12179:10:0;;12135:54;12131:80;;;-1:-1:-1;12204:1:0;12197:8;;12131:80;12286:5;12269:14;12335;12311:21;12286:5;12311:12;:21;:::i;:::-;:38;;;;:::i;:::-;12296:53;-1:-1:-1;12376:6:0;12361:12;12368:5;12296:53;12361:12;:::i;:::-;:21;;;;:::i;:::-;12354:28;;;;12011:376;;;;;;:::o;8001:154::-;8056:7;8070:15;8088:12;:10;:12::i;:::-;8112:38;;;;:29;:38;;;;;;;8001:154;-1:-1:-1;;8001:154:0:o;7537:300::-;7590:7;7604:15;7622:12;:10;:12::i;:::-;7604:30;;7639:15;7657:12;:10;:12::i;:::-;7674:18;7695:38;;;:29;:38;;;;;;;7759;;;;;;7639:30;;-1:-1:-1;7695:38:0;7809:23;7759:38;7695;7809:23;:::i;:::-;7802:30;;;;;;7537:300;:::o;12831:95::-;12895:22;;12874:7;;12895:26;;12920:1;12895:26;:::i;:::-;12888:33;;12831:95;:::o;9714:66::-;9750:25;9764:10;9750:13;:25::i;:::-;9714:66::o;10791:467::-;1179:10;1599:4;1623:19;;;:14;:19;;;;;;;;1158:48;;;;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0;;;4127:21:1;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0;3943:335:1;1158:48:0;10881:14:::1;10853:24:::0;;::::1;;;:42:::0;::::1;;;;;;:::i;:::-;;:73;;;;10899:22;:20;:22::i;:::-;:27:::0;10853:73:::1;10840:160;;;::::0;-1:-1:-1;;;10840:160:0;;5256:2:1;10840:160:0::1;::::0;::::1;5238:21:1::0;5295:2;5275:18;;;5268:30;5334:34;5314:18;;;5307:62;5405:31;5385:18;;;5378:59;5454:19;;10840:160:0::1;5054:425:1::0;10840:160:0::1;11005:12;:29:::0;;;::::1;::::0;::::1;::::0;;11039:24;:42;;-1:-1:-1;;11039:42:0::1;::::0;;11086:22;:27;;-1:-1:-1;;11086:22:0;-1:-1:-1;;11086:27:0::1;::::0;-1:-1:-1;;11086:27:0::1;:::i;:::-;::::0;;;-1:-1:-1;;11118:12:0::1;:35:::0;;-1:-1:-1;;11118:35:0::1;::::0;;11148:5:::1;11158:23:::0;:27;;;11190:30;:34;;;11236:17:::1;::::0;::::1;::::0;11148:5;11236:17:::1;10791:467::o:0;4071:813::-;4145:14;3534:11;;;:26;;;3549:6;3559:1;3549:11;3534:26;3526:71;;;;-1:-1:-1;;;3526:71:0;;5686:2:1;3526:71:0;;;5668:21:1;;;5705:18;;;5698:30;5764:34;5744:18;;;5737:62;5816:18;;3526:71:0;5484:356:1;3526:71:0;4178:6:::1;3677:1;3668:6;:10;3660:55;;;::::0;-1:-1:-1;;;3660:55:0;;6047:2:1;3660:55:0::1;::::0;::::1;6029:21:1::0;;;6066:18;;;6059:30;6125:34;6105:18;;;6098:62;6177:18;;3660:55:0::1;5845:356:1::0;3660:55:0::1;3770:12:::2;:27:::0;::::2;;3762:73;;;::::0;-1:-1:-1;;;3762:73:0;;6408:2:1;3762:73:0::2;::::0;::::2;6390:21:1::0;6447:2;6427:18;;;6420:30;6486:34;6466:18;;;6459:62;6557:3;6537:18;;;6530:31;6578:19;;3762:73:0::2;6206:397:1::0;3762:73:0::2;3894:16:::3;::::0;:21;3886:48:::3;;;::::0;-1:-1:-1;;;3886:48:0;;6810:2:1;3886:48:0::3;::::0;::::3;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:16;6868:18;;;6861:44;6922:18;;3886:48:0::3;6608:338:1::0;3886:48:0::3;3958:1;3939:16;:20:::0;4290:12:::4;::::0;4283:68:::4;::::0;;;;4317:10:::4;4283:68;::::0;::::4;7214:34:1::0;4337:4:0::4;7264:18:1::0;;;7257:43;7316:18;;;7309:34;;;-1:-1:-1;;;;;4290:12:0;;::::4;::::0;4283:33:::4;::::0;7126:18:1;;4283:68:0::4;;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;4457:31:0::4;::::0;;;;::::4;::::0;;;4478:10:::4;4457:31:::0;::::4;::::0;;::::4;::::0;;;;;;::::4;;;::::0;::::4;::::0;4446:6;;4457:31;4497:16;;;;:38:::4;;;4534:1;4517:2;:14;;;:18;;;4497:38;4493:189;;;4543:11;4581:2;:14;;;4557:38;;4566:2;:12;;;4557:21;;:6;:21;;;;:::i;:::-;:38;;;;:::i;:::-;4543:52:::0;-1:-1:-1;4611:12:0::4;4543:52:::0;4611:6;:12:::4;:::i;:::-;4636;::::0;4659:11:::4;::::0;;4629:47:::4;::::0;;;;-1:-1:-1;;;;;4659:11:0;;::::4;4629:47:::0;;::::4;7911:74:1::0;;;;8001:18;;;7994:34;;;4601:22:0;;-1:-1:-1;4636:12:0;::::4;::::0;4629:29:::4;::::0;7884:18:1;;4629:47:0::4;;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4537:145;4493:189;4688:18;4709:29;4723:14;4709:13;:29::i;:::-;4688:50;;4784:41;4793:10;4805;4817:7;4784:8;:41::i;:::-;4837:42;::::0;571:25:1;;;4855:14:0;;4843:10:::4;::::0;4837:42:::4;::::0;559:2:1;544:18;4837:42:0::4;;;;;;;-1:-1:-1::0;;4001:1:0::3;3982:16;:20:::0;-1:-1:-1;;;;;4071:813:0:o;5410:420::-;5486:14;3534:11;;;:26;;;3549:6;3559:1;3549:11;3534:26;3526:71;;;;-1:-1:-1;;;3526:71:0;;5686:2:1;3526:71:0;;;5668:21:1;;;5705:18;;;5698:30;5764:34;5744:18;;;5737:62;5816:18;;3526:71:0;5484:356:1;3526:71:0;5519:6:::1;3677:1;3668:6;:10;3660:55;;;::::0;-1:-1:-1;;;3660:55:0;;6047:2:1;3660:55:0::1;::::0;::::1;6029:21:1::0;;;6066:18;;;6059:30;6125:34;6105:18;;;6098:62;6177:18;;3660:55:0::1;5845:356:1::0;3660:55:0::1;3770:12:::2;:27:::0;::::2;;3762:73;;;::::0;-1:-1:-1;;;3762:73:0;;6408:2:1;3762:73:0::2;::::0;::::2;6390:21:1::0;6447:2;6427:18;;;6420:30;6486:34;6466:18;;;6459:62;6557:3;6537:18;;;6530:31;6578:19;;3762:73:0::2;6206:397:1::0;3762:73:0::2;3894:16:::3;::::0;:21;3886:48:::3;;;::::0;-1:-1:-1;;;3886:48:0;;6810:2:1;3886:48:0::3;::::0;::::3;6792:21:1::0;6849:2;6829:18;;;6822:30;6888:16;6868:18;;;6861:44;6922:18;;3886:48:0::3;6608:338:1::0;3886:48:0::3;3958:1;3939:16;:20:::0;5562:18:::4;5583:29;5597:14:::0;5583:13:::4;:29::i;:::-;5562:50;;5617:17;5637:42;5648:10;5660;5672:6;5637:10;:42::i;:::-;5617:62:::0;-1:-1:-1;5688:13:0;;5684:142:::4;;5716:12;::::0;5709:52:::4;::::0;;;;5739:10:::4;5709:52;::::0;::::4;7911:74:1::0;8001:18;;;7994:34;;;-1:-1:-1;;;;;5716:12:0;;::::4;::::0;5709:29:::4;::::0;7884:18:1;;5709:52:0::4;;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;5774:46:0::4;::::0;571:25:1;;;5794:14:0;;5782:10:::4;::::0;5774:46:::4;::::0;559:2:1;544:18;5774:46:0::4;;;;;;;5684:142;-1:-1:-1::0;;4001:1:0::3;3982:16;:20:::0;-1:-1:-1;;;;5410:420:0:o;1225:94::-;1487:4;1522:5;-1:-1:-1;;;;;1522:5:0;1084:10;1511:16;1068:38;;;;-1:-1:-1;;;1068:38:0;;8241:2:1;1068:38:0;;;8223:21:1;8280:1;8260:18;;;8253:29;8318:8;8298:18;;;8291:36;8344:18;;1068:38:0;8039:329:1;1068:38:0;-1:-1:-1;;;;;1285:19:0::1;;::::0;;;1307:4:::1;1285:19;::::0;;;;;;;:26;;-1:-1:-1;;1285:26:0::1;::::0;;::::1;::::0;;1225:94::o;8910:706::-;1179:10;1599:4;1623:19;;;:14;:19;;;;;;;;1158:48;;;;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0;;;4127:21:1;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0;3943:335:1;1158:48:0;8980:7:::1;8976:636;;;9136:15;9108:24:::0;;::::1;;;:43:::0;::::1;;;;;;:::i;:::-;;9100:81;;;::::0;-1:-1:-1;;;9100:81:0;;8575:2:1;9100:81:0::1;::::0;::::1;8557:21:1::0;8614:2;8594:18;;;8587:30;8653:27;8633:18;;;8626:55;8698:18;;9100:81:0::1;8373:349:1::0;9100:81:0::1;9187:12;:34:::0;;9217:4:::1;-1:-1:-1::0;;9187:34:0;;::::1;::::0;::::1;::::0;;;9227:24;:40;;;;::::1;::::0;;::::1;::::0;;9280:13:::1;::::0;::::1;::::0;-1:-1:-1;;9280:13:0::1;9621:88:::0;:::o;8976:636::-:1;9448:13;9420:24:::0;;::::1;;;:41:::0;::::1;;;;;;:::i;:::-;;9412:77;;;::::0;-1:-1:-1;;;9412:77:0;;8929:2:1;9412:77:0::1;::::0;::::1;8911:21:1::0;8968:2;8948:18;;;8941:30;9007:25;8987:18;;;8980:53;9050:18;;9412:77:0::1;8727:347:1::0;9412:77:0::1;9495:12;:35:::0;;-1:-1:-1;;9495:35:0;;::::1;::::0;;;9536:24;:42;;;;::::1;::::0;;9591:15:::1;::::0;::::1;::::0;-1:-1:-1;;9591:15:0::1;8910:706:::0;:::o;12392:246::-;1179:10;1599:4;1623:19;;;:14;:19;;;;;;;;1158:48;;;;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0;;;4127:21:1;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0;3943:335:1;1158:48:0;12476:14:::1;12448:24:::0;;::::1;;;:42:::0;::::1;;;;;;:::i;:::-;;12440:98;;;::::0;-1:-1:-1;;;12440:98:0;;9281:2:1;12440:98:0::1;::::0;::::1;9263:21:1::0;9320:2;9300:18;;;9293:30;9359:34;9339:18;;;9332:62;9430:13;9410:18;;;9403:41;9461:19;;12440:98:0::1;9079:407:1::0;12440:98:0::1;12562:12;::::0;12592:11:::1;::::0;;12605:27:::1;::::0;;;;12626:4:::1;12605:27:::0;;::::1;1855:74:1::0;;;;-1:-1:-1;;;;;12562:12:0;;::::1;::::0;;;12580:11:::1;::::0;12592;;;::::1;::::0;12562:12;;12605::::1;::::0;1828:18:1;;12605:27:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12580:53;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;7929:55:1;;;12580:53:0::1;::::0;::::1;7911:74:1::0;8001:18;;;7994:34;7884:18;;12580:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12435:203;12392:246::o:0;7842:154::-;7897:7;7911:15;7929:12;:10;:12::i;7259:104::-;1179:10;1599:4;1623:19;;;:14;:19;;;;;;;;1158:48;;;;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0;;;4127:21:1;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0;3943:335:1;1158:48:0;7331:11:::1;:27:::0;;;::::1;-1:-1:-1::0;;;;;7331:27:0;;;::::1;::::0;;;::::1;::::0;;7259:104::o;1327:97::-;1487:4;1522:5;-1:-1:-1;;;;;1522:5:0;1084:10;1511:16;1068:38;;;;-1:-1:-1;;;1068:38:0;;8241:2:1;1068:38:0;;;8223:21:1;8280:1;8260:18;;;8253:29;8318:8;8298:18;;;8291:36;8344:18;;1068:38:0;8039:329:1;1068:38:0;-1:-1:-1;;;;;1389:19:0::1;1411:5;1389:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;1389:27:0::1;::::0;;1327:97::o;1658:173::-;1487:4;1522:5;-1:-1:-1;;;;;1522:5:0;1084:10;1511:16;1068:38;;;;-1:-1:-1;;;1068:38:0;;8241:2:1;1068:38:0;;;8223:21:1;8280:1;8260:18;;;8253:29;8318:8;8298:18;;;8291:36;8344:18;;1068:38:0;8039:329:1;1068:38:0;1734:5:::1;:11:::0;;;::::1;-1:-1:-1::0;;;;;1734:11:0;::::1;::::0;;::::1;::::0;;1756:19;;;-1:-1:-1;1756:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;1756:26:0::1;::::0;;::::1;::::0;;;1798:25;;1855:74:1;;;1798:25:0::1;::::0;1828:18:1;1798:25:0::1;;;;;;;1658:173:::0;:::o;7368:164::-;1179:10;1599:4;1623:19;;;:14;:19;;;;;;;;1158:48;;;;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0;;;4127:21:1;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0;3943:335:1;1158:48:0;7454:10:::1;:32:::0;;::::1;7491:36:::0;;::::1;::::0;::::1;::::0;;;;7454:32;;;::::1;7491:36:::0;;;;;;;::::1;::::0;;7368:164::o;12727:99::-;12791:22;;12770:7;;12820:1;;12791:26;;12816:1;12791:26;:::i;:::-;:30;;;;:::i;6459:728::-;6526:14;3534:11;;;:26;;;3549:6;3559:1;3549:11;3534:26;3526:71;;;;-1:-1:-1;;;3526:71:0;;5686:2:1;3526:71:0;;;5668:21:1;;;5705:18;;;5698:30;5764:34;5744:18;;;5737:62;5816:18;;3526:71:0;5484:356:1;3526:71:0;1179:10:::1;1599:4:::0;1623:19;;;:14;:19;;;;;;;;1158:48:::1;;;::::0;-1:-1:-1;;;1158:48:0;;4145:2:1;1158:48:0::1;::::0;::::1;4127:21:1::0;4184:2;4164:18;;;4157:30;4223:13;4203:18;;;4196:41;4254:18;;1158:48:0::1;3943:335:1::0;1158:48:0::1;6594:15:::2;6566:24:::0;;::::2;;;:43:::0;::::2;;;;;;:::i;:::-;;6558:120;;;::::0;;-1:-1:-1;;;6558:120:0;;10121:2:1;6558:120:0::2;::::0;::::2;10103:21:1::0;10140:18;;;10133:30;;;;10199:34;10179:18;;;10172:62;10270:34;10250:18;;;10243:62;10322:19;;6558:120:0::2;9919:428:1::0;6558:120:0::2;6683:24:::0;:42;;-1:-1:-1;;6683:42:0::2;6710:15;6683:42;::::0;;6730:12:::2;:54:::0;;::::2;::::0;;::::2;;::::0;;;::::2;;::::0;;-1:-1:-1;6807:12:0::2;:10;:12::i;:::-;6789:30;;6824:15;6842:12;:10;:12::i;:::-;6859:18;6880:38:::0;;;:29;:38:::2;::::0;;;;;;6944;;;;;;6824:30;;-1:-1:-1;6880:38:0;7015:19;;:45:::2;;7050:10;7015:45;;;7037:10;7015:45;6989:23:::0;:71;7098:19;;:45:::2;;7133:10;7098:45;;;7120:10;7098:45;7065:30:::0;:78;7155:27:::2;::::0;7167:14;;7155:27:::2;::::0;;;::::2;6553:634;;;;6459:728:::0;;:::o;8160:210::-;8248:7;8262:18;8283:29;8297:14;8283:13;:29::i;:::-;8324:35;;;;:23;:35;;;;;;;;-1:-1:-1;;;;;8324:41:0;;;;;;;;;;;-1:-1:-1;;8160:210:0;;;;;:::o;9860:926::-;3894:16;;:21;3886:48;;;;-1:-1:-1;;;3886:48:0;;6810:2:1;3886:48:0;;;6792:21:1;6849:2;6829:18;;;6822:30;6888:16;6868:18;;;6861:44;6922:18;;3886:48:0;6608:338:1;3886:48:0;3958:1;3939:16;:20;9962:15:::1;9934:24:::0;;::::1;;;:43:::0;::::1;;;;;;:::i;:::-;;9926:126;;;::::0;-1:-1:-1;;;9926:126:0;;10554:2:1;9926:126:0::1;::::0;::::1;10536:21:1::0;10593:2;10573:18;;;10566:30;10632:34;10612:18;;;10605:62;10703:34;10683:18;;;10676:62;10775:8;10754:19;;;10747:37;10801:19;;9926:126:0::1;10352:474:1::0;9926:126:0::1;10085:12;:24:::0;::::1;::::0;::::1;10071:40;::::0;10124:8;;;:20:::1;;;10136:3;10143:1;10136:8;10124:20;10116:67;;;::::0;-1:-1:-1;;;10116:67:0;;11033:2:1;10116:67:0::1;::::0;::::1;11015:21:1::0;11072:2;11052:18;;;11045:30;11111:34;11091:18;;;11084:62;11182:4;11162:18;;;11155:32;11204:19;;10116:67:0::1;10831:398:1::0;10116:67:0::1;10188:20;10211:32;10231:6;10239:3;10211:19;:32::i;:::-;10188:55;;10271:1;10256:12;:16;10248:54;;;::::0;-1:-1:-1;;;10248:54:0;;11436:2:1;10248:54:0::1;::::0;::::1;11418:21:1::0;11475:2;11455:18;;;11448:30;11514:27;11494:18;;;11487:55;11559:18;;10248:54:0::1;11234:349:1::0;10248:54:0::1;10307:13;10323:20;10336:6;10323:12;:20::i;:::-;10307:36;;10364:1;10356:5;:9;10348:40;;;::::0;-1:-1:-1;;;10348:40:0;;11790:2:1;10348:40:0::1;::::0;::::1;11772:21:1::0;11829:2;11809:18;;;11802:30;11868:20;11848:18;;;11841:48;11906:18;;10348:40:0::1;11588:342:1::0;10348:40:0::1;10393:14;10410:20;10418:12:::0;10410:5;:20:::1;:::i;:::-;10393:37;;10467:18;10488;10502:3;10488:13;:18::i;:::-;10557:1;10511:35:::0;;;:23;:35:::1;::::0;;;;;;;-1:-1:-1;;;;;10511:43:0;::::1;::::0;;;;;;;:47;;;10563:41;;;:29;:41;;;;;:57;;10467:39;;-1:-1:-1;10608:12:0;;10563:41;;10557:1;10563:57:::1;::::0;10608:12;;10563:57:::1;:::i;:::-;::::0;;;-1:-1:-1;;10629:41:0::1;::::0;;;:29;:41:::1;::::0;;;;;:46;;10625:105:::1;;10683:24:::0;:41;;-1:-1:-1;;10683:41:0::1;10710:14;10683:41;::::0;;10625:105:::1;10743:12;::::0;10736:45:::1;::::0;;;;-1:-1:-1;;;;;7929:55:1;;;10736:45:0::1;::::0;::::1;7911:74:1::0;8001:18;;;7994:34;;;10743:12:0;;::::1;::::0;10736:29:::1;::::0;7884:18:1;;10736:45:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;4001:1:0;3982:16;:20;-1:-1:-1;;;;;9860:926:0:o;5092:240::-;5162:7;5176:18;5203:14;5221:1;5203:19;5199:105;;5243:12;:10;:12::i;:::-;5230:25;;5199:105;;;5286:12;:10;:12::i;4889:198::-;4973:35;;;;:23;:35;;;;;;;;-1:-1:-1;;;;;4973:43:0;;;;;;;;;:53;;5020:6;;4973:35;:53;;5020:6;;4973:53;:::i;:::-;;;;-1:-1:-1;;5031:41:0;;;;:29;:41;;;;;:51;;5076:6;;5031:41;:51;;5076:6;;5031:51;:::i;:::-;;;;-1:-1:-1;;;;;4889:198:0:o;5835:619::-;5925:7;6032:35;;;:23;:35;;;;;;;;-1:-1:-1;;;;;6032:43:0;;;;;;;;;;6015:6;;6032:48;;6028:74;;6095:1;6088:8;;;;;6028:74;6195:35;;;;:23;:35;;;;;;;;-1:-1:-1;;;;;6195:43:0;;;;;;;;;;6186:52;;6182:125;;;-1:-1:-1;6258:35:0;;;;:23;:35;;;;;;;;-1:-1:-1;;;;;6258:43:0;;;;;;;;;;6182:125;6311:35;;;;:23;:35;;;;;;;;-1:-1:-1;;;;;6311:43:0;;;;;;;;;:56;;6358:9;;6311:35;:56;;6358:9;;6311:56;:::i;:::-;;;;-1:-1:-1;;6372:41:0;;;;:29;:41;;;;;:54;;6417:9;;6372:41;:54;;6417:9;;6372:54;:::i;:::-;;;;-1:-1:-1;6440:9:0;;5835:619;-1:-1:-1;;;;;5835:619:0:o;14:154:1:-;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;607:316::-;684:6;692;700;753:2;741:9;732:7;728:23;724:32;721:52;;;769:1;766;759:12;721:52;-1:-1:-1;;792:23:1;;;862:2;847:18;;834:32;;-1:-1:-1;913:2:1;898:18;;;885:32;;607:316;-1:-1:-1;607:316:1:o;1120:184::-;1172:77;1169:1;1162:88;1269:4;1266:1;1259:15;1293:4;1290:1;1283:15;1309:395;1451:2;1436:18;;1484:1;1473:13;;1463:201;;1520:77;1517:1;1510:88;1621:4;1618:1;1611:15;1649:4;1646:1;1639:15;1463:201;1673:25;;;1309:395;:::o;2131:248::-;2199:6;2207;2260:2;2248:9;2239:7;2235:23;2231:32;2228:52;;;2276:1;2273;2266:12;2228:52;-1:-1:-1;;2299:23:1;;;2369:2;2354:18;;;2341:32;;-1:-1:-1;2131:248:1:o;2384:118::-;2470:5;2463:13;2456:21;2449:5;2446:32;2436:60;;2492:1;2489;2482:12;2507:241;2563:6;2616:2;2604:9;2595:7;2591:23;2587:32;2584:52;;;2632:1;2629;2622:12;2584:52;2671:9;2658:23;2690:28;2712:5;2690:28;:::i;3013:159::-;3080:20;;3140:6;3129:18;;3119:29;;3109:57;;3162:1;3159;3152:12;3109:57;3013:159;;;:::o;3177:256::-;3243:6;3251;3304:2;3292:9;3283:7;3279:23;3275:32;3272:52;;;3320:1;3317;3310:12;3272:52;3343:28;3361:9;3343:28;:::i;:::-;3333:38;;3390:37;3423:2;3412:9;3408:18;3390:37;:::i;:::-;3380:47;;3177:256;;;;;:::o;3438:180::-;3497:6;3550:2;3538:9;3529:7;3525:23;3521:32;3518:52;;;3566:1;3563;3556:12;3518:52;-1:-1:-1;3589:23:1;;3438:180;-1:-1:-1;3438:180:1:o;3623:315::-;3691:6;3699;3752:2;3740:9;3731:7;3727:23;3723:32;3720:52;;;3768:1;3765;3758:12;3720:52;3807:9;3794:23;3826:31;3851:5;3826:31;:::i;:::-;3876:5;3928:2;3913:18;;;;3900:32;;-1:-1:-1;;;3623:315:1:o;4283:184::-;4335:77;4332:1;4325:88;4432:4;4429:1;4422:15;4456:4;4453:1;4446:15;4472:168;4545:9;;;4576;;4593:15;;;4587:22;;4573:37;4563:71;;4614:18;;:::i;4645:274::-;4685:1;4711;4701:189;;4746:77;4743:1;4736:88;4847:4;4844:1;4837:15;4875:4;4872:1;4865:15;4701:189;-1:-1:-1;4904:9:1;;4645:274::o;4924:125::-;4989:9;;;5010:10;;;5007:36;;;5023:18;;:::i;7354:245::-;7421:6;7474:2;7462:9;7453:7;7449:23;7445:32;7442:52;;;7490:1;7487;7480:12;7442:52;7522:9;7516:16;7541:28;7563:5;7541:28;:::i;7604:128::-;7671:9;;;7692:11;;;7689:37;;;7706:18;;:::i;9491:184::-;9561:6;9614:2;9602:9;9593:7;9589:23;9585:32;9582:52;;;9630:1;9627;9620:12;9582:52;-1:-1:-1;9653:16:1;;9491:184;-1:-1:-1;9491:184:1:o
Swarm Source
ipfs://8ea5765c814fa1b507e82eb26c870fe1b9d963d1f34e455b2edb9c7c10c89de8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.