Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 130 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 18049407 | 543 days ago | IN | 0 ETH | 0.00088746 | ||||
Transfer | 10902535 | 1619 days ago | IN | 0 ETH | 0.01808632 | ||||
Transfer | 10789326 | 1637 days ago | IN | 0 ETH | 0.06957 | ||||
Transfer | 10551988 | 1673 days ago | IN | 0 ETH | 0.00446254 | ||||
Transfer | 10275560 | 1716 days ago | IN | 0 ETH | 0.0029424 | ||||
Transfer | 10275556 | 1716 days ago | IN | 0 ETH | 0.00192103 | ||||
Transfer | 10003815 | 1758 days ago | IN | 0 ETH | 0.00136055 | ||||
Transfer | 10003641 | 1758 days ago | IN | 0 ETH | 0.00036355 | ||||
Transfer | 9928491 | 1770 days ago | IN | 0 ETH | 0.00018432 | ||||
Transfer | 9928491 | 1770 days ago | IN | 0 ETH | 0.00012309 | ||||
Transfer | 9928336 | 1770 days ago | IN | 0 ETH | 0.00300783 | ||||
Transfer | 9923048 | 1771 days ago | IN | 0 ETH | 0.00057137 | ||||
Transfer | 9920320 | 1771 days ago | IN | 0 ETH | 0.00040637 | ||||
Transfer | 9915655 | 1772 days ago | IN | 0 ETH | 0.00205968 | ||||
Transfer | 9915491 | 1772 days ago | IN | 0 ETH | 0.00068122 | ||||
Transfer | 9901115 | 1774 days ago | IN | 0 ETH | 0.00205968 | ||||
Transfer | 9900958 | 1774 days ago | IN | 0 ETH | 0.00036943 | ||||
Transfer | 9896174 | 1775 days ago | IN | 0 ETH | 0.00205968 | ||||
Transfer | 9895775 | 1775 days ago | IN | 0 ETH | 0.00034356 | ||||
Transfer | 9895576 | 1775 days ago | IN | 0 ETH | 0.00205968 | ||||
Transfer | 9895221 | 1775 days ago | IN | 0 ETH | 0.00057873 | ||||
Transfer | 9890149 | 1776 days ago | IN | 0 ETH | 0.00150881 | ||||
Transfer | 9890078 | 1776 days ago | IN | 0 ETH | 0.00100685 | ||||
Transfer | 9890040 | 1776 days ago | IN | 0 ETH | 0.0027859 | ||||
Transfer | 9889999 | 1776 days ago | IN | 0 ETH | 0.0006 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
WTIToken
Compiler Version
v0.5.14+commit.1f1aaa4
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-03-25 */ pragma solidity 0.5.14; /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error. */ library SafeMath { /** * @dev Multiplie two unsigned integers, revert on 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-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, revert on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtract two unsigned integers, revert on underflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Add two unsigned integers, revert on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } function _msgSender() internal view returns (address payable) { return msg.sender; } } /** * @title ERC20 interface * @dev See https://eips.ethereum.org/EIPS/eip-20 */ interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Standard ERC20 token * @dev Implementation of the basic standard token. */ contract StandardToken is IERC20, Context { using SafeMath for uint256; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowed; uint256 internal _totalSupply; /** * @dev Total number of tokens in existence. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Get the balance of the specified address. * @param owner The address to query the balance of. * @return A uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner The address which owns the funds. * @param spender The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer tokens to a specified address. * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public returns (bool) { _transfer(_msgSender(), to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public returns (bool) { _approve(_msgSender(), spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from The address which you want to send tokens from. * @param to The address which you want to transfer to. * @param value The amount of tokens to be transferred. */ function transferFrom(address from, address to, uint256 value) public returns (bool) { _transfer(from, to, value); _approve(from, _msgSender(), _allowed[from][_msgSender()].sub(value)); return true; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when _allowed[msg.sender][spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowed[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when _allowed[msg.sender][spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowed[_msgSender()][spender].sub(subtractedValue)); return true; } /** * @dev Transfer tokens for a specified address. * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) internal { require(to != address(0), "Cannot transfer to the zero address"); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /** * @dev Approve an address to spend another addresses' tokens. * @param owner The address that owns the tokens. * @param spender The address that will spend the tokens. * @param value The number of tokens that can be spent. */ function _approve(address owner, address spender, uint256 value) internal { require(spender != address(0), "Cannot approve to the zero address"); require(owner != address(0), "Setter cannot be the zero address"); _allowed[owner][spender] = value; emit Approval(owner, spender, value); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowed[account][_msgSender()].sub(amount)); } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract WTIToken is StandardToken, Ownable { string public constant name = "West Texas Intermediate"; string public constant symbol = "WTI"; uint8 public constant decimals = 18; uint256 internal constant INITIAL_SUPPLY = 16170000 * (10 ** uint256(decimals)); uint256 internal constant MAX_POSREWARDS = 4830000 * (10 ** uint256(decimals)); uint256 public rewarded; address private constant tokenWallet = 0xAE39690565914cD295405f12Da02b31701246362; address private constant banWallet = 0x6cC5F688a315f3dC28A7781717a9A798a59fDA7b; struct coinInfo{ uint256 amount; uint256 time; } mapping(address => coinInfo[]) internal coinInfos; mapping(address => uint256) internal userIndex; mapping(address => bool) public ban; event Reward(address receipt, uint256 _value); /** * @dev Constructor, initialize the basic information of contract. */ constructor() public { _totalSupply = INITIAL_SUPPLY; _balances[tokenWallet] = _totalSupply; emit Transfer(address(0), tokenWallet, INITIAL_SUPPLY); _owner = tokenWallet; ban[_owner] = true; ban[banWallet] = true; emit OwnershipTransferred(address(0), tokenWallet); } function transfer(address _to, uint256 _value) public returns (bool) { if( _msgSender() == _to) { _checkAndRewarding(_msgSender()); return true; } super.transfer(_to, _value); _updateCoinage(_msgSender(), _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_from != _to); super.transferFrom(_from, _to, _value); _updateCoinage(_from, _to, _value); return true; } function burn(uint256 amount) public onlyOwner { _burn(_msgSender(), amount); } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != _owner); require(queryReward(newOwner) == 0, "Please claim rewarding of newOnwer before transferOwnership!"); super.transferOwnership(newOwner); ban[_msgSender()] = false; ban[newOwner] = true; transfer(newOwner, _balances[_msgSender()]); } function _updateCoinage(address _from, address _to, uint256 _value) internal { if (rewarded < MAX_POSREWARDS) { if (ban[_from] == false) { if (coinInfos[_from].length > 0) { delete coinInfos[_from]; } if( _balances[_from] != 0){ coinInfos[_from].push(coinInfo(_balances[_from], now)); } } if (ban[_to] == false && _value != 0) { coinInfos[_to].push(coinInfo(_value, now)); } if (ban[_to] == true && coinInfos[_to].length > 0) { delete coinInfos[_to]; } } } function _checkAndRewarding(address _from) internal { if (rewarded >= MAX_POSREWARDS || ban[_from] == true) { return; } uint256 reward = 0; uint256 settled = 0; uint256 index = userIndex[_from]; uint256 _length = coinInfos[_from].length.sub(index); if (_length > 250) { (settled, reward) = segmentCliamReward(_from, 250); } else { (settled, reward) = segmentCliamReward(_from, _length); if (coinInfos[_from].length > 0) { delete coinInfos[_from]; userIndex[_from] = 0; } settled = _balances[_from]; } if (settled > 0 && reward > 0) { rewarded = rewarded.add(reward); _totalSupply = _totalSupply.add(reward); _balances[_from] = _balances[_from].add(reward); coinInfos[_from].push(coinInfo(settled.add(reward), now)); emit Transfer(address(0), _from, reward); emit Reward(_from, reward); } } function getCoinInfo(address _user, uint256 _index) public view returns (uint256 _amount, uint256 _coinAge) { _amount = coinInfos[_user][_index].amount; _coinAge = now.sub(coinInfos[_user][_index].time).div(86400); } function queryReward(address receipt) view public returns (uint256 totalReward) { if (rewarded >= MAX_POSREWARDS) { return 0; } if (ban[receipt] == true) { return 0; } uint256 _length = coinInfos[receipt].length; for (uint256 i = userIndex[receipt]; i < _length; i++) { (uint256 amount, uint256 coinAge) = getCoinInfo(receipt, i); uint256 cycle = coinAge.div(30); if (cycle > 0) { uint256 reward = amount.div(100).mul(cycle); if (rewarded.add(totalReward).add(reward) > MAX_POSREWARDS) { uint256 remain = MAX_POSREWARDS.sub(rewarded.add(totalReward)); totalReward = totalReward.add(remain); break; } else { totalReward = totalReward.add(reward); } } else{ break; } } } function segmentCliamReward(address _user, uint256 _length) internal returns (uint256 settledAmount, uint256 totalReward) { uint256 index = userIndex[_user]; for (uint256 i = index; i < index.add(_length); i++) { (uint256 amount, uint256 coinAge) = getCoinInfo(_user, i); if (amount == 0) { continue; } uint256 cycle = coinAge.div(30); if (cycle > 0) { uint256 reward = amount.div(100).mul(cycle); if (rewarded.add(totalReward).add(reward) > MAX_POSREWARDS) { uint256 remain = MAX_POSREWARDS.sub(rewarded.add(totalReward)); totalReward = totalReward.add(remain); delete coinInfos[_user]; userIndex[_user] = 0; settledAmount = _balances[_user]; return (settledAmount, totalReward); } else { delete coinInfos[_user][i]; totalReward = totalReward.add(reward); settledAmount = settledAmount.add(amount); } } else{ delete coinInfos[_user]; userIndex[_user] = 0; settledAmount = _balances[_user]; return (settledAmount, totalReward); } } userIndex[_user] = userIndex[_user].add(_length); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receipt","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Reward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ban","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getCoinInfo","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_coinAge","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"receipt","type":"address"}],"name":"queryReward","outputs":[{"internalType":"uint256","name":"totalReward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewarded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506a0d602174da343fe6400000600281905573ae39690565914cd295405f12da02b31701246362600081815260208181527f02c55c835c61f6f3ba5c8eef40a680e8b44100b3936fea909d8f1bbf98b818ea8490556040805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3600380546001600160a01b03191673ae39690565914cd295405f12da02b31701246362908117918290556001600160a01b0391909116600090815260076020526040808220805460ff199081166001908117909255736cc5f688a315f3dc28a7781717a9a798a59fda7b84527fe0358d213161d206dfac3345f700816e4d7a9b7ee594c1e005c150d00b3d1c2b80549091169091179055517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a361174a806101676000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379317680116100ad578063a457c2d711610071578063a457c2d714610369578063a9059cbb14610395578063c37220ea146103c1578063dd62ed3e146103e7578063f2fde38b1461041557610121565b806379317680146103075780638da5cb5b1461030f5780638f32d59b1461033357806395d89b411461033b57806397c3ccd81461034357610121565b806323b872dd116100f457806323b872dd14610242578063313ce56714610278578063395093511461029657806342966c68146102c257806370a08231146102e157610121565b806306fdde0314610126578063095ea7b3146101a35780630e4b82aa146101e357806318160ddd14610228575b600080fd5b61012e61043b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610474565b604080519115158252519081900360200190f35b61020f600480360360408110156101f957600080fd5b506001600160a01b038135169060200135610492565b6040805192835260208301919091528051918290030190f35b61023061053d565b60408051918252519081900360200190f35b6101cf6004803603606081101561025857600080fd5b506001600160a01b03813581169160208101359091169060400135610544565b610280610586565b6040805160ff9092168252519081900360200190f35b6101cf600480360360408110156102ac57600080fd5b506001600160a01b03813516906020013561058b565b6102df600480360360208110156102d857600080fd5b50356105e4565b005b610230600480360360208110156102f757600080fd5b50356001600160a01b0316610651565b610230610670565b610317610676565b604080516001600160a01b039092168252519081900360200190f35b6101cf610685565b61012e6106ab565b6101cf6004803603602081101561035957600080fd5b50356001600160a01b03166106ca565b6101cf6004803603604081101561037f57600080fd5b506001600160a01b0381351690602001356106df565b6101cf600480360360408110156103ab57600080fd5b506001600160a01b038135169060200135610733565b610230600480360360208110156103d757600080fd5b50356001600160a01b031661078b565b610230600480360360408110156103fd57600080fd5b506001600160a01b0381358116916020013516610913565b6102df6004803603602081101561042b57600080fd5b50356001600160a01b031661093e565b6040518060400160405280601781526020017f5765737420546578617320496e7465726d65646961746500000000000000000081525081565b6000610488610481610a8c565b8484610a90565b5060015b92915050565b6001600160a01b03821660009081526005602052604081208054829190849081106104b957fe5b90600052602060002090600202016000015491506105346201518061052860056000886001600160a01b03166001600160a01b03168152602001908152602001600020868154811061050757fe5b90600052602060002090600202016001015442610b7c90919063ffffffff16565b9063ffffffff610b9116565b90509250929050565b6002545b90565b6000826001600160a01b0316846001600160a01b0316141561056557600080fd5b610570848484610bb3565b5061057c848484610c19565b5060019392505050565b601281565b6000610488610598610a8c565b846105df85600160006105a9610a8c565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610dec16565b610a90565b6105ec610685565b61063d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61064e610648610a8c565b82610e05565b50565b6001600160a01b0381166000908152602081905260409020545b919050565b60045481565b6003546001600160a01b031690565b6003546000906001600160a01b031661069c610a8c565b6001600160a01b031614905090565b6040518060400160405280600381526020016257544960e81b81525081565b60076020526000908152604090205460ff1681565b60006104886106ec610a8c565b846105df85600160006106fd610a8c565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610b7c16565b6000826001600160a01b0316610747610a8c565b6001600160a01b0316141561076e57610766610761610a8c565b610ee7565b50600161048c565b6107788383611167565b50610488610784610a8c565b8484610c19565b6004546000906a03fecad31c9b3e4ec00000116107aa5750600061066b565b6001600160a01b03821660009081526007602052604090205460ff161515600114156107d85750600061066b565b6001600160a01b0382166000908152600560209081526040808320546006909252909120545b8181101561090c576000806108138684610492565b9092509050600061082b82601e63ffffffff610b9116565b905080156108f95760006108568261084a86606463ffffffff610b9116565b9063ffffffff61117b16565b6004549091506a03fecad31c9b3e4ec000009061088b90839061087f908b63ffffffff610dec16565b9063ffffffff610dec16565b11156108e15760006108c36108ab89600454610dec90919063ffffffff16565b6a03fecad31c9b3e4ec000009063ffffffff610b7c16565b90506108d5888263ffffffff610dec16565b9750505050505061090c565b6108f1878263ffffffff610dec16565b965050610901565b50505061090c565b5050506001016107fe565b5050919050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610946610685565b610997576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546001600160a01b03828116911614156109b257600080fd5b6109bb8161078b565b156109f75760405162461bcd60e51b815260040180806020018281038252603c8152602001806116da603c913960400191505060405180910390fd5b610a00816111a2565b600060076000610a0e610a8c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790559085168152600790925281208054909216600117909155610a8890829080610a62610a8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610733565b5050565b3390565b6001600160a01b038216610ad55760405162461bcd60e51b815260040180806020018281038252602281526020018061162d6022913960400191505060405180910390fd5b6001600160a01b038316610b1a5760405162461bcd60e51b81526004018080602001828103825260218152602001806116756021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082821115610b8b57600080fd5b50900390565b6000808211610b9f57600080fd5b6000828481610baa57fe5b04949350505050565b6000610bc0848484611204565b61057c84610bcc610a8c565b6001600160a01b03871660009081526001602052604081206105df91879190610bf3610a8c565b6001600160a01b031681526020810191909152604001600020549063ffffffff610b7c16565b6004546a03fecad31c9b3e4ec000001115610de7576001600160a01b03831660009081526007602052604090205460ff16610d00576001600160a01b03831660009081526005602052604090205415610c8d576001600160a01b0383166000908152600560205260408120610c8d916115ec565b6001600160a01b03831660009081526020819052604090205415610d00576001600160a01b03831660009081526005602090815260408083208151808301835284845291842054825242828401908152815460018181018455928652939094209151600290930290910191825591519101555b6001600160a01b03821660009081526007602052604090205460ff16158015610d2857508015155b15610d7d576001600160a01b0382166000908152600560209081526040808320815180830190925284825242828401908152815460018181018455928652939094209151600290930290910191825591519101555b6001600160a01b03821660009081526007602052604090205460ff1615156001148015610dc157506001600160a01b03821660009081526005602052604090205415155b15610de7576001600160a01b0382166000908152600560205260408120610de7916115ec565b505050565b600082820183811015610dfe57600080fd5b9392505050565b6001600160a01b038216610e4a5760405162461bcd60e51b81526004018080602001828103825260218152602001806116966021913960400191505060405180910390fd5b6001600160a01b038216600090815260208190526040902054610e73908263ffffffff610b7c16565b6001600160a01b038316600090815260208190526040902055600254610e9f908263ffffffff610b7c16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6004546a03fecad31c9b3e4ec00000111580610f2057506001600160a01b03811660009081526007602052604090205460ff1615156001145b15610f2a5761064e565b6001600160a01b03811660009081526006602090815260408083205460059092528220548291908290610f63908363ffffffff610b7c16565b905060fa811115610f8257610f798560fa611301565b94509250611007565b610f8c8582611301565b6001600160a01b03871660009081526005602052604090205490955090935015610feb576001600160a01b0385166000908152600560205260408120610fd1916115ec565b6001600160a01b0385166000908152600660205260408120555b6001600160a01b03851660009081526020819052604090205492505b6000831180156110175750600084115b156111605760045461102f908563ffffffff610dec16565b600455600254611045908563ffffffff610dec16565b6002556001600160a01b038516600090815260208190526040902054611071908563ffffffff610dec16565b6001600160a01b0386166000908152602081815260408083209390935560059052819020815180830190925290806110af868863ffffffff610dec16565b81524260209182015282546001818101855560009485528285208451600290930201918255928201519201919091556040805187815290516001600160a01b03891693927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3604080516001600160a01b03871681526020810186905281517f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc9929181900390910190a15b5050505050565b6000610488611174610a8c565b8484611204565b60008261118a5750600061048c565b8282028284828161119757fe5b0414610dfe57600080fd5b6111aa610685565b6111fb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61064e8161154b565b6001600160a01b0382166112495760405162461bcd60e51b81526004018080602001828103825260238152602001806116b76023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054611272908263ffffffff610b7c16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546112a7908263ffffffff610dec16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b0382166000908152600660205260408120548190805b61132e828663ffffffff610dec16565b8110156114ff576000806113428884610492565b9150915081600014156113565750506114f7565b600061136982601e63ffffffff610b9116565b905080156114a05760006113888261084a86606463ffffffff610b9116565b6004549091506a03fecad31c9b3e4ec00000906113b190839061087f908b63ffffffff610dec16565b111561143c5760006113d16108ab89600454610dec90919063ffffffff16565b90506113e3888263ffffffff610dec16565b6001600160a01b038c16600090815260056020526040812091995061140891906115ec565b5050506001600160a01b03881660009081526006602090815260408083208390559082905290205495506115449350505050565b6001600160a01b038a16600090815260056020526040902080548690811061146057fe5b60009182526020822060029091020181815560010155611486878263ffffffff610dec16565b9650611498888563ffffffff610dec16565b9750506114f3565b6001600160a01b03891660009081526005602052604081206114c1916115ec565b5050506001600160a01b0386166000908152600660209081526040808320839055908290529020549350611544915050565b5050505b60010161131e565b506001600160a01b038516600090815260066020526040902054611529908563ffffffff610dec16565b6001600160a01b038616600090815260066020526040902055505b9250929050565b6001600160a01b0381166115905760405162461bcd60e51b815260040180806020018281038252602681526020018061164f6026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b508054600082556002029060005260206000209081019061064e919061054191905b80821115611628576000808255600182015560020161160e565b509056fe43616e6e6f7420617070726f766520746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735365747465722063616e6e6f7420626520746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737343616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373506c6561736520636c61696d20726577617264696e67206f66206e65774f6e776572206265666f7265207472616e736665724f776e65727368697021a265627a7a723158205503b34f808382a1342ae225bc1179b302acff756e40ff0beac29be9df7fcb9764736f6c634300050e0032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806379317680116100ad578063a457c2d711610071578063a457c2d714610369578063a9059cbb14610395578063c37220ea146103c1578063dd62ed3e146103e7578063f2fde38b1461041557610121565b806379317680146103075780638da5cb5b1461030f5780638f32d59b1461033357806395d89b411461033b57806397c3ccd81461034357610121565b806323b872dd116100f457806323b872dd14610242578063313ce56714610278578063395093511461029657806342966c68146102c257806370a08231146102e157610121565b806306fdde0314610126578063095ea7b3146101a35780630e4b82aa146101e357806318160ddd14610228575b600080fd5b61012e61043b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610474565b604080519115158252519081900360200190f35b61020f600480360360408110156101f957600080fd5b506001600160a01b038135169060200135610492565b6040805192835260208301919091528051918290030190f35b61023061053d565b60408051918252519081900360200190f35b6101cf6004803603606081101561025857600080fd5b506001600160a01b03813581169160208101359091169060400135610544565b610280610586565b6040805160ff9092168252519081900360200190f35b6101cf600480360360408110156102ac57600080fd5b506001600160a01b03813516906020013561058b565b6102df600480360360208110156102d857600080fd5b50356105e4565b005b610230600480360360208110156102f757600080fd5b50356001600160a01b0316610651565b610230610670565b610317610676565b604080516001600160a01b039092168252519081900360200190f35b6101cf610685565b61012e6106ab565b6101cf6004803603602081101561035957600080fd5b50356001600160a01b03166106ca565b6101cf6004803603604081101561037f57600080fd5b506001600160a01b0381351690602001356106df565b6101cf600480360360408110156103ab57600080fd5b506001600160a01b038135169060200135610733565b610230600480360360208110156103d757600080fd5b50356001600160a01b031661078b565b610230600480360360408110156103fd57600080fd5b506001600160a01b0381358116916020013516610913565b6102df6004803603602081101561042b57600080fd5b50356001600160a01b031661093e565b6040518060400160405280601781526020017f5765737420546578617320496e7465726d65646961746500000000000000000081525081565b6000610488610481610a8c565b8484610a90565b5060015b92915050565b6001600160a01b03821660009081526005602052604081208054829190849081106104b957fe5b90600052602060002090600202016000015491506105346201518061052860056000886001600160a01b03166001600160a01b03168152602001908152602001600020868154811061050757fe5b90600052602060002090600202016001015442610b7c90919063ffffffff16565b9063ffffffff610b9116565b90509250929050565b6002545b90565b6000826001600160a01b0316846001600160a01b0316141561056557600080fd5b610570848484610bb3565b5061057c848484610c19565b5060019392505050565b601281565b6000610488610598610a8c565b846105df85600160006105a9610a8c565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610dec16565b610a90565b6105ec610685565b61063d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61064e610648610a8c565b82610e05565b50565b6001600160a01b0381166000908152602081905260409020545b919050565b60045481565b6003546001600160a01b031690565b6003546000906001600160a01b031661069c610a8c565b6001600160a01b031614905090565b6040518060400160405280600381526020016257544960e81b81525081565b60076020526000908152604090205460ff1681565b60006104886106ec610a8c565b846105df85600160006106fd610a8c565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610b7c16565b6000826001600160a01b0316610747610a8c565b6001600160a01b0316141561076e57610766610761610a8c565b610ee7565b50600161048c565b6107788383611167565b50610488610784610a8c565b8484610c19565b6004546000906a03fecad31c9b3e4ec00000116107aa5750600061066b565b6001600160a01b03821660009081526007602052604090205460ff161515600114156107d85750600061066b565b6001600160a01b0382166000908152600560209081526040808320546006909252909120545b8181101561090c576000806108138684610492565b9092509050600061082b82601e63ffffffff610b9116565b905080156108f95760006108568261084a86606463ffffffff610b9116565b9063ffffffff61117b16565b6004549091506a03fecad31c9b3e4ec000009061088b90839061087f908b63ffffffff610dec16565b9063ffffffff610dec16565b11156108e15760006108c36108ab89600454610dec90919063ffffffff16565b6a03fecad31c9b3e4ec000009063ffffffff610b7c16565b90506108d5888263ffffffff610dec16565b9750505050505061090c565b6108f1878263ffffffff610dec16565b965050610901565b50505061090c565b5050506001016107fe565b5050919050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610946610685565b610997576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546001600160a01b03828116911614156109b257600080fd5b6109bb8161078b565b156109f75760405162461bcd60e51b815260040180806020018281038252603c8152602001806116da603c913960400191505060405180910390fd5b610a00816111a2565b600060076000610a0e610a8c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790559085168152600790925281208054909216600117909155610a8890829080610a62610a8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610733565b5050565b3390565b6001600160a01b038216610ad55760405162461bcd60e51b815260040180806020018281038252602281526020018061162d6022913960400191505060405180910390fd5b6001600160a01b038316610b1a5760405162461bcd60e51b81526004018080602001828103825260218152602001806116756021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082821115610b8b57600080fd5b50900390565b6000808211610b9f57600080fd5b6000828481610baa57fe5b04949350505050565b6000610bc0848484611204565b61057c84610bcc610a8c565b6001600160a01b03871660009081526001602052604081206105df91879190610bf3610a8c565b6001600160a01b031681526020810191909152604001600020549063ffffffff610b7c16565b6004546a03fecad31c9b3e4ec000001115610de7576001600160a01b03831660009081526007602052604090205460ff16610d00576001600160a01b03831660009081526005602052604090205415610c8d576001600160a01b0383166000908152600560205260408120610c8d916115ec565b6001600160a01b03831660009081526020819052604090205415610d00576001600160a01b03831660009081526005602090815260408083208151808301835284845291842054825242828401908152815460018181018455928652939094209151600290930290910191825591519101555b6001600160a01b03821660009081526007602052604090205460ff16158015610d2857508015155b15610d7d576001600160a01b0382166000908152600560209081526040808320815180830190925284825242828401908152815460018181018455928652939094209151600290930290910191825591519101555b6001600160a01b03821660009081526007602052604090205460ff1615156001148015610dc157506001600160a01b03821660009081526005602052604090205415155b15610de7576001600160a01b0382166000908152600560205260408120610de7916115ec565b505050565b600082820183811015610dfe57600080fd5b9392505050565b6001600160a01b038216610e4a5760405162461bcd60e51b81526004018080602001828103825260218152602001806116966021913960400191505060405180910390fd5b6001600160a01b038216600090815260208190526040902054610e73908263ffffffff610b7c16565b6001600160a01b038316600090815260208190526040902055600254610e9f908263ffffffff610b7c16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6004546a03fecad31c9b3e4ec00000111580610f2057506001600160a01b03811660009081526007602052604090205460ff1615156001145b15610f2a5761064e565b6001600160a01b03811660009081526006602090815260408083205460059092528220548291908290610f63908363ffffffff610b7c16565b905060fa811115610f8257610f798560fa611301565b94509250611007565b610f8c8582611301565b6001600160a01b03871660009081526005602052604090205490955090935015610feb576001600160a01b0385166000908152600560205260408120610fd1916115ec565b6001600160a01b0385166000908152600660205260408120555b6001600160a01b03851660009081526020819052604090205492505b6000831180156110175750600084115b156111605760045461102f908563ffffffff610dec16565b600455600254611045908563ffffffff610dec16565b6002556001600160a01b038516600090815260208190526040902054611071908563ffffffff610dec16565b6001600160a01b0386166000908152602081815260408083209390935560059052819020815180830190925290806110af868863ffffffff610dec16565b81524260209182015282546001818101855560009485528285208451600290930201918255928201519201919091556040805187815290516001600160a01b03891693927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3604080516001600160a01b03871681526020810186905281517f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc9929181900390910190a15b5050505050565b6000610488611174610a8c565b8484611204565b60008261118a5750600061048c565b8282028284828161119757fe5b0414610dfe57600080fd5b6111aa610685565b6111fb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61064e8161154b565b6001600160a01b0382166112495760405162461bcd60e51b81526004018080602001828103825260238152602001806116b76023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054611272908263ffffffff610b7c16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546112a7908263ffffffff610dec16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b0382166000908152600660205260408120548190805b61132e828663ffffffff610dec16565b8110156114ff576000806113428884610492565b9150915081600014156113565750506114f7565b600061136982601e63ffffffff610b9116565b905080156114a05760006113888261084a86606463ffffffff610b9116565b6004549091506a03fecad31c9b3e4ec00000906113b190839061087f908b63ffffffff610dec16565b111561143c5760006113d16108ab89600454610dec90919063ffffffff16565b90506113e3888263ffffffff610dec16565b6001600160a01b038c16600090815260056020526040812091995061140891906115ec565b5050506001600160a01b03881660009081526006602090815260408083208390559082905290205495506115449350505050565b6001600160a01b038a16600090815260056020526040902080548690811061146057fe5b60009182526020822060029091020181815560010155611486878263ffffffff610dec16565b9650611498888563ffffffff610dec16565b9750506114f3565b6001600160a01b03891660009081526005602052604081206114c1916115ec565b5050506001600160a01b0386166000908152600660209081526040808320839055908290529020549350611544915050565b5050505b60010161131e565b506001600160a01b038516600090815260066020526040902054611529908563ffffffff610dec16565b6001600160a01b038616600090815260066020526040902055505b9250929050565b6001600160a01b0381166115905760405162461bcd60e51b815260040180806020018281038252602681526020018061164f6026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b508054600082556002029060005260206000209081019061064e919061054191905b80821115611628576000808255600182015560020161160e565b509056fe43616e6e6f7420617070726f766520746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735365747465722063616e6e6f7420626520746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737343616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373506c6561736520636c61696d20726577617264696e67206f66206e65774f6e776572206265666f7265207472616e736665724f776e65727368697021a265627a7a723158205503b34f808382a1342ae225bc1179b302acff756e40ff0beac29be9df7fcb9764736f6c634300050e0032
Deployed Bytecode Sourcemap
11644:6883:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11644:6883:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11695:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11695:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5503:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5503:151:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15805:239;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15805:239:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3667:92;;;:::i;:::-;;;;;;;;;;;;;;;;13256:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13256:244:0;;;;;;;;;;;;;;;;;:::i;11801:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6866:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6866:208:0;;;;;;;;:::i;13508:93::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13508:93:0;;:::i;:::-;;3977:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3977:107:0;-1:-1:-1;;;;;3977:107:0;;:::i;12016:23::-;;;:::i;10578:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;10578:79:0;;;;;;;;;;;;;;10944:94;;;:::i;11757:37::-;;;:::i;12412:35::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12412:35:0;-1:-1:-1;;;;;12412:35:0;;:::i;7605:217::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7605:217:0;;;;;;;;:::i;12939:309::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12939:309:0;;;;;;;;:::i;16052:999::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16052:999:0;-1:-1:-1;;;;;16052:999:0;;:::i;4407:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4407:131:0;;;;;;;;;;:::i;13609:383::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13609:383:0;-1:-1:-1;;;;;13609:383:0;;:::i;11695:55::-;;;;;;;;;;;;;;;;;;;:::o;5503:151::-;5568:4;5585:38;5594:12;:10;:12::i;:::-;5608:7;5617:5;5585:8;:38::i;:::-;-1:-1:-1;5642:4:0;5503:151;;;;;:::o;15805:239::-;-1:-1:-1;;;;;15934:16:0;;15878:15;15934:16;;;:9;:16;;;;;:24;;15878:15;;15934:16;15951:6;;15934:24;;;;;;;;;;;;;;;;:31;;;15924:41;;15987:49;16030:5;15987:38;15995:9;:16;16005:5;-1:-1:-1;;;;;15995:16:0;-1:-1:-1;;;;;15995:16:0;;;;;;;;;;;;16012:6;15995:24;;;;;;;;;;;;;;;;;;:29;;;15987:3;:7;;:38;;;;:::i;:::-;:42;:49;:42;:49;:::i;:::-;15976:60;;15805:239;;;;;:::o;3667:92::-;3738:12;;3667:92;;:::o;13256:244::-;13338:4;13372:3;-1:-1:-1;;;;;13363:12:0;:5;-1:-1:-1;;;;;13363:12:0;;;13355:21;;;;;;13387:38;13406:5;13413:3;13418:6;13387:18;:38::i;:::-;;13436:34;13451:5;13458:3;13463:6;13436:14;:34::i;:::-;-1:-1:-1;13488:4:0;13256:244;;;;;:::o;11801:35::-;11834:2;11801:35;:::o;6866:208::-;6946:4;6963:80;6972:12;:10;:12::i;:::-;6986:7;6995:47;7031:10;6995:8;:22;7004:12;:10;:12::i;:::-;-1:-1:-1;;;;;6995:22:0;;;;;;;;;;;;;;;;;-1:-1:-1;6995:22:0;;;:31;;;;;;;;;;;:47;:35;:47;:::i;:::-;6963:8;:80::i;13508:93::-;10790:9;:7;:9::i;:::-;10782:54;;;;;-1:-1:-1;;;10782:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13566:27;13572:12;:10;:12::i;:::-;13586:6;13566:5;:27::i;:::-;13508:93;:::o;3977:107::-;-1:-1:-1;;;;;4060:16:0;;4033:7;4060:16;;;;;;;;;;;3977:107;;;;:::o;12016:23::-;;;;:::o;10578:79::-;10643:6;;-1:-1:-1;;;;;10643:6:0;10578:79;:::o;10944:94::-;11024:6;;10984:4;;-1:-1:-1;;;;;11024:6:0;11008:12;:10;:12::i;:::-;-1:-1:-1;;;;;11008:22:0;;11001:29;;10944:94;:::o;11757:37::-;;;;;;;;;;;;;;-1:-1:-1;;;11757:37:0;;;;:::o;12412:35::-;;;;;;;;;;;;;;;:::o;7605:217::-;7690:4;7707:85;7716:12;:10;:12::i;:::-;7730:7;7739:52;7775:15;7739:8;:22;7748:12;:10;:12::i;:::-;-1:-1:-1;;;;;7739:22:0;;;;;;;;;;;;;;;;;-1:-1:-1;7739:22:0;;;:31;;;;;;;;;;;:52;:35;:52;:::i;12939:309::-;13002:4;13039:3;-1:-1:-1;;;;;13023:19:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;13023:19:0;;13019:110;;;13059:32;13078:12;:10;:12::i;:::-;13059:18;:32::i;:::-;-1:-1:-1;13113:4:0;13106:11;;13019:110;13139:27;13154:3;13159:6;13139:14;:27::i;:::-;;13177:41;13192:12;:10;:12::i;:::-;13206:3;13211:6;13177:14;:41::i;16052:999::-;16147:8;;16111:19;;11974:35;-1:-1:-1;16143:67:0;;-1:-1:-1;16197:1:0;16190:8;;16143:67;-1:-1:-1;;;;;16224:12:0;;;;;;:3;:12;;;;;;;;:20;;:12;:20;16220:61;;;-1:-1:-1;16268:1:0;16261:8;;16220:61;-1:-1:-1;;;;;16309:18:0;;16291:15;16309:18;;;:9;:18;;;;;;;;:25;16362:9;:18;;;;;;;16345:699;16386:7;16382:1;:11;16345:699;;;16416:14;16432:15;16451:23;16463:7;16472:1;16451:11;:23::i;:::-;16415:59;;-1:-1:-1;16415:59:0;-1:-1:-1;16489:13:0;16505:15;16415:59;16517:2;16505:15;:11;:15;:::i;:::-;16489:31;-1:-1:-1;16539:9:0;;16535:498;;16569:14;16586:26;16606:5;16586:15;:6;16597:3;16586:15;:10;:15;:::i;:::-;:19;:26;:19;:26;:::i;:::-;16635:8;;16569:43;;-1:-1:-1;11974:35:0;;16635:37;;16569:43;;16635:25;;16648:11;16635:25;:12;:25;:::i;:::-;:29;:37;:29;:37;:::i;:::-;:54;16631:339;;;16714:14;16731:45;16750:25;16763:11;16750:8;;:12;;:25;;;;:::i;:::-;11974:35;;16731:45;:18;:45;:::i;:::-;16714:62;-1:-1:-1;16813:23:0;:11;16714:62;16813:23;:15;:23;:::i;:::-;16799:37;;16859:5;;;;;;;16631:339;16927:23;:11;16943:6;16927:23;:15;:23;:::i;:::-;16913:37;;16535:498;;;;17011:5;;;;;16535:498;-1:-1:-1;;;16395:3:0;;16345:699;;;;16052:999;;;;:::o;4407:131::-;-1:-1:-1;;;;;4506:15:0;;;4479:7;4506:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;4407:131::o;13609:383::-;10790:9;:7;:9::i;:::-;10782:54;;;;;-1:-1:-1;;;10782:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13702:6;;-1:-1:-1;;;;;13690:18:0;;;13702:6;;13690:18;;13682:27;;;;;;13728:21;13740:8;13728:11;:21::i;:::-;:26;13720:99;;;;-1:-1:-1;;;13720:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13830:33;13854:8;13830:23;:33::i;:::-;13894:5;13874:3;:17;13878:12;:10;:12::i;:::-;-1:-1:-1;;;;;13874:17:0;;;;;;;;;;;;;;;;;-1:-1:-1;13874:17:0;;;:25;;;;;-1:-1:-1;;13874:25:0;;;;;;13910:13;;;;;:3;:13;;;;;:20;;;;;13874:25;13910:20;;;;13941:43;;13914:8;;-1:-1:-1;13970:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;13960:23:0;-1:-1:-1;;;;;13960:23:0;;;;;;;;;;;;;13941:8;:43::i;:::-;;13609:383;:::o;2366:98::-;2446:10;2366:98;:::o;8625:327::-;-1:-1:-1;;;;;8718:21:0;;8710:68;;;;-1:-1:-1;;;8710:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8798:19:0;;8790:65;;;;-1:-1:-1;;;8790:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8864:15:0;;;;;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;:32;;;8912:31;;;;;;;;;;;;;;;;;8625:327;;;:::o;1248:150::-;1306:7;1339:1;1334;:6;;1326:15;;;;;;-1:-1:-1;1364:5:0;;;1248:150::o;808:303::-;866:7;965:1;961;:5;953:14;;;;;;978:9;994:1;990;:5;;;;;;;808:303;-1:-1:-1;;;;808:303:0:o;6106:234::-;6185:4;6202:26;6212:4;6218:2;6222:5;6202:9;:26::i;:::-;6240:69;6249:4;6255:12;:10;:12::i;:::-;-1:-1:-1;;;;;6269:14:0;;;;;;:8;:14;;;;;:39;;6302:5;;6269:14;6284:12;:10;:12::i;:::-;-1:-1:-1;;;;;6269:28:0;;;;;;;;;;;;-1:-1:-1;6269:28:0;;;:39;:32;:39;:::i;14000:701::-;14092:8;;11974:35;-1:-1:-1;14088:606:0;;;-1:-1:-1;;;;;14138:10:0;;;;;;:3;:10;;;;;;;;14134:299;;-1:-1:-1;;;;;14182:16:0;;14208:1;14182:16;;;:9;:16;;;;;:23;:27;14178:99;;-1:-1:-1;;;;;14241:16:0;;;;;;:9;:16;;;;;14234:23;;;:::i;:::-;-1:-1:-1;;;;;14299:16:0;;:9;:16;;;;;;;;;;;:21;14295:123;;-1:-1:-1;;;;;14344:16:0;;;;;;:9;:16;;;;;;;;14366:31;;;;;;;14375:16;;;;;;;14366:31;;14393:3;14366:31;;;;;;27:10:-1;;39:1;23:18;;;45:23;;14344:54:0;;;;;;;;;;;;;;;;;;;;;;;;14295:123;-1:-1:-1;;;;;14451:8:0;;;;;;:3;:8;;;;;;;;:17;;;:32;;-1:-1:-1;14472:11:0;;;14451:32;14447:115;;;-1:-1:-1;;;;;14504:14:0;;;;;;:9;:14;;;;;;;;14524:21;;;;;;;;;;;14541:3;14524:21;;;;;;27:10:-1;;39:1;23:18;;;45:23;;14504:42:0;;;;;;;;;;;;;;;;;;;;;;;;14447:115;-1:-1:-1;;;;;14580:8:0;;;;;;:3;:8;;;;;;;;:16;;:8;:16;:45;;;;-1:-1:-1;;;;;;14600:14:0;;14624:1;14600:14;;;:9;:14;;;;;:21;:25;;14580:45;14576:107;;;-1:-1:-1;;;;;14653:14:0;;;;;;:9;:14;;;;;14646:21;;;:::i;:::-;14000:701;;;:::o;1484:150::-;1542:7;1574:5;;;1598:6;;;;1590:15;;;;;;1625:1;1484:150;-1:-1:-1;;;1484:150:0:o;9284:308::-;-1:-1:-1;;;;;9360:21:0;;9352:67;;;;-1:-1:-1;;;9352:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9451:18:0;;:9;:18;;;;;;;;;;;:30;;9474:6;9451:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;9430:18:0;;:9;:18;;;;;;;;;;:51;9507:12;;:24;;9524:6;9507:24;:16;:24;:::i;:::-;9492:12;:39;9547:37;;;;;;;;9573:1;;-1:-1:-1;;;;;9547:37:0;;;;;;;;;;;;9284:308;;:::o;14709:1084::-;14776:8;;11974:35;-1:-1:-1;14776:26:0;;:48;;-1:-1:-1;;;;;;14806:10:0;;;;;;:3;:10;;;;;;;;:18;;:10;:18;14776:48;14772:87;;;14841:7;;14772:87;-1:-1:-1;;;;;14944:16:0;;14869:14;14944:16;;;:9;:16;;;;;;;;;14989:9;:16;;;;;:23;14869:14;;14944:16;14869:14;;14989:34;;14944:16;14989:34;:27;:34;:::i;:::-;14971:52;;15049:3;15039:7;:13;15034:369;;;15089:30;15108:5;15115:3;15089:18;:30::i;:::-;15069:50;-1:-1:-1;15069:50:0;-1:-1:-1;15034:369:0;;;15172:34;15191:5;15198:7;15172:18;:34::i;:::-;-1:-1:-1;;;;;15225:16:0;;15251:1;15225:16;;;:9;:16;;;;;:23;15152:54;;-1:-1:-1;15152:54:0;;-1:-1:-1;15225:27:0;15221:130;;-1:-1:-1;;;;;15280:16:0;;;;;;:9;:16;;;;;15273:23;;;:::i;:::-;-1:-1:-1;;;;;15315:16:0;;15334:1;15315:16;;;:9;:16;;;;;:20;15221:130;-1:-1:-1;;;;;15375:16:0;;:9;:16;;;;;;;;;;;;-1:-1:-1;15034:369:0;15427:1;15417:7;:11;:25;;;;;15441:1;15432:6;:10;15417:25;15413:373;;;15470:8;;:20;;15483:6;15470:20;:12;:20;:::i;:::-;15459:8;:31;15520:12;;:24;;15537:6;15520:24;:16;:24;:::i;:::-;15505:12;:39;-1:-1:-1;;;;;15578:16:0;;:9;:16;;;;;;;;;;;:28;;15599:6;15578:28;:20;:28;:::i;:::-;-1:-1:-1;;;;;15559:16:0;;:9;:16;;;;;;;;;;;:47;;;;15621:9;:16;;;;;15643:34;;;;;;;;15621:16;15643:34;15652:19;:7;15664:6;15652:19;:11;:19;:::i;:::-;15643:34;;15673:3;15643:34;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;15621:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;15698:35;;;;;;;;-1:-1:-1;;;;;15698:35:0;;;-1:-1:-1;15698:35:0;;;;;;;;15753:21;;;-1:-1:-1;;;;;15753:21:0;;;;;;;;;;;;;;;;;;;;;;;15413:373;14709:1084;;;;;:::o;4714:142::-;4775:4;4792:34;4802:12;:10;:12::i;:::-;4816:2;4820:5;4792:9;:34::i;241:433::-;299:7;543:6;539:47;;-1:-1:-1;573:1:0;566:8;;539:47;610:5;;;614:1;610;:5;:1;634:5;;;;;:10;626:19;;;;;11193:109;10790:9;:7;:9::i;:::-;10782:54;;;;;-1:-1:-1;;;10782:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:28;11285:8;11266:18;:28::i;8049:303::-;-1:-1:-1;;;;;8137:16:0;;8129:64;;;;-1:-1:-1;;;8129:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8223:15:0;;:9;:15;;;;;;;;;;;:26;;8243:5;8223:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8205:15:0;;;:9;:15;;;;;;;;;;;:44;;;;8277:13;;;;;;;:24;;8295:5;8277:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;8261:13:0;;;:9;:13;;;;;;;;;;;;:40;;;;8318:25;;;;;;;8261:13;;8318:25;;;;;;;;;;;;;8049:303;;;:::o;17059:1463::-;-1:-1:-1;;;;;17208:16:0;;17137:21;17208:16;;;:9;:16;;;;;;17137:21;;17208:16;17235:1221;17263:18;:5;17273:7;17263:18;:9;:18;:::i;:::-;17259:1;:22;17235:1221;;;17304:14;17320:15;17339:21;17351:5;17358:1;17339:11;:21::i;:::-;17303:57;;;;17379:6;17389:1;17379:11;17375:60;;;17411:8;;;;17375:60;17449:13;17465:15;:7;17477:2;17465:15;:11;:15;:::i;:::-;17449:31;-1:-1:-1;17499:9:0;;17495:950;;17529:14;17546:26;17566:5;17546:15;:6;17557:3;17546:15;:10;:15;:::i;:26::-;17595:8;;17529:43;;-1:-1:-1;11974:35:0;;17595:37;;17529:43;;17595:25;;17608:11;17595:25;:12;:25;:::i;:37::-;:54;17591:626;;;17674:14;17691:45;17710:25;17723:11;17710:8;;:12;;:25;;;;:::i;17691:45::-;17674:62;-1:-1:-1;17773:23:0;:11;17674:62;17773:23;:15;:23;:::i;:::-;-1:-1:-1;;;;;17826:16:0;;;;;;:9;:16;;;;;17759:37;;-1:-1:-1;17819:23:0;;17826:16;17819:23;:::i;:::-;-1:-1:-1;;;;;;;;17865:16:0;;17884:1;17865:16;;;:9;:16;;;;;;;;:20;;;17924:16;;;;;;;;-1:-1:-1;17963:35:0;;-1:-1:-1;;;;17963:35:0;17591:626;-1:-1:-1;;;;;18054:16:0;;;;;;:9;:16;;;;;:19;;18071:1;;18054:19;;;;;;;;;;;;;;;;;;18047:26;;;;;;18110:23;:11;18126:6;18110:23;:15;:23;:::i;:::-;18096:37;-1:-1:-1;18172:25:0;:13;18190:6;18172:25;:17;:25;:::i;:::-;18156:41;;17495:950;;;;-1:-1:-1;;;;;18265:16:0;;;;;;:9;:16;;;;;18258:23;;;:::i;:::-;-1:-1:-1;;;;;;;;18301:16:0;;18320:1;18301:16;;;:9;:16;;;;;;;;:20;;;18357:16;;;;;;;;-1:-1:-1;18393:35:0;;-1:-1:-1;;18393:35:0;17495:950;17235:1221;;;;17283:3;;17235:1221;;;-1:-1:-1;;;;;;18485:16:0;;;;;;:9;:16;;;;;;:29;;18506:7;18485:29;:20;:29;:::i;:::-;-1:-1:-1;;;;;18466:16:0;;;;;;:9;:16;;;;;:48;-1:-1:-1;17059:1463:0;;;;;;:::o;11408:229::-;-1:-1:-1;;;;;11482:22:0;;11474:73;;;;-1:-1:-1;;;11474:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11584:6;;11563:38;;-1:-1:-1;;;;;11563:38:0;;;;11584:6;;11563:38;;11584:6;;11563:38;11612:6;:17;;-1:-1:-1;;;;;;11612:17:0;-1:-1:-1;;;;;11612:17:0;;;;;;;;;;11408:229::o;11644:6883::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://5503b34f808382a1342ae225bc1179b302acff756e40ff0beac29be9df7fcb97
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.