Token Dextoken Governance

DeFi  
 

Overview [ERC-20]

Price
$0.73 @ 0.000382 Eth
Fully Diluted Market Cap
Max Total Supply:
55,000 DEXG

Holders:
887 (0.00%)

Transfers:
-

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

OVERVIEW

Dextoken is a DeFi infrastructure and is managed by the DEXG ('Dextoken Governance') holders. Dextoken proposed Speculative AMM, one of the simplest price conversion algorithm, we use Speculative AMM to build a token swap exchange.

Market

Volume (24H):$36.57
Market Capitalization:$39,953.00
Circulating Supply:55,000.00 DEXG
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DexToken

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-20
*/

/**
 * Developed by The Flowchain Foundation
 */
pragma solidity 0.5.16;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() public {
        owner = msg.sender;
        newOwner = address(0);
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    modifier onlyNewOwner() {
        require(msg.sender != address(0));
        require(msg.sender == newOwner);
        _;
    }
    
    function isOwner(address account) public view returns (bool) {
        if( account == owner ){
            return true;
        }
        else {
            return false;
        }
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0));
        newOwner = _newOwner;
    }

    function acceptOwnership() public onlyNewOwner {
        emit OwnershipTransferred(owner, newOwner);        
        owner = newOwner;
        newOwner = address(0);
    }
}

/**
 * @title Pausable
 * @dev The Pausable can pause and unpause the token transfers.
 */
contract Pausable is Ownable {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor () public {
        _paused = false;
    }    

    /**
     * @return true if the contract is paused, false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(_paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() public onlyOwner whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyOwner whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

library SafeMath {
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

/**
 * @title The ERC20 tokens
 */
interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

contract Context {
    constructor () internal { }

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
}

/**
 * @dev The ERC20 standard implementation.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint;

    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;

    uint private _totalSupply;

    function totalSupply() public view returns (uint) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint) {
        return _balances[account];
    }

    function transfer(address recipient, uint amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view returns (uint) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _transfer(address sender, address recipient, uint amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

/**
 * @title Address
 * @dev Check if the address is a contract using eip-1052
 */
library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract DexToken is ERC20, ERC20Detailed, Ownable, Pausable {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint;

    event Freeze(address indexed account);
    event Unfreeze(address indexed account);

    mapping (address => bool) public minters;
    mapping (address => bool) public frozenAccount;

    address public governance;    

    modifier notFrozen(address _account) {
        require(!frozenAccount[_account]);
        _;
    }

    constructor () public ERC20Detailed("Dextoken Governance", "DEXG", 18) {
        governance = msg.sender;
    }

    function transfer(address to, uint value) public notFrozen(msg.sender) whenNotPaused returns (bool) {
        return super.transfer(to, value);
    }   

    function transferFrom(address from, address to, uint value) public notFrozen(from) whenNotPaused returns (bool) {
        return super.transferFrom(from, to, value);
    }

    /**
     * @dev Freeze an user
     * @param account The address of the user who will be frozen
     * @return The result of freezing an user
     */
    function freezeAccount(address account) external onlyOwner returns (bool) {
        require(!frozenAccount[account], "ERC20: account frozen");
        frozenAccount[account] = true;
        emit Freeze(account);
        return true;
    }

    /**
     * @dev Unfreeze an user
     * @param account The address of the user who will be unfrozen
     * @return The result of unfreezing an user
     */
    function unfreezeAccount(address account) external onlyOwner returns (bool) {
        require(frozenAccount[account], "ERC20: account not frozen");
        frozenAccount[account] = false;
        emit Unfreeze(account);
        return true;
    }

    function setGovernance(address _governance) public {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }

    /**
     * @dev Setup the address that can mint tokens
     * @param minter The address of the minter
     * @return The result of the setup
     */
    function addMinter(address minter) external returns (bool success) {
        require(msg.sender == governance, "!governance");    
        minters[minter] = true;
        return true;
    }

    /**
     * @dev Remove the address from minters
     * @param minter The address of the minter
     * @return The result of the setup
     */
    function removeMinter(address minter) external returns (bool success) {
        require(msg.sender == governance, "!governance");
        minters[minter] = false;
        return true;
    }

    /**
     * @dev Mint an amount of tokens and transfer to the user
     * @param account The address of the user who will receive the tokens
     * @param amount The amount of tokens
     * @return The result of token minting
     */
    function mint(address account, uint amount) external returns (bool success) {
        require(minters[msg.sender], "!minter");    
        _mint(account, amount);
        return true;
    }

    /**
     * @dev Burn an amount of tokens
     * @param account The address of the wallet
     * @param amount The amount of tokens to burn
     * @return The result of token burning
     */
    function burn(address account, uint amount) external returns (bool success) {
        require(msg.sender == governance, "!governance");    
        _burn(account, amount);
        return true;
    }    
}

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":"account","type":"address"}],"name":"Freeze","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":"account","type":"address"}],"name":"Paused","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":true,"internalType":"address","name":"account","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"success","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"freezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","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":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","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":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"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":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unfreezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604080518082018252601381527f446578746f6b656e20476f7665726e616e6365000000000000000000000000006020808301918252835180850190945260048452634445584760e01b908401528151919291601291620000779160039190620000e4565b5081516200008d906004906020850190620000e4565b5060058054336101008102610100600160a81b031960ff90951660ff199093169290921793909316179055600680546001600160a81b0319169055600980546001600160a01b031916909117905550620001899050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b6200018691905b8082111562000165576000815560010162000170565b90565b61166480620001996000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379ba509711610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e14610543578063f26c159f14610571578063f2fde38b14610597578063f46eccc4146105bd576101cf565b8063a9059cbb146104c3578063ab033ea9146104ef578063b414d4b614610515578063d4ee1d901461053b576101cf565b806395d89b41116100de57806395d89b411461043d578063983b2d56146104455780639dc29fac1461046b578063a457c2d714610497576101cf565b806379ba5097146104255780638456cb591461042d5780638da5cb5b14610435576101cf565b806339509351116101715780635aa6e6751161014b5780635aa6e675146103ad5780635c975abb146103d157806370a08231146103d9578063788649ea146103ff576101cf565b8063395093511461034b5780633f4ba83a1461037757806340c10f1914610381576101cf565b806323b872dd116101ad57806323b872dd146102ab5780632f54bf6e146102e15780633092afd514610307578063313ce5671461032d576101cf565b806306fdde03146101d4578063095ea7b31461025157806318160ddd14610291575b600080fd5b6101dc6105e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561026757600080fd5b506001600160a01b038135169060200135610679565b604080519115158252519081900360200190f35b610299610696565b60408051918252519081900360200190f35b61027d600480360360608110156102c157600080fd5b506001600160a01b0381358116916020810135909116906040013561069c565b61027d600480360360208110156102f757600080fd5b50356001600160a01b03166106ef565b61027d6004803603602081101561031d57600080fd5b50356001600160a01b031661071e565b610335610793565b6040805160ff9092168252519081900360200190f35b61027d6004803603604081101561036157600080fd5b506001600160a01b03813516906020013561079c565b61037f6107f5565b005b61027d6004803603604081101561039757600080fd5b506001600160a01b038135169060200135610869565b6103b56108c1565b604080516001600160a01b039092168252519081900360200190f35b61027d6108d0565b610299600480360360208110156103ef57600080fd5b50356001600160a01b03166108e0565b61027d6004803603602081101561041557600080fd5b50356001600160a01b03166108fb565b61037f6109d5565b61037f610a6d565b6103b5610ae8565b6101dc610afc565b61027d6004803603602081101561045b57600080fd5b50356001600160a01b0316610b5d565b61027d6004803603604081101561048157600080fd5b506001600160a01b038135169060200135610bd6565b61027d600480360360408110156104ad57600080fd5b506001600160a01b038135169060200135610c30565b61027d600480360360408110156104d957600080fd5b506001600160a01b038135169060200135610c9e565b61037f6004803603602081101561050557600080fd5b50356001600160a01b0316610ce7565b61027d6004803603602081101561052b57600080fd5b50356001600160a01b0316610d56565b6103b5610d6b565b6102996004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7a565b61027d6004803603602081101561058757600080fd5b50356001600160a01b0316610da5565b61037f600480360360208110156105ad57600080fd5b50356001600160a01b0316610e7b565b61027d600480360360208110156105d357600080fd5b50356001600160a01b0316610ecc565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066f5780601f106106445761010080835404028352916020019161066f565b820191906000526020600020905b81548152906001019060200180831161065257829003601f168201915b5050505050905090565b600061068d610686610ee1565b8484610ee5565b50600192915050565b60025490565b6001600160a01b038316600090815260086020526040812054849060ff16156106c457600080fd5b600654600160a01b900460ff16156106db57600080fd5b6106e6858585610fd1565b95945050505050565b6005546000906001600160a01b0383811661010090920416141561071557506001610719565b5060005b919050565b6009546000906001600160a01b0316331461076e576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b506001600160a01b03166000908152600760205260409020805460ff19169055600190565b60055460ff1690565b600061068d6107a9610ee1565b846107f085600160006107ba610ee1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61105916565b610ee5565b60055461010090046001600160a01b0316331461081157600080fd5b600654600160a01b900460ff1661082757600080fd5b6006805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b3360009081526007602052604081205460ff166108b7576040805162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b604482015290519081900360640190fd5b61068d83836110ba565b6009546001600160a01b031681565b600654600160a01b900460ff1690565b6001600160a01b031660009081526020819052604090205490565b60055460009061010090046001600160a01b0316331461091a57600080fd5b6001600160a01b03821660009081526008602052604090205460ff16610987576040805162461bcd60e51b815260206004820152601960248201527f45524332303a206163636f756e74206e6f742066726f7a656e00000000000000604482015290519081900360640190fd5b6001600160a01b038216600081815260086020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b336109df57600080fd5b6006546001600160a01b031633146109f657600080fd5b6006546005546040516001600160a01b0392831692610100909204909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805460058054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60055461010090046001600160a01b03163314610a8957600080fd5b600654600160a01b900460ff1615610aa057600080fd5b6006805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60055461010090046001600160a01b031681565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066f5780601f106106445761010080835404028352916020019161066f565b6009546000906001600160a01b03163314610bad576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b506001600160a01b03166000908152600760205260409020805460ff1916600190811790915590565b6009546000906001600160a01b03163314610c26576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b61068d83836111aa565b600061068d610c3d610ee1565b846107f08560405180606001604052806025815260200161160b6025913960016000610c67610ee1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6112a616565b3360008181526008602052604081205490919060ff1615610cbe57600080fd5b600654600160a01b900460ff1615610cd557600080fd5b610cdf848461133d565b949350505050565b6009546001600160a01b03163314610d34576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60086020526000908152604090205460ff1681565b6006546001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055460009061010090046001600160a01b03163314610dc457600080fd5b6001600160a01b03821660009081526008602052604090205460ff1615610e2a576040805162461bcd60e51b815260206004820152601560248201527422a92199181d1030b1b1b7bab73a10333937bd32b760591b604482015290519081900360640190fd5b6001600160a01b038216600081815260086020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60055461010090046001600160a01b03163314610e9757600080fd5b6001600160a01b038116610eaa57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60076020526000908152604090205460ff1681565b3390565b6001600160a01b038316610f2a5760405162461bcd60e51b81526004018080602001828103825260248152602001806115e76024913960400191505060405180910390fd5b6001600160a01b038216610f6f5760405162461bcd60e51b81526004018080602001828103825260228152602001806115316022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610fde84848461134d565b61104f84610fea610ee1565b6107f085604051806060016040528060288152602001611579602891396001600160a01b038a16600090815260016020526040812090611028610ee1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6112a616565b5060019392505050565b6000828201838110156110b3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611115576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611128908263ffffffff61105916565b6002556001600160a01b038216600090815260208190526040902054611154908263ffffffff61105916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166111ef5760405162461bcd60e51b81526004018080602001828103825260218152602001806115a16021913960400191505060405180910390fd5b6112328160405180606001604052806022815260200161150f602291396001600160a01b038516600090815260208190526040902054919063ffffffff6112a616565b6001600160a01b03831660009081526020819052604090205560025461125e908263ffffffff6114a916565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600081848411156113355760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112fa5781810151838201526020016112e2565b50505050905090810190601f1680156113275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061068d61134a610ee1565b84845b6001600160a01b0383166113925760405162461bcd60e51b81526004018080602001828103825260258152602001806115c26025913960400191505060405180910390fd5b6001600160a01b0382166113d75760405162461bcd60e51b81526004018080602001828103825260238152602001806114ec6023913960400191505060405180910390fd5b61141a81604051806060016040528060268152602001611553602691396001600160a01b038616600090815260208190526040902054919063ffffffff6112a616565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461144f908263ffffffff61105916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006110b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112a656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158204e44b5b80dc4e9c7f6bd72ae92e78c5ee363b5db217714a93af99bf28ae702c564736f6c63430005100032

Deployed ByteCode Sourcemap

10304:3529:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10304:3529:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8102:83;;;:::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;8102:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5368:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5368:149:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4855:88;;;:::i;:::-;;;;;;;;;;;;;;;;11093:173;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11093:173:0;;;;;;;;;;;;;;;;;:::i;777:193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;777:193:0;-1:-1:-1;;;;;777:193:0;;:::i;12779:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12779:193:0;-1:-1:-1;;;;;12779:193:0;;:::i;8288:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5834:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5834:207:0;;;;;;;;:::i;2446:117::-;;;:::i;:::-;;13223:193;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13223:193:0;;;;;;;;:::i;10663:25::-;;;:::i;:::-;;;;-1:-1:-1;;;;;10663:25:0;;;;;;;;;;;;;;1700:78;;;:::i;4951:107::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4951:107:0;-1:-1:-1;;;;;4951:107:0;;:::i;11849:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11849:251:0;-1:-1:-1;;;;;11849:251:0;;:::i;1131:175::-;;;:::i;2236:115::-;;;:::i;298:20::-;;;:::i;8193:87::-;;;:::i;12427:193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12427:193:0;-1:-1:-1;;;;;12427:193:0;;:::i;13624:202::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13624:202:0;;;;;;;;:::i;6049:258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6049:258:0;;;;;;;;:::i;10931:151::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10931:151:0;;;;;;;;:::i;12108:153::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12108:153:0;-1:-1:-1;;;;;12108:153:0;;:::i;10608:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10608:46:0;-1:-1:-1;;;;;10608:46:0;;:::i;325:23::-;;;:::i;5229:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5229:131:0;;;;;;;;;;:::i;11433:243::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11433:243:0;-1:-1:-1;;;;;11433:243:0;;:::i;978:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;978:145:0;-1:-1:-1;;;;;978:145:0;;:::i;10561:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10561:40:0;-1:-1:-1;;;;;10561:40:0;;:::i;8102:83::-;8172:5;8165:12;;;;;;;;-1:-1:-1;;8165:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8139:13;;8165:12;;8172:5;;8165:12;;8172:5;8165:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8102:83;:::o;5368:149::-;5431:4;5448:39;5457:12;:10;:12::i;:::-;5471:7;5480:6;5448:8;:39::i;:::-;-1:-1:-1;5505:4:0;5368:149;;;;:::o;4855:88::-;4923:12;;4855:88;:::o;11093:173::-;-1:-1:-1;;;;;10758:23:0;;11199:4;10758:23;;;:13;:23;;;;;;11170:4;;10758:23;;10757:24;10749:33;;;;;;1937:7;;-1:-1:-1;;;1937:7:0;;;;1936:8;1928:17;;;;;;11223:35;11242:4;11248:2;11252:5;11223:18;:35::i;:::-;11216:42;11093:173;-1:-1:-1;;;;;11093:173:0:o;777:193::-;864:5;;832:4;;-1:-1:-1;;;;;853:16:0;;;864:5;;;;;853:16;849:114;;;-1:-1:-1;893:4:0;886:11;;849:114;-1:-1:-1;946:5:0;849:114;777:193;;;:::o;12779:::-;12882:10;;12835:12;;-1:-1:-1;;;;;12882:10:0;12868;:24;12860:48;;;;;-1:-1:-1;;;12860:48:0;;;;;;;;;;;;-1:-1:-1;;;12860:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12919:15:0;12937:5;12919:15;;;:7;:15;;;;;:23;;-1:-1:-1;;12919:23:0;;;-1:-1:-1;;12779:193:0:o;8288:83::-;8354:9;;;;8288:83;:::o;5834:207::-;5911:4;5928:83;5937:12;:10;:12::i;:::-;5951:7;5960:50;5999:10;5960:11;:25;5972:12;:10;:12::i;:::-;-1:-1:-1;;;;;5960:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;5960:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;:::-;5928:8;:83::i;2446:117::-;601:5;;;;;-1:-1:-1;;;;;601:5:0;587:10;:19;579:28;;;;;;2116:7;;-1:-1:-1;;;2116:7:0;;;;2108:16;;;;;;2504:7;:15;;-1:-1:-1;;;;2504:15:0;;;2535:20;;;2544:10;2535:20;;;;;;;;;;;;;2446:117::o;13223:193::-;13326:10;13285:12;13318:19;;;:7;:19;;;;;;;;13310:39;;;;;-1:-1:-1;;;13310:39:0;;;;;;;;;;;;-1:-1:-1;;;13310:39:0;;;;;;;;;;;;;;;13364:22;13370:7;13379:6;13364:5;:22::i;10663:25::-;;;-1:-1:-1;;;;;10663:25:0;;:::o;1700:78::-;1763:7;;-1:-1:-1;;;1763:7:0;;;;;1700:78::o;4951:107::-;-1:-1:-1;;;;;5032:18:0;5008:4;5032:18;;;;;;;;;;;;4951:107::o;11849:251::-;601:5;;11919:4;;601:5;;;-1:-1:-1;;;;;601:5:0;587:10;:19;579:28;;;;;;-1:-1:-1;;;;;11944:22:0;;;;;;:13;:22;;;;;;;;11936:60;;;;;-1:-1:-1;;;11936:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12007:22:0;;12032:5;12007:22;;;:13;:22;;;;;;:30;;-1:-1:-1;;12007:30:0;;;12053:17;;;12032:5;12053:17;-1:-1:-1;12088:4:0;11849:251;;;:::o;1131:175::-;678:10;670:33;;;;;;736:8;;-1:-1:-1;;;;;736:8:0;722:10;:22;714:31;;;;;;1222:8;;1215:5;;1194:37;;-1:-1:-1;;;;;1222:8:0;;;;;1215:5;;;;;;;1194:37;;1222:8;;1194:37;1258:8;;;1250:5;:16;;-1:-1:-1;;;;;;1250:16:0;1258:8;-1:-1:-1;;;;;1258:8:0;;1250:16;;;;-1:-1:-1;;;;;;1277:21:0;;;1131:175::o;2236:115::-;601:5;;;;;-1:-1:-1;;;;;601:5:0;587:10;:19;579:28;;;;;;1937:7;;-1:-1:-1;;;1937:7:0;;;;1936:8;1928:17;;;;;;2295:7;:14;;-1:-1:-1;;;;2295:14:0;-1:-1:-1;;;2295:14:0;;;2325:18;;;2332:10;2325:18;;;;;;;;;;;;;2236:115::o;298:20::-;;;;;;-1:-1:-1;;;;;298:20:0;;:::o;8193:87::-;8265:7;8258:14;;;;;;;;-1:-1:-1;;8258:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8232:13;;8258:14;;8265:7;;8258:14;;8265:7;8258:14;;;;;;;;;;;;;;;;;;;;;;;;12427:193;12527:10;;12480:12;;-1:-1:-1;;;;;12527:10:0;12513;:24;12505:48;;;;;-1:-1:-1;;;12505:48:0;;;;;;;;;;;;-1:-1:-1;;;12505:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12568:15:0;;;;;:7;:15;;;;;:22;;-1:-1:-1;;12568:22:0;12586:4;12568:22;;;;;;12586:4;12427:193::o;13624:202::-;13733:10;;13686:12;;-1:-1:-1;;;;;13733:10:0;13719;:24;13711:48;;;;;-1:-1:-1;;;13711:48:0;;;;;;;;;;;;-1:-1:-1;;;13711:48:0;;;;;;;;;;;;;;;13774:22;13780:7;13789:6;13774:5;:22::i;6049:258::-;6131:4;6148:129;6157:12;:10;:12::i;:::-;6171:7;6180:96;6219:15;6180:96;;;;;;;;;;;;;;;;;:11;:25;6192:12;:10;:12::i;:::-;-1:-1:-1;;;;;6180:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;6180:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;10931:151::-;10990:10;11025:4;10758:23;;;:13;:23;;;;;;11025:4;;10990:10;10758:23;;10757:24;10749:33;;;;;;1937:7;;-1:-1:-1;;;1937:7:0;;;;1936:8;1928:17;;;;;;11049:25;11064:2;11068:5;11049:14;:25::i;:::-;11042:32;10931:151;-1:-1:-1;;;;10931:151:0:o;12108:153::-;12192:10;;-1:-1:-1;;;;;12192:10:0;12178;:24;12170:48;;;;;-1:-1:-1;;;12170:48:0;;;;;;;;;;;;-1:-1:-1;;;12170:48:0;;;;;;;;;;;;;;;12229:10;:24;;-1:-1:-1;;;;;;12229:24:0;-1:-1:-1;;;;;12229:24:0;;;;;;;;;;12108:153::o;10608:46::-;;;;;;;;;;;;;;;:::o;325:23::-;;;-1:-1:-1;;;;;325:23:0;;:::o;5229:131::-;-1:-1:-1;;;;;5325:18:0;;;5301:4;5325:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5229:131::o;11433:243::-;601:5;;11501:4;;601:5;;;-1:-1:-1;;;;;601:5:0;587:10;:19;579:28;;;;;;-1:-1:-1;;;;;11527:22:0;;;;;;:13;:22;;;;;;;;11526:23;11518:57;;;;;-1:-1:-1;;;11518:57:0;;;;;;;;;;;;-1:-1:-1;;;11518:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11586:22:0;;;;;;:13;:22;;;;;;:29;;-1:-1:-1;;11586:29:0;11611:4;11586:29;;;11631:15;;;11586:22;11631:15;-1:-1:-1;11664:4:0;11433:243;;;:::o;978:145::-;601:5;;;;;-1:-1:-1;;;;;601:5:0;587:10;:19;579:28;;;;;;-1:-1:-1;;;;;1060:23:0;;1052:32;;;;;;1095:8;:20;;-1:-1:-1;;;;;;1095:20:0;-1:-1:-1;;;;;1095:20:0;;;;;;;;;;978:145::o;10561:40::-;;;;;;;;;;;;;;;:::o;4464:98::-;4544:10;4464:98;:::o;7457:335::-;-1:-1:-1;;;;;7548:19:0;;7540:68;;;;-1:-1:-1;;;7540:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7627:21:0;;7619:68;;;;-1:-1:-1;;;7619:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7700:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7752:32;;;;;;;;;;;;;;;;;7457:335;;;:::o;5525:301::-;5611:4;5628:36;5638:6;5646:9;5657:6;5628:9;:36::i;:::-;5675:121;5684:6;5692:12;:10;:12::i;:::-;5706:89;5744:6;5706:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5706:19:0;;;;;;:11;:19;;;;;;5726:12;:10;:12::i;:::-;-1:-1:-1;;;;;5706:33:0;;;;;;;;;;;;-1:-1:-1;5706:33:0;;;:89;;:37;:89;:::i;5675:121::-;-1:-1:-1;5814:4:0;5525:301;;;;;:::o;2594:169::-;2646:4;2672:5;;;2696:6;;;;2688:46;;;;;-1:-1:-1;;;2688:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:1;2594:169;-1:-1:-1;;;2594:169:0:o;6791:305::-;-1:-1:-1;;;;;6864:21:0;;6856:65;;;;;-1:-1:-1;;;6856:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6949:12;;:24;;6966:6;6949:24;:16;:24;:::i;:::-;6934:12;:39;-1:-1:-1;;;;;7005:18:0;;:9;:18;;;;;;;;;;;:30;;7028:6;7005:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6984:18:0;;:9;:18;;;;;;;;;;;:51;;;;7051:37;;;;;;;6984:18;;:9;;7051:37;;;;;;;;;;6791:305;;:::o;7104:345::-;-1:-1:-1;;;;;7177:21:0;;7169:67;;;;-1:-1:-1;;;7169:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7270:68;7293:6;7270:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7270:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;7249:18:0;;:9;:18;;;;;;;;;;:89;7364:12;;:24;;7381:6;7364:24;:16;:24;:::i;:::-;7349:12;:39;7404:37;;;;;;;;7430:1;;-1:-1:-1;;;;;7404:37:0;;;;;;;;;;;;7104:345;;:::o;2902:180::-;2982:4;3015:12;3007:6;;;;2999:29;;;;-1:-1:-1;;;2999:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2999:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3048:5:0;;;2902:180::o;5066:155::-;5132:4;5149:42;5159:12;:10;:12::i;:::-;5173:9;5184:6;6315:468;-1:-1:-1;;;;;6410:20:0;;6402:70;;;;-1:-1:-1;;;6402:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6491:23:0;;6483:71;;;;-1:-1:-1;;;6483:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6587;6609:6;6587:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6587:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;6567:17:0;;;:9;:17;;;;;;;;;;;:91;;;;6692:20;;;;;;;:32;;6717:6;6692:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;6669:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;6740:35;;;;;;;6669:20;;6740:35;;;;;;;;;;;;;6315:468;;;:::o;2769:127::-;2821:4;2845:43;2849:1;2852;2845:43;;;;;;;;;;;;;;;;;:3;:43::i

Swarm Source

bzzr://4e44b5b80dc4e9c7f6bd72ae92e78c5ee363b5db217714a93af99bf28ae702c5

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.