More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 774 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake Tokens | 18069596 | 402 days ago | IN | 0 ETH | 0.00125073 | ||||
Tokenconfigs | 18069559 | 402 days ago | IN | 0 ETH | 0.00038967 | ||||
Stake Tokens | 18069538 | 402 days ago | IN | 0 ETH | 0.00338668 | ||||
MIN_DIVIDENDS_DU... | 18069485 | 403 days ago | IN | 0 ETH | 0.0002877 | ||||
Tokenconfigs | 18069483 | 403 days ago | IN | 0 ETH | 0.00031877 | ||||
Unstake Tokens | 16266864 | 656 days ago | IN | 0 ETH | 0.00102545 | ||||
Take Dividends | 16266850 | 656 days ago | IN | 0 ETH | 0.00080805 | ||||
Unstake Tokens | 16048112 | 686 days ago | IN | 0 ETH | 0.00108433 | ||||
Stake Tokens | 15971471 | 697 days ago | IN | 0 ETH | 0.00137179 | ||||
Take Dividends | 15971452 | 697 days ago | IN | 0 ETH | 0.00108899 | ||||
MIN_DIVIDENDS_DU... | 15937739 | 702 days ago | IN | 0 ETH | 0.00057681 | ||||
Tokenconfigs | 15937736 | 702 days ago | IN | 0 ETH | 0.00064799 | ||||
Unstake Tokens | 15937732 | 702 days ago | IN | 0 ETH | 0.00212725 | ||||
Unstake Tokens | 15935902 | 702 days ago | IN | 0 ETH | 0.00624562 | ||||
MIN_DIVIDENDS_DU... | 15935723 | 702 days ago | IN | 0 ETH | 0.00243495 | ||||
Tokenconfigs | 15935699 | 702 days ago | IN | 0 ETH | 0.00267784 | ||||
Tokenconfigs | 15935512 | 702 days ago | IN | 0 ETH | 0.00282332 | ||||
MIN_DIVIDENDS_DU... | 15935503 | 702 days ago | IN | 0 ETH | 0.00254888 | ||||
Stake Tokens | 15935498 | 702 days ago | IN | 0 ETH | 0.00990904 | ||||
Tokenconfigs | 15935462 | 702 days ago | IN | 0 ETH | 0.00322421 | ||||
Unstake Tokens | 15935426 | 702 days ago | IN | 0 ETH | 0.00871834 | ||||
Take Dividends | 15641535 | 743 days ago | IN | 0 ETH | 0.00080167 | ||||
Take Dividends | 15376445 | 784 days ago | IN | 0 ETH | 0.00039577 | ||||
Take Dividends | 15279528 | 799 days ago | IN | 0 ETH | 0.00130776 | ||||
Take Dividends | 15152701 | 819 days ago | IN | 0 ETH | 0.00065742 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DSP
Compiler Version
v0.6.4+commit.1dca32f3
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-09 */ /* * @dev This is the Axia Protocol Staking pool 2 contract (Defi Fund Pool), * a part of the protocol where stakers are rewarded in AXIA tokens * when they make stakes of liquidity tokens from the oracle pool. * stakers reward come from the daily emission from the total supply into circulation, * this happens daily and upon the reach of a new epoch each made of 180 days, * halvings are experienced on the emitting amount of tokens. * on the 11th epoch all the tokens would have been completed emitted into circulation, * from here on, the stakers will still be earning from daily emissions * which would now be coming from the accumulated basis points over the epochs. * stakers are not charged any fee for unstaking. */ pragma solidity 0.6.4; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, 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 sender, address recipient, 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); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract DSP{ using SafeMath for uint256; //======================================EVENTS=========================================// event StakeEvent(address indexed staker, address indexed pool, uint amount); event UnstakeEvent(address indexed unstaker, address indexed pool, uint amount); event RewardEvent(address indexed staker, address indexed pool, uint amount); event RewardStake(address indexed staker, address indexed pool, uint amount); //======================================STAKING POOLS=========================================// address public Axiatoken; address public DefiIndexFunds; address public administrator; bool public stakingEnabled; uint256 constant private FLOAT_SCALAR = 2**64; uint256 public MINIMUM_STAKE = 1000000000000000000; // 1 minimum uint256 public MIN_DIVIDENDS_DUR = 18 hours; uint public infocheck; struct User { uint256 balance; uint256 frozen; int256 scaledPayout; uint256 staketime; } struct Info { uint256 totalSupply; uint256 totalFrozen; mapping(address => User) users; uint256 scaledPayoutPerToken; //pool balance address admin; } Info private info; constructor() public { info.admin = msg.sender; stakingEnabled = false; } //======================================ADMINSTRATION=========================================// modifier onlyCreator() { require(msg.sender == info.admin, "Ownable: caller is not the administrator"); _; } modifier onlyAxiaToken() { require(msg.sender == Axiatoken, "Authorization: only token contract can call"); _; } function tokenconfigs(address _axiatoken, address _defiindex) public onlyCreator returns (bool success) { require(_axiatoken != _defiindex, "Insertion of same address is not supported"); require(_axiatoken != address(0) && _defiindex != address(0), "Insertion of address(0) is not supported"); Axiatoken = _axiatoken; DefiIndexFunds = _defiindex; return true; } function _minStakeAmount(uint256 _number) onlyCreator public { MINIMUM_STAKE = _number*1000000000000000000; } function stakingStatus(bool _status) public onlyCreator { require(Axiatoken != address(0) && DefiIndexFunds != address(0), "Pool addresses are not yet setup"); stakingEnabled = _status; } function MIN_DIVIDENDS_DUR_TIME(uint256 _minDuration) public onlyCreator { MIN_DIVIDENDS_DUR = _minDuration; } //======================================USER WRITE=========================================// function StakeTokens(uint256 _tokens) external { _stake(_tokens); } function UnstakeTokens(uint256 _tokens) external { _unstake(_tokens); } //======================================USER READ=========================================// function totalFrozen() public view returns (uint256) { return info.totalFrozen; } function frozenOf(address _user) public view returns (uint256) { return info.users[_user].frozen; } function dividendsOf(address _user) public view returns (uint256) { if(info.users[_user].staketime < MIN_DIVIDENDS_DUR){ return 0; }else{ return uint256(int256(info.scaledPayoutPerToken * info.users[_user].frozen) - info.users[_user].scaledPayout) / FLOAT_SCALAR; } } function userData(address _user) public view returns (uint256 totalTokensFrozen, uint256 userFrozen, uint256 userDividends, uint256 userStaketime, int256 scaledPayout) { return (totalFrozen(), frozenOf(_user), dividendsOf(_user), info.users[_user].staketime, info.users[_user].scaledPayout); } //======================================ACTION CALLS=========================================// function _stake(uint256 _amount) internal { require(stakingEnabled, "Staking not yet initialized"); require(IERC20(DefiIndexFunds).balanceOf(msg.sender) >= _amount, "Insufficient DeFi AFT balance"); require(frozenOf(msg.sender) + _amount >= MINIMUM_STAKE, "Your amount is lower than the minimum amount allowed to stake"); require(IERC20(DefiIndexFunds).allowance(msg.sender, address(this)) >= _amount, "Not enough allowance given to contract yet to spend by user"); info.users[msg.sender].staketime = now; info.totalFrozen += _amount; info.users[msg.sender].frozen += _amount; info.users[msg.sender].scaledPayout += int256(_amount * info.scaledPayoutPerToken); IERC20(DefiIndexFunds).transferFrom(msg.sender, address(this), _amount); // Transfer liquidity tokens from the sender to this contract emit StakeEvent(msg.sender, address(this), _amount); } function _unstake(uint256 _amount) internal { require(frozenOf(msg.sender) >= _amount, "You currently do not have up to that amount staked"); info.totalFrozen -= _amount; info.users[msg.sender].frozen -= _amount; info.users[msg.sender].scaledPayout -= int256(_amount * info.scaledPayoutPerToken); require(IERC20(DefiIndexFunds).transfer(msg.sender, _amount), "Transaction failed"); emit UnstakeEvent(address(this), msg.sender, _amount); TakeDividends(); } function TakeDividends() public returns (uint256) { uint256 _dividends = dividendsOf(msg.sender); require(_dividends >= 0, "you do not have any dividend yet"); info.users[msg.sender].scaledPayout += int256(_dividends * FLOAT_SCALAR); require(IERC20(Axiatoken).transfer(msg.sender, _dividends), "Transaction Failed"); // Transfer dividends to msg.sender emit RewardEvent(msg.sender, address(this), _dividends); return _dividends; } function scaledToken(uint _amount) external onlyAxiaToken returns(bool){ info.scaledPayoutPerToken += _amount * FLOAT_SCALAR / info.totalFrozen; infocheck = info.scaledPayoutPerToken; return true; } function mulDiv (uint x, uint y, uint z) public pure returns (uint) { (uint l, uint h) = fullMul (x, y); assert (h < z); uint mm = mulmod (x, y, z); if (mm > l) h -= 1; l -= mm; uint pow2 = z & -z; z /= pow2; l /= pow2; l += h * ((-pow2) / pow2 + 1); uint r = 1; r *= 2 - z * r; r *= 2 - z * r; r *= 2 - z * r; r *= 2 - z * r; r *= 2 - z * r; r *= 2 - z * r; r *= 2 - z * r; r *= 2 - z * r; return l * r; } function fullMul (uint x, uint y) private pure returns (uint l, uint h) { uint mm = mulmod (x, y, uint (-1)); l = x * y; h = mm - l; if (mm < l) h -= 1; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StakeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"unstaker","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UnstakeEvent","type":"event"},{"inputs":[],"name":"Axiatoken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DefiIndexFunds","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_DIVIDENDS_DUR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minDuration","type":"uint256"}],"name":"MIN_DIVIDENDS_DUR_TIME","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"StakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TakeDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"UnstakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_number","type":"uint256"}],"name":"_minStakeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"administrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"frozenOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"infocheck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"z","type":"uint256"}],"name":"mulDiv","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"scaledToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"stakingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_axiatoken","type":"address"},{"internalType":"address","name":"_defiindex","type":"address"}],"name":"tokenconfigs","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFrozen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"userData","outputs":[{"internalType":"uint256","name":"totalTokensFrozen","type":"uint256"},{"internalType":"uint256","name":"userFrozen","type":"uint256"},{"internalType":"uint256","name":"userDividends","type":"uint256"},{"internalType":"uint256","name":"userStaketime","type":"uint256"},{"internalType":"int256","name":"scaledPayout","type":"int256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052670de0b6b3a764000060035561fd2060045534801561002257600080fd5b50600a80546001600160a01b031916331790556002805460ff60a01b19169055610ffc806100516000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80637640cb9e116100ad578063b821b6bf11610071578063b821b6bf146102c5578063c8910913146102cd578063e0287b3e1461031e578063f3c756dc1461033b578063f53d0a8e146103585761012b565b80637640cb9e1461023b578063a43fc87114610258578063aa9a091214610275578063ac3c85351461029e578063b333de24146102bd5761012b565b8063368a36c4116100f4578063368a36c4146101ba578063376edab6146101d957806342d41964146102075780636387c9491461022b57806369c18e12146102335761012b565b806265318b1461013057806308dbbb03146101685780631bf6e00d146101705780631cfff51b146101965780631e7f87bc146101b2575b600080fd5b6101566004803603602081101561014657600080fd5b50356001600160a01b0316610360565b60408051918252519081900360200190f35b6101566103c7565b6101566004803603602081101561018657600080fd5b50356001600160a01b03166103cd565b61019e6103eb565b604080519115158252519081900360200190f35b6101566103fb565b6101d7600480360360208110156101d057600080fd5b5035610401565b005b61019e600480360360408110156101ef57600080fd5b506001600160a01b038135811691602001351661040d565b61020f610535565b604080516001600160a01b039092168252519081900360200190f35b61020f610544565b610156610553565b61019e6004803603602081101561025157600080fd5b5035610559565b6101d76004803603602081101561026e57600080fd5b50356105ce565b6101566004803603606081101561028b57600080fd5b5080359060208101359060400135610626565b6101d7600480360360208110156102b457600080fd5b503515156106da565b6101566107b6565b6101566108e0565b6102f3600480360360208110156102e357600080fd5b50356001600160a01b03166108e6565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101d76004803603602081101561033457600080fd5b503561093d565b6101d76004803603602081101561035157600080fd5b503561098b565b61020f610994565b6004546001600160a01b0382166000908152600860205260408120600301549091111561038f575060006103c2565b6001600160a01b03821660009081526008602052604090206002810154600190910154600954600160401b929102030490505b919050565b60035481565b6001600160a01b031660009081526008602052604090206001015490565b600254600160a01b900460ff1681565b60075490565b61040a816109a3565b50565b600a546000906001600160a01b031633146104595760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b031614156104aa5760405162461bcd60e51b815260040180806020018281038252602a815260200180610f9d602a913960400191505060405180910390fd5b6001600160a01b038316158015906104ca57506001600160a01b03821615155b6105055760405162461bcd60e51b8152600401808060200182810382526028815260200180610f756028913960400191505060405180910390fd5b50600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617815590565b6001546001600160a01b031681565b6000546001600160a01b031681565b60055481565b600080546001600160a01b031633146105a35760405162461bcd60e51b815260040180806020018281038252602b815260200180610eaa602b913960400191505060405180910390fd5b600754600160401b8302816105b457fe5b600980549290910490910190819055600555506001919050565b600a546001600160a01b031633146106175760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b670de0b6b3a764000002600355565b60008060006106358686610b27565b9150915083811061064257fe5b6000848061064c57fe5b868809905082811115610660576001820391505b91829003916000859003851680868161067557fe5b04955080848161068157fe5b04935080816000038161069057fe5b046001019290920292909201600285810380870282030280870282030280870282030280870282030280870282030280870282030295860290039094029390930295945050505050565b600a546001600160a01b031633146107235760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b6000546001600160a01b03161580159061074757506001546001600160a01b031615155b610798576040805162461bcd60e51b815260206004820181905260248201527f506f6f6c2061646472657373657320617265206e6f7420796574207365747570604482015290519081900360640190fd5b60028054911515600160a01b0260ff60a01b19909216919091179055565b6000806107c233610360565b3360008181526008602090815260408083206002018054600160401b87020190558254815163a9059cbb60e01b815260048101959095526024850186905290519495506001600160a01b03169363a9059cbb93604480820194918390030190829087803b15801561083257600080fd5b505af1158015610846573d6000803e3d6000fd5b505050506040513d602081101561085c57600080fd5b50516108a4576040805162461bcd60e51b8152602060048201526012602482015271151c985b9cd858dd1a5bdb8811985a5b195960721b604482015290519081900360640190fd5b604080518281529051309133917f8c998377165b6abd6e99f8b84a86ed2c92d0055aeef42626fedea45c2909f6eb9181900360200190a3905090565b60045481565b60008060008060006108f66103fb565b6108ff876103cd565b61090888610360565b6001600160a01b0398909816600090815260086020526040902060038101546002909101549299919897509550909350915050565b600a546001600160a01b031633146109865760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b600455565b61040a81610b54565b6002546001600160a01b031681565b806109ad336103cd565b10156109ea5760405162461bcd60e51b8152600401808060200182810382526032815260200180610e786032913960400191505060405180910390fd5b6007805482900390553360008181526008602090815260408083206001818101805488900390556009546002909201805492880290920390915554815163a9059cbb60e01b815260048101959095526024850186905290516001600160a01b039091169363a9059cbb9360448083019493928390030190829087803b158015610a7257600080fd5b505af1158015610a86573d6000803e3d6000fd5b505050506040513d6020811015610a9c57600080fd5b5051610ae4576040805162461bcd60e51b8152602060048201526012602482015271151c985b9cd858dd1a5bdb8819985a5b195960721b604482015290519081900360640190fd5b604080518281529051339130917f15fba2c381f32b0e84d073dd1adb9edbcfd33a033ee48aaea415ac61ca7d448d9181900360200190a3610b236107b6565b5050565b6000808060001984860990508385029250828103915082811015610b4c576001820391505b509250929050565b600254600160a01b900460ff16610bb2576040805162461bcd60e51b815260206004820152601b60248201527f5374616b696e67206e6f742079657420696e697469616c697a65640000000000604482015290519081900360640190fd5b600154604080516370a0823160e01b8152336004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d6020811015610c2657600080fd5b50511015610c7b576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742044654669204146542062616c616e6365000000604482015290519081900360640190fd5b60035481610c88336103cd565b011015610cc65760405162461bcd60e51b815260040180806020018281038252603d815260200180610f10603d913960400191505060405180910390fd5b60015460408051636eb1769f60e11b8152336004820152306024820152905183926001600160a01b03169163dd62ed3e916044808301926020929190829003018186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d6020811015610d4057600080fd5b50511015610d7f5760405162461bcd60e51b815260040180806020018281038252603b815260200180610ed5603b913960400191505060405180910390fd5b33600081815260086020908152604080832042600382015560078054870190556001808201805488019055600954600290920180549288029092019091555481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b158015610e1157600080fd5b505af1158015610e25573d6000803e3d6000fd5b505050506040513d6020811015610e3b57600080fd5b5050604080518281529051309133917f160ffcaa807f78c8b4983836e2396338d073e75695ac448aa0b5e4a75b210b1d9181900360200190a35056fe596f752063757272656e746c7920646f206e6f74206861766520757020746f207468617420616d6f756e74207374616b6564417574686f72697a6174696f6e3a206f6e6c7920746f6b656e20636f6e74726163742063616e2063616c6c4e6f7420656e6f75676820616c6c6f77616e636520676976656e20746f20636f6e74726163742079657420746f207370656e642062792075736572596f757220616d6f756e74206973206c6f776572207468616e20746865206d696e696d756d20616d6f756e7420616c6c6f77656420746f207374616b654f776e61626c653a2063616c6c6572206973206e6f74207468652061646d696e6973747261746f72496e73657274696f6e206f662061646472657373283029206973206e6f7420737570706f72746564496e73657274696f6e206f662073616d652061646472657373206973206e6f7420737570706f72746564a264697066735822122087d927e1d24ea4eba7ce5e591d19c5491801982383d7c9a4e1e1ef5aac942fec64736f6c63430006040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012b5760003560e01c80637640cb9e116100ad578063b821b6bf11610071578063b821b6bf146102c5578063c8910913146102cd578063e0287b3e1461031e578063f3c756dc1461033b578063f53d0a8e146103585761012b565b80637640cb9e1461023b578063a43fc87114610258578063aa9a091214610275578063ac3c85351461029e578063b333de24146102bd5761012b565b8063368a36c4116100f4578063368a36c4146101ba578063376edab6146101d957806342d41964146102075780636387c9491461022b57806369c18e12146102335761012b565b806265318b1461013057806308dbbb03146101685780631bf6e00d146101705780631cfff51b146101965780631e7f87bc146101b2575b600080fd5b6101566004803603602081101561014657600080fd5b50356001600160a01b0316610360565b60408051918252519081900360200190f35b6101566103c7565b6101566004803603602081101561018657600080fd5b50356001600160a01b03166103cd565b61019e6103eb565b604080519115158252519081900360200190f35b6101566103fb565b6101d7600480360360208110156101d057600080fd5b5035610401565b005b61019e600480360360408110156101ef57600080fd5b506001600160a01b038135811691602001351661040d565b61020f610535565b604080516001600160a01b039092168252519081900360200190f35b61020f610544565b610156610553565b61019e6004803603602081101561025157600080fd5b5035610559565b6101d76004803603602081101561026e57600080fd5b50356105ce565b6101566004803603606081101561028b57600080fd5b5080359060208101359060400135610626565b6101d7600480360360208110156102b457600080fd5b503515156106da565b6101566107b6565b6101566108e0565b6102f3600480360360208110156102e357600080fd5b50356001600160a01b03166108e6565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6101d76004803603602081101561033457600080fd5b503561093d565b6101d76004803603602081101561035157600080fd5b503561098b565b61020f610994565b6004546001600160a01b0382166000908152600860205260408120600301549091111561038f575060006103c2565b6001600160a01b03821660009081526008602052604090206002810154600190910154600954600160401b929102030490505b919050565b60035481565b6001600160a01b031660009081526008602052604090206001015490565b600254600160a01b900460ff1681565b60075490565b61040a816109a3565b50565b600a546000906001600160a01b031633146104595760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b031614156104aa5760405162461bcd60e51b815260040180806020018281038252602a815260200180610f9d602a913960400191505060405180910390fd5b6001600160a01b038316158015906104ca57506001600160a01b03821615155b6105055760405162461bcd60e51b8152600401808060200182810382526028815260200180610f756028913960400191505060405180910390fd5b50600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617815590565b6001546001600160a01b031681565b6000546001600160a01b031681565b60055481565b600080546001600160a01b031633146105a35760405162461bcd60e51b815260040180806020018281038252602b815260200180610eaa602b913960400191505060405180910390fd5b600754600160401b8302816105b457fe5b600980549290910490910190819055600555506001919050565b600a546001600160a01b031633146106175760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b670de0b6b3a764000002600355565b60008060006106358686610b27565b9150915083811061064257fe5b6000848061064c57fe5b868809905082811115610660576001820391505b91829003916000859003851680868161067557fe5b04955080848161068157fe5b04935080816000038161069057fe5b046001019290920292909201600285810380870282030280870282030280870282030280870282030280870282030280870282030295860290039094029390930295945050505050565b600a546001600160a01b031633146107235760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b6000546001600160a01b03161580159061074757506001546001600160a01b031615155b610798576040805162461bcd60e51b815260206004820181905260248201527f506f6f6c2061646472657373657320617265206e6f7420796574207365747570604482015290519081900360640190fd5b60028054911515600160a01b0260ff60a01b19909216919091179055565b6000806107c233610360565b3360008181526008602090815260408083206002018054600160401b87020190558254815163a9059cbb60e01b815260048101959095526024850186905290519495506001600160a01b03169363a9059cbb93604480820194918390030190829087803b15801561083257600080fd5b505af1158015610846573d6000803e3d6000fd5b505050506040513d602081101561085c57600080fd5b50516108a4576040805162461bcd60e51b8152602060048201526012602482015271151c985b9cd858dd1a5bdb8811985a5b195960721b604482015290519081900360640190fd5b604080518281529051309133917f8c998377165b6abd6e99f8b84a86ed2c92d0055aeef42626fedea45c2909f6eb9181900360200190a3905090565b60045481565b60008060008060006108f66103fb565b6108ff876103cd565b61090888610360565b6001600160a01b0398909816600090815260086020526040902060038101546002909101549299919897509550909350915050565b600a546001600160a01b031633146109865760405162461bcd60e51b8152600401808060200182810382526028815260200180610f4d6028913960400191505060405180910390fd5b600455565b61040a81610b54565b6002546001600160a01b031681565b806109ad336103cd565b10156109ea5760405162461bcd60e51b8152600401808060200182810382526032815260200180610e786032913960400191505060405180910390fd5b6007805482900390553360008181526008602090815260408083206001818101805488900390556009546002909201805492880290920390915554815163a9059cbb60e01b815260048101959095526024850186905290516001600160a01b039091169363a9059cbb9360448083019493928390030190829087803b158015610a7257600080fd5b505af1158015610a86573d6000803e3d6000fd5b505050506040513d6020811015610a9c57600080fd5b5051610ae4576040805162461bcd60e51b8152602060048201526012602482015271151c985b9cd858dd1a5bdb8819985a5b195960721b604482015290519081900360640190fd5b604080518281529051339130917f15fba2c381f32b0e84d073dd1adb9edbcfd33a033ee48aaea415ac61ca7d448d9181900360200190a3610b236107b6565b5050565b6000808060001984860990508385029250828103915082811015610b4c576001820391505b509250929050565b600254600160a01b900460ff16610bb2576040805162461bcd60e51b815260206004820152601b60248201527f5374616b696e67206e6f742079657420696e697469616c697a65640000000000604482015290519081900360640190fd5b600154604080516370a0823160e01b8152336004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d6020811015610c2657600080fd5b50511015610c7b576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742044654669204146542062616c616e6365000000604482015290519081900360640190fd5b60035481610c88336103cd565b011015610cc65760405162461bcd60e51b815260040180806020018281038252603d815260200180610f10603d913960400191505060405180910390fd5b60015460408051636eb1769f60e11b8152336004820152306024820152905183926001600160a01b03169163dd62ed3e916044808301926020929190829003018186803b158015610d1657600080fd5b505afa158015610d2a573d6000803e3d6000fd5b505050506040513d6020811015610d4057600080fd5b50511015610d7f5760405162461bcd60e51b815260040180806020018281038252603b815260200180610ed5603b913960400191505060405180910390fd5b33600081815260086020908152604080832042600382015560078054870190556001808201805488019055600954600290920180549288029092019091555481516323b872dd60e01b815260048101959095523060248601526044850186905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b158015610e1157600080fd5b505af1158015610e25573d6000803e3d6000fd5b505050506040513d6020811015610e3b57600080fd5b5050604080518281529051309133917f160ffcaa807f78c8b4983836e2396338d073e75695ac448aa0b5e4a75b210b1d9181900360200190a35056fe596f752063757272656e746c7920646f206e6f74206861766520757020746f207468617420616d6f756e74207374616b6564417574686f72697a6174696f6e3a206f6e6c7920746f6b656e20636f6e74726163742063616e2063616c6c4e6f7420656e6f75676820616c6c6f77616e636520676976656e20746f20636f6e74726163742079657420746f207370656e642062792075736572596f757220616d6f756e74206973206c6f776572207468616e20746865206d696e696d756d20616d6f756e7420616c6c6f77656420746f207374616b654f776e61626c653a2063616c6c6572206973206e6f74207468652061646d696e6973747261746f72496e73657274696f6e206f662061646472657373283029206973206e6f7420737570706f72746564496e73657274696f6e206f662073616d652061646472657373206973206e6f7420737570706f72746564a264697066735822122087d927e1d24ea4eba7ce5e591d19c5491801982383d7c9a4e1e1ef5aac942fec64736f6c63430006040033
Deployed Bytecode Sourcemap
6199:7049:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6199:7049:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;9420:321:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9420:321:0;-1:-1:-1;;;;;9420:321:0;;:::i;:::-;;;;;;;;;;;;;;;;7003:50;;;:::i;9311:104::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9311:104:0;-1:-1:-1;;;;;9311:104:0;;:::i;6912:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;9216:86;;;:::i;9033:76::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9033:76:0;;:::i;:::-;;7956:411;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;7956:411:0;;;;;;;;;;:::i;6829:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6829:29:0;;;;;;;;;;;;;;6798:24;;;:::i;7120:21::-;;;:::i;12129:252::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12129:252:0;;:::i;8373:122::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8373:122:0;;:::i;12400:620::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12400:620:0;;;;;;;;;;;;:::i;8501:200::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8501:200:0;;;;:::i;11636:484::-;;;:::i;7070:43::-;;;:::i;9749:321::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9749:321:0;-1:-1:-1;;;;;9749:321:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8719:130;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8719:130:0;;:::i;8955:72::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8955:72:0;;:::i;6871:28::-;;;:::i;9420:321::-;9534:17;;-1:-1:-1;;;;;9504:17:0;;9477:7;9504:17;;;:10;:17;;;;;:27;;;9477:7;;-1:-1:-1;9501:229:0;;;-1:-1:-1;9571:1:0;9564:8;;9501:229;-1:-1:-1;;;;;9672:17:0;;;;;;:10;:17;;;;;:10;:30;;;9644:24;;;;;9616:25;;-1:-1:-1;;;6991:5:0;9616:52;;9609:93;9601:117;9594:124;;9501:229;9420:321;;;:::o;7003:50::-;;;;:::o;9311:104::-;-1:-1:-1;;;;;9386:17:0;9365:7;9386:17;;;:10;:17;;;;;:24;;;;9311:104::o;6912:26::-;;;-1:-1:-1;;;6912:26:0;;;;;:::o;9216:86::-;9281:16;;9216:86;:::o;9033:76::-;9087:17;9096:7;9087:8;:17::i;:::-;9033:76;:::o;7956:411::-;7724:10;;8046:12;;-1:-1:-1;;;;;7724:10:0;7710;:24;7702:77;;;;-1:-1:-1;;;7702:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8093:10:::1;-1:-1:-1::0;;;;;8079:24:0::1;:10;-1:-1:-1::0;;;;;8079:24:0::1;;;8071:79;;;;-1:-1:-1::0;;;8071:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;8169:24:0;::::1;::::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;;;;;;8197:24:0;::::1;::::0;::::1;8169:52;8161:105;;;;-1:-1:-1::0;;;8161:105:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;8277:9:0::1;:22:::0;;-1:-1:-1;;;;;8277:22:0;;::::1;-1:-1:-1::0;;;;;;8277:22:0;;::::1;;::::0;;;-1:-1:-1;8310:27:0;;;;;::::1;::::0;::::1;;::::0;;-1:-1:-1;7956:411:0:o;6829:29::-;;;-1:-1:-1;;;;;6829:29:0;;:::o;6798:24::-;;;-1:-1:-1;;;;;6798:24:0;;:::o;7120:21::-;;;;:::o;12129:252::-;12195:4;7869:9;;-1:-1:-1;;;;;7869:9:0;7855:10;:23;7847:79;;;;-1:-1:-1;;;7847:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12277:16;;-1:-1:-1;;;12252:22:0;::::1;12277:16:::0;12252:41:::1;;;;12223:25:::0;:70;;12252:41;;;::::1;12223:70:::0;;::::1;::::0;;;;12302:9:::1;:37:::0;-1:-1:-1;;;12129:252:0;-1:-1:-1;12129:252:0:o;8373:122::-;7724:10;;-1:-1:-1;;;;;7724:10:0;7710;:24;7702:77;;;;-1:-1:-1;;;7702:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8467:19:::1;8459:27;8443:13;:43:::0;8373:122::o;12400:620::-;12462:4;12482:6;12490;12500:14;12509:1;12512;12500:7;:14::i;:::-;12481:33;;;;12539:1;12535;:5;12527:14;;;;12554:7;12578:1;12564:16;;;;;12575:1;12572;12564:16;12554:26;;12602:1;12597:2;:6;12593:18;;;12610:1;12605:6;;;;12593:18;12624:7;;;;;12644:9;12660:2;;;12656:6;;;12661:1;12656:6;12675:9;;;;;;;12702:4;12697:9;;;;;;;;;12739:4;12731;12730:5;;12729:14;;;;;;12746:1;12729:18;12724:24;;;;12719:29;;;;12789:1;:9;;;12820:5;;;12816:9;;12811:14;12847:5;;;12843:9;;12838:14;12874:5;;;12870:9;;12865:14;12901:5;;;12897:9;;12892:14;12928:5;;;12924:9;;12919:14;12955:5;;;12951:9;;12946:14;12982:5;;;12978:9;;12973:14;;;13007:5;;;;;12400:620;-1:-1:-1;;;;;12400:620:0:o;8501:200::-;7724:10;;-1:-1:-1;;;;;7724:10:0;7710;:24;7702:77;;;;-1:-1:-1;;;7702:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8594:1:::1;8573:9:::0;-1:-1:-1;;;;;8573:9:0::1;:23:::0;;::::1;::::0;:55:::1;;-1:-1:-1::0;8600:14:0::1;::::0;-1:-1:-1;;;;;8600:14:0::1;:28:::0;::::1;8573:55;8565:100;;;::::0;;-1:-1:-1;;;8565:100:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8669:14;:24:::0;;;::::1;;-1:-1:-1::0;;;8669:24:0::1;-1:-1:-1::0;;;;8669:24:0;;::::1;::::0;;;::::1;::::0;;8501:200::o;11636:484::-;11677:7;11699:18;11720:23;11732:10;11720:11;:23::i;:::-;11824:10;11813:22;;;;:10;:22;;;;;;;;:10;:35;:72;;-1:-1:-1;;;11859:25:0;;11813:72;;;11909:9;;11902:50;;-1:-1:-1;;;11902:50:0;;;;;;;;;;;;;;;;;11699:44;;-1:-1:-1;;;;;;11909:9:0;;11902:26;;:50;;;;;;;;;;;;;11909:9;11902:50;;;2:2:-1;;;;27:1;24;17:12;2:2;11902:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11902:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11902:50:0;11894:81;;;;;-1:-1:-1;;;11894:81:0;;;;;;;;;;;;-1:-1:-1;;;11894:81:0;;;;;;;;;;;;;;;12024:50;;;;;;;;12056:4;;12036:10;;12024:50;;;;;;;;;12090:10;-1:-1:-1;11636:484:0;:::o;7070:43::-;;;;:::o;9749:321::-;9806:25;9833:18;9856:21;9879;9902:19;9943:13;:11;:13::i;:::-;9958:15;9967:5;9958:8;:15::i;:::-;9975:18;9987:5;9975:11;:18::i;:::-;-1:-1:-1;;;;;9995:17:0;;;;;;;;:10;:17;;;;;:27;;;;:10;10024:30;;;;9935:120;;;;;-1:-1:-1;9995:27:0;-1:-1:-1;10024:30:0;;-1:-1:-1;9749:321:0;-1:-1:-1;;9749:321:0:o;8719:130::-;7724:10;;-1:-1:-1;;;;;7724:10:0;7710;:24;7702:77;;;;-1:-1:-1;;;7702:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8806:17:::1;:32:::0;8719:130::o;8955:72::-;9007:15;9014:7;9007:6;:15::i;6871:28::-;;;-1:-1:-1;;;;;6871:28:0;;:::o;11123:503::-;11211:7;11187:20;11196:10;11187:8;:20::i;:::-;:31;;11179:94;;;;-1:-1:-1;;;11179:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11282:16;:27;;;;;;;11325:10;-1:-1:-1;11314:22:0;;;:10;:22;;;;;;;;-1:-1:-1;11314:29:0;;;:40;;;;;;;11415:25;;11314:10;11359:35;;;:82;;11405:35;;;11359:82;;;;;;11465:14;11458:52;;-1:-1:-1;;;11458:52:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11465:14:0;;;;11458:31;;:52;;;;;11314:22;11458:52;;;;;;;;11465:14;11458:52;;;2:2:-1;;;;27:1;24;17:12;2:2;11458:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11458:52:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11458:52:0;11450:83;;;;;-1:-1:-1;;;11450:83:0;;;;;;;;;;;;-1:-1:-1;;;11450:83:0;;;;;;;;;;;;;;;11549:48;;;;;;;;11577:10;;11570:4;;11549:48;;;;;;;;;11606:15;:13;:15::i;:::-;;11123:503;:::o;13033:203::-;13089:6;;;-1:-1:-1;;13139:1:0;13136;13128:24;13118:34;;13173:1;13169;:5;13165:9;;13196:1;13191:2;:6;13187:10;;13219:1;13214:2;:6;13210:18;;;13227:1;13222:6;;;;13210:18;13033:203;;;;;;:::o;10179:923::-;10244:14;;-1:-1:-1;;;10244:14:0;;;;10236:54;;;;;-1:-1:-1;;;10236:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10317:14;;10310:44;;;-1:-1:-1;;;10310:44:0;;10343:10;10310:44;;;;;;10358:7;;-1:-1:-1;;;;;10317:14:0;;10310:32;;:44;;;;;;;;;;;;;;10317:14;10310:44;;;2:2:-1;;;;27:1;24;17:12;2:2;10310:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10310:44:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10310:44:0;:55;;10302:97;;;;;-1:-1:-1;;;10302:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10446:13;;10435:7;10412:20;10421:10;10412:8;:20::i;:::-;:30;:47;;10404:121;;;;-1:-1:-1;;;10404:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10545:14;;10538:59;;;-1:-1:-1;;;10538:59:0;;10571:10;10538:59;;;;10591:4;10538:59;;;;;;10601:7;;-1:-1:-1;;;;;10545:14:0;;10538:32;;:59;;;;;;;;;;;;;;10545:14;10538:59;;;2:2:-1;;;;27:1;24;17:12;2:2;10538:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10538:59:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10538:59:0;:70;;10530:142;;;;-1:-1:-1;;;10530:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10692:10;10681:22;;;;:10;:22;;;;;;;;10716:3;10681:32;;;:38;10724:16;:27;;;;;;-1:-1:-1;10756:29:0;;;:40;;;;;;10861:25;;10681:10;10805:35;;;:82;;10851:35;;;10805:82;;;;;;10900:14;10893:71;;-1:-1:-1;;;10893:71:0;;;;;;;;;10949:4;10893:71;;;;;;;;;;;;-1:-1:-1;;;;;10900:14:0;;;;10893:35;;:71;;;;;10681:22;10893:71;;;;;;;;10900:14;10893:71;;;2:2:-1;;;;27:1;24;17:12;2:2;10893:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10893:71:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;11051:46:0;;;;;;;;11082:4;;11062:10;;11051:46;;;;;10893:71;11051:46;;;10179:923;:::o
Swarm Source
ipfs://87d927e1d24ea4eba7ce5e591d19c5491801982383d7c9a4e1e1ef5aac942fec
Loading...
Loading
Loading...
Loading
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.