ETH Price: $3,521.52 (+5.25%)
IBC

Token

Inter Stable Token (IBC) (IST)
 

Overview

Max Total Supply

31.403721 IST

Holders

3 (0.00%)

Market

Price

$1.00 @ 0.000284 ETH (-0.17%)

Onchain Market Cap

$31.38

Circulating Supply Market Cap

$1,401,627.00

Other Info

Token Contract (WITH 6 Decimals)

Balance
9.960085 IST

Value
$9.95 ( ~0.00282548708412654 Eth) [31.7163%]
0x46762bde09c1a1c566c3efd959368455bf20c354
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Inter Stable Token (IST) is an evolving, fully collateralized, cryptocurrency-backed decentralized stable token for the interchain ecosystem on the Agoric chain.

Market

Volume (24H):$83,866.00
Market Capitalization:$1,401,627.00
Circulating Supply:1,405,610.00 IST
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20Token

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 256 runs

Other Settings:
default evmVersion, Apache-2.0 license
File 1 of 7 : ERC20Token.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

/**
 * @title ERC20Token
 * @dev Implementation of the ERC20 interface with customizable token properties.
 * This contract extends the ERC20 standard with the ability for the contract owner to
 * modify token name, symbol, and decimals after deployment. It also includes minting
 * and burning functionalities controlled by the contract owner.
 */
contract ERC20Token is ERC20, Ownable {
    uint8 private _decimals;
    string private _name;
    string private _symbol;
    bool private _isDecimalsSet;

    uint256 constant internal MAX_DECIMALS = 77; // log10(2^256 - 1)

    /**
     * @dev emitted when the decimals are changed by the owner.
     */
    event SetDecimals(uint8 precision);

    /**
     * @dev emitted when the name is changed by the owner.
     */
    event SetName(string name);

    /**
     * @dev emitted when the symbol is changed by the owner.
     */
    event SetSymbol(string symbol);

    /**
     * @dev Constructor for initializing the ERC20Token contract Sets the owner of the contract
     *      to the deployer of the contract. Mints the initial supply of tokens to the deployer.
     *
     *      Reverts if the number of decimal places is greater than `MAX_DECIMALS`.
     * @param initialName The name of the token.
     * @param initialSymbol The symbol of the token.
     * @param initSupply The initial supply of tokens to mint upon contract deployment.
     * @param initialDecimals The number of decimal places for the token.
     */
    constructor(string memory initialName, string memory initialSymbol, uint256 initSupply, uint8 initialDecimals)
    ERC20(initialName, initialSymbol)
    Ownable(_msgSender())
    {
        _mint(_msgSender(), initSupply);
        _decimals = initialDecimals;
        _name = initialName;
        _symbol = initialSymbol;
        _isDecimalsSet = false;
        require(initialDecimals <= MAX_DECIMALS, "ERC20Token: precision too high");
    }

    /**
     * @notice Mint new tokens.
     * @dev Mint new tokens to the specified account. Only the owner can call this function.
     *      A `Transfer` event is emitted from the internal `_mint` function.
     * @param account The account to mint the tokens to.
     * @param amount The amount of tokens to mint.
     */
    function mint(address account, uint256 amount) external onlyOwner {
        _mint(account, amount);
    }

    /**
     * @notice Burn tokens.
     * @dev Burn tokens from the specified account. Only the owner can call this function.
     *      A `Transfer` event is emitted from the internal `_burn` function.
     * @param account The account to burn the tokens from.
     * @param amount The amount of tokens to burn.
     */
    function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }

    /**
     * @notice Set the number of decimal places for the token.
     * @dev Set the number of decimal places for the token. Only the owner can call this function.
     *
     * Reverts if one of the following is true:
     *   - the number of decimal places is already set.
     *   - the new number of decimal places is greater than `MAX_DECIMALS`.
     * @param newDecimals The number of decimal places for the token.
     */
    function setDecimals(uint8 newDecimals) external onlyOwner {
        require(!_isDecimalsSet, "ERC20Token: decimals is already set");
        require(newDecimals <= MAX_DECIMALS, "ERC20Token: precision too high");
        _decimals = newDecimals;
        _isDecimalsSet = true;
        emit SetDecimals(newDecimals);
    }

    /**
     * @notice Set the name of the token.
     * @dev Set the name of the token. Only the owner can call this function.
     * @param newName The name of the token.
     */
    function setName(string memory newName) external onlyOwner {
        _name = newName;
        emit SetName(newName);
    }

    /**
     * @notice Set the symbol of the token.
     * @dev Set the symbol of the token. Only the owner can call this function.
     * @param newSymbol The symbol of the token.
     */
    function setSymbol(string memory newSymbol) external onlyOwner {
        _symbol = newSymbol;
        emit SetSymbol(newSymbol);
    }

    /**
     * @notice Get the number of decimal places for the token.
     * @return The number of decimal places for the token.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

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

    /**
     * @notice Get the symbol of the token.
     * @return The symbol of the token.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
}

File 2 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 7 : draft-IERC6093.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
 * @dev Standard ERC20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

File 4 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;

import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";

/**
 * @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}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead 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.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

    mapping(address account => mapping(address spender => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * 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_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 default value returned by this function, unless
     * it's 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 returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` 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.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     * ```
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `value`.
     *
     * Does not update the allowance value in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Does not emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

File 5 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

File 6 of 7 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.20;

import {IERC20} from "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 */
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 7 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

Settings
{
  "remappings": [
    "solidity-rlp/=node_modules/solidity-rlp/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "solidity-mpt/=node_modules/solidity-mpt/",
    "solidity-stringutils/=node_modules/solidity-stringutils/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 256,
    "details": {
      "peephole": true,
      "inliner": true,
      "jumpdestRemover": true,
      "orderLiterals": true,
      "deduplicate": true,
      "cse": true,
      "constantOptimizer": true,
      "yul": false
    }
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"initialName","type":"string"},{"internalType":"string","name":"initialSymbol","type":"string"},{"internalType":"uint256","name":"initSupply","type":"uint256"},{"internalType":"uint8","name":"initialDecimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"precision","type":"uint8"}],"name":"SetDecimals","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"SetName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"symbol","type":"string"}],"name":"SetSymbol","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"},{"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":"value","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newDecimals","type":"uint8"}],"name":"setDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"setSymbol","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523461002e5761001d610014610183565b92919091610438565b604051611139610818823961113990f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b90601f01601f191681019081106001600160401b0382111761006757604052565b610032565b9061008061007960405190565b9283610046565b565b6001600160401b03811161006757602090601f01601f19160190565b90825f9392825e0152565b909291926100be6100b982610082565b61006c565b9381855260208501908284011161002e576100809261009e565b9080601f8301121561002e5781516100f2926020016100a9565b90565b805b0361002e57565b90505190610080826100f5565b60ff81166100f7565b905051906100808261010b565b60808183031261002e5780516001600160401b03811161002e57826101479183016100d8565b60208201519093906001600160401b03811161002e5761016c846100f29285016100d8565b9361017a81604086016100fe565b93606001610114565b6101a1611951803803806101968161006c565b928339810190610121565b90919293565b9060ff60a01b9060a01b5b9181191691161790565b6101cc6100f26100f29260ff1690565b60ff1690565b906101e26100f26101e9926101bc565b82546101a7565b9055565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610221575b602083101461021c57565b6101ed565b91607f1691610211565b915f1960089290920291821b911b6101b2565b6100f26100f26100f29290565b919061025c6100f26101e99361023e565b90835461022b565b610080915f9161024b565b81811061027a575050565b806102875f600193610264565b0161026f565b9190601f811161029c57505050565b6102ac610080935f5260205f2090565b906020601f8401819004830193106102ce575b6020601f90910104019061026f565b90915081906102bf565b906102e1815190565b906001600160401b03821161006757610304826102fe8554610201565b8561028d565b602090601f831160011461033d576101e992915f9183610332575b50505f19600883021c1916906002021790565b015190505f8061031f565b601f19831691610350855f5260205f2090565b925f5b81811061038c57509160029391856001969410610374575b50505002019055565b01515f196008601f8516021c191690555f808061036b565b91936020600181928787015181550195019201610353565b90610080916102d8565b9060ff906101b2565b906103c76100f26101e992151590565b82546103ae565b6100f2604d61023e565b6100f26100f26100f29260ff1690565b156103ef57565b60405162461bcd60e51b815260206004820152601e60248201527f4552433230546f6b656e3a20707265636973696f6e20746f6f206869676800006044820152606490fd5b0390fd5b9061047261047992610460610080969561045a6104523390565b8487916104de565b3361054c565b61046b8560056101d2565b60066103a4565b60076103a4565b6104845f60086103b7565b6104986104926100f26103ce565b916103d8565b11156103e8565b6104ac6100f26100f29290565b6001600160a01b031690565b6100f29061049f565b6104ca906104ac565b9052565b60208101929161008091906104c1565b916104e891610536565b806105036104fd6104f85f6104b8565b6104ac565b916104ac565b1461051157610080906105fa565b61043461051d5f6104b8565b604051631e4fbdf760e01b8152918291600483016104ce565b906105456100809260036103a4565b60046103a4565b8061055c6104fd6104f85f6104b8565b14610576576100809161056e5f6104b8565b9190916106ec565b6104346105825f6104b8565b60405163ec442f0560e01b8152918291600483016104ce565b6100f2906104ac565b6100f2905461059b565b906001600160a01b03906101b2565b6100f2906104ac906001600160a01b031682565b6100f2906105bd565b6100f2906105d1565b906105f36100f26101e9926105da565b82546105ae565b61060460056105a4565b61060f8260056105e3565b9061064361063d7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936105da565b916105da565b9161064d60405190565b80805b0390a3565b9061065f906105da565b5f5260205260405f2090565b6100f29081565b6100f2905461066b565b6040906106a2610080949695939661069b60608401985f8501906104c1565b6020830152565b0152565b905f19906101b2565b906106bf6100f26101e99261023e565b82546106a6565b634e487b7160e01b5f52601160045260245ffd5b919082018092116106e757565b6106c6565b919091806106ff6104fd6104f85f6104b8565b036107c55761072161071a836107156002610672565b6106da565b60026106af565b826107316104fd6104f85f6104b8565b0361079b5761074b61071a836107476002610672565b0390565b91909161065061078461077e7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936105da565b936105da565b9361078e60405190565b9182918290815260200190565b6107c0826107ba6107ac865f610655565b916107b683610672565b0190565b906106af565b61074b565b6107d76107d2825f610655565b610672565b8281106107f9576107f4908390036107ef835f610655565b6106af565b610721565b60405163391434e360e21b815292839261043492906004850161067c56fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610120578063095ea7b31461011b57806318160ddd1461011657806323b872dd14610111578063313ce5671461010c57806340c10f191461010757806370a0823114610102578063715018a6146100fd5780637a1395aa146100f85780638da5cb5b146100f357806395d89b41146100ee5780639dc29fac146100e9578063a9059cbb146100e4578063b84c8246146100df578063c47f0027146100da578063dd62ed3e146100d55763f2fde38b0361012f57610571565b610555565b61051a565b610502565b6103ff565b6103e6565b6103cb565b610396565b61037e565b61033c565b610321565b6102ef565b6102bf565b6102a3565b610247565b610219565b61018a565b5f91031261012f57565b5f80fd5b90825f9392825e0152565b61015f61016860209361017293610153815190565b80835293849260200190565b95869101610133565b601f01601f191690565b0190565b60208082526101879291019061013e565b90565b3461012f5761019a366004610125565b6101b26101a561067b565b6040515b91829182610176565b0390f35b6001600160a01b031690565b6001600160a01b0381165b0361012f57565b905035906101e1826101c2565b565b806101cd565b905035906101e1826101e3565b919060408382031261012f576101879061021081856101d4565b936020016101e9565b3461012f576101b261023561022f3660046101f6565b90610685565b60405191829182901515815260200190565b3461012f57610257366004610125565b6101b26102626106a6565b6040515b9182918290815260200190565b909160608284031261012f5761018761028c84846101d4565b9361029a81602086016101d4565b936040016101e9565b3461012f576101b26102356102b9366004610273565b916106b0565b3461012f576102cf366004610125565b6101b26102da6106e0565b6040515b9182918260ff909116815260200190565b3461012f576103086103023660046101f6565b90610701565b604051005b9060208282031261012f57610187916101d4565b3461012f576101b261026261033736600461030d565b610749565b3461012f5761034c366004610125565b61030861079a565b60ff81166101cd565b905035906101e182610354565b9060208282031261012f576101879161035d565b3461012f5761030861039136600461036a565b610977565b3461012f576103a6366004610125565b6101b26103b1610993565b604051918291826001600160a01b03909116815260200190565b3461012f576103db366004610125565b6101b26101a561099d565b3461012f576103086103f93660046101f6565b906109be565b3461012f576101b26102356104153660046101f6565b906109c8565b634e487b7160e01b5f52604160045260245ffd5b90601f01601f1916810190811067ffffffffffffffff82111761045157604052565b61041b565b906101e161046360405190565b928361042f565b67ffffffffffffffff811161045157602090601f01601f19160190565b90825f939282370152565b909291926104a76104a28261046a565b610456565b9381855260208501908284011161012f576101e192610487565b9080601f8301121561012f5781602061018793359101610492565b9060208282031261012f57813567ffffffffffffffff811161012f5761018792016104c1565b3461012f576103086105153660046104dc565b610b93565b3461012f5761030861052d3660046104dc565b610be1565b919060408382031261012f576101879061054c81856101d4565b936020016101d4565b3461012f576101b261026261056b366004610532565b90610bea565b3461012f5761030861058436600461030d565b610c73565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156105bd575b60208310146105b857565b610589565b91607f16916105ad565b80545f9392916105e36105d98361059d565b8085529360200190565b916001811690811561063257506001146105fc57505050565b61060d91929394505f5260205f2090565b915f925b81841061061e5750500190565b805484840152602090930192600101610611565b92949550505060ff1916825215156020020190565b90610187916105c7565b906101e161066b9261066260405190565b93848092610647565b038361042f565b61018790610651565b6101876006610672565b610690919033610c7c565b600190565b6101879081565b6101879054610695565b610187600261069c565b61069092906106c0823383610cb5565b919091610d1b565b6101879060a01c5b60ff1690565b61018790546106c8565b61018760056106d6565b906101e1916106f7610db8565b906101e191610deb565b906101e1916106ea565b6101b6610187610187926001600160a01b031690565b6101879061070b565b61018790610721565b9061073d9061072a565b5f5260205260405f2090565b61075e610187916107575f90565b505f610733565b61069c565b61076b610db8565b6101e1610789565b6101b66101876101879290565b61018790610773565b6101e16107955f610780565b610e3b565b6101e1610763565b6101e1906107ae610db8565b6108f5565b610187906106d0565b61018790546107b3565b156107cd57565b60405162461bcd60e51b815260206004820152602360248201527f4552433230546f6b656e3a20646563696d616c7320697320616c7265616479206044820152621cd95d60ea1b6064820152608490fd5b0390fd5b6101876101876101879290565b610187604d610822565b6101876101876101879260ff1690565b1561085057565b60405162461bcd60e51b815260206004820152601e60248201527f4552433230546f6b656e3a20707265636973696f6e20746f6f206869676800006044820152606490fd5b9060ff60a01b9060a01b5b9181191691161790565b6106d06101876101879260ff1690565b906108ca6101876108d1926108aa565b8254610895565b9055565b9060ff906108a0565b906108ee6101876108d192151590565b82546108d5565b61090e61090961090560086107bc565b1590565b6107c6565b61092d8161092661092061018761082f565b91610839565b1115610849565b6109388160056108ba565b610944600160086108de565b6109727fb0dbe162923e18ca76cb016a45453088f7266fee88d89e839694a70a9caf7b25916102de60405190565b0390a1565b6101e1906107a2565b610187906101b6565b6101879054610980565b6101876005610989565b6101876007610672565b906101e1916109b4610db8565b906101e191610e96565b906101e1916109a7565b61069091336106c0565b6101e1906109de610db8565b610b5a565b915f1960089290920291821b911b6108a0565b9190610a076101876108d193610822565b9083546109e3565b6101e1915f916109f6565b818110610a25575050565b80610a325f600193610a0f565b01610a1a565b9190601f8111610a4757505050565b610a576101e1935f5260205f2090565b906020601f840181900483019310610a79575b6020601f909101040190610a1a565b9091508190610a6a565b90610a8c815190565b9067ffffffffffffffff821161045157610ab082610aaa855461059d565b85610a38565b602090601f8311600114610ae9576108d192915f9183610ade575b50505f19600883021c1916906002021790565b015190505f80610acb565b601f19831691610afc855f5260205f2090565b925f5b818110610b3857509160029391856001969410610b20575b50505002019055565b01515f196008601f8516021c191690555f8080610b17565b91936020600181928787015181550195019201610aff565b906101e191610a83565b610b65816007610b50565b6109727fadf3ae8bd543b3007d464f15cb8ea1db3f44e84d41d203164f40b95e27558ac6916101a960405190565b6101e1906109d2565b6101e190610ba8610db8565b610bb3816006610b50565b6109727f4df9dcd34ae35f40f2c756fd8ac83210ed0b76d065543ee73d868aec7c7fcf02916101a960405190565b6101e190610b9c565b61018791610c0461075e92610bfc5f90565b506001610733565b610733565b6101e190610c15610db8565b80610c32610c256101b65f610780565b916001600160a01b031690565b14610c40576101e190610e3b565b61081e610c4c5f610780565b604051631e4fbdf760e01b8152918291600483016001600160a01b03909116815260200190565b6101e190610c09565b916101e19291600192610ee1565b6001600160a01b0390911681526060810193926101e1929091604091610cb1906020830152565b0152565b919291610cc28282610bea565b905f198203610cd3575b5050509050565b848210610cf4579293610ceb93929103905f92610ee1565b805f8080610ccc565b5061081e84929192610d0560405190565b637dc7a0d960e11b815293849360048501610c8a565b9182610d2c610c256101b65f610780565b14610d855781610d41610c256101b65f610780565b14610d52576101e192919091611003565b61081e610d5e5f610780565b60405163ec442f0560e01b8152918291600483016001600160a01b03909116815260200190565b61081e610d915f610780565b604051634b637e8f60e11b8152918291600483016001600160a01b03909116815260200190565b610dc0610993565b610dcc610c25336101b6565b03610dd357565b60405163118cdaa760e01b8152336004820152602490fd5b80610dfb610c256101b65f610780565b14610d52576101e191610e0d5f610780565b919091611003565b906001600160a01b03906108a0565b90610e346101876108d19261072a565b8254610e15565b610e456005610989565b610e50826005610e24565b90610e84610e7e7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361072a565b9161072a565b91610e8e60405190565b80805b0390a3565b9081610ea7610c256101b65f610780565b14610d85576101e19190610eba5f610780565b9091611003565b905f19906108a0565b90610eda6101876108d192610822565b8254610ec1565b909281610ef3610c256101b65f610780565b14610faa5783610f08610c256101b65f610780565b14610f7757610f2b83610f26610f1f856001610733565b8790610733565b610eca565b610f3457505050565b919091610e91610f6d610f677f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259361072a565b9361072a565b9361026660405190565b61081e610f835f610780565b604051634a1406b160e11b8152918291600483016001600160a01b03909116815260200190565b61081e610fb65f610780565b60405163e602df0560e01b8152918291600483016001600160a01b03909116815260200190565b634e487b7160e01b5f52601160045260245ffd5b91908201809211610ffe57565b610fdd565b91909180611016610c256101b65f610780565b036110bb576110386110318361102c600261069c565b610ff1565b6002610eca565b82611048610c256101b65f610780565b03611095576110626110318361105e600261069c565b0390565b919091610e91610f6d610f677fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9361072a565b6110b6826110b06110a6865f610733565b916101728361069c565b90610eca565b611062565b6110c861075e825f610733565b8281106110e5576110e090839003610f26835f610733565b611038565b60405163391434e360e21b815292839261081e929060048501610c8a56fea2646970667358221220b930ac9ec31c2522c7d92370a87708355a7735755899aaa02fcd6ca7f116cef964736f6c63430008190033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b7472616e736665722f6368616e6e656c2d322f7472616e736665722f6368616e6e656c2d31332f75697374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b7472616e736665722f6368616e6e656c2d322f7472616e736665722f6368616e6e656c2d31332f75697374000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610120578063095ea7b31461011b57806318160ddd1461011657806323b872dd14610111578063313ce5671461010c57806340c10f191461010757806370a0823114610102578063715018a6146100fd5780637a1395aa146100f85780638da5cb5b146100f357806395d89b41146100ee5780639dc29fac146100e9578063a9059cbb146100e4578063b84c8246146100df578063c47f0027146100da578063dd62ed3e146100d55763f2fde38b0361012f57610571565b610555565b61051a565b610502565b6103ff565b6103e6565b6103cb565b610396565b61037e565b61033c565b610321565b6102ef565b6102bf565b6102a3565b610247565b610219565b61018a565b5f91031261012f57565b5f80fd5b90825f9392825e0152565b61015f61016860209361017293610153815190565b80835293849260200190565b95869101610133565b601f01601f191690565b0190565b60208082526101879291019061013e565b90565b3461012f5761019a366004610125565b6101b26101a561067b565b6040515b91829182610176565b0390f35b6001600160a01b031690565b6001600160a01b0381165b0361012f57565b905035906101e1826101c2565b565b806101cd565b905035906101e1826101e3565b919060408382031261012f576101879061021081856101d4565b936020016101e9565b3461012f576101b261023561022f3660046101f6565b90610685565b60405191829182901515815260200190565b3461012f57610257366004610125565b6101b26102626106a6565b6040515b9182918290815260200190565b909160608284031261012f5761018761028c84846101d4565b9361029a81602086016101d4565b936040016101e9565b3461012f576101b26102356102b9366004610273565b916106b0565b3461012f576102cf366004610125565b6101b26102da6106e0565b6040515b9182918260ff909116815260200190565b3461012f576103086103023660046101f6565b90610701565b604051005b9060208282031261012f57610187916101d4565b3461012f576101b261026261033736600461030d565b610749565b3461012f5761034c366004610125565b61030861079a565b60ff81166101cd565b905035906101e182610354565b9060208282031261012f576101879161035d565b3461012f5761030861039136600461036a565b610977565b3461012f576103a6366004610125565b6101b26103b1610993565b604051918291826001600160a01b03909116815260200190565b3461012f576103db366004610125565b6101b26101a561099d565b3461012f576103086103f93660046101f6565b906109be565b3461012f576101b26102356104153660046101f6565b906109c8565b634e487b7160e01b5f52604160045260245ffd5b90601f01601f1916810190811067ffffffffffffffff82111761045157604052565b61041b565b906101e161046360405190565b928361042f565b67ffffffffffffffff811161045157602090601f01601f19160190565b90825f939282370152565b909291926104a76104a28261046a565b610456565b9381855260208501908284011161012f576101e192610487565b9080601f8301121561012f5781602061018793359101610492565b9060208282031261012f57813567ffffffffffffffff811161012f5761018792016104c1565b3461012f576103086105153660046104dc565b610b93565b3461012f5761030861052d3660046104dc565b610be1565b919060408382031261012f576101879061054c81856101d4565b936020016101d4565b3461012f576101b261026261056b366004610532565b90610bea565b3461012f5761030861058436600461030d565b610c73565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156105bd575b60208310146105b857565b610589565b91607f16916105ad565b80545f9392916105e36105d98361059d565b8085529360200190565b916001811690811561063257506001146105fc57505050565b61060d91929394505f5260205f2090565b915f925b81841061061e5750500190565b805484840152602090930192600101610611565b92949550505060ff1916825215156020020190565b90610187916105c7565b906101e161066b9261066260405190565b93848092610647565b038361042f565b61018790610651565b6101876006610672565b610690919033610c7c565b600190565b6101879081565b6101879054610695565b610187600261069c565b61069092906106c0823383610cb5565b919091610d1b565b6101879060a01c5b60ff1690565b61018790546106c8565b61018760056106d6565b906101e1916106f7610db8565b906101e191610deb565b906101e1916106ea565b6101b6610187610187926001600160a01b031690565b6101879061070b565b61018790610721565b9061073d9061072a565b5f5260205260405f2090565b61075e610187916107575f90565b505f610733565b61069c565b61076b610db8565b6101e1610789565b6101b66101876101879290565b61018790610773565b6101e16107955f610780565b610e3b565b6101e1610763565b6101e1906107ae610db8565b6108f5565b610187906106d0565b61018790546107b3565b156107cd57565b60405162461bcd60e51b815260206004820152602360248201527f4552433230546f6b656e3a20646563696d616c7320697320616c7265616479206044820152621cd95d60ea1b6064820152608490fd5b0390fd5b6101876101876101879290565b610187604d610822565b6101876101876101879260ff1690565b1561085057565b60405162461bcd60e51b815260206004820152601e60248201527f4552433230546f6b656e3a20707265636973696f6e20746f6f206869676800006044820152606490fd5b9060ff60a01b9060a01b5b9181191691161790565b6106d06101876101879260ff1690565b906108ca6101876108d1926108aa565b8254610895565b9055565b9060ff906108a0565b906108ee6101876108d192151590565b82546108d5565b61090e61090961090560086107bc565b1590565b6107c6565b61092d8161092661092061018761082f565b91610839565b1115610849565b6109388160056108ba565b610944600160086108de565b6109727fb0dbe162923e18ca76cb016a45453088f7266fee88d89e839694a70a9caf7b25916102de60405190565b0390a1565b6101e1906107a2565b610187906101b6565b6101879054610980565b6101876005610989565b6101876007610672565b906101e1916109b4610db8565b906101e191610e96565b906101e1916109a7565b61069091336106c0565b6101e1906109de610db8565b610b5a565b915f1960089290920291821b911b6108a0565b9190610a076101876108d193610822565b9083546109e3565b6101e1915f916109f6565b818110610a25575050565b80610a325f600193610a0f565b01610a1a565b9190601f8111610a4757505050565b610a576101e1935f5260205f2090565b906020601f840181900483019310610a79575b6020601f909101040190610a1a565b9091508190610a6a565b90610a8c815190565b9067ffffffffffffffff821161045157610ab082610aaa855461059d565b85610a38565b602090601f8311600114610ae9576108d192915f9183610ade575b50505f19600883021c1916906002021790565b015190505f80610acb565b601f19831691610afc855f5260205f2090565b925f5b818110610b3857509160029391856001969410610b20575b50505002019055565b01515f196008601f8516021c191690555f8080610b17565b91936020600181928787015181550195019201610aff565b906101e191610a83565b610b65816007610b50565b6109727fadf3ae8bd543b3007d464f15cb8ea1db3f44e84d41d203164f40b95e27558ac6916101a960405190565b6101e1906109d2565b6101e190610ba8610db8565b610bb3816006610b50565b6109727f4df9dcd34ae35f40f2c756fd8ac83210ed0b76d065543ee73d868aec7c7fcf02916101a960405190565b6101e190610b9c565b61018791610c0461075e92610bfc5f90565b506001610733565b610733565b6101e190610c15610db8565b80610c32610c256101b65f610780565b916001600160a01b031690565b14610c40576101e190610e3b565b61081e610c4c5f610780565b604051631e4fbdf760e01b8152918291600483016001600160a01b03909116815260200190565b6101e190610c09565b916101e19291600192610ee1565b6001600160a01b0390911681526060810193926101e1929091604091610cb1906020830152565b0152565b919291610cc28282610bea565b905f198203610cd3575b5050509050565b848210610cf4579293610ceb93929103905f92610ee1565b805f8080610ccc565b5061081e84929192610d0560405190565b637dc7a0d960e11b815293849360048501610c8a565b9182610d2c610c256101b65f610780565b14610d855781610d41610c256101b65f610780565b14610d52576101e192919091611003565b61081e610d5e5f610780565b60405163ec442f0560e01b8152918291600483016001600160a01b03909116815260200190565b61081e610d915f610780565b604051634b637e8f60e11b8152918291600483016001600160a01b03909116815260200190565b610dc0610993565b610dcc610c25336101b6565b03610dd357565b60405163118cdaa760e01b8152336004820152602490fd5b80610dfb610c256101b65f610780565b14610d52576101e191610e0d5f610780565b919091611003565b906001600160a01b03906108a0565b90610e346101876108d19261072a565b8254610e15565b610e456005610989565b610e50826005610e24565b90610e84610e7e7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361072a565b9161072a565b91610e8e60405190565b80805b0390a3565b9081610ea7610c256101b65f610780565b14610d85576101e19190610eba5f610780565b9091611003565b905f19906108a0565b90610eda6101876108d192610822565b8254610ec1565b909281610ef3610c256101b65f610780565b14610faa5783610f08610c256101b65f610780565b14610f7757610f2b83610f26610f1f856001610733565b8790610733565b610eca565b610f3457505050565b919091610e91610f6d610f677f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259361072a565b9361072a565b9361026660405190565b61081e610f835f610780565b604051634a1406b160e11b8152918291600483016001600160a01b03909116815260200190565b61081e610fb65f610780565b60405163e602df0560e01b8152918291600483016001600160a01b03909116815260200190565b634e487b7160e01b5f52601160045260245ffd5b91908201809211610ffe57565b610fdd565b91909180611016610c256101b65f610780565b036110bb576110386110318361102c600261069c565b610ff1565b6002610eca565b82611048610c256101b65f610780565b03611095576110626110318361105e600261069c565b0390565b919091610e91610f6d610f677fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9361072a565b6110b6826110b06110a6865f610733565b916101728361069c565b90610eca565b611062565b6110c861075e825f610733565b8281106110e5576110e090839003610f26835f610733565b611038565b60405163391434e360e21b815292839261081e929060048501610c8a56fea2646970667358221220b930ac9ec31c2522c7d92370a87708355a7735755899aaa02fcd6ca7f116cef964736f6c63430008190033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b7472616e736665722f6368616e6e656c2d322f7472616e736665722f6368616e6e656c2d31332f75697374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b7472616e736665722f6368616e6e656c2d322f7472616e736665722f6368616e6e656c2d31332f75697374000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialName (string): transfer/channel-2/transfer/channel-13/uist
Arg [1] : initialSymbol (string): transfer/channel-2/transfer/channel-13/uist
Arg [2] : initSupply (uint256): 0
Arg [3] : initialDecimals (uint8): 0

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000000000000000000000000000000000000000002b
Arg [5] : 7472616e736665722f6368616e6e656c2d322f7472616e736665722f6368616e
Arg [6] : 6e656c2d31332f75697374000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000002b
Arg [8] : 7472616e736665722f6368616e6e656c2d322f7472616e736665722f6368616e
Arg [9] : 6e656c2d31332f75697374000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

523:4505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;523:4505:0;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;523:4505:0;;:::o;:::-;-1:-1:-1;;;;;523:4505:0;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;523:4505:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;523:4505:0;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;523:4505:0;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;4720:98::-;4799:12;4806:5;4799:12;:::i;4293:186:3:-;4445:5;;;735:10:6;4445:5:3;:::i;:::-;4468:4;4461:11;:::o;523:4505:0:-;;;;;;;;;;:::i;3144:97:3:-;3222:12;;;:::i;5039:244::-;5249:5;;;5213;5249;735:10:6;5249:5:3;5213;:::i;:::-;5245:2;5249:5;;;:::i;523:4505:0:-;;;;;;;;;;;;;;;:::i;4520:98::-;4602:9;;;:::i;1500:62:1:-;;1554:1;1500:62;;;:::i;:::-;2436:105:0;2527:6;2436:105;2527:6;:::i;2436:105::-;;;;;:::i;523:4505::-;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;3299:116:3:-;3390:18;;3299:116;3364:7;523:4505:0;;;3364:7:3;3390:9;;:18;:::i;:::-;;:::i;1500:62:1:-;;;:::i;:::-;1554:1;;:::i;523:4505:0:-;;;;;;;;;;;:::i;2293:101:1:-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;2293:101::-;;;:::i;1500:62::-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;523:4505:0:-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;-1:-1:-1;;;523:4505:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;523:4505:0;;;;;;;;;;;;;;;;;;684:43;725:2;;;:::i;:::-;;;;;523:4505;;;;725:2;;;;:::o;:::-;523:4505;;-1:-1:-1;;;725:2:0;;;;;;;;;;;523:4505;725:2;523:4505;;;725:2;523:4505;;;725:2;;-1:-1:-1;;;725:2:0;;;;;;;;;;;;:::o;:::-;;;;;523:4505;;;;725:2;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;523:4505;;;;725:2;;;;:::i;3416:322::-;3485:63;3493:15;3494:14;;;:::i;:::-;3493:15;;523:4505;3493:15;3485:63;:::i;:::-;3558:70;3566:11;:27;;3581:12;;:::i;3566:27::-;;;:::i;:::-;;;3558:70;:::i;:::-;3638:23;3650:11;3638:23;;:::i;:::-;3671:21;3688:4;3671:21;;:::i;:::-;3707:24;;;;523:4505;;;;3707:24;;;;3416:322::o;:::-;;;;:::i;523:4505::-;;;;;;;;;;:::i;1638:85:1:-;1710:6;;;:::i;4924:102:0:-;5005:14;5012:7;5005:14;:::i;1500:62:1:-;;1554:1;1500:62;;;:::i;:::-;2870:105:0;2961:6;2870:105;2961:6;:::i;2870:105::-;;;;;:::i;3610:178:3:-;3754:5;;735:10:6;3711:12:3;728:17:6;1500:62:1;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;523:4505:0:-;;-1:-1:-1;;523:4505:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;523:4505:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;523:4505:0;;;;;;;;;;;;;;;;-1:-1:-1;523:4505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;523:4505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4242:134::-;4315:19;4325:9;4315:19;;:::i;:::-;4349:20;;;;523:4505;;;;4242:134;;;;:::i;1500:62:1:-;1554:1;1500:62;;;:::i;:::-;3994:15:0;4002:7;3994:15;;:::i;:::-;4024:16;;;;523:4505;;;;3925:122;;;;:::i;3846:140:3:-;3952:27;3846:140;3952:18;:27;3846:140;3926:7;523:4505:0;;;3926:7:3;3952:11;;:18;:::i;:::-;:27;:::i;1500:62:1:-;1554:1;1500:62;;;:::i;:::-;2627:8;:22;;2639:10;2647:1;2639:10;:::i;2627:22::-;;-1:-1:-1;;;;;523:4505:0;;;2627:22:1;;2623:91;;2742:8;;;:::i;2623:91::-;2672:31;2692:10;2700:1;2692:10;:::i;:::-;523:4505:0;;-1:-1:-1;;;2672:31:1;;;;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;;;2543:215:1;;;;:::i;8989:128:3:-;;9105:4;8989:128;9089:7;9105:4;;;:::i;523:4505:0:-;-1:-1:-1;;;;;523:4505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10663:477:3;;;;10789:25;10806:7;10663:477;10789:25;:::i;:::-;10828:16;-1:-1:-1;;10828:16:3;:37;10824:310;;10663:477;;;;;;:::o;10824:310::-;10904:5;10885:16;:24;10881:130;;11061:5;;11103;;11061;11068:7;523:4505:0;11103:5:3;;;;:::i;:::-;10824:310;;;;;;10881:130;10963:7;10936:60;10963:7;;10972:16;10990:5;10936:60;523:4505:0;;;;10936:60:3;-1:-1:-1;;;10936:60:3;;;;;;;;;:::i;5656:300::-;;5739:4;:18;;5747:10;5755:1;5747:10;:::i;5739:18::-;;5735:86;;5834:2;:16;;5840:10;5848:1;5840:10;:::i;5834:16::-;;5830:86;;5943:5;5933:4;5939:2;5943:5;;;:::i;5830:86::-;5873:32;5894:10;5902:1;5894:10;:::i;:::-;523:4505:0;;-1:-1:-1;;;5873:32:3;;;;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;;;5735:86:3;5780:30;5799:10;5807:1;5799:10;:::i;:::-;523:4505:0;;-1:-1:-1;;;5780:30:3;;;;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;;;1796:162:1;1855:7;;:::i;:::-;:23;;735:10:6;1866:12:1;728:17:6;1855:23:1;;1851:101;;1796:162::o;1851:101::-;523:4505:0;;-1:-1:-1;;;1901:40:1;;735:10:6;1901:40:1;;;523:4505:0;;;;7721:208:3;7791:7;:21;;7802:10;7810:1;7802:10;:::i;7791:21::-;;7787:91;;7916:5;7903:1;7895:10;7903:1;7895:10;:::i;:::-;7907:7;7916:5;;;:::i;523:4505:0:-;;-1:-1:-1;;;;;523:4505:0;;725:2;523:4505;;;;;;;:::i;:::-;;;;:::i;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;523:4505:0;;;;3052:40:1;;;;;;;2912:187::o;8247:206:3:-;;8317:7;:21;;8328:10;8336:1;8328:10;:::i;8317:21::-;;8313:89;;8440:5;8419:7;8436:1;8428:10;8436:1;8428:10;:::i;:::-;8440:5;;;:::i;523:4505:0:-;;-1:-1:-1;;523:4505:0;;725:2;523:4505;;;;;;;:::i;:::-;;;;:::i;9949:432:3:-;;;10061:5;:19;;10070:10;10078:1;10070:10;:::i;10061:19::-;;10057:89;;10159:7;:21;;10170:10;10178:1;10170:10;:::i;10159:21::-;;10155:90;;10254:35;10284:5;10254:27;:18;10266:5;10254:11;:18;:::i;:::-;10273:7;10254:27;;:::i;:::-;:35;:::i;:::-;10299:76;;9949:432;;;:::o;10299:76::-;10349:7;10358:5;10333:31;;;;;;;:::i;:::-;;;:::i;:::-;;;523:4505:0;;;;10155:90:3;10203:31;10223:10;10231:1;10223:10;:::i;:::-;523:4505:0;;-1:-1:-1;;;10203:31:3;;;;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;;;10057:89:3;10103:32;10124:10;10132:1;10124:10;:::i;:::-;523:4505:0;;-1:-1:-1;;;10103:32:3;;;;;;;;-1:-1:-1;;;;;523:4505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;6271:1107:3:-;;;;6360:4;:18;;6368:10;6376:1;6368:10;:::i;6360:18::-;;6356:540;;6496:21;;6512:5;6496:21;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;6910:2;:16;;6916:10;6924:1;6916:10;:::i;6910:16::-;;6906:425;;7073:21;;7089:5;7073:21;;;:::i;:::-;523:4505:0;;;7073:21:3;7361:2;7365:5;7346:25;;;;;;;:::i;6906:425::-;7284:22;7301:5;7284:22;:13;7294:2;7284:9;:13;:::i;:::-;:22;;;;:::i;:::-;;;:::i;:::-;6906:425;;6356:540;6570:15;;6580:4;6570:9;:15;:::i;:::-;6617:5;6603:11;:19;6599:115;;6834:37;;523:4505:0;;;6834:15:3;6844:4;6834:9;:15;:::i;:37::-;6356:540;;6599:115;523:4505:0;;-1:-1:-1;;;6649:50:3;;523:4505:0;;;6649:50:3;;6674:4;6649:50;;;;:::i

Swarm Source

ipfs://b930ac9ec31c2522c7d92370a87708355a7735755899aaa02fcd6ca7f116cef9
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.