ETH Price: $3,475.22 (-0.32%)
Gas: 4 Gwei

Token

Firn Token (FIRN)
 

Overview

Max Total Supply

1,000,000 FIRN

Holders

87 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Firn is a state-of-the-art privacy solution on Ethereum.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 2: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)

pragma solidity 0.8.17;

import "./BalanceTree.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}.
 * 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 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.
 *
 * 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 BalanceTree {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    address _owner;
    mapping(address => bool) public admins;

    modifier onlyOwner() {
        require(msg.sender == _owner, "Caller is not the owner.");
        _;
    }

    modifier onlyAdmin() {
        require(admins[msg.sender], "Caller is not an admin.");
        _;
    }

    function sortKey(address key) internal view override returns (uint256) {
        return _balances[key];
    }

    /**
     * @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 Sets the values for {name} and {symbol}.
     *
     * The default 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_;
        _owner = msg.sender;
    }

    function administrate(address owner_) external onlyOwner {
        _owner = owner_;
    }

    function setAdmin(address account, bool value) external onlyOwner {
        admins[account] = value;
    }

    function mint(address account, uint256 amount) external onlyAdmin {
        _mint(account, amount);
    }

    function burn(address account, uint256 amount) external onlyAdmin {
        _burn(account, amount);
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 pure returns (uint8) {
        return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view 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 `amount`.
     */
    function transfer(address to, uint256 amount) public returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` 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 amount) public returns (bool) {
        address owner = msg.sender;
        _approve(owner, 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}.
     *
     * 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 `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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 increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, 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 returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(owner, spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    /**
     * @dev Moves `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.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[from] = fromBalance - amount;
    }
        _balances[to] += amount;

        if (exists(from)) remove(from); // could be false, if balance was originally 0 and you transfer 0
        if (_balances[from] > 0) insert(from); // could be false, if from got emptied
        if (exists(to)) remove(to); // could be false, if to is new
        if (_balances[to] > 0) insert(to); // could be false, if 0 got transferred and was already 0.

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;

        if (exists(account)) remove(account);
        if (_balances[account] > 0) insert(account);

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

        _afterTokenTransfer(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 {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];

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

        if (exists(account)) remove(account); // could be false, if was 0 before burn and you burn 0
        if (_balances[account] > 0) insert(account);

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

        _afterTokenTransfer(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 {
        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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
        require(currentAllowance >= amount, "ERC20: insufficient allowance");
    unchecked {
        _approve(owner, spender, currentAllowance - 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``'s tokens
     * will be 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].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal {}
}
// ----------------------------------------------------------------------------
// End - BokkyPooBah's Red-Black Tree Library
// ----------------------------------------------------------------------------

File 1 of 2: BalanceTree.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

// ----------------------------------------------------------------------------
// BokkyPooBah's Red-Black Tree Library v1.0-pre-release-a
//
// A Solidity Red-Black Tree binary search library to store and access a sorted
// list of unsigned integer data. The Red-Black algorithm rebalances the binary
// search tree, resulting in O(log n) insert, remove and search time (and ~gas)
//
// https://github.com/bokkypoobah/BokkyPooBahsRedBlackTreeLibrary
//
//
// Enjoy. (c) BokkyPooBah / Bok Consulting Pty Ltd 2020. The MIT Licence.
// ----------------------------------------------------------------------------
abstract contract BalanceTree {
    struct Node {
        address parent;
        address left;
        address right;
        bool red;
    }

    address public root;
    address constant EMPTY = address(0);

    mapping(address => Node) public nodes;

    function exists(address key) internal view returns (bool) {
        return (key != EMPTY) && ((key == root) || (nodes[key].parent != EMPTY));
    }

    function sortKey(address key) internal virtual view returns (uint256);

    function rotateLeft(address key) internal {
        address cursor = nodes[key].right;
        address keyParent = nodes[key].parent;
        address cursorLeft = nodes[cursor].left;
        nodes[key].right = cursorLeft;
        if (cursorLeft != EMPTY) {
            nodes[cursorLeft].parent = key;
        }
        nodes[cursor].parent = keyParent;
        if (keyParent == EMPTY) {
            root = cursor;
        } else if (key == nodes[keyParent].left) {
            nodes[keyParent].left = cursor;
        } else {
            nodes[keyParent].right = cursor;
        }
        nodes[cursor].left = key;
        nodes[key].parent = cursor;
    }

    function rotateRight(address key) internal {
        address cursor = nodes[key].left;
        address keyParent = nodes[key].parent;
        address cursorRight = nodes[cursor].right;
        nodes[key].left = cursorRight;
        if (cursorRight != EMPTY) {
            nodes[cursorRight].parent = key;
        }
        nodes[cursor].parent = keyParent;
        if (keyParent == EMPTY) {
            root = cursor;
        } else if (key == nodes[keyParent].right) {
            nodes[keyParent].right = cursor;
        } else {
            nodes[keyParent].left = cursor;
        }
        nodes[cursor].right = key;
        nodes[key].parent = cursor;
    }

    function insertFixup(address key) internal {
        address cursor;
        while (key != root && nodes[nodes[key].parent].red) {
            address keyParent = nodes[key].parent;
            if (keyParent == nodes[nodes[keyParent].parent].left) {
                cursor = nodes[nodes[keyParent].parent].right;
                if (nodes[cursor].red) {
                    nodes[keyParent].red = false;
                    nodes[cursor].red = false;
                    nodes[nodes[keyParent].parent].red = true;
                    key = nodes[keyParent].parent;
                } else {
                    if (key == nodes[keyParent].right) {
                        key = keyParent;
                        rotateLeft(key);
                    }
                    keyParent = nodes[key].parent;
                    nodes[keyParent].red = false;
                    nodes[nodes[keyParent].parent].red = true;
                    rotateRight(nodes[keyParent].parent);
                }
            } else {
                cursor = nodes[nodes[keyParent].parent].left;
                if (nodes[cursor].red) {
                    nodes[keyParent].red = false;
                    nodes[cursor].red = false;
                    nodes[nodes[keyParent].parent].red = true;
                    key = nodes[keyParent].parent;
                } else {
                    if (key == nodes[keyParent].left) {
                        key = keyParent;
                        rotateRight(key);
                    }
                    keyParent = nodes[key].parent;
                    nodes[keyParent].red = false;
                    nodes[nodes[keyParent].parent].red = true;
                    rotateLeft(nodes[keyParent].parent);
                }
            }
        }
        if (nodes[root].red) nodes[root].red = false;
    }

    function insert(address key) internal {
        address cursor = EMPTY;
        address probe = root;
        while (probe != EMPTY) {
            cursor = probe;
            if (sortKey(key) < sortKey(probe)) {
                probe = nodes[probe].left;
            } else {
                probe = nodes[probe].right;
            }
        }
        nodes[key] = Node({parent : cursor, left : EMPTY, right : EMPTY, red : true});
        if (cursor == EMPTY) {
            root = key;
        } else if (sortKey(key) < sortKey(cursor)) {
            nodes[cursor].left = key;
        } else {
            nodes[cursor].right = key;
        }
        insertFixup(key);
    }

    function replaceParent(address a, address b) internal {
        address bParent = nodes[b].parent;
        nodes[a].parent = bParent;
        if (bParent == EMPTY) {
            root = a;
        } else {
            if (b == nodes[bParent].left) {
                nodes[bParent].left = a;
            } else {
                nodes[bParent].right = a;
            }
        }
    }

    function removeFixup(address key) internal {
        address cursor;
        while (key != root && !nodes[key].red) {
            address keyParent = nodes[key].parent;
            if (key == nodes[keyParent].left) {
                cursor = nodes[keyParent].right;
                if (nodes[cursor].red) {
                    nodes[cursor].red = false;
                    nodes[keyParent].red = true;
                    rotateLeft(keyParent);
                    cursor = nodes[keyParent].right;
                }
                if (!nodes[nodes[cursor].left].red && !nodes[nodes[cursor].right].red) {
                    nodes[cursor].red = true;
                    key = keyParent;
                } else {
                    if (!nodes[nodes[cursor].right].red) {
                        nodes[nodes[cursor].left].red = false;
                        nodes[cursor].red = true;
                        rotateRight(cursor);
                        cursor = nodes[keyParent].right;
                    }
                    nodes[cursor].red = nodes[keyParent].red;
                    nodes[keyParent].red = false;
                    nodes[nodes[cursor].right].red = false;
                    rotateLeft(keyParent);
                    return; // key = root;
                }
            } else {
                cursor = nodes[keyParent].left;
                if (nodes[cursor].red) {
                    nodes[cursor].red = false;
                    nodes[keyParent].red = true;
                    rotateRight(keyParent);
                    cursor = nodes[keyParent].left;
                }
                if (!nodes[nodes[cursor].right].red && !nodes[nodes[cursor].left].red) {
                    nodes[cursor].red = true;
                    key = keyParent;
                } else {
                    if (!nodes[nodes[cursor].left].red) {
                        nodes[nodes[cursor].right].red = false;
                        nodes[cursor].red = true;
                        rotateLeft(cursor);
                        cursor = nodes[keyParent].left;
                    }
                    nodes[cursor].red = nodes[keyParent].red;
                    nodes[keyParent].red = false;
                    nodes[nodes[cursor].left].red = false;
                    rotateRight(keyParent);
                    return; // key = root;
                }
            }
        }
        if (nodes[key].red) nodes[key].red = false;
    }

    function remove(address key) internal {
        address probe;
        address cursor;
        if (nodes[key].left == EMPTY || nodes[key].right == EMPTY) {
            cursor = key;
        } else {
            cursor = nodes[key].right;
            while (nodes[cursor].left != EMPTY) {
                cursor = nodes[cursor].left;
            }
        }
        if (nodes[cursor].left != EMPTY) {
            probe = nodes[cursor].left;
        } else {
            probe = nodes[cursor].right;
        }
        address yParent = nodes[cursor].parent;
        nodes[probe].parent = yParent;
        if (yParent != EMPTY) {
            if (cursor == nodes[yParent].left) {
                nodes[yParent].left = probe;
            } else {
                nodes[yParent].right = probe;
            }
        } else {
            root = probe;
        }
        bool doFixup = !nodes[cursor].red;
        if (cursor != key) {
            replaceParent(cursor, key);
            nodes[cursor].left = nodes[key].left;
            nodes[nodes[cursor].left].parent = cursor;
            nodes[cursor].right = nodes[key].right;
            nodes[nodes[cursor].right].parent = cursor;
            nodes[cursor].red = nodes[key].red;
            (cursor, key) = (key, cursor);
        }
        if (doFixup) {
            removeFixup(probe);
        }
        delete nodes[cursor];
    }
}
// ----------------------------------------------------------------------------
// End - BokkyPooBah's Red-Black Tree Library
// ----------------------------------------------------------------------------

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"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"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"administrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":"pure","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":[{"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":[{"internalType":"address","name":"","type":"address"}],"name":"nodes","outputs":[{"internalType":"address","name":"parent","type":"address"},{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"bool","name":"red","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAdmin","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":"amount","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162002a4538038062002a45833981016040819052620000349162000131565b60056200004283826200022a565b5060066200005182826200022a565b5050600780546001600160a01b0319163317905550620002f6565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200009457600080fd5b81516001600160401b0380821115620000b157620000b16200006c565b604051601f8301601f19908116603f01168101908282118183101715620000dc57620000dc6200006c565b81604052838152602092508683858801011115620000f957600080fd5b600091505b838210156200011d5785820183015181830184015290820190620000fe565b600093810190920192909252949350505050565b600080604083850312156200014557600080fd5b82516001600160401b03808211156200015d57600080fd5b6200016b8683870162000082565b935060208501519150808211156200018257600080fd5b50620001918582860162000082565b9150509250929050565b600181811c90821680620001b057607f821691505b602082108103620001d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022557600081815260208120601f850160051c81016020861015620002005750805b601f850160051c820191505b8181101562000221578281556001016200020c565b5050505b505050565b81516001600160401b038111156200024657620002466200006c565b6200025e816200025784546200019b565b84620001d7565b602080601f8311600181146200029657600084156200027d5750858301515b600019600386901b1c1916600185901b17855562000221565b600085815260208120601f198616915b82811015620002c757888601518255948401946001909101908401620002a6565b5085821015620002e65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61273f80620003066000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80634b0bddd2116100b25780639dc29fac11610081578063a9059cbb11610066578063a9059cbb146102f8578063dd62ed3e1461030b578063ebf0c7171461034457600080fd5b80639dc29fac146102d2578063a457c2d7146102e557600080fd5b80634b0bddd21461027b57806370a082311461028e5780638580642c146102b757806395d89b41146102ca57600080fd5b806323b872dd1161010957806339509351116100ee578063395093511461023057806340c10f1914610243578063429b62e51461025857600080fd5b806323b872dd1461020e578063313ce5671461022157600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c578063189a5a171461018e575b600080fd5b61014361036f565b60405161015091906124e2565b60405180910390f35b61016c61016736600461256a565b610401565b6040519015158152602001610150565b6004545b604051908152602001610150565b6101d961019c366004612594565b60016020819052600091825260409091208054918101546002909101546001600160a01b039283169291821691811690600160a01b900460ff1684565b60405161015094939291906001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b61016c61021c3660046125b6565b61041b565b60405160128152602001610150565b61016c61023e36600461256a565b61043f565b61025661025136600461256a565b61047e565b005b61016c610266366004612594565b60086020526000908152604090205460ff1681565b6102566102893660046125f2565b6104f0565b61018061029c366004612594565b6001600160a01b031660009081526002602052604090205490565b6102566102c5366004612594565b610593565b61014361061c565b6102566102e036600461256a565b61062b565b61016c6102f336600461256a565b610694565b61016c61030636600461256a565b61073e565b61018061031936600461262e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600054610357906001600160a01b031681565b6040516001600160a01b039091168152602001610150565b60606005805461037e90612661565b80601f01602080910402602001604051908101604052809291908181526020018280546103aa90612661565b80156103f75780601f106103cc576101008083540402835291602001916103f7565b820191906000526020600020905b8154815290600101906020018083116103da57829003601f168201915b5050505050905090565b60003361040f81858561074c565b60019150505b92915050565b6000336104298582856108a5565b610434858585610955565b506001949350505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919061040f90829086906104799087906126e3565b61074c565b3360009081526008602052604090205460ff166104e25760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420616e2061646d696e2e00000000000000000060448201526064015b60405180910390fd5b6104ec8282610be7565b5050565b6007546001600160a01b0316331461054a5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104d9565b6001600160a01b0391909116600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6007546001600160a01b031633146105ed5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104d9565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60606006805461037e90612661565b3360009081526008602052604090205460ff1661068a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420616e2061646d696e2e00000000000000000060448201526064016104d9565b6104ec8282610d05565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156107315760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104d9565b610434828686840361074c565b60003361040f818585610955565b6001600160a01b0383166107c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b0382166108435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461094f57818110156109425760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d9565b61094f848484840361074c565b50505050565b6001600160a01b0383166109d15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b038216610a4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b03831660009081526002602052604090205481811015610adc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610b139084906126e3565b90915550610b22905084610ec6565b15610b3057610b3084610f13565b6001600160a01b03841660009081526002602052604090205415610b5757610b57846112dc565b610b6083610ec6565b15610b6e57610b6e83610f13565b6001600160a01b03831660009081526002602052604090205415610b9557610b95836112dc565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bda91815260200190565b60405180910390a361094f565b6001600160a01b038216610c3d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d9565b8060046000828254610c4f91906126e3565b90915550506001600160a01b03821660009081526002602052604081208054839290610c7c9084906126e3565b90915550610c8b905082610ec6565b15610c9957610c9982610f13565b6001600160a01b03821660009081526002602052604090205415610cc057610cc0826112dc565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610d815760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b03821660009081526002602052604090205481811015610e105760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b0383166000908152600260205260408120838303905560048054849290610e3f9084906126f6565b90915550610e4e905083610ec6565b15610e5c57610e5c83610f13565b6001600160a01b03831660009081526002602052604090205415610e8357610e83836112dc565b6040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610898565b505050565b60006001600160a01b0382161580159061041557506000546001600160a01b03838116911614806104155750506001600160a01b0390811660009081526001602052604090205416151590565b6001600160a01b0381811660009081526001602081905260408220015490918291161580610f5c57506001600160a01b0383811660009081526001602052604090206002015416155b15610f68575081610fd0565b506001600160a01b03808316600090815260016020526040902060020154165b6001600160a01b03818116600090815260016020819052604090912001541615610fd0576001600160a01b039081166000908152600160208190526040909120015416610f88565b6001600160a01b0381811660009081526001602081905260409091200154161561101a576001600160a01b038082166000908152600160208190526040909120015416915061103b565b6001600160a01b038082166000908152600160205260409020600201541691505b6001600160a01b038082166000908152600160205260408082205485841683529120805473ffffffffffffffffffffffffffffffffffffffff1916919092169081179091558015611135576001600160a01b03808216600090815260016020819052604090912001548116908316036110f2576001600160a01b03818116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff191691851691909117905561115e565b6001600160a01b038181166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff191691851691909117905561115e565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555b6001600160a01b03828116600081815260016020526040902060020154600160a01b900460ff16159186161461125c576111988386611522565b6001600160a01b03858116600090815260016020819052604080832080830154888616808652838620948501805492881673ffffffffffffffffffffffffffffffffffffffff19938416811790915586528386208054831682179055600292830180549390950180549390971692821683178755918552918420805490921681179091559054915281547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b9182900460ff1615159091021790559193915b801561126b5761126b8461164a565b50506001600160a01b03166000908152600160208190526040909120805473ffffffffffffffffffffffffffffffffffffffff199081168255918101805490921690915560020180547fffffffffffffffffffffff0000000000000000000000000000000000000000001690555050565b600080546001600160a01b03165b6001600160a01b038116156113815780915061131b816001600160a01b031660009081526002602052604090205490565b6001600160a01b038416600090815260026020526040902054101561135e576001600160a01b0390811660009081526001602081905260409091200154166112ea565b6001600160a01b03908116600090815260016020526040902060020154166112ea565b604080516080810182526001600160a01b03808516808352600060208085018281528587018381526001606088018181528c8816865293819052979093209551865490861673ffffffffffffffffffffffffffffffffffffffff19918216178755905196860180549786169790911696909617909555516002909301805494511515600160a01b027fffffffffffffffffffffff00000000000000000000000000000000000000000090951693909216929092179290921790915561146d576000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055611519565b6001600160a01b0382811660009081526002602052604080822054928616825290205410156114da576001600160a01b03828116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055611519565b6001600160a01b038281166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b610ec183611cee565b6001600160a01b038082166000908152600160205260408082205485841683529120805473ffffffffffffffffffffffffffffffffffffffff1916919092169081179091558061159b57600080546001600160a01b03851673ffffffffffffffffffffffffffffffffffffffff19909116179055505050565b6001600160a01b0380821660009081526001602081905260409091200154811690831603611607576001600160a01b03908116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff1916939091169290921790915550565b6001600160a01b039081166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff1916939091169290921790915550565b60005b6000546001600160a01b0383811691161480159061168e57506001600160a01b038216600090815260016020526040902060020154600160a01b900460ff16155b15611c80576001600160a01b03808316600081815260016020819052604080832054851680845292200154909216900361199d576001600160a01b03818116600090815260016020526040808220600290810154909316808352912090910154909250600160a01b900460ff1615611787576001600160a01b03808316600090815260016020526040808220600290810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915593851683529120018054909116600160a01b179055611766816120d3565b6001600160a01b038082166000908152600160205260409020600201541691505b6001600160a01b0382811660009081526001602081905260408083209091015490921681522060020154600160a01b900460ff161580156117f857506001600160a01b03828116600090815260016020526040808220600290810154909316825290200154600160a01b900460ff16155b1561184c576001600160a01b038216600090815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055915081611c7a565b6001600160a01b03828116600090815260016020526040808220600290810154909316825290200154600160a01b900460ff16611917576001600160a01b038083166000818152600160208190526040808320918201549094168252928120600290810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155929091529091018054909116600160a01b1790556118f6826122dc565b6001600160a01b038082166000908152600160205260409020600201541691505b6001600160a01b038082166000908152600160205260408082206002908101805487861685528385208301805460ff600160a01b938490041615159092027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff928316178155825482169092559054909416835291200180549091169055610ec1816120d3565b6001600160a01b0381811660009081526001602081905260408083209091015490921680825291902060020154909250600160a01b900460ff1615611a64576001600160a01b03808316600090815260016020526040808220600290810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915593851683529120018054909116600160a01b179055611a42816122dc565b6001600160a01b03808216600090815260016020819052604090912001541691505b6001600160a01b03828116600090815260016020526040808220600290810154909316825290200154600160a01b900460ff16158015611ad557506001600160a01b0382811660009081526001602081905260408083209091015490921681522060020154600160a01b900460ff16155b15611b29576001600160a01b038216600090815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055915081611c7a565b6001600160a01b0382811660009081526001602081905260408083209091015490921681522060020154600160a01b900460ff16611bed576001600160a01b038083166000818152600160205260408082206002908101805490951683529082200180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155919052815416600160a01b179055611bcb826120d3565b6001600160a01b03808216600090815260016020819052604090912001541691505b6001600160a01b038082166000908152600160208190526040808320600290810180548887168652838620808401805460ff600160a01b948590041615159093027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff93841617905582548216909255930154909416835290912090910180549091169055610ec1816122dc565b5061164d565b6001600160a01b038216600090815260016020526040902060020154600160a01b900460ff16156104ec57506001600160a01b0316600090815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005b6000546001600160a01b03838116911614801590611d3a57506001600160a01b038281166000908152600160205260408082205490921681522060020154600160a01b900460ff165b15612063576001600160a01b0380831660009081526001602081905260408083205484168084528184205485168452922001549091168103611eeb576001600160a01b038181166000908152600160205260408082205483168252808220600290810154909316808352912090910154909250600160a01b900460ff1615611e38576001600160a01b03808216600081815260016020526040808220600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915588871685528385208201805482169055825487168552928420018054909216600160a01b179091559190525416925061205d565b6001600160a01b03808216600090815260016020526040902060020154811690841603611e6b57809250611e6b836120d3565b506001600160a01b03808316600090815260016020526040808220548316808352818320600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155825487168652938520018054909316600160a01b1790925591829052549091611ee691166122dc565b61205d565b6001600160a01b03818116600090815260016020819052604080832054841683528083209091015490921680825291902060020154909250600160a01b900460ff1615611fae576001600160a01b03808216600081815260016020526040808220600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915588871685528385208201805482169055825487168552928420018054909216600160a01b179091559190525416925061205d565b6001600160a01b0380821660009081526001602081905260409091200154811690841603611fe257809250611fe2836122dc565b506001600160a01b03808316600090815260016020526040808220548316808352818320600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155825487168652938520018054909316600160a01b179092559182905254909161205d91166120d3565b50611cf1565b600080546001600160a01b0316815260016020526040902060020154600160a01b900460ff16156104ec57600080546001600160a01b0316815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b6001600160a01b0380821660008181526001602081905260408083206002810180549154828816808752938620909401549590945273ffffffffffffffffffffffffffffffffffffffff191693851693841790925590921690801561216e576001600160a01b038181166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff19169186169190911790555b6001600160a01b038381166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691841691821790556121d9576000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055612284565b6001600160a01b0380831660009081526001602081905260409091200154811690851603612245576001600160a01b03828116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055612284565b6001600160a01b038281166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50506001600160a01b03908116600081815260016020819052604080832090910180549490951673ffffffffffffffffffffffffffffffffffffffff1994851681179095559381529290922080549091169091179055565b6001600160a01b03808216600081815260016020819052604080832091820180549254838716808652928520600201549590945273ffffffffffffffffffffffffffffffffffffffff199092169385169384179091559216908015612377576001600160a01b038181166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff19169186169190911790555b6001600160a01b038381166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691841691821790556123e2576000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03851617905561248c565b6001600160a01b0380831660009081526001602052604090206002015481169085160361244c576001600160a01b038281166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff191691851691909117905561248c565b6001600160a01b03828116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50506001600160a01b0390811660008181526001602052604080822060020180549490951673ffffffffffffffffffffffffffffffffffffffff1994851681179095559381529290922080549091169091179055565b600060208083528351808285015260005b8181101561250f578581018301518582016040015282016124f3565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b80356001600160a01b038116811461256557600080fd5b919050565b6000806040838503121561257d57600080fd5b6125868361254e565b946020939093013593505050565b6000602082840312156125a657600080fd5b6125af8261254e565b9392505050565b6000806000606084860312156125cb57600080fd5b6125d48461254e565b92506125e26020850161254e565b9150604084013590509250925092565b6000806040838503121561260557600080fd5b61260e8361254e565b91506020830135801515811461262357600080fd5b809150509250929050565b6000806040838503121561264157600080fd5b61264a8361254e565b91506126586020840161254e565b90509250929050565b600181811c9082168061267557607f821691505b6020821081036126ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610415576104156126b4565b81810381811115610415576104156126b456fea2646970667358221220408979b76955335364bff94633250054e613f0cf0cd5250756c64f1e7ddfc40f64736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a4669726e20546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044649524e00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101365760003560e01c80634b0bddd2116100b25780639dc29fac11610081578063a9059cbb11610066578063a9059cbb146102f8578063dd62ed3e1461030b578063ebf0c7171461034457600080fd5b80639dc29fac146102d2578063a457c2d7146102e557600080fd5b80634b0bddd21461027b57806370a082311461028e5780638580642c146102b757806395d89b41146102ca57600080fd5b806323b872dd1161010957806339509351116100ee578063395093511461023057806340c10f1914610243578063429b62e51461025857600080fd5b806323b872dd1461020e578063313ce5671461022157600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c578063189a5a171461018e575b600080fd5b61014361036f565b60405161015091906124e2565b60405180910390f35b61016c61016736600461256a565b610401565b6040519015158152602001610150565b6004545b604051908152602001610150565b6101d961019c366004612594565b60016020819052600091825260409091208054918101546002909101546001600160a01b039283169291821691811690600160a01b900460ff1684565b60405161015094939291906001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b61016c61021c3660046125b6565b61041b565b60405160128152602001610150565b61016c61023e36600461256a565b61043f565b61025661025136600461256a565b61047e565b005b61016c610266366004612594565b60086020526000908152604090205460ff1681565b6102566102893660046125f2565b6104f0565b61018061029c366004612594565b6001600160a01b031660009081526002602052604090205490565b6102566102c5366004612594565b610593565b61014361061c565b6102566102e036600461256a565b61062b565b61016c6102f336600461256a565b610694565b61016c61030636600461256a565b61073e565b61018061031936600461262e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600054610357906001600160a01b031681565b6040516001600160a01b039091168152602001610150565b60606005805461037e90612661565b80601f01602080910402602001604051908101604052809291908181526020018280546103aa90612661565b80156103f75780601f106103cc576101008083540402835291602001916103f7565b820191906000526020600020905b8154815290600101906020018083116103da57829003601f168201915b5050505050905090565b60003361040f81858561074c565b60019150505b92915050565b6000336104298582856108a5565b610434858585610955565b506001949350505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919061040f90829086906104799087906126e3565b61074c565b3360009081526008602052604090205460ff166104e25760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420616e2061646d696e2e00000000000000000060448201526064015b60405180910390fd5b6104ec8282610be7565b5050565b6007546001600160a01b0316331461054a5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104d9565b6001600160a01b0391909116600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6007546001600160a01b031633146105ed5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016104d9565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60606006805461037e90612661565b3360009081526008602052604090205460ff1661068a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420616e2061646d696e2e00000000000000000060448201526064016104d9565b6104ec8282610d05565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156107315760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104d9565b610434828686840361074c565b60003361040f818585610955565b6001600160a01b0383166107c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b0382166108435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461094f57818110156109425760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d9565b61094f848484840361074c565b50505050565b6001600160a01b0383166109d15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b038216610a4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b03831660009081526002602052604090205481811015610adc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610b139084906126e3565b90915550610b22905084610ec6565b15610b3057610b3084610f13565b6001600160a01b03841660009081526002602052604090205415610b5757610b57846112dc565b610b6083610ec6565b15610b6e57610b6e83610f13565b6001600160a01b03831660009081526002602052604090205415610b9557610b95836112dc565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bda91815260200190565b60405180910390a361094f565b6001600160a01b038216610c3d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d9565b8060046000828254610c4f91906126e3565b90915550506001600160a01b03821660009081526002602052604081208054839290610c7c9084906126e3565b90915550610c8b905082610ec6565b15610c9957610c9982610f13565b6001600160a01b03821660009081526002602052604090205415610cc057610cc0826112dc565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610d815760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b03821660009081526002602052604090205481811015610e105760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104d9565b6001600160a01b0383166000908152600260205260408120838303905560048054849290610e3f9084906126f6565b90915550610e4e905083610ec6565b15610e5c57610e5c83610f13565b6001600160a01b03831660009081526002602052604090205415610e8357610e83836112dc565b6040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610898565b505050565b60006001600160a01b0382161580159061041557506000546001600160a01b03838116911614806104155750506001600160a01b0390811660009081526001602052604090205416151590565b6001600160a01b0381811660009081526001602081905260408220015490918291161580610f5c57506001600160a01b0383811660009081526001602052604090206002015416155b15610f68575081610fd0565b506001600160a01b03808316600090815260016020526040902060020154165b6001600160a01b03818116600090815260016020819052604090912001541615610fd0576001600160a01b039081166000908152600160208190526040909120015416610f88565b6001600160a01b0381811660009081526001602081905260409091200154161561101a576001600160a01b038082166000908152600160208190526040909120015416915061103b565b6001600160a01b038082166000908152600160205260409020600201541691505b6001600160a01b038082166000908152600160205260408082205485841683529120805473ffffffffffffffffffffffffffffffffffffffff1916919092169081179091558015611135576001600160a01b03808216600090815260016020819052604090912001548116908316036110f2576001600160a01b03818116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff191691851691909117905561115e565b6001600160a01b038181166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff191691851691909117905561115e565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555b6001600160a01b03828116600081815260016020526040902060020154600160a01b900460ff16159186161461125c576111988386611522565b6001600160a01b03858116600090815260016020819052604080832080830154888616808652838620948501805492881673ffffffffffffffffffffffffffffffffffffffff19938416811790915586528386208054831682179055600292830180549390950180549390971692821683178755918552918420805490921681179091559054915281547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b9182900460ff1615159091021790559193915b801561126b5761126b8461164a565b50506001600160a01b03166000908152600160208190526040909120805473ffffffffffffffffffffffffffffffffffffffff199081168255918101805490921690915560020180547fffffffffffffffffffffff0000000000000000000000000000000000000000001690555050565b600080546001600160a01b03165b6001600160a01b038116156113815780915061131b816001600160a01b031660009081526002602052604090205490565b6001600160a01b038416600090815260026020526040902054101561135e576001600160a01b0390811660009081526001602081905260409091200154166112ea565b6001600160a01b03908116600090815260016020526040902060020154166112ea565b604080516080810182526001600160a01b03808516808352600060208085018281528587018381526001606088018181528c8816865293819052979093209551865490861673ffffffffffffffffffffffffffffffffffffffff19918216178755905196860180549786169790911696909617909555516002909301805494511515600160a01b027fffffffffffffffffffffff00000000000000000000000000000000000000000090951693909216929092179290921790915561146d576000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055611519565b6001600160a01b0382811660009081526002602052604080822054928616825290205410156114da576001600160a01b03828116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055611519565b6001600160a01b038281166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b610ec183611cee565b6001600160a01b038082166000908152600160205260408082205485841683529120805473ffffffffffffffffffffffffffffffffffffffff1916919092169081179091558061159b57600080546001600160a01b03851673ffffffffffffffffffffffffffffffffffffffff19909116179055505050565b6001600160a01b0380821660009081526001602081905260409091200154811690831603611607576001600160a01b03908116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff1916939091169290921790915550565b6001600160a01b039081166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff1916939091169290921790915550565b60005b6000546001600160a01b0383811691161480159061168e57506001600160a01b038216600090815260016020526040902060020154600160a01b900460ff16155b15611c80576001600160a01b03808316600081815260016020819052604080832054851680845292200154909216900361199d576001600160a01b03818116600090815260016020526040808220600290810154909316808352912090910154909250600160a01b900460ff1615611787576001600160a01b03808316600090815260016020526040808220600290810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915593851683529120018054909116600160a01b179055611766816120d3565b6001600160a01b038082166000908152600160205260409020600201541691505b6001600160a01b0382811660009081526001602081905260408083209091015490921681522060020154600160a01b900460ff161580156117f857506001600160a01b03828116600090815260016020526040808220600290810154909316825290200154600160a01b900460ff16155b1561184c576001600160a01b038216600090815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055915081611c7a565b6001600160a01b03828116600090815260016020526040808220600290810154909316825290200154600160a01b900460ff16611917576001600160a01b038083166000818152600160208190526040808320918201549094168252928120600290810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155929091529091018054909116600160a01b1790556118f6826122dc565b6001600160a01b038082166000908152600160205260409020600201541691505b6001600160a01b038082166000908152600160205260408082206002908101805487861685528385208301805460ff600160a01b938490041615159092027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff928316178155825482169092559054909416835291200180549091169055610ec1816120d3565b6001600160a01b0381811660009081526001602081905260408083209091015490921680825291902060020154909250600160a01b900460ff1615611a64576001600160a01b03808316600090815260016020526040808220600290810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915593851683529120018054909116600160a01b179055611a42816122dc565b6001600160a01b03808216600090815260016020819052604090912001541691505b6001600160a01b03828116600090815260016020526040808220600290810154909316825290200154600160a01b900460ff16158015611ad557506001600160a01b0382811660009081526001602081905260408083209091015490921681522060020154600160a01b900460ff16155b15611b29576001600160a01b038216600090815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055915081611c7a565b6001600160a01b0382811660009081526001602081905260408083209091015490921681522060020154600160a01b900460ff16611bed576001600160a01b038083166000818152600160205260408082206002908101805490951683529082200180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155919052815416600160a01b179055611bcb826120d3565b6001600160a01b03808216600090815260016020819052604090912001541691505b6001600160a01b038082166000908152600160208190526040808320600290810180548887168652838620808401805460ff600160a01b948590041615159093027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff93841617905582548216909255930154909416835290912090910180549091169055610ec1816122dc565b5061164d565b6001600160a01b038216600090815260016020526040902060020154600160a01b900460ff16156104ec57506001600160a01b0316600090815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005b6000546001600160a01b03838116911614801590611d3a57506001600160a01b038281166000908152600160205260408082205490921681522060020154600160a01b900460ff165b15612063576001600160a01b0380831660009081526001602081905260408083205484168084528184205485168452922001549091168103611eeb576001600160a01b038181166000908152600160205260408082205483168252808220600290810154909316808352912090910154909250600160a01b900460ff1615611e38576001600160a01b03808216600081815260016020526040808220600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915588871685528385208201805482169055825487168552928420018054909216600160a01b179091559190525416925061205d565b6001600160a01b03808216600090815260016020526040902060020154811690841603611e6b57809250611e6b836120d3565b506001600160a01b03808316600090815260016020526040808220548316808352818320600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155825487168652938520018054909316600160a01b1790925591829052549091611ee691166122dc565b61205d565b6001600160a01b03818116600090815260016020819052604080832054841683528083209091015490921680825291902060020154909250600160a01b900460ff1615611fae576001600160a01b03808216600081815260016020526040808220600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90811690915588871685528385208201805482169055825487168552928420018054909216600160a01b179091559190525416925061205d565b6001600160a01b0380821660009081526001602081905260409091200154811690841603611fe257809250611fe2836122dc565b506001600160a01b03808316600090815260016020526040808220548316808352818320600280820180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff908116909155825487168652938520018054909316600160a01b179092559182905254909161205d91166120d3565b50611cf1565b600080546001600160a01b0316815260016020526040902060020154600160a01b900460ff16156104ec57600080546001600160a01b0316815260016020526040902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b6001600160a01b0380821660008181526001602081905260408083206002810180549154828816808752938620909401549590945273ffffffffffffffffffffffffffffffffffffffff191693851693841790925590921690801561216e576001600160a01b038181166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff19169186169190911790555b6001600160a01b038381166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691841691821790556121d9576000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055612284565b6001600160a01b0380831660009081526001602081905260409091200154811690851603612245576001600160a01b03828116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055612284565b6001600160a01b038281166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50506001600160a01b03908116600081815260016020819052604080832090910180549490951673ffffffffffffffffffffffffffffffffffffffff1994851681179095559381529290922080549091169091179055565b6001600160a01b03808216600081815260016020819052604080832091820180549254838716808652928520600201549590945273ffffffffffffffffffffffffffffffffffffffff199092169385169384179091559216908015612377576001600160a01b038181166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff19169186169190911790555b6001600160a01b038381166000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691841691821790556123e2576000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03851617905561248c565b6001600160a01b0380831660009081526001602052604090206002015481169085160361244c576001600160a01b038281166000908152600160205260409020600201805473ffffffffffffffffffffffffffffffffffffffff191691851691909117905561248c565b6001600160a01b03828116600090815260016020819052604090912001805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50506001600160a01b0390811660008181526001602052604080822060020180549490951673ffffffffffffffffffffffffffffffffffffffff1994851681179095559381529290922080549091169091179055565b600060208083528351808285015260005b8181101561250f578581018301518582016040015282016124f3565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b80356001600160a01b038116811461256557600080fd5b919050565b6000806040838503121561257d57600080fd5b6125868361254e565b946020939093013593505050565b6000602082840312156125a657600080fd5b6125af8261254e565b9392505050565b6000806000606084860312156125cb57600080fd5b6125d48461254e565b92506125e26020850161254e565b9150604084013590509250925092565b6000806040838503121561260557600080fd5b61260e8361254e565b91506020830135801515811461262357600080fd5b809150509250929050565b6000806040838503121561264157600080fd5b61264a8361254e565b91506126586020840161254e565b90509250929050565b600181811c9082168061267557607f821691505b6020821081036126ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610415576104156126b4565b81810381811115610415576104156126b456fea2646970667358221220408979b76955335364bff94633250054e613f0cf0cd5250756c64f1e7ddfc40f64736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a4669726e20546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044649524e00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Firn Token
Arg [1] : symbol_ (string): FIRN

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 4669726e20546f6b656e00000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4649524e00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

1333:12851:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3402:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:178;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:2;;1244:22;1226:41;;1214:2;1199:18;5558:178:1;1086:187:2;4439:89:1;4509:12;;4439:89;;;1424:25:2;;;1412:2;1397:18;4439:89:1;1278:177:2;884:37:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;884:37:0;;;;;;;;;;;-1:-1:-1;;;884:37:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1955:15:2;;;1937:34;;2007:15;;;2002:2;1987:18;;1980:43;2059:15;;2054:2;2039:18;;2032:43;2118:14;;2111:22;2106:2;2091:18;;2084:50;1863:3;1848:19;;1651:489;6298:267:1;;;;;;:::i;:::-;;:::i;4305:74::-;;;4370:2;2620:36:2;;2608:2;2593:18;4305:74:1;2478:184:2;6960:224:1;;;;;;:::i;:::-;;:::i;3121:105::-;;;;;;:::i;:::-;;:::i;:::-;;1604:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3009:106;;;;;;:::i;:::-;;:::i;4586:108::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4669:18:1;4643:7;4669:18;;;:9;:18;;;;;;;4586:108;2914:89;;;;;;:::i;:::-;;:::i;3596:85::-;;;:::i;3232:105::-;;;;;;:::i;:::-;;:::i;7671:405::-;;;;;;:::i;:::-;;:::i;4890:170::-;;;;;;:::i;:::-;;:::i;5118:132::-;;;;;;:::i;:::-;-1:-1:-1;;;;;5216:18:1;;;5190:7;5216:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5118:132;817:19:0;;;;;-1:-1:-1;;;;;817:19:0;;;;;;-1:-1:-1;;;;;3448:55:2;;;3430:74;;3418:2;3403:18;817:19:0;3284:226:2;3402:81:1;3439:13;3471:5;3464:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3402:81;:::o;5558:178::-;5624:4;5656:10;5676:32;5656:10;5692:7;5701:6;5676:8;:32::i;:::-;5725:4;5718:11;;;5558:178;;;;;:::o;6298:267::-;6408:4;6442:10;6462:38;6478:4;6442:10;6493:6;6462:15;:38::i;:::-;6510:27;6520:4;6526:2;6530:6;6510:9;:27::i;:::-;-1:-1:-1;6554:4:1;;6298:267;-1:-1:-1;;;;6298:267:1:o;6960:224::-;7072:10;7040:4;5216:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;5216:27:1;;;;;;;;;;7040:4;;7072:10;7092:64;;7072:10;;5216:27;;7117:38;;7145:10;;7117:38;:::i;:::-;7092:8;:64::i;3121:105::-;1807:10;1800:18;;;;:6;:18;;;;;;;;1792:54;;;;-1:-1:-1;;;1792:54:1;;4478:2:2;1792:54:1;;;4460:21:2;4517:2;4497:18;;;4490:30;4556:25;4536:18;;;4529:53;4599:18;;1792:54:1;;;;;;;;;3197:22:::1;3203:7;3212:6;3197:5;:22::i;:::-;3121:105:::0;;:::o;3009:106::-;1702:6;;-1:-1:-1;;;;;1702:6:1;1688:10;:20;1680:57;;;;-1:-1:-1;;;1680:57:1;;4830:2:2;1680:57:1;;;4812:21:2;4869:2;4849:18;;;4842:30;4908:26;4888:18;;;4881:54;4952:18;;1680:57:1;4628:348:2;1680:57:1;-1:-1:-1;;;;;3085:15:1;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;3009:106::o;2914:89::-;1702:6;;-1:-1:-1;;;;;1702:6:1;1688:10;:20;1680:57;;;;-1:-1:-1;;;1680:57:1;;4830:2:2;1680:57:1;;;4812:21:2;4869:2;4849:18;;;4842:30;4908:26;4888:18;;;4881:54;4952:18;;1680:57:1;4628:348:2;1680:57:1;2981:6:::1;:15:::0;;-1:-1:-1;;2981:15:1::1;-1:-1:-1::0;;;;;2981:15:1;;;::::1;::::0;;;::::1;::::0;;2914:89::o;3596:85::-;3635:13;3667:7;3660:14;;;;;:::i;3232:105::-;1807:10;1800:18;;;;:6;:18;;;;;;;;1792:54;;;;-1:-1:-1;;;1792:54:1;;4478:2:2;1792:54:1;;;4460:21:2;4517:2;4497:18;;;4490:30;4556:25;4536:18;;;4529:53;4599:18;;1792:54:1;4276:347:2;1792:54:1;3308:22:::1;3314:7;3323:6;3308:5;:22::i;7671:405::-:0;7788:10;7756:4;5216:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;5216:27:1;;;;;;;;;;7756:4;;7788:10;7898:15;7878:16;:35;;7870:85;;;;-1:-1:-1;;;7870:85:1;;5183:2:2;7870:85:1;;;5165:21:2;5222:2;5202:18;;;5195:30;5261:34;5241:18;;;5234:62;5332:7;5312:18;;;5305:35;5357:19;;7870:85:1;4981:401:2;7870:85:1;7981:60;7990:5;7997:7;8025:15;8006:16;:34;7981:8;:60::i;4890:170::-;4952:4;4984:10;5004:28;4984:10;5021:2;5025:6;5004:9;:28::i;11737:362::-;-1:-1:-1;;;;;11860:19:1;;11852:68;;;;-1:-1:-1;;;11852:68:1;;5589:2:2;11852:68:1;;;5571:21:2;5628:2;5608:18;;;5601:30;5667:34;5647:18;;;5640:62;5738:6;5718:18;;;5711:34;5762:19;;11852:68:1;5387:400:2;11852:68:1;-1:-1:-1;;;;;11938:21:1;;11930:68;;;;-1:-1:-1;;;11930:68:1;;5994:2:2;11930:68:1;;;5976:21:2;6033:2;6013:18;;;6006:30;6072:34;6052:18;;;6045:62;6143:4;6123:18;;;6116:32;6165:19;;11930:68:1;5792:398:2;11930:68:1;-1:-1:-1;;;;;12009:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12060:32;;1424:25:2;;;12060:32:1;;1397:18:2;12060:32:1;;;;;;;;11737:362;;;:::o;12380:405::-;-1:-1:-1;;;;;5216:18:1;;;12502:24;5216:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;12588:17;12568:37;;12564:215;;12645:6;12625:16;:26;;12617:68;;;;-1:-1:-1;;;12617:68:1;;6397:2:2;12617:68:1;;;6379:21:2;6436:2;6416:18;;;6409:30;6475:31;6455:18;;;6448:59;6524:18;;12617:68:1;6195:353:2;12617:68:1;12711:51;12720:5;12727:7;12755:6;12736:16;:25;12711:8;:51::i;:::-;12492:293;12380:405;;;:::o;8530:994::-;-1:-1:-1;;;;;8648:18:1;;8640:68;;;;-1:-1:-1;;;8640:68:1;;6755:2:2;8640:68:1;;;6737:21:2;6794:2;6774:18;;;6767:30;6833:34;6813:18;;;6806:62;6904:7;6884:18;;;6877:35;6929:19;;8640:68:1;6553:401:2;8640:68:1;-1:-1:-1;;;;;8726:16:1;;8718:64;;;;-1:-1:-1;;;8718:64:1;;7161:2:2;8718:64:1;;;7143:21:2;7200:2;7180:18;;;7173:30;7239:34;7219:18;;;7212:62;7310:5;7290:18;;;7283:33;7333:19;;8718:64:1;6959:399:2;8718:64:1;-1:-1:-1;;;;;8864:15:1;;8842:19;8864:15;;;:9;:15;;;;;;8897:21;;;;8889:72;;;;-1:-1:-1;;;8889:72:1;;7565:2:2;8889:72:1;;;7547:21:2;7604:2;7584:18;;;7577:30;7643:34;7623:18;;;7616:62;7714:8;7694:18;;;7687:36;7740:19;;8889:72:1;7363:402:2;8889:72:1;-1:-1:-1;;;;;8987:15:1;;;;;;;:9;:15;;;;;;9005:20;;;8987:38;;9041:13;;;;;;;;:23;;9019:6;;8987:15;9041:23;;9019:6;;9041:23;:::i;:::-;;;;-1:-1:-1;9079:12:1;;-1:-1:-1;9086:4:1;9079:6;:12::i;:::-;9075:30;;;9093:12;9100:4;9093:6;:12::i;:::-;-1:-1:-1;;;;;9185:15:1;;9203:1;9185:15;;;:9;:15;;;;;;:19;9181:37;;9206:12;9213:4;9206:6;:12::i;:::-;9271:10;9278:2;9271:6;:10::i;:::-;9267:26;;;9283:10;9290:2;9283:6;:10::i;:::-;-1:-1:-1;;;;;9339:13:1;;9355:1;9339:13;;;:9;:13;;;;;;:17;9335:33;;9358:10;9365:2;9358:6;:10::i;:::-;9458:2;-1:-1:-1;;;;;9443:26:1;9452:4;-1:-1:-1;;;;;9443:26:1;;9462:6;9443:26;;;;1424:25:2;;1412:2;1397:18;;1278:177;9443:26:1;;;;;;;;9480:37;10602:712;9800:482;-1:-1:-1;;;;;9875:21:1;;9867:65;;;;-1:-1:-1;;;9867:65:1;;7972:2:2;9867:65:1;;;7954:21:2;8011:2;7991:18;;;7984:30;8050:33;8030:18;;;8023:61;8101:18;;9867:65:1;7770:355:2;9867:65:1;10019:6;10003:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;10035:18:1;;;;;;:9;:18;;;;;:28;;10057:6;;10035:18;:28;;10057:6;;10035:28;:::i;:::-;;;;-1:-1:-1;10078:15:1;;-1:-1:-1;10085:7:1;10078:6;:15::i;:::-;10074:36;;;10095:15;10102:7;10095:6;:15::i;:::-;-1:-1:-1;;;;;10124:18:1;;10145:1;10124:18;;;:9;:18;;;;;;:22;10120:43;;10148:15;10155:7;10148:6;:15::i;:::-;10179:37;;1424:25:2;;;-1:-1:-1;;;;;10179:37:1;;;10196:1;;10179:37;;1412:2:2;1397:18;10179:37:1;;;;;;;3121:105;;:::o;10602:712::-;-1:-1:-1;;;;;10677:21:1;;10669:67;;;;-1:-1:-1;;;10669:67:1;;8332:2:2;10669:67:1;;;8314:21:2;8371:2;8351:18;;;8344:30;8410:34;8390:18;;;8383:62;8481:3;8461:18;;;8454:31;8502:19;;10669:67:1;8130:397:2;10669:67:1;-1:-1:-1;;;;;10832:18:1;;10807:22;10832:18;;;:9;:18;;;;;;10869:24;;;;10861:71;;;;-1:-1:-1;;;10861:71:1;;8734:2:2;10861:71:1;;;8716:21:2;8773:2;8753:18;;;8746:30;8812:34;8792:18;;;8785:62;8883:4;8863:18;;;8856:32;8905:19;;10861:71:1;8532:398:2;10861:71:1;-1:-1:-1;;;;;10958:18:1;;;;;;:9;:18;;;;;10979:23;;;10958:44;;11018:12;:22;;10996:6;;10958:18;11018:22;;10996:6;;11018:22;:::i;:::-;;;;-1:-1:-1;11055:15:1;;-1:-1:-1;11062:7:1;11055:6;:15::i;:::-;11051:36;;;11072:15;11079:7;11072:6;:15::i;:::-;-1:-1:-1;;;;;11156:18:1;;11177:1;11156:18;;;:9;:18;;;;;;:22;11152:43;;11180:15;11187:7;11180:6;:15::i;:::-;11211:37;;1424:25:2;;;11237:1:1;;-1:-1:-1;;;;;11211:37:1;;;;;1412:2:2;1397:18;11211:37:1;1278:177:2;11259:48:1;10659:655;10602:712;;:::o;928:147:0:-;980:4;-1:-1:-1;;;;;1004:12:0;;;;;;1003:65;;-1:-1:-1;1030:4:0;;-1:-1:-1;;;;;1023:11:0;;;1030:4;;1023:11;;1022:45;;-1:-1:-1;;;;;;;1040:10:0;;;875:1;1040:10;;;:5;:10;;;;;:17;;:26;;;928:147::o;7855:1381::-;-1:-1:-1;;;;;7954:10:0;;;7903:13;7954:10;;;:5;:10;;;;;;;:15;;7903:13;;;;7954:15;:24;;:53;;-1:-1:-1;;;;;;7982:10:0;;;875:1;7982:10;;;:5;:10;;;;;:16;;;;:25;7954:53;7950:261;;;-1:-1:-1;8032:3:0;7950:261;;;-1:-1:-1;;;;;;8075:10:0;;;;;;;:5;:10;;;;;:16;;;;8105:96;-1:-1:-1;;;;;8112:13:0;;;875:1;8112:13;;;:5;:13;;;;;;;;:18;;;:27;8105:96;;-1:-1:-1;;;;;8168:13:0;;;;;;;:5;:13;;;;;;;;:18;;;8105:96;;;-1:-1:-1;;;;;8224:13:0;;;875:1;8224:13;;;:5;:13;;;;;;;;:18;;;:27;8220:142;;-1:-1:-1;;;;;8275:13:0;;;;;;;:5;:13;;;;;;;;:18;;;;-1:-1:-1;8220:142:0;;;-1:-1:-1;;;;;8332:13:0;;;;;;;:5;:13;;;;;:19;;;;;-1:-1:-1;8220:142:0;-1:-1:-1;;;;;8389:13:0;;;8371:15;8389:13;;;:5;:13;;;;;;:20;8419:12;;;;;;;:29;;-1:-1:-1;;8419:29:0;8389:20;;;;8419:29;;;;;;8462:16;;8458:251;;-1:-1:-1;;;;;8508:14:0;;;;;;;:5;:14;;;;;;;;:19;;;;8498:29;;;;8494:162;;-1:-1:-1;;;;;8547:14:0;;;;;;;:5;:14;;;;;;;;:19;:27;;-1:-1:-1;;8547:27:0;;;;;;;;;;8458:251;;8494:162;-1:-1:-1;;;;;8613:14:0;;;;;;;:5;:14;;;;;:20;;:28;;-1:-1:-1;;8613:28:0;;;;;;;;;;8458:251;;;8686:4;:12;;-1:-1:-1;;8686:12:0;-1:-1:-1;;;;;8686:12:0;;;;;8458:251;-1:-1:-1;;;;;8734:13:0;;;8718:12;8734:13;;;:5;:13;;;;;:17;;;-1:-1:-1;;;8734:17:0;;;;8733:18;;8765:13;;;8761:374;;8794:26;8808:6;8816:3;8794:13;:26::i;:::-;-1:-1:-1;;;;;8855:10:0;;;;;;;:5;:10;;;;;;;;:15;;;;8834:13;;;;;;;;;:18;;;:36;;8855:15;;;-1:-1:-1;;8834:36:0;;;;;;;;8884:25;;;;;:41;;;;;;;;8961:16;;;;;;8939:19;;;;:38;;8961:16;;;;8939:38;;;;;;;8991:26;;;;;;:42;;;;;;;;;;9067:14;;9047:13;;:34;;;;-1:-1:-1;;;9067:14:0;;;;;;9047:34;;;;;;;;8834:13;;8855:10;8761:374;9148:7;9144:56;;;9171:18;9183:5;9171:11;:18::i;:::-;-1:-1:-1;;;;;;;9216:13:0;;;;;:5;:13;;;;;;;;9209:20;;-1:-1:-1;;9209:20:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7855:1381:0:o;4327:674::-;4375:14;4423:4;;-1:-1:-1;;;;;4423:4:0;4437:233;-1:-1:-1;;;;;4444:14:0;;;4437:233;;4483:5;4474:14;;4521;4529:5;-1:-1:-1;;;;;4669:18:1;4643:7;4669:18;;;:9;:18;;;;;;;4586:108;4521:14:0;-1:-1:-1;;;;;4669:18:1;;4643:7;4669:18;;;:9;:18;;;;;;4506:29:0;4502:158;;;-1:-1:-1;;;;;4563:12:0;;;;;;;:5;:12;;;;;;;;:17;;;4437:233;;4502:158;-1:-1:-1;;;;;4627:12:0;;;;;;;:5;:12;;;;;:18;;;;4437:233;;;4692:64;;;;;;;;-1:-1:-1;;;;;4692:64:0;;;;;;-1:-1:-1;4692:64:0;;;;;;;;;;;;;4750:4;4692:64;;;;;;4679:10;;;;;;;;;;;;;:77;;;;;;;-1:-1:-1;;4679:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4679:77:0;;;;;;;;;;;;;;;;;;;;4766:203;;4801:4;:10;;-1:-1:-1;;4801:10:0;-1:-1:-1;;;;;4801:10:0;;;;;4766:203;;;-1:-1:-1;;;;;4669:18:1;;;4643:7;4669:18;;;:9;:18;;;;;;;;;;;;;;;4832:30:0;4828:141;;;-1:-1:-1;;;;;4878:13:0;;;;;;;:5;:13;;;;;;;;:18;:24;;-1:-1:-1;;4878:24:0;;;;;;;;;;4828:141;;;-1:-1:-1;;;;;4933:13:0;;;;;;;:5;:13;;;;;:19;;:25;;-1:-1:-1;;4933:25:0;;;;;;;;;;4828:141;4978:16;4990:3;4978:11;:16::i;5007:382::-;-1:-1:-1;;;;;5089:8:0;;;5071:15;5089:8;;;:5;:8;;;;;;:15;5114:8;;;;;;;:25;;-1:-1:-1;;5114:25:0;5089:15;;;;5114:25;;;;;;5089:15;5149:234;;5185:4;:8;;-1:-1:-1;;;;;5185:8:0;;-1:-1:-1;;5185:8:0;;;;;;10659:655:1;10602:712;;:::o;5149:234:0:-;-1:-1:-1;;;;;5233:14:0;;;;;;;:5;:14;;;;;;;;:19;;;;5228:24;;;;5224:149;;-1:-1:-1;;;;;5272:14:0;;;;;;;:5;:14;;;;;;;;:19;:23;;-1:-1:-1;;5272:23:0;;;;;;;;;;;;-1:-1:-1;10602:712:1:o;5224:149:0:-;-1:-1:-1;;;;;5334:14:0;;;;;;;:5;:14;;;;;:20;;:24;;-1:-1:-1;;5334:24:0;;;;;;;;;;;;-1:-1:-1;5007:382:0:o;5395:2454::-;5448:14;5472:2319;5486:4;;-1:-1:-1;;;;;5479:11:0;;;5486:4;;5479:11;;;;:30;;-1:-1:-1;;;;;;5495:10:0;;;;;;:5;:10;;;;;:14;;;-1:-1:-1;;;5495:14:0;;;;5494:15;5479:30;5472:2319;;;-1:-1:-1;;;;;5545:10:0;;;5525:17;5545:10;;;:5;:10;;;;;;;;:17;;;5587:16;;;;;:21;;5545:17;;5587:21;5580:28;;5576:2205;;-1:-1:-1;;;;;5637:16:0;;;;;;;:5;:16;;;;;;:22;;;;;;;;5681:13;;;;;:17;;;;5637:22;;-1:-1:-1;;;;5681:17:0;;;;5677:234;;;-1:-1:-1;;;;;5722:13:0;;;5742:5;5722:13;;;:5;:13;;;;;;:17;;;;:25;;;;;;;;;5769:16;;;;;;;:20;:27;;;;;-1:-1:-1;;;5769:27:0;;;5818:21;5775:9;5818:10;:21::i;:::-;-1:-1:-1;;;;;5870:16:0;;;;;;;:5;:16;;;;;:22;;;;;-1:-1:-1;5677:234:0;-1:-1:-1;;;;;5939:13:0;;;5933:25;5939:13;;;5933:5;5939:13;;;;;;;;:18;;;;;;;5933:25;;;:29;;;-1:-1:-1;;;5933:29:0;;;;5932:30;:65;;;;-1:-1:-1;;;;;;5973:13:0;;;5967:26;5973:13;;;5967:5;5973:13;;;;;;:19;;;;;;;;5967:26;;;;:30;;-1:-1:-1;;;5967:30:0;;;;5966:31;5932:65;5928:752;;;-1:-1:-1;;;;;6021:13:0;;;;;;6041:4;6021:13;;;;;:17;;:24;;;;-1:-1:-1;;;6021:24:0;;;6073:9;-1:-1:-1;6073:9:0;5576:2205;;5928:752;-1:-1:-1;;;;;6140:13:0;;;6134:26;6140:13;;;6134:5;6140:13;;;;;;:19;;;;;;;;6134:26;;;;:30;;-1:-1:-1;;;6134:30:0;;;;6129:275;;-1:-1:-1;;;;;6198:13:0;;;6224:5;6198:13;;;6192:5;6198:13;;;;;;;;:18;;;;;;;6192:25;;;;;:29;;;;:37;;;;;;;;;6255:13;;;;:17;;;:24;;;;;-1:-1:-1;;;6255:24:0;;;6305:19;6204:6;6305:11;:19::i;:::-;-1:-1:-1;;;;;6359:16:0;;;;;;;:5;:16;;;;;:22;;;;;-1:-1:-1;6129:275:0;-1:-1:-1;;;;;6445:16:0;;;;;;;:5;:16;;;;;;:20;;;;;;6425:13;;;;;;;;:17;;:40;;6445:20;-1:-1:-1;;;6445:20:0;;;;;6425:40;;;;;;;;;;;;6487:28;;;;;;;6543:19;;;;;6537:26;;;;:30;:38;;;;;;;6597:21;6451:9;6597:10;:21::i;5576:2205::-;-1:-1:-1;;;;;6727:16:0;;;;;;;:5;:16;;;;;;;;:21;;;;;;;6770:13;;;;;;:17;;;6727:21;;-1:-1:-1;;;;6770:17:0;;;;6766:234;;;-1:-1:-1;;;;;6811:13:0;;;6831:5;6811:13;;;:5;:13;;;;;;:17;;;;:25;;;;;;;;;6858:16;;;;;;;:20;:27;;;;;-1:-1:-1;;;6858:27:0;;;6907:22;6864:9;6907:11;:22::i;:::-;-1:-1:-1;;;;;6960:16:0;;;;;;;:5;:16;;;;;;;;:21;;;;-1:-1:-1;6766:234:0;-1:-1:-1;;;;;7028:13:0;;;7022:26;7028:13;;;7022:5;7028:13;;;;;;:19;;;;;;;;7022:26;;;;:30;;-1:-1:-1;;;7022:30:0;;;;7021:31;:65;;;;-1:-1:-1;;;;;;7063:13:0;;;7057:25;7063:13;;;7057:5;7063:13;;;;;;;;:18;;;;;;;7057:25;;;:29;;;-1:-1:-1;;;7057:29:0;;;;7056:30;7021:65;7017:750;;;-1:-1:-1;;;;;7110:13:0;;;;;;7130:4;7110:13;;;;;:17;;:24;;;;-1:-1:-1;;;7110:24:0;;;7162:9;-1:-1:-1;7162:9:0;7017:750;;;-1:-1:-1;;;;;7229:13:0;;;7223:25;7229:13;;;7223:5;7229:13;;;;;;;;:18;;;;;;;7223:25;;;:29;;;-1:-1:-1;;;7223:29:0;;;;7218:273;;-1:-1:-1;;;;;7286:13:0;;;7313:5;7286:13;;;7280:5;7286:13;;;;;;:19;;;;;;;;;7280:26;;;;;:30;:38;;;;;;;;;7344:13;;;:24;;;-1:-1:-1;;;7344:24:0;;;7394:18;7292:6;7394:10;:18::i;:::-;-1:-1:-1;;;;;7447:16:0;;;;;;;:5;:16;;;;;;;;:21;;;;-1:-1:-1;7218:273:0;-1:-1:-1;;;;;7532:16:0;;;;;;;:5;:16;;;;;;;;:20;;;;;;7512:13;;;;;;;;:17;;;:40;;7532:20;-1:-1:-1;;;7532:20:0;;;;;7512:40;;;;;;;;;;;;7574:28;;;;;;;7630:18;;;;;;7624:25;;;;;:29;;;:37;;;;;;;7683:22;7538:9;7683:11;:22::i;7017:750::-;5511:2280;5472:2319;;;-1:-1:-1;;;;;7804:10:0;;;;;;:5;:10;;;;;:14;;;-1:-1:-1;;;7804:14:0;;;;7800:42;;;-1:-1:-1;;;;;;7820:10:0;7837:5;7820:10;;;:5;:10;;;;;:14;;:22;;;;;;5395:2454::o;2487:1834::-;2540:14;2564:1697;2578:4;;-1:-1:-1;;;;;2571:11:0;;;2578:4;;2571:11;;;;:43;;-1:-1:-1;;;;;;2592:10:0;;;2586:24;2592:10;;;2586:5;2592:10;;;;;;:17;;;;2586:24;;;:28;;;-1:-1:-1;;;2586:28:0;;;;2571:43;2564:1697;;;-1:-1:-1;;;;;2650:10:0;;;2630:17;2650:10;;;:5;:10;;;;;;;;:17;;;2704:16;;;;;;:23;;;2698:30;;;;:35;;2650:17;;2698:35;2685:48;;2681:1570;;-1:-1:-1;;;;;2768:16:0;;;2762:30;2768:16;;;2762:5;2768:16;;;;;;:23;;;2762:30;;;;;:36;;;;;;;;2820:13;;;;;:17;;;;2762:36;;-1:-1:-1;;;;2820:17:0;;;;2816:661;;;-1:-1:-1;;;;;2861:16:0;;;2884:5;2861:16;;;:5;:16;;;;;;:20;;;;:28;;;;;;;;;2911:13;;;;;;;;:17;;:25;;;;;;2964:23;;;;2958:30;;;;;:34;:41;;;;;-1:-1:-1;;;2958:41:0;;;;3027:16;;;:23;;;-1:-1:-1;2681:1570:0;;2816:661;-1:-1:-1;;;;;3108:16:0;;;;;;;:5;:16;;;;;:22;;;;;3101:29;;;;3097:140;;3164:9;3158:15;;3199;3210:3;3199:10;:15::i;:::-;-1:-1:-1;;;;;;3270:10:0;;;;;;;:5;:10;;;;;;:17;;;3309:16;;;;;;:20;;;;:28;;;;;;;;;3365:23;;;;3359:30;;;;;:34;:41;;;;;-1:-1:-1;;;3359:41:0;;;;3434:16;;;;:23;3270:17;;3422:36;;3434:23;3422:11;:36::i;:::-;2681:1570;;;-1:-1:-1;;;;;3530:16:0;;;3524:30;3530:16;;;3524:5;3530:16;;;;;;;;:23;;;3524:30;;;;;:35;;;;;;;3581:13;;;;;;:17;;;3524:35;;-1:-1:-1;;;;3581:17:0;;;;3577:660;;;-1:-1:-1;;;;;3622:16:0;;;3645:5;3622:16;;;:5;:16;;;;;;:20;;;;:28;;;;;;;;;3672:13;;;;;;;;:17;;:25;;;;;;3725:23;;;;3719:30;;;;;:34;:41;;;;;-1:-1:-1;;;3719:41:0;;;;3788:16;;;:23;;;-1:-1:-1;3577:660:0;;;-1:-1:-1;;;;;3869:16:0;;;;;;;:5;:16;;;;;;;;:21;;;;3862:28;;;;3858:140;;3924:9;3918:15;;3959:16;3971:3;3959:11;:16::i;:::-;-1:-1:-1;;;;;;4031:10:0;;;;;;;:5;:10;;;;;;:17;;;4070:16;;;;;;:20;;;;:28;;;;;;;;;4126:23;;;;4120:30;;;;;:34;:41;;;;;-1:-1:-1;;;4120:41:0;;;;4194:16;;;;:23;4031:17;;4183:35;;4194:23;4183:10;:35::i;:::-;2616:1645;2564:1697;;;4274:11;4280:4;;-1:-1:-1;;;;;4280:4:0;4274:11;;:5;:11;;;;;:15;;;-1:-1:-1;;;4274:15:0;;;;4270:44;;;4309:5;4297:4;;-1:-1:-1;;;;;4297:4:0;4291:11;;:5;:11;;;;;:15;;:23;;;;;;2530:1791;2487:1834;:::o;1157:656::-;-1:-1:-1;;;;;1226:10:0;;;1209:14;1226:10;;;:5;:10;;;;;;;;:16;;;;;1272:17;;1226:16;;;1320:13;;;;;;:18;;;;1348:10;;;;-1:-1:-1;;1348:29:0;1320:18;;;1348:29;;;;;;1226:16;;1272:17;;1391:19;;1387:80;;-1:-1:-1;;;;;1426:17:0;;;;;;;:5;:17;;;;;:30;;-1:-1:-1;;1426:30:0;;;;;;;;;;1387:80;-1:-1:-1;;;;;1476:13:0;;;;;;;:5;:13;;;;;:32;;-1:-1:-1;;1476:32:0;;;;;;;;;1518:219;;1556:4;:13;;-1:-1:-1;;1556:13:0;-1:-1:-1;;;;;1556:13:0;;;;;1518:219;;;-1:-1:-1;;;;;1597:16:0;;;;;;;:5;:16;;;;;;;;:21;;;;1590:28;;;;1586:151;;-1:-1:-1;;;;;1634:16:0;;;;;;;:5;:16;;;;;;;;:21;:30;;-1:-1:-1;;1634:30:0;;;;;;;;;;1586:151;;;-1:-1:-1;;;;;1695:16:0;;;;;;;:5;:16;;;;;:22;;:31;;-1:-1:-1;;1695:31:0;;;;;;;;;;1586:151;-1:-1:-1;;;;;;;1746:13:0;;;;;;;:5;:13;;;;;;;;:18;;;:24;;;;;;-1:-1:-1;;1746:24:0;;;;;;;;1780:10;;;;;;;:26;;;;;;;;;;1157:656::o;1819:662::-;-1:-1:-1;;;;;1889:10:0;;;1872:14;1889:10;;;:5;:10;;;;;;;;:15;;;;;1934:17;;1889:15;;;1983:13;;;;;;:19;;;2012:10;;;;-1:-1:-1;;2012:29:0;;;1983:19;;;2012:29;;;;;;1889:15;1934:17;;2055:20;;2051:82;;-1:-1:-1;;;;;2091:18:0;;;;;;;:5;:18;;;;;:31;;-1:-1:-1;;2091:31:0;;;;;;;;;;2051:82;-1:-1:-1;;;;;2142:13:0;;;;;;;:5;:13;;;;;:32;;-1:-1:-1;;2142:32:0;;;;;;;;;2184:220;;2222:4;:13;;-1:-1:-1;;2222:13:0;-1:-1:-1;;;;;2222:13:0;;;;;2184:220;;;-1:-1:-1;;;;;2263:16:0;;;;;;;:5;:16;;;;;:22;;;;;2256:29;;;;2252:152;;-1:-1:-1;;;;;2301:16:0;;;;;;;:5;:16;;;;;:22;;:31;;-1:-1:-1;;2301:31:0;;;;;;;;;;2252:152;;;-1:-1:-1;;;;;2363:16:0;;;;;;;:5;:16;;;;;;;;:21;:30;;-1:-1:-1;;2363:30:0;;;;;;;;;;2252:152;-1:-1:-1;;;;;;;2413:13:0;;;;;;;:5;:13;;;;;;:19;;:25;;;;;;-1:-1:-1;;2413:25:0;;;;;;;;2448:10;;;;;;;:26;;;;;;;;;;1819:662::o;14:607:2:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;-1:-1:-1;;;;;743:54:2;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:2:o;1460:186::-;1519:6;1572:2;1560:9;1551:7;1547:23;1543:32;1540:52;;;1588:1;1585;1578:12;1540:52;1611:29;1630:9;1611:29;:::i;:::-;1601:39;1460:186;-1:-1:-1;;;1460:186:2:o;2145:328::-;2222:6;2230;2238;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;2330:29;2349:9;2330:29;:::i;:::-;2320:39;;2378:38;2412:2;2401:9;2397:18;2378:38;:::i;:::-;2368:48;;2463:2;2452:9;2448:18;2435:32;2425:42;;2145:328;;;;;:::o;2667:347::-;2732:6;2740;2793:2;2781:9;2772:7;2768:23;2764:32;2761:52;;;2809:1;2806;2799:12;2761:52;2832:29;2851:9;2832:29;:::i;:::-;2822:39;;2911:2;2900:9;2896:18;2883:32;2958:5;2951:13;2944:21;2937:5;2934:32;2924:60;;2980:1;2977;2970:12;2924:60;3003:5;2993:15;;;2667:347;;;;;:::o;3019:260::-;3087:6;3095;3148:2;3136:9;3127:7;3123:23;3119:32;3116:52;;;3164:1;3161;3154:12;3116:52;3187:29;3206:9;3187:29;:::i;:::-;3177:39;;3235:38;3269:2;3258:9;3254:18;3235:38;:::i;:::-;3225:48;;3019:260;;;;;:::o;3515:437::-;3594:1;3590:12;;;;3637;;;3658:61;;3712:4;3704:6;3700:17;3690:27;;3658:61;3765:2;3757:6;3754:14;3734:18;3731:38;3728:218;;3802:77;3799:1;3792:88;3903:4;3900:1;3893:15;3931:4;3928:1;3921:15;3728:218;;3515:437;;;:::o;3957:184::-;4009:77;4006:1;3999:88;4106:4;4103:1;4096:15;4130:4;4127:1;4120:15;4146:125;4211:9;;;4232:10;;;4229:36;;;4245:18;;:::i;8935:128::-;9002:9;;;9023:11;;;9020:37;;;9037:18;;:::i

Swarm Source

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