Token TriumphX

 

Overview [ERC-20]

Price
$0.00 @ 0.000001 Eth (+10.97%)
Fully Diluted Market Cap
Max Total Supply:
9,999,743,039.14514319 TRIX

Holders:
3,323 (0.00%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

TriumphX aims to offer decentralised exchange for the trading of in-game items that exists as NFTs. The TRIX token will complement the TriumphX ecosystem by creating a sustainable token economy through game theory and the TriumphX blockchain.

Market

Volume (24H):$53,685.00
Market Capitalization:$0.00
Circulating Supply:0.00 TRIX
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TRIX

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-26
*/

/**
 *Submitted for verification at Etherscan.io on 2020-06-26
 */

pragma solidity >0.4.99 <0.6.0;

contract ERC20Basic {
    function totalSupply() public view returns (uint256);

    function balanceOf(address who) public view returns (uint256);

    function transfer(address to, uint256 value) public returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
        public
        view
        returns (uint256);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public returns (bool);

    function approve(address spender, uint256 value) public returns (bool);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeERC20 {
    function safeTransfer(
        ERC20Basic _token,
        address _to,
        uint256 _value
    ) internal {
        require(_token.transfer(_to, _value));
    }

    function safeTransferFrom(
        ERC20 _token,
        address _from,
        address _to,
        uint256 _value
    ) internal {
        require(_token.transferFrom(_from, _to, _value));
    }

    function safeApprove(
        ERC20 _token,
        address _spender,
        uint256 _value
    ) internal {
        require(_token.approve(_spender, _value));
    }
}

library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // Gas optimization: this is cheaper than asserting '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;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
     * @dev Integer division of two numbers, truncating the quotient.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
     * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
     * @dev Adds two numbers, throws on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    uint256 totalSupply_;

    /**
     * @dev Total number of tokens in existence
     */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    /**
     * @dev Transfer token for 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) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);

        emit Transfer(msg.sender, _to, _value);

        return true;
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param _owner The address to query the the balance of.
     * @return An uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {
    mapping(address => mapping(address => uint256)) internal allowed;

    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);

        emit Transfer(_from, _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) {
        allowed[msg.sender][_spender] = _value;

        emit Approval(msg.sender, _spender, _value);

        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address 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 Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed[_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
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseApproval(address _spender, uint256 _addedValue)
        public
        returns (bool)
    {
        allowed[msg.sender][_spender] = (
            allowed[msg.sender][_spender].add(_addedValue)
        );

        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed[_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
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseApproval(address _spender, uint256 _subtractedValue)
        public
        returns (bool)
    {
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }

        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

        return true;
    }
}

/**
 * @title MultiOwnable
 *
 * @dev TRIX의 MultiOwnable은 히든오너, 수퍼오너, 버너, 오너, 리클레이머를 설정한다. 권한을 여러명에게 부여할 수 있는 경우
 * 리스트에 그 값을 넣어 불특정 다수가 확인 할 수 있게 한다.
 *
 * TRIX的MultiOwnable可设置HIDDENOWNER,SUPEROWNER,BURNER,OWNER及RECLAIMER。
 * 其权限可同时赋予多人的情况,在列表中放入该值后可确认其非特定的多人名单。
 *
 * MulitOwnable of TRIX sets HIDDENOWNER, SUPEROWNER, BURNER, OWNER, and RECLAIMER.
 * If many can be authorized, the value is entered to the list so that it is accessible to unspecified many.
 *
 */
contract MultiOwnable {
    uint8 constant MAX_BURN = 3;
    uint8 constant MAX_OWNER = 15;
    address payable public hiddenOwner;
    address payable public superOwner;
    address payable public reclaimer;

    address[MAX_BURN] public chkBurnerList;
    address[MAX_OWNER] public chkOwnerList;

    mapping(address => bool) public burners;
    mapping(address => bool) public owners;

    event AddedBurner(address indexed newBurner);
    event AddedOwner(address indexed newOwner);
    event DeletedOwner(address indexed toDeleteOwner);
    event DeletedBurner(address indexed toDeleteBurner);
    event ChangedReclaimer(address indexed newReclaimer);
    event ChangedSuperOwner(address indexed newSuperOwner);
    event ChangedHiddenOwner(address indexed newHiddenOwner);

    constructor() public {
        hiddenOwner = msg.sender;
        superOwner = msg.sender;
        reclaimer = msg.sender;
        owners[msg.sender] = true;
        chkOwnerList[0] = msg.sender;
    }

    modifier onlySuperOwner() {
        require(superOwner == msg.sender);
        _;
    }
    modifier onlyReclaimer() {
        require(reclaimer == msg.sender);
        _;
    }
    modifier onlyHiddenOwner() {
        require(hiddenOwner == msg.sender);
        _;
    }
    modifier onlyOwner() {
        require(owners[msg.sender]);
        _;
    }
    modifier onlyBurner() {
        require(burners[msg.sender]);
        _;
    }

    function changeSuperOwnership(address payable newSuperOwner)
        public
        onlyHiddenOwner
        returns (bool)
    {
        require(newSuperOwner != address(0));
        superOwner = newSuperOwner;

        emit ChangedSuperOwner(superOwner);

        return true;
    }

    function changeHiddenOwnership(address payable newHiddenOwner)
        public
        onlyHiddenOwner
        returns (bool)
    {
        require(newHiddenOwner != address(0));
        hiddenOwner = newHiddenOwner;

        emit ChangedHiddenOwner(hiddenOwner);

        return true;
    }

    function changeReclaimer(address payable newReclaimer)
        public
        onlySuperOwner
        returns (bool)
    {
        require(newReclaimer != address(0));
        reclaimer = newReclaimer;

        emit ChangedReclaimer(reclaimer);

        return true;
    }

    function addBurner(address burner, uint8 num)
        public
        onlySuperOwner
        returns (bool)
    {
        require(num < MAX_BURN);
        require(burner != address(0));
        require(chkBurnerList[num] == address(0));
        require(burners[burner] == false);

        burners[burner] = true;
        chkBurnerList[num] = burner;

        emit AddedBurner(burner);

        return true;
    }

    function deleteBurner(address burner, uint8 num)
        public
        onlySuperOwner
        returns (bool)
    {
        require(num < MAX_BURN);
        require(burner != address(0));
        require(chkBurnerList[num] == burner);

        burners[burner] = false;

        chkBurnerList[num] = address(0);

        emit DeletedBurner(burner);

        return true;
    }

    function addOwner(address owner, uint8 num)
        public
        onlySuperOwner
        returns (bool)
    {
        require(num < MAX_OWNER);
        require(owner != address(0));
        require(chkOwnerList[num] == address(0));
        require(owners[owner] == false);

        owners[owner] = true;
        chkOwnerList[num] = owner;

        emit AddedOwner(owner);

        return true;
    }

    function deleteOwner(address owner, uint8 num)
        public
        onlySuperOwner
        returns (bool)
    {
        require(num < MAX_OWNER);
        require(owner != address(0));
        require(chkOwnerList[num] == owner);
        owners[owner] = false;
        chkOwnerList[num] = address(0);

        emit DeletedOwner(owner);

        return true;
    }
}

/**
 * @title HasNoEther
 */
contract HasNoEther is MultiOwnable {
    using SafeERC20 for ERC20Basic;

    event ReclaimToken(address _token);

    /**
     * @dev Constructor that rejects incoming Ether
     * The `payable` flag is added so we can access `msg.value` without compiler warning. If we
     * leave out payable, then Solidity will allow inheriting contracts to implement a payable
     * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
     * we could use assembly to access msg.value.
     */
    constructor() public payable {
        require(msg.value == 0);
    }

    /**
     * @dev Disallows direct send by settings a default function without the `payable` flag.
     */
    function() external {}

    function reclaimToken(ERC20Basic _token)
        external
        onlyReclaimer
        returns (bool)
    {
        uint256 balance = _token.balanceOf(address(this));

        _token.safeTransfer(superOwner, balance);

        emit ReclaimToken(address(_token));

        return true;
    }
}

contract Blacklist is MultiOwnable {
    mapping(address => bool) blacklisted;

    event Blacklisted(address indexed blacklist);
    event Whitelisted(address indexed whitelist);

    modifier whenPermitted(address node) {
        require(!blacklisted[node]);
        _;
    }

    function isPermitted(address node) public view returns (bool) {
        return !blacklisted[node];
    }

    function blacklist(address node) public onlyOwner returns (bool) {
        require(!blacklisted[node]);
        blacklisted[node] = true;
        emit Blacklisted(node);

        return blacklisted[node];
    }

    function unblacklist(address node) public onlySuperOwner returns (bool) {
        require(blacklisted[node]);
        blacklisted[node] = false;
        emit Whitelisted(node);

        return blacklisted[node];
    }
}

contract Burnlist is Blacklist {
    mapping(address => bool) public isburnlist;

    event Burnlisted(address indexed burnlist, bool signal);

    modifier isBurnlisted(address who) {
        require(isburnlist[who]);
        _;
    }

    function addBurnlist(address node) public onlyOwner returns (bool) {
        require(!isburnlist[node]);

        isburnlist[node] = true;

        emit Burnlisted(node, true);

        return isburnlist[node];
    }

    function delBurnlist(address node) public onlyOwner returns (bool) {
        require(isburnlist[node]);

        isburnlist[node] = false;

        emit Burnlisted(node, false);

        return isburnlist[node];
    }
}

contract PausableToken is StandardToken, HasNoEther, Burnlist {
    uint8 constant MAX_BLACKTRANSFER = 10;
    bool public paused = false;
    address[MAX_BLACKTRANSFER] public chkBlackTransfer;
    mapping(address => bool) public blackTransferAddrs;

    event Paused(address addr);
    event Unpaused(address addr);
    event AddBlackTransfer(address addr);
    event DelBlackTransfer(address addr);

    constructor() public {}

    modifier whenNotPaused() {
        require(!paused || owners[msg.sender]);
        _;
    }

    function addBlackTransfer(address blackTransfer, uint8 num)
        public
        onlySuperOwner
        returns (bool)
    {
        require(num < MAX_BLACKTRANSFER);
        require(blackTransfer != address(0));
        require(!blackTransferAddrs[blackTransfer]);
        require(chkBlackTransfer[num] == address(0));

        chkBlackTransfer[num] = blackTransfer;
        blackTransferAddrs[blackTransfer] = true;

        emit AddBlackTransfer(blackTransfer);

        return blackTransferAddrs[blackTransfer];
    }

    function delBlackTransfer(address blackTransfer, uint8 num)
        public
        onlySuperOwner
        returns (bool)
    {
        require(num < MAX_BLACKTRANSFER);
        require(blackTransfer != address(0));
        require(blackTransferAddrs[blackTransfer]);
        require(chkBlackTransfer[num] == blackTransfer);

        chkBlackTransfer[num] = address(0);
        blackTransferAddrs[blackTransfer] = false;

        emit DelBlackTransfer(blackTransfer);

        return blackTransferAddrs[blackTransfer];
    }

    function pause() public onlySuperOwner returns (bool) {
        require(!paused);

        paused = true;

        emit Paused(msg.sender);

        return paused;
    }

    function unpause() public onlySuperOwner returns (bool) {
        require(paused);

        paused = false;

        emit Unpaused(msg.sender);

        return paused;
    }

    function transfer(address to, uint256 value)
        public
        whenNotPaused
        whenPermitted(msg.sender)
        returns (bool)
    {
        if (blackTransferAddrs[msg.sender]) {
            if (blacklisted[to] == false) {
                blacklisted[to] = true;
                emit Blacklisted(to);
            }
        }

        return super.transfer(to, value);
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    )
        public
        whenNotPaused
        whenPermitted(from)
        whenPermitted(msg.sender)
        returns (bool)
    {
        require(!blackTransferAddrs[from]);

        return super.transferFrom(from, to, value);
    }
}

/**
 * @title TRIX
 *
 */
contract TRIX is PausableToken {
    event Burn(address indexed burner, uint256 value);
    event Mint(address indexed minter, uint256 value);

    string public constant name = "TriumphX";
    uint8 public constant decimals = 18;
    string public constant symbol = "TRIX";
    uint256 public constant INITIAL_SUPPLY = 1e10 * (10**uint256(decimals)); // 100억개

    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;

        emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
    }

    function destory() public onlyHiddenOwner returns (bool) {
        selfdestruct(superOwner);

        return true;
    }

    /**
     * @dev TRIX의 민트는 오직 히든오너만 실행 가능하며, 수퍼오너에게 귀속된다.
     * 추가로 발행하려는 토큰과 기존 totalSupply_의 합이 최초 발행된 토큰의 양(INITIAL_SUPPLY)보다 클 수 없다.
     *
     * TRIX的MINT只能由HIDDENOWNER进行执行,其所有权归SUPEROWNER所有。
     * 追加进行发行的数字货币与totalSupply_的和不可大于最初发行的数字货币(INITIAL_SUPPLY)数量。
     *
     * Only the Hiddenowner can mint TRIX, and the minted is reverted to SUPEROWNER.
     * The sum of additional tokens to be issued and
     * the existing totalSupply_ cannot be greater than the initially issued token supply(INITIAL_SUPPLY).
     */
    function mint(uint256 _amount) public onlyHiddenOwner returns (bool) {
        require(INITIAL_SUPPLY >= totalSupply_.add(_amount));

        totalSupply_ = totalSupply_.add(_amount);

        balances[superOwner] = balances[superOwner].add(_amount);

        emit Mint(superOwner, _amount);

        emit Transfer(address(0), superOwner, _amount);

        return true;
    }

    /**
     * @dev TRIX의 번은 오직 버너만 실행 가능하며, Owner가 등록할 수 있는 Burnlist에 등록된 계정만 토큰 번 할 수 있다.
     *
     * TRIX的BURN只能由BURNER进行执行,OWNER只有登记在Burnlist的账户才能对数字货币执行BURN。
     *
     * Only the BURNER can burn TRIX,
     * and only the tokens that can be burned are those on Burnlist account that Owner can register.
     */
    function burn(address _to, uint256 _value)
        public
        onlyBurner
        isBurnlisted(_to)
        returns (bool)
    {
        _burn(_to, _value);

        return true;
    }

    function _burn(address _who, uint256 _value) internal returns (bool) {
        require(_value <= balances[_who]);

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);

        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"AddBlackTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newBurner","type":"address"}],"name":"AddedBurner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"AddedOwner","type":"event"},{"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":"blacklist","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnlist","type":"address"},{"indexed":false,"internalType":"bool","name":"signal","type":"bool"}],"name":"Burnlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newHiddenOwner","type":"address"}],"name":"ChangedHiddenOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newReclaimer","type":"address"}],"name":"ChangedReclaimer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newSuperOwner","type":"address"}],"name":"ChangedSuperOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"DelBlackTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"toDeleteBurner","type":"address"}],"name":"DeletedBurner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"toDeleteOwner","type":"address"}],"name":"DeletedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"ReclaimToken","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"whitelist","type":"address"}],"name":"Whitelisted","type":"event"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"blackTransfer","type":"address"},{"internalType":"uint8","name":"num","type":"uint8"}],"name":"addBlackTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"burner","type":"address"},{"internalType":"uint8","name":"num","type":"uint8"}],"name":"addBurner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"node","type":"address"}],"name":"addBurnlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint8","name":"num","type":"uint8"}],"name":"addOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"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":"blackTransferAddrs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"node","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"burners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newHiddenOwner","type":"address"}],"name":"changeHiddenOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newReclaimer","type":"address"}],"name":"changeReclaimer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newSuperOwner","type":"address"}],"name":"changeSuperOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chkBlackTransfer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chkBurnerList","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chkOwnerList","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"blackTransfer","type":"address"},{"internalType":"uint8","name":"num","type":"uint8"}],"name":"delBlackTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"node","type":"address"}],"name":"delBurnlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"burner","type":"address"},{"internalType":"uint8","name":"num","type":"uint8"}],"name":"deleteBurner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint8","name":"num","type":"uint8"}],"name":"deleteOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hiddenOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"node","type":"address"}],"name":"isPermitted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isburnlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"owners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20Basic","name":"_token","type":"address"}],"name":"reclaimToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reclaimer","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"superOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"node","type":"address"}],"name":"unblacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052601c805460ff1916905534801561001a57600080fd5b5060038054336001600160a01b0319918216811790925560048054821683179055600580548216831790556000828152601960205260409020805460ff19166001179055600980549091169091179055341561007557600080fd5b6b204fce5e3e25026110000000600181905533600081815260208181526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3611fb2806100dd6000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80636bdebcc911610151578063b110a832116100c3578063df6dfbb911610087578063df6dfbb9146107ab578063ec270350146107c8578063f30dbd27146107f7578063f9f92be41461081d578063fbbdb68c14610843578063fe069fb11461084b57610269565b8063b110a832146106f4578063c5161a6014610723578063d73dd6231461072b578063db6bc0bc14610757578063dd62ed3e1461077d57610269565b8063883ba46611610115578063883ba4661461063457806395d89b411461065a57806398eeb3c0146106625780639dc29fac1461067f578063a0712d68146106ab578063a9059cbb146106c857610269565b80636bdebcc9146105d057806370a08231146105d857806375e3661e146105fe5780638456cb591461062457806387dcd2b61461062c57610269565b80632fe8ace3116101ea5780633fd8cc4e116101ae5780633fd8cc4e146104f25780634e19c112146105185780635c975abb146105475780636441d5311461054f578063661884631461057e57806369255678146105aa57610269565b80632fe8ace3146104785780632ff2e9dc1461049e578063313ce567146104a65780633b8157ef146104c45780633f4ba83a146104ea57610269565b806317ffc3201161023157806317ffc320146103a357806318160ddd146103c95780631b9cddcc146103e357806323b872dd1461041c5780632e01161a1461045257610269565b8063022914a71461026b57806303d41e0e146102a557806306fdde03146102cb578063095ea7b3146103485780630e5229b014610374575b005b6102916004803603602081101561028157600080fd5b50356001600160a01b031661087a565b604080519115158252519081900360200190f35b610291600480360360208110156102bb57600080fd5b50356001600160a01b031661088f565b6102d36108a4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561030d5781810151838201526020016102f5565b50505050905090810190601f16801561033a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102916004803603604081101561035e57600080fd5b506001600160a01b0381351690602001356108c8565b6102916004803603604081101561038a57600080fd5b5080356001600160a01b0316906020013560ff1661092e565b610291600480360360208110156103b957600080fd5b50356001600160a01b0316610a3d565b6103d1610b35565b60408051918252519081900360200190f35b610400600480360360208110156103f957600080fd5b5035610b3b565b604080516001600160a01b039092168252519081900360200190f35b6102916004803603606081101561043257600080fd5b506001600160a01b03813581169160208101359091169060400135610b58565b6102916004803603602081101561046857600080fd5b50356001600160a01b0316610c05565b6102916004803603602081101561048e57600080fd5b50356001600160a01b0316610c1a565b6103d1610c9c565b6104ae610cac565b6040805160ff9092168252519081900360200190f35b610291600480360360208110156104da57600080fd5b50356001600160a01b0316610cb1565b610291610d64565b6102916004803603602081101561050857600080fd5b50356001600160a01b0316610dd4565b6102916004803603604081101561052e57600080fd5b5080356001600160a01b0316906020013560ff16610df3565b610291610ee0565b6102916004803603604081101561056557600080fd5b5080356001600160a01b0316906020013560ff16610ee9565b6102916004803603604081101561059457600080fd5b506001600160a01b038135169060200135611014565b610291600480360360208110156105c057600080fd5b50356001600160a01b0316611104565b6102916111c0565b6103d1600480360360208110156105ee57600080fd5b50356001600160a01b03166111e8565b6102916004803603602081101561061457600080fd5b50356001600160a01b0316611203565b6102916112a7565b61040061131b565b6102916004803603602081101561064a57600080fd5b50356001600160a01b031661132a565b6102d36113ac565b6104006004803603602081101561067857600080fd5b50356113cc565b6102916004803603604081101561069557600080fd5b506001600160a01b0381351690602001356113d9565b610291600480360360208110156106c157600080fd5b5035611431565b610291600480360360408110156106de57600080fd5b506001600160a01b03813516906020013561154a565b6102916004803603604081101561070a57600080fd5b5080356001600160a01b0316906020013560ff16611628565b61040061174e565b6102916004803603604081101561074157600080fd5b506001600160a01b03813516906020013561175d565b6102916004803603602081101561076d57600080fd5b50356001600160a01b03166117f6565b6103d16004803603604081101561079357600080fd5b506001600160a01b038135811691602001351661180b565b610400600480360360208110156107c157600080fd5b5035611836565b610291600480360360408110156107de57600080fd5b5080356001600160a01b0316906020013560ff16611843565b6102916004803603602081101561080d57600080fd5b50356001600160a01b0316611952565b6102916004803603602081101561083357600080fd5b50356001600160a01b03166119d4565b610400611a7e565b6102916004803603604081101561086157600080fd5b5080356001600160a01b0316906020013560ff16611a8d565b60196020526000908152604090205460ff1681565b60186020526000908152604090205460ff1681565b604051806040016040528060088152602001670a8e4d2eadae0d0b60c31b81525081565b3360008181526002602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6004546000906001600160a01b0316331461094857600080fd5b600f60ff83161061095857600080fd5b6001600160a01b03831661096b57600080fd5b6000600960ff8416600f811061097d57fe5b01546001600160a01b03161461099257600080fd5b6001600160a01b03831660009081526019602052604090205460ff16156109b857600080fd5b6001600160a01b0383166000908152601960205260409020805460ff1916600117905582600960ff8416600f81106109ec57fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2690600090a250600192915050565b6005546000906001600160a01b03163314610a5757600080fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015610aa157600080fd5b505afa158015610ab5573d6000803e3d6000fd5b505050506040513d6020811015610acb57600080fd5b5051600454909150610af0906001600160a01b0385811691168363ffffffff611b7a16565b604080516001600160a01b038516815290517fe72256d5cb67d3bffde3117833ae3ddbd526538f54c86fe203f6072d38a10b279181900360200190a150600192915050565b60015490565b60068160038110610b4857fe5b01546001600160a01b0316905081565b601c5460009060ff161580610b7c57503360009081526019602052604090205460ff165b610b8557600080fd5b6001600160a01b0384166000908152601a6020526040902054849060ff1615610bad57600080fd5b336000818152601a602052604090205460ff1615610bca57600080fd5b6001600160a01b03861660009081526027602052604090205460ff1615610bf057600080fd5b610bfb868686611c14565b9695505050505050565b601b6020526000908152604090205460ff1681565b6003546000906001600160a01b03163314610c3457600080fd5b6001600160a01b038216610c4757600080fd5b600480546001600160a01b0319166001600160a01b0384811691909117918290556040519116907f94b17f1a4844062cbed00809347b0f8149fc88c5a3ea720c7aed42c559eed46d90600090a2506001919050565b6b204fce5e3e2502611000000081565b601281565b3360009081526019602052604081205460ff16610ccd57600080fd5b6001600160a01b0382166000908152601b602052604090205460ff16610cf257600080fd5b6001600160a01b0382166000818152601b60209081526040808320805460ff191690558051928352517fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c9281900390910190a2506001600160a01b03166000908152601b602052604090205460ff1690565b6004546000906001600160a01b03163314610d7e57600080fd5b601c5460ff16610d8d57600080fd5b601c805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a150601c5460ff1690565b6001600160a01b03166000908152601a602052604090205460ff161590565b6004546000906001600160a01b03163314610e0d57600080fd5b600f60ff831610610e1d57600080fd5b6001600160a01b038316610e3057600080fd5b826001600160a01b031660098360ff16600f8110610e4a57fe5b01546001600160a01b031614610e5f57600080fd5b6001600160a01b0383166000908152601960205260408120805460ff19169055600960ff8416600f8110610e8f57fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f1e64d9a491033a9731fa82493f0ab60e9f74294eca27edd93629f1fbaa15d28790600090a250600192915050565b601c5460ff1681565b6004546000906001600160a01b03163314610f0357600080fd5b600a60ff831610610f1357600080fd5b6001600160a01b038316610f2657600080fd5b6001600160a01b03831660009081526027602052604090205460ff16610f4b57600080fd5b826001600160a01b0316601d8360ff16600a8110610f6557fe5b01546001600160a01b031614610f7a57600080fd5b6000601d8360ff16600a8110610f8c57fe5b0180546001600160a01b0319166001600160a01b039283161790558316600081815260276020908152604091829020805460ff19169055815192835290517fdc31025aeb127eb33bf871db8faaee0ae2c895348bce81b3bd4b495c3d6ccb2e9281900390910190a150506001600160a01b031660009081526027602052604090205460ff1690565b3360009081526002602090815260408083206001600160a01b038616845290915281205480831115611069573360009081526002602090815260408083206001600160a01b038816845290915281205561109e565b611079818463ffffffff611d7716565b3360009081526002602090815260408083206001600160a01b03891684529091529020555b3360008181526002602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b3360009081526019602052604081205460ff1661112057600080fd5b6001600160a01b0382166000908152601b602052604090205460ff161561114657600080fd5b6001600160a01b0382166000818152601b6020908152604091829020805460ff19166001908117909155825190815291517fb24e6647db2742a3439d0a374e892f89a5a8f4619d2f5c5ed911d39a2516a47c9281900390910190a2506001600160a01b03166000908152601b602052604090205460ff1690565b6003546000906001600160a01b031633146111da57600080fd5b6004546001600160a01b0316ff5b6001600160a01b031660009081526020819052604090205490565b6004546000906001600160a01b0316331461121d57600080fd5b6001600160a01b0382166000908152601a602052604090205460ff1661124257600080fd5b6001600160a01b0382166000818152601a6020526040808220805460ff19169055517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a2506001600160a01b03166000908152601a602052604090205460ff1690565b6004546000906001600160a01b031633146112c157600080fd5b601c5460ff16156112d157600080fd5b601c805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a150601c5460ff1690565b6004546001600160a01b031681565b6003546000906001600160a01b0316331461134457600080fd5b6001600160a01b03821661135757600080fd5b600380546001600160a01b0319166001600160a01b0384811691909117918290556040519116907fed12844517c22c2de717b33333c74477d9e6a0d043db15e209949bc283f2dd5990600090a2506001919050565b604051806040016040528060048152602001630a8a492b60e31b81525081565b601d81600a8110610b4857fe5b3360009081526018602052604081205460ff166113f557600080fd5b6001600160a01b0383166000908152601b6020526040902054839060ff1661141c57600080fd5b6114268484611d89565b506001949350505050565b6003546000906001600160a01b0316331461144b57600080fd5b60015461145e908363ffffffff611e7d16565b6b204fce5e3e25026110000000101561147657600080fd5b600154611489908363ffffffff611e7d16565b6001556004546001600160a01b03166000908152602081905260409020546114b7908363ffffffff611e7d16565b600480546001600160a01b0390811660009081526020818152604091829020949094559154825186815292519116927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885928290030190a26004546040805184815290516001600160a01b0390921691600091600080516020611f5e833981519152919081900360200190a3506001919050565b601c5460009060ff16158061156e57503360009081526019602052604090205460ff165b61157757600080fd5b336000818152601a602052604090205460ff161561159457600080fd5b3360009081526027602052604090205460ff1615611616576001600160a01b0384166000908152601a602052604090205460ff16611616576001600160a01b0384166000818152601a6020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a25b6116208484611e90565b949350505050565b6004546000906001600160a01b0316331461164257600080fd5b600a60ff83161061165257600080fd5b6001600160a01b03831661166557600080fd5b6001600160a01b03831660009081526027602052604090205460ff161561168b57600080fd5b6000601d60ff8416600a811061169d57fe5b01546001600160a01b0316146116b257600080fd5b82601d8360ff16600a81106116c357fe5b0180546001600160a01b0319166001600160a01b039283161790558316600081815260276020908152604091829020805460ff19166001179055815192835290517f7c5b7e3450d8dd1797aa6ce60d65fb3567e95a2d5efee949cfb4d7d3fa7e116f9281900390910190a150506001600160a01b031660009081526027602052604090205460ff1690565b6005546001600160a01b031681565b3360009081526002602090815260408083206001600160a01b0386168452909152812054611791908363ffffffff611e7d16565b3360008181526002602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60276020526000908152604090205460ff1681565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600981600f8110610b4857fe5b6004546000906001600160a01b0316331461185d57600080fd5b600360ff83161061186d57600080fd5b6001600160a01b03831661188057600080fd5b6000600660ff84166003811061189257fe5b01546001600160a01b0316146118a757600080fd5b6001600160a01b03831660009081526018602052604090205460ff16156118cd57600080fd5b6001600160a01b0383166000908152601860205260409020805460ff1916600117905582600660ff84166003811061190157fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907fb2bea1aacb52292e22554458b37393c5c9afbdc4bb5edddf26805d0ad791005a90600090a250600192915050565b6004546000906001600160a01b0316331461196c57600080fd5b6001600160a01b03821661197f57600080fd5b600580546001600160a01b0319166001600160a01b0384811691909117918290556040519116907f746e4dbb4fcada0af54a5df33c0f46859c5ae98432a8e0b81213037872227a2d90600090a2506001919050565b3360009081526019602052604081205460ff166119f057600080fd5b6001600160a01b0382166000908152601a602052604090205460ff1615611a1657600080fd5b6001600160a01b0382166000818152601a6020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a2506001600160a01b03166000908152601a602052604090205460ff1690565b6003546001600160a01b031681565b6004546000906001600160a01b03163314611aa757600080fd5b600360ff831610611ab757600080fd5b6001600160a01b038316611aca57600080fd5b826001600160a01b031660068360ff1660038110611ae457fe5b01546001600160a01b031614611af957600080fd5b6001600160a01b0383166000908152601860205260408120805460ff19169055600660ff841660038110611b2957fe5b0180546001600160a01b0319166001600160a01b03928316179055604051908416907f560f25f18d7de8bf147a02a300cdcfd8c47e2ca258b2ead7d9e331f29ee488d990600090a250600192915050565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050506040513d6020811015611c0457600080fd5b5051611c0f57600080fd5b505050565b60006001600160a01b038316611c2957600080fd5b6001600160a01b038416600090815260208190526040902054821115611c4e57600080fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115611c7e57600080fd5b6001600160a01b038416600090815260208190526040902054611ca7908363ffffffff611d7716565b6001600160a01b038086166000908152602081905260408082209390935590851681522054611cdc908363ffffffff611e7d16565b6001600160a01b03808516600090815260208181526040808320949094559187168152600282528281203382529091522054611d1e908363ffffffff611d7716565b6001600160a01b0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611f5e833981519152929181900390910190a35060019392505050565b600082821115611d8357fe5b50900390565b6001600160a01b038216600090815260208190526040812054821115611dae57600080fd5b6001600160a01b038316600090815260208190526040902054611dd7908363ffffffff611d7716565b6001600160a01b038416600090815260208190526040902055600154611e03908363ffffffff611d7716565b6001556040805183815290516001600160a01b038516917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a26040805183815290516000916001600160a01b03861691600080516020611f5e8339815191529181900360200190a350600192915050565b81810182811015611e8a57fe5b92915050565b60006001600160a01b038316611ea557600080fd5b33600090815260208190526040902054821115611ec157600080fd5b33600090815260208190526040902054611ee1908363ffffffff611d7716565b33600090815260208190526040808220929092556001600160a01b03851681522054611f13908363ffffffff611e7d16565b6001600160a01b03841660008181526020818152604091829020939093558051858152905191923392600080516020611f5e8339815191529281900390910190a35060019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820a6eefcc1d64602f99dba641d7988c57c75134c8c1cb7b6ad909b6f1f283f1ff764736f6c63430005110032

Deployed ByteCode Sourcemap

18812:2842:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18812:2842:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9663:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9663:38:0;-1:-1:-1;;;;;9663:38:0;;:::i;:::-;;;;;;;;;;;;;;;;;;9617:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9617:39:0;-1:-1:-1;;;;;9617:39:0;;:::i;18964:40::-;;;:::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;18964:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6094:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6094:210:0;;;;;;;;:::i;12520:416::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12520:416:0;;-1:-1:-1;;;;;12520:416:0;;;;;;;;:::i;14125:303::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14125:303:0;-1:-1:-1;;;;;14125:303:0;;:::i;3280:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;9525:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9525:38:0;;:::i;:::-;;;;-1:-1:-1;;;;;9525:38:0;;;;;;;;;;;;;;18438:337;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18438:337:0;;;;;;;;;;;;;;;;;:::i;15335:42::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15335:42:0;-1:-1:-1;;;;;15335:42:0;;:::i;10785:294::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10785:294:0;-1:-1:-1;;;;;10785:294:0;;:::i;19098:71::-;;;:::i;19011:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15780:225;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15780:225:0;-1:-1:-1;;;;;15780:225:0;;:::i;17842:181::-;;;:::i;14729:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14729:106:0;-1:-1:-1;;;;;14729:106:0;;:::i;12944:378::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12944:378:0;;-1:-1:-1;;;;;12944:378:0;;;;;;;;:::i;16125:26::-;;;:::i;17110:539::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17110:539:0;;-1:-1:-1;;;;;17110:539:0;;;;;;;;:::i;8118:483::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8118:483:0;;;;;;;;:::i;15548:224::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15548:224:0;-1:-1:-1;;;;;15548:224:0;;:::i;19382:124::-;;;:::i;4130:107::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4130:107:0;-1:-1:-1;;;;;4130:107:0;;:::i;15067:223::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15067:223:0;-1:-1:-1;;;;;15067:223:0;;:::i;17657:177::-;;;:::i;9444:33::-;;;:::i;11087:301::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11087:301:0;-1:-1:-1;;;;;11087:301:0;;:::i;19053:38::-;;;:::i;16158:50::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16158:50:0;;:::i;21110:196::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21110:196:0;;;;;;;;:::i;20263:388::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20263:388:0;;:::i;18031:399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18031:399:0;;;;;;;;:::i;16563:539::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16563:539:0;;-1:-1:-1;;;;;16563:539:0;;;;;;;;:::i;9484:32::-;;;:::i;7294:336::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7294:336:0;;;;;;;;:::i;16215:50::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16215:50:0;-1:-1:-1;;;;;16215:50:0;;:::i;6645:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6645:166:0;;;;;;;;;;:::i;9570:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9570:38:0;;:::i;11686:427::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11686:427:0;;-1:-1:-1;;;;;11686:427:0;;;;;;;;:::i;11396:282::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11396:282:0;-1:-1:-1;;;;;11396:282:0;;:::i;14843:216::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14843:216:0;-1:-1:-1;;;;;14843:216:0;;:::i;9403:34::-;;;:::i;12121:391::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12121:391:0;;-1:-1:-1;;;;;12121:391:0;;;;;;;;:::i;9663:38::-;;;;;;;;;;;;;;;:::o;9617:39::-;;;;;;;;;;;;;;;:::o;18964:40::-;;;;;;;;;;;;;;-1:-1:-1;;;18964:40:0;;;;:::o;6094:210::-;6186:10;6161:4;6178:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;6178:29:0;;;;;;;;;;;:38;;;6234;;;;;;;6161:4;;6178:29;;6186:10;;6234:38;;;;;;;;-1:-1:-1;6292:4:0;6094:210;;;;:::o;12520:416::-;10368:10;;12622:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;9394:2;12652:15;;;;12644:24;;;;;;-1:-1:-1;;;;;12687:19:0;;12679:28;;;;;;12755:1;12726:12;:17;;;;;;;;;;;;-1:-1:-1;;;;;12726:17:0;:31;12718:40;;;;;;-1:-1:-1;;;;;12777:13:0;;;;;;:6;:13;;;;;;;;:22;12769:31;;;;;;-1:-1:-1;;;;;12813:13:0;;;;;;:6;:13;;;;;:20;;-1:-1:-1;;12813:20:0;12829:4;12813:20;;;12820:5;12844:12;12813:20;12844:17;;;;;;;;;;:25;;-1:-1:-1;;;;;;12844:25:0;-1:-1:-1;;;;;12844:25:0;;;;;;12887:17;;;;;;;;-1:-1:-1;;12887:17:0;-1:-1:-1;12924:4:0;12520:416;;;;:::o;14125:303::-;10463:9;;14225:4;;-1:-1:-1;;;;;10463:9:0;10476:10;10463:23;10455:32;;;;;;14265:31;;;-1:-1:-1;;;14265:31:0;;14290:4;14265:31;;;;;;14247:15;;-1:-1:-1;;;;;14265:16:0;;;;;:31;;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;14265:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14265:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14265:31:0;14329:10;;14265:31;;-1:-1:-1;14309:40:0;;-1:-1:-1;;;;;14309:19:0;;;;14329:10;14265:31;14309:40;:19;:40;:::i;:::-;14367:29;;;-1:-1:-1;;;;;14367:29:0;;;;;;;;;;;;;;;-1:-1:-1;14416:4:0;;14125:303;-1:-1:-1;;14125:303:0:o;3280:91::-;3351:12;;3280:91;:::o;9525:38::-;;;;;;;;;;;;-1:-1:-1;;;;;9525:38:0;;-1:-1:-1;9525:38:0;:::o;18438:337::-;16506:6;;18656:4;;16506:6;;16505:7;;:29;;-1:-1:-1;16523:10:0;16516:18;;;;:6;:18;;;;;;;;16505:29;16497:38;;;;;;-1:-1:-1;;;;;14683:17:0;;;;;;:11;:17;;;;;;18597:4;;14683:17;;14682:18;14674:27;;;;;;18626:10;14683:17;;;;:11;:17;;;;;;;;14682:18;14674:27;;;;;;-1:-1:-1;;;;;18687:24:0;;;;;;:18;:24;;;;;;;;18686:25;18678:34;;;;;;18732:35;18751:4;18757:2;18761:5;18732:18;:35::i;:::-;18725:42;18438:337;-1:-1:-1;;;;;;18438:337:0:o;15335:42::-;;;;;;;;;;;;;;;:::o;10785:294::-;10559:11;;10905:4;;-1:-1:-1;;;;;10559:11:0;10574:10;10559:25;10551:34;;;;;;-1:-1:-1;;;;;10935:27:0;;10927:36;;;;;;10974:10;:26;;-1:-1:-1;;;;;;10974:26:0;-1:-1:-1;;;;;10974:26:0;;;;;;;;;;;11018:29;;11036:10;;;11018:29;;-1:-1:-1;;11018:29:0;-1:-1:-1;11067:4:0;10785:294;;;:::o;19098:71::-;19139:30;19098:71;:::o;19011:35::-;19044:2;19011:35;:::o;15780:225::-;10658:10;15841:4;10651:18;;;:6;:18;;;;;;;;10643:27;;;;;;-1:-1:-1;;;;;15866:16:0;;;;;;:10;:16;;;;;;;;15858:25;;;;;;-1:-1:-1;;;;;15896:16:0;;15915:5;15896:16;;;:10;:16;;;;;;;;:24;;-1:-1:-1;;15896:24:0;;;15938:23;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15981:16:0;;;;;:10;:16;;;;;;;;;15780:225::o;17842:181::-;10368:10;;17892:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;17917:6;;;;17909:15;;;;;;17937:6;:14;;-1:-1:-1;;17937:14:0;;;17969:20;;;17978:10;17969:20;;;;;;;;;;;;;-1:-1:-1;18009:6:0;;;;17842:181;:::o;14729:106::-;-1:-1:-1;;;;;14810:17:0;14785:4;14810:17;;;:11;:17;;;;;;;;14809:18;;14729:106::o;12944:378::-;10368:10;;13049:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;9394:2;13079:15;;;;13071:24;;;;;;-1:-1:-1;;;;;13114:19:0;;13106:28;;;;;;13174:5;-1:-1:-1;;;;;13153:26:0;:12;13166:3;13153:17;;;;;;;;;;;-1:-1:-1;;;;;13153:17:0;:26;13145:35;;;;;;-1:-1:-1;;;;;13191:13:0;;13207:5;13191:13;;;:6;:13;;;;;:21;;-1:-1:-1;;13191:21:0;;;13223:12;13191:21;13223:17;;;;;;;;;;:30;;-1:-1:-1;;;;;;13223:30:0;-1:-1:-1;;;;;13223:30:0;;;;;;13271:19;;;;;;;;-1:-1:-1;;13271:19:0;-1:-1:-1;13310:4:0;12944:378;;;;:::o;16125:26::-;;;;;;:::o;17110:539::-;10368:10;;17228:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;16116:2;17258:23;;;;17250:32;;;;;;-1:-1:-1;;;;;17301:27:0;;17293:36;;;;;;-1:-1:-1;;;;;17348:33:0;;;;;;:18;:33;;;;;;;;17340:42;;;;;;17426:13;-1:-1:-1;;;;;17401:38:0;:16;17418:3;17401:21;;;;;;;;;;;-1:-1:-1;;;;;17401:21:0;:38;17393:47;;;;;;17485:1;17453:16;17470:3;17453:21;;;;;;;;;;:34;;-1:-1:-1;;;;;;17453:34:0;-1:-1:-1;;;;;17453:34:0;;;;;;17498:33;;-1:-1:-1;17498:33:0;;;:18;:33;;;;;;;;;:41;;-1:-1:-1;;17498:41:0;;;17557:31;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;17608:33:0;;;;;:18;:33;;;;;;;;;17110:539::o;8118:483::-;8271:10;8222:4;8263:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8263:29:0;;;;;;;;;;8307:27;;;8303:188;;;8359:10;8383:1;8351:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8351:29:0;;;;;;;;;:33;8303:188;;;8449:30;:8;8462:16;8449:30;:12;:30;:::i;:::-;8425:10;8417:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8417:29:0;;;;;;;;;:62;8303:188;8517:10;8539:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8508:61:0;;8539:29;;;;;;;;;;;8508:61;;;;;;;;;8517:10;8508:61;;;;;;;;;;;-1:-1:-1;8589:4:0;;8118:483;-1:-1:-1;;;8118:483:0:o;15548:224::-;10658:10;15609:4;10651:18;;;:6;:18;;;;;;;;10643:27;;;;;;-1:-1:-1;;;;;15635:16:0;;;;;;:10;:16;;;;;;;;15634:17;15626:26;;;;;;-1:-1:-1;;;;;15665:16:0;;;;;;:10;:16;;;;;;;;;:23;;-1:-1:-1;;15665:23:0;15684:4;15665:23;;;;;;15706:22;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15748:16:0;;;;;:10;:16;;;;;;;;;15548:224::o;19382:124::-;10559:11;;19433:4;;-1:-1:-1;;;;;10559:11:0;10574:10;10559:25;10551:34;;;;;;19463:10;;-1:-1:-1;;;;;19463:10:0;19450:24;4130:107;-1:-1:-1;;;;;4213:16:0;4186:7;4213:16;;;;;;;;;;;;4130:107::o;15067:223::-;10368:10;;15133:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;-1:-1:-1;;;;;15158:17:0;;;;;;:11;:17;;;;;;;;15150:26;;;;;;-1:-1:-1;;;;;15187:17:0;;15207:5;15187:17;;;:11;:17;;;;;;:25;;-1:-1:-1;;15187:25:0;;;15228:17;;;15207:5;15228:17;-1:-1:-1;;;;;;15265:17:0;;;;;:11;:17;;;;;;;;;15067:223::o;17657:177::-;10368:10;;17705:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;17731:6;;;;17730:7;17722:16;;;;;;17751:6;:13;;-1:-1:-1;;17751:13:0;17760:4;17751:13;;;17782:18;;;17789:10;17782:18;;;;;;;;;;;;;-1:-1:-1;17820:6:0;;;;17657:177;:::o;9444:33::-;;;-1:-1:-1;;;;;9444:33:0;;:::o;11087:301::-;10559:11;;11209:4;;-1:-1:-1;;;;;10559:11:0;10574:10;10559:25;10551:34;;;;;;-1:-1:-1;;;;;11239:28:0;;11231:37;;;;;;11279:11;:28;;-1:-1:-1;;;;;;11279:28:0;-1:-1:-1;;;;;11279:28:0;;;;;;;;;;;11325:31;;11344:11;;;11325:31;;-1:-1:-1;;11325:31:0;-1:-1:-1;11376:4:0;11087:301;;;:::o;19053:38::-;;;;;;;;;;;;;;-1:-1:-1;;;19053:38:0;;;;:::o;16158:50::-;;;;;;;;;21110:196;10745:10;21234:4;10737:19;;;:7;:19;;;;;;;;10729:28;;;;;;-1:-1:-1;;;;;15504:15:0;;;;;;:10;:15;;;;;;21211:3;;15504:15;;15496:24;;;;;;21256:18;21262:3;21267:6;21256:5;:18::i;:::-;-1:-1:-1;21294:4:0;;21110:196;-1:-1:-1;;;;21110:196:0:o;20263:388::-;10559:11;;20326:4;;-1:-1:-1;;;;;10559:11:0;10574:10;10559:25;10551:34;;;;;;20369:12;;:25;;20386:7;20369:25;:16;:25;:::i;:::-;19139:30;20351:43;;20343:52;;;;;;20423:12;;:25;;20440:7;20423:25;:16;:25;:::i;:::-;20408:12;:40;20493:10;;-1:-1:-1;;;;;20493:10:0;20484:8;:20;;;;;;;;;;;:33;;20509:7;20484:33;:24;:33;:::i;:::-;20470:10;;;-1:-1:-1;;;;;20470:10:0;;;20461:8;:20;;;;;;;;;;;;:56;;;;20540:10;;20535:25;;;;;;;20540:10;;;20535:25;;;;;;;;20599:10;;20578:41;;;;;;;;-1:-1:-1;;;;;20599:10:0;;;;;;-1:-1:-1;;;;;;;;;;;20578:41:0;;;;;;;;;-1:-1:-1;20639:4:0;20263:388;;;:::o;18031:399::-;16506:6;;18168:4;;16506:6;;16505:7;;:29;;-1:-1:-1;16523:10:0;16516:18;;;;:6;:18;;;;;;;;16505:29;16497:38;;;;;;18138:10;14683:17;;;;:11;:17;;;;;;;;14682:18;14674:27;;;;;;18213:10;18194:30;;;;:18;:30;;;;;;;;18190:188;;;-1:-1:-1;;;;;18245:15:0;;;;;;:11;:15;;;;;;;;18241:126;;-1:-1:-1;;;;;18290:15:0;;;;;;:11;:15;;;;;;:22;;-1:-1:-1;;18290:22:0;18308:4;18290:22;;;18336:15;;;18290;18336;18241:126;18397:25;18412:2;18416:5;18397:14;:25::i;:::-;18390:32;18031:399;-1:-1:-1;;;;18031:399:0:o;16563:539::-;10368:10;;16681:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;16116:2;16711:23;;;;16703:32;;;;;;-1:-1:-1;;;;;16754:27:0;;16746:36;;;;;;-1:-1:-1;;;;;16802:33:0;;;;;;:18;:33;;;;;;;;16801:34;16793:43;;;;;;16888:1;16855:16;:21;;;;;;;;;;;;-1:-1:-1;;;;;16855:21:0;:35;16847:44;;;;;;16928:13;16904:16;16921:3;16904:21;;;;;;;;;;:37;;-1:-1:-1;;;;;;16904:37:0;-1:-1:-1;;;;;16904:37:0;;;;;;16952:33;;-1:-1:-1;16952:33:0;;;:18;:33;;;;;;;;;:40;;-1:-1:-1;;16952:40:0;-1:-1:-1;16952:40:0;;;17010:31;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;17061:33:0;;;;;:18;:33;;;;;;;;;16563:539::o;9484:32::-;;;-1:-1:-1;;;;;9484:32:0;;:::o;7294:336::-;7470:10;7393:4;7462:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7462:29:0;;;;;;;;;;:46;;7496:11;7462:46;:33;:46;:::i;:::-;7423:10;7415:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7415:29:0;;;;;;;;;;;;:104;;;7537:61;;;;;;7415:29;;7537:61;;;;;;;;;;;-1:-1:-1;7618:4:0;7294:336;;;;:::o;16215:50::-;;;;;;;;;;;;;;;:::o;6645:166::-;-1:-1:-1;;;;;6778:15:0;;;6746:7;6778:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;6645:166::o;9570:38::-;;;;;;;;;11686:427;10368:10;;11790:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;9359:1;11820:14;;;;11812:23;;;;;;-1:-1:-1;;;;;11854:20:0;;11846:29;;;;;;11924:1;11894:13;:18;;;;;;;;;;;;-1:-1:-1;;;;;11894:18:0;:32;11886:41;;;;;;-1:-1:-1;;;;;11946:15:0;;;;;;:7;:15;;;;;;;;:24;11938:33;;;;;;-1:-1:-1;;;;;11984:15:0;;;;;;:7;:15;;;;;:22;;-1:-1:-1;;11984:22:0;12002:4;11984:22;;;11992:6;12017:13;11984:22;12017:18;;;;;;;;;;:27;;-1:-1:-1;;;;;;12017:27:0;-1:-1:-1;;;;;12017:27:0;;;;;;12062:19;;;;;;;;-1:-1:-1;;12062:19:0;-1:-1:-1;12101:4:0;11686:427;;;;:::o;11396:282::-;10368:10;;11509:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;-1:-1:-1;;;;;11539:26:0;;11531:35;;;;;;11577:9;:24;;-1:-1:-1;;;;;;11577:24:0;-1:-1:-1;;;;;11577:24:0;;;;;;;;;;;11619:27;;11636:9;;;11619:27;;-1:-1:-1;;11619:27:0;-1:-1:-1;11666:4:0;11396:282;;;:::o;14843:216::-;10658:10;14902:4;10651:18;;;:6;:18;;;;;;;;10643:27;;;;;;-1:-1:-1;;;;;14928:17:0;;;;;;:11;:17;;;;;;;;14927:18;14919:27;;;;;;-1:-1:-1;;;;;14957:17:0;;;;;;:11;:17;;;;;;:24;;-1:-1:-1;;14957:24:0;14977:4;14957:24;;;14997:17;;;14957;14997;-1:-1:-1;;;;;;15034:17:0;;;;;:11;:17;;;;;;;;;14843:216::o;9403:34::-;;;-1:-1:-1;;;;;9403:34:0;;:::o;12121:391::-;10368:10;;12228:4;;-1:-1:-1;;;;;10368:10:0;10382;10368:24;10360:33;;;;;;9359:1;12258:14;;;;12250:23;;;;;;-1:-1:-1;;;;;12292:20:0;;12284:29;;;;;;12354:6;-1:-1:-1;;;;;12332:28:0;:13;12346:3;12332:18;;;;;;;;;;;-1:-1:-1;;;;;12332:18:0;:28;12324:37;;;;;;-1:-1:-1;;;;;12374:15:0;;12392:5;12374:15;;;:7;:15;;;;;:23;;-1:-1:-1;;12374:23:0;;;12410:13;12374:23;12410:18;;;;;;;;;;:31;;-1:-1:-1;;;;;;12410:31:0;-1:-1:-1;;;;;12410:31:0;;;;;;12459:21;;;;;;;;-1:-1:-1;;12459:21:0;-1:-1:-1;12500:4:0;12121:391;;;;:::o;1014:169::-;1146:6;-1:-1:-1;;;;;1146:15:0;;1162:3;1167:6;1146:28;;;;;;;;;;;;;-1:-1:-1;;;;;1146:28:0;-1:-1:-1;;;;;1146:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1146:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1146:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1146:28:0;1138:37;;;;;;1014:169;;;:::o;4921:524::-;5037:4;-1:-1:-1;;;;;5062:17:0;;5054:26;;;;;;-1:-1:-1;;;;;5109:15:0;;:8;:15;;;;;;;;;;;5099:25;;;5091:34;;;;;;-1:-1:-1;;;;;5154:14:0;;;;;;:7;:14;;;;;;;;5169:10;5154:26;;;;;;;;5144:36;;;5136:45;;;;;;-1:-1:-1;;;;;5210:15:0;;:8;:15;;;;;;;;;;;:27;;5230:6;5210:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;5192:15:0;;;:8;:15;;;;;;;;;;;:45;;;;5264:13;;;;;;;:25;;5282:6;5264:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;5248:13:0;;;:8;:13;;;;;;;;;;;:41;;;;5329:14;;;;;:7;:14;;;;;5344:10;5329:26;;;;;;;:38;;5360:6;5329:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;5300:14:0;;;;;;;:7;:14;;;;;;;;5315:10;5300:26;;;;;;;;:67;;;;5385:28;;;;;;;;;;;5300:14;;-1:-1:-1;;;;;;;;;;;5385:28:0;;;;;;;;;;-1:-1:-1;5433:4:0;4921:524;;;;;:::o;2621:123::-;2679:7;2711:1;2706;:6;;2699:14;;;;-1:-1:-1;2731:5:0;;;2621:123::o;21314:337::-;-1:-1:-1;;;;;21412:14:0;;21377:4;21412:14;;;;;;;;;;;21402:24;;;21394:33;;;;;;-1:-1:-1;;;;;21457:14:0;;:8;:14;;;;;;;;;;;:26;;21476:6;21457:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;21440:14:0;;:8;:14;;;;;;;;;;:43;21509:12;;:24;;21526:6;21509:24;:16;:24;:::i;:::-;21494:12;:39;21551:18;;;;;;;;-1:-1:-1;;;;;21551:18:0;;;;;;;;;;;;;21585:34;;;;;;;;21608:1;;-1:-1:-1;;;;;21585:34:0;;;-1:-1:-1;;;;;;;;;;;21585:34:0;;;;;;;;-1:-1:-1;21639:4:0;21314:337;;;;:::o;2821:141::-;2905:5;;;2928:6;;;;2921:14;;;;2821:141;;;;:::o;3548:357::-;3611:4;-1:-1:-1;;;;;3636:17:0;;3628:26;;;;;;3692:10;3683:8;:20;;;;;;;;;;;3673:30;;;3665:39;;;;;;3747:10;3738:8;:20;;;;;;;;;;;:32;;3763:6;3738:32;:24;:32;:::i;:::-;3724:10;3715:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;3797:13:0;;;;;;:25;;3815:6;3797:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;3781:13:0;;:8;:13;;;;;;;;;;;;:41;;;;3840:33;;;;;;;3781:13;;3849:10;;-1:-1:-1;;;;;;;;;;;3840:33:0;;;;;;;;;-1:-1:-1;3893:4:0;3548:357;;;;:::o

Swarm Source

bzzr://a6eefcc1d64602f99dba641d7988c57c75134c8c1cb7b6ad909b6f1f283f1ff7

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.