ETH Price: $2,343.67 (-5.21%)

Token

West Texas Intermediate (WTI)
 

Overview

Max Total Supply

16,170,000 WTI

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.008 WTI

Value
$0.00
0x3367e1312c2170b603703c162418e4ad57dd029b
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WTIToken

Compiler Version
v0.5.14+commit.1f1aaa4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

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

Contract ABI

[{"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"}]

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
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.