ETH Price: $2,469.29 (+0.33%)

Token

Accelerator Crystal (ACC)
 

Overview

Max Total Supply

419 ACC

Holders

273

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
alexnzt48.eth
0x335f9758a12693db9be0bef3668fbc26fce18e95
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ACCELERATORS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-22
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/*
ERC1155 Dependencies Project
To resolve the base dependencies for ERC1155 Standard in one file
*/

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IERC1155 {
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);
    event URI(string value, uint256 indexed id);
    function balanceOf(address account, uint256 id) external view returns (uint256);
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);
    function setApprovalForAll(address operator, bool approved) external;
    function isApprovedForAll(address account, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}

interface IERC1155Receiver {
    function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data) external returns (bytes4);
    function onERC1155BatchReceived(address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data) external returns (bytes4);
}

interface IERC1155MetadataURI {
    function uri(uint256 id) external view returns (string memory);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is 0x address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract Functional {
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    
    bool private _reentryKey = false;
    modifier reentryLock {
        require(!_reentryKey, "attempt reenter locked function");
        _reentryKey = true;
        _;
        _reentryKey = false;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

//*****************************************************************************************
//***************************** CONTRACT CODE STARTS HERE *********************************
//*****************************************************************************************

contract ACCELERATORS is Functional, Ownable, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;
    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    string private _uri; //This has to stay here because functions here depend on it
    string public name;
    string public symbol;

    //GOLD = 1;
    //SILVER = 2;
    //BRONZE = 3;
    // Future Crystals ??? ;)
    
    constructor() {
        _setURI("https://collectorsclub.io/api/crystals/metadata?seriesId=");
        name = "Accelerator Crystal";
        symbol = "ACC";
    }

    function airdrop(address[] memory holderlist, uint256 seriesId) external onlyOwner {
        for(uint256 i; i < holderlist.length; i++){
            _mint(holderlist[i], seriesId, 1, "");
        }
    }

    function changeURI(string memory newURI) external onlyOwner {
        _setURI(newURI);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
    function uri(uint256 seriesId) public view virtual override returns (string memory) {
        return string(abi.encodePacked( _uri, toString(seriesId) ));
    }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC1155-isApprovedForAll}.
     */
    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

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

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

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

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][account] += amount;
        emit TransferSingle(operator, address(0), account, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `account`
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address account,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

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

        emit TransferSingle(operator, account, address(0), id, amount);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(
        address account,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

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

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address[]","name":"holderlist","type":"address[]"},{"internalType":"uint256","name":"seriesId","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"changeURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"seriesId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526000805460ff191690553480156200001b57600080fd5b506200002733620000c5565b6200004b6040518060600160405280603981526020016200250c603991396200011e565b6040805180820190915260138082527f416363656c657261746f72204372797374616c000000000000000000000000006020909201918252620000919160049162000137565b506040805180820190915260038082526241434360e81b6020909201918252620000be9160059162000137565b506200021a565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516200013390600390602084019062000137565b5050565b8280546200014590620001dd565b90600052602060002090601f016020900481019282620001695760008555620001b4565b82601f106200018457805160ff1916838001178555620001b4565b82800160010185558215620001b4579182015b82811115620001b457825182559160200191906001019062000197565b50620001c2929150620001c6565b5090565b5b80821115620001c25760008155600101620001c7565b600181811c90821680620001f257607f821691505b602082108114156200021457634e487b7160e01b600052602260045260246000fd5b50919050565b6122e2806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c80638da5cb5b11610097578063e5e01c1111610066578063e5e01c1114610218578063e985e9c51461022b578063f242432a14610274578063f2fde38b1461028757600080fd5b80638da5cb5b146101a757806395d89b41146101ea578063a22cb465146101f2578063c204642c1461020557600080fd5b80630e89341c116100d35780630e89341c146101575780632eb2c2d61461016a5780634e1273f41461017f578063715018a61461019f57600080fd5b8062fdd58e146100f957806301ffc9a71461011f57806306fdde0314610142575b600080fd5b61010c610107366004611b87565b61029a565b6040519081526020015b60405180910390f35b61013261012d366004611c5a565b61035f565b6040519015158152602001610116565b61014a610444565b6040516101169190611f68565b61014a610165366004611cdd565b6104d2565b61017d610178366004611a3c565b610506565b005b61019261018d366004611bb1565b6105b5565b6040516101169190611f30565b61017d6106f3565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1660405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610116565b61014a61076c565b61017d610200366004611b4b565b610779565b61017d610213366004611c15565b61089c565b61017d610226366004611c94565b610961565b610132610239366004611a09565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b61017d610282366004611ae6565b6109da565b61017d6102953660046119ee565b610a82565b600073ffffffffffffffffffffffffffffffffffffffff831661032a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b50600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103f257507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061043e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6004805461045190612012565b80601f016020809104026020016040519081016040528092919081815260200182805461047d90612012565b80156104ca5780601f1061049f576101008083540402835291602001916104ca565b820191906000526020600020905b8154815290600101906020018083116104ad57829003601f168201915b505050505081565b606060036104df83610b5b565b6040516020016104f0929190611d97565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff851633148061052f575061052f8533610239565b6105a15760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610321565b6105ae8585858585610c95565b5050505050565b6060815183511461062e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610321565b6000835167ffffffffffffffff81111561064a5761064a61218b565b604051908082528060200260200182016040528015610673578160200160208202803683370190505b50905060005b84518110156106eb576106be8582815181106106975761069761215c565b60200260200101518583815181106106b1576106b161215c565b602002602001015161029a565b8282815181106106d0576106d061215c565b60209081029190910101526106e4816120b1565b9050610679565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146107605760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b61076a6000610f84565b565b6005805461045190612012565b3373ffffffffffffffffffffffffffffffffffffffff831614156108055760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610321565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146109095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b60005b825181101561095c5761094a83828151811061092a5761092a61215c565b602002602001015183600160405180602001604052806000815250611001565b80610954816120b1565b91505061090c565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146109ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b6109d781611150565b50565b73ffffffffffffffffffffffffffffffffffffffff8516331480610a035750610a038533610239565b610a755760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152608401610321565b6105ae8585858585611167565b60005473ffffffffffffffffffffffffffffffffffffffff610100909104163314610aef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b73ffffffffffffffffffffffffffffffffffffffff8116610b525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a206e6577206f776e657220697320307820616464726573736044820152606401610321565b6109d781610f84565b606081610b9b57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610bc55780610baf816120b1565b9150610bbe9050600a83611fb7565b9150610b9f565b60008167ffffffffffffffff811115610be057610be061218b565b6040519080825280601f01601f191660200182016040528015610c0a576020820181803683370190505b5090505b8415610c8d57610c1f600183611fcb565b9150610c2c600a866120ea565b610c37906030611f9f565b60f81b818381518110610c4c57610c4c61215c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610c86600a86611fb7565b9450610c0e565b949350505050565b8151835114610d0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610321565b73ffffffffffffffffffffffffffffffffffffffff8416610d955760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610321565b3360005b8451811015610eef576000858281518110610db657610db661215c565b602002602001015190506000858381518110610dd457610dd461215c565b602090810291909101810151600084815260018352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610e885760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152608401610321565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610ed4908490611f9f565b9250508190555050505080610ee8906120b1565b9050610d99565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f66929190611f43565b60405180910390a4610f7c818787878787611368565b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b73ffffffffffffffffffffffffffffffffffffffff841661108a5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610321565b336110a48160008761109b886115b4565b6105ae886115b4565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080548592906110e3908490611f9f565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff80881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46105ae816000878787876115ff565b80516111639060039060208401906117a1565b5050565b73ffffffffffffffffffffffffffffffffffffffff84166111f05760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610321565b3361120081878761109b886115b4565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a168452909152902054838110156112a65760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152608401610321565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168552925280832087850390559088168252812080548692906112f2908490611f9f565b9091555050604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461135f8288888888886115ff565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610f7c576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c81906113df9089908990889088908890600401611e75565b602060405180830381600087803b1580156113f957600080fd5b505af1925050508015611447575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261144491810190611c77565b60015b6114fd576114536121ba565b806308c379a0141561148d57506114686121d6565b80611473575061148f565b8060405162461bcd60e51b81526004016103219190611f68565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610321565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461135f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608401610321565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106115ee576115ee61215c565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610f7c576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906116769089908990889088908890600401611ee0565b602060405180830381600087803b15801561169057600080fd5b505af19250505080156116de575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526116db91810190611c77565b60015b6116ea576114536121ba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461135f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608401610321565b8280546117ad90612012565b90600052602060002090601f0160209004810192826117cf5760008555611815565b82601f106117e857805160ff1916838001178555611815565b82800160010185558215611815579182015b828111156118155782518255916020019190600101906117fa565b50611821929150611825565b5090565b5b808211156118215760008155600101611826565b600067ffffffffffffffff8311156118545761185461218b565b60405161188960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8701160182612066565b80915083815284848401111561189e57600080fd5b83836020830137600060208583010152509392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146118da57600080fd5b919050565b600082601f8301126118f057600080fd5b813560206118fd82611f7b565b60405161190a8282612066565b8381528281019150858301600585901b8701840188101561192a57600080fd5b60005b858110156119505761193e826118b6565b8452928401929084019060010161192d565b5090979650505050505050565b600082601f83011261196e57600080fd5b8135602061197b82611f7b565b6040516119888282612066565b8381528281019150858301600585901b870184018810156119a857600080fd5b60005b85811015611950578135845292840192908401906001016119ab565b600082601f8301126119d857600080fd5b6119e78383356020850161183a565b9392505050565b600060208284031215611a0057600080fd5b6119e7826118b6565b60008060408385031215611a1c57600080fd5b611a25836118b6565b9150611a33602084016118b6565b90509250929050565b600080600080600060a08688031215611a5457600080fd5b611a5d866118b6565b9450611a6b602087016118b6565b9350604086013567ffffffffffffffff80821115611a8857600080fd5b611a9489838a0161195d565b94506060880135915080821115611aaa57600080fd5b611ab689838a0161195d565b93506080880135915080821115611acc57600080fd5b50611ad9888289016119c7565b9150509295509295909350565b600080600080600060a08688031215611afe57600080fd5b611b07866118b6565b9450611b15602087016118b6565b93506040860135925060608601359150608086013567ffffffffffffffff811115611b3f57600080fd5b611ad9888289016119c7565b60008060408385031215611b5e57600080fd5b611b67836118b6565b915060208301358015158114611b7c57600080fd5b809150509250929050565b60008060408385031215611b9a57600080fd5b611ba3836118b6565b946020939093013593505050565b60008060408385031215611bc457600080fd5b823567ffffffffffffffff80821115611bdc57600080fd5b611be8868387016118df565b93506020850135915080821115611bfe57600080fd5b50611c0b8582860161195d565b9150509250929050565b60008060408385031215611c2857600080fd5b823567ffffffffffffffff811115611c3f57600080fd5b611c4b858286016118df565b95602094909401359450505050565b600060208284031215611c6c57600080fd5b81356119e78161227e565b600060208284031215611c8957600080fd5b81516119e78161227e565b600060208284031215611ca657600080fd5b813567ffffffffffffffff811115611cbd57600080fd5b8201601f81018413611cce57600080fd5b610c8d8482356020840161183a565b600060208284031215611cef57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611d2657815187529582019590820190600101611d0a565b509495945050505050565b60008151808452611d49816020860160208601611fe2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151611d8d818560208601611fe2565b9290920192915050565b600080845481600182811c915080831680611db357607f831692505b6020808410821415611dec577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611e005760018114611e2f57611e5c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611e5c565b60008b81526020902060005b86811015611e545781548b820152908501908301611e3b565b505084890196505b505050505050611e6c8185611d7b565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a06040830152611eae60a0830186611cf6565b8281036060840152611ec08186611cf6565b90508281036080840152611ed48185611d31565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611f2560a0830184611d31565b979650505050505050565b6020815260006119e76020830184611cf6565b604081526000611f566040830185611cf6565b8281036020840152611e6c8185611cf6565b6020815260006119e76020830184611d31565b600067ffffffffffffffff821115611f9557611f9561218b565b5060051b60200190565b60008219821115611fb257611fb26120fe565b500190565b600082611fc657611fc661212d565b500490565b600082821015611fdd57611fdd6120fe565b500390565b60005b83811015611ffd578181015183820152602001611fe5565b8381111561200c576000848401525b50505050565b600181811c9082168061202657607f821691505b60208210811415612060577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156120aa576120aa61218b565b6040525050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156120e3576120e36120fe565b5060010190565b6000826120f9576120f961212d565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156121d35760046000803e5060005160e01c5b90565b600060443d10156121e45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff816024840111818411171561223257505050505090565b828501915081518181111561224a5750505050505090565b843d87010160208285010111156122645750505050505090565b61227360208286010187612066565b509095945050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109d757600080fdfea26469706673582212208e525d76876dc617bd4290eeb83fac1ec395b5e8b36734094d79766199567e2f64736f6c6343000807003368747470733a2f2f636f6c6c6563746f7273636c75622e696f2f6170692f6372797374616c732f6d657461646174613f73657269657349643d

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f45760003560e01c80638da5cb5b11610097578063e5e01c1111610066578063e5e01c1114610218578063e985e9c51461022b578063f242432a14610274578063f2fde38b1461028757600080fd5b80638da5cb5b146101a757806395d89b41146101ea578063a22cb465146101f2578063c204642c1461020557600080fd5b80630e89341c116100d35780630e89341c146101575780632eb2c2d61461016a5780634e1273f41461017f578063715018a61461019f57600080fd5b8062fdd58e146100f957806301ffc9a71461011f57806306fdde0314610142575b600080fd5b61010c610107366004611b87565b61029a565b6040519081526020015b60405180910390f35b61013261012d366004611c5a565b61035f565b6040519015158152602001610116565b61014a610444565b6040516101169190611f68565b61014a610165366004611cdd565b6104d2565b61017d610178366004611a3c565b610506565b005b61019261018d366004611bb1565b6105b5565b6040516101169190611f30565b61017d6106f3565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1660405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610116565b61014a61076c565b61017d610200366004611b4b565b610779565b61017d610213366004611c15565b61089c565b61017d610226366004611c94565b610961565b610132610239366004611a09565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b61017d610282366004611ae6565b6109da565b61017d6102953660046119ee565b610a82565b600073ffffffffffffffffffffffffffffffffffffffff831661032a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b50600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103f257507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061043e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6004805461045190612012565b80601f016020809104026020016040519081016040528092919081815260200182805461047d90612012565b80156104ca5780601f1061049f576101008083540402835291602001916104ca565b820191906000526020600020905b8154815290600101906020018083116104ad57829003601f168201915b505050505081565b606060036104df83610b5b565b6040516020016104f0929190611d97565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff851633148061052f575061052f8533610239565b6105a15760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610321565b6105ae8585858585610c95565b5050505050565b6060815183511461062e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610321565b6000835167ffffffffffffffff81111561064a5761064a61218b565b604051908082528060200260200182016040528015610673578160200160208202803683370190505b50905060005b84518110156106eb576106be8582815181106106975761069761215c565b60200260200101518583815181106106b1576106b161215c565b602002602001015161029a565b8282815181106106d0576106d061215c565b60209081029190910101526106e4816120b1565b9050610679565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146107605760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b61076a6000610f84565b565b6005805461045190612012565b3373ffffffffffffffffffffffffffffffffffffffff831614156108055760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610321565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146109095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b60005b825181101561095c5761094a83828151811061092a5761092a61215c565b602002602001015183600160405180602001604052806000815250611001565b80610954816120b1565b91505061090c565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff6101009091041633146109ce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b6109d781611150565b50565b73ffffffffffffffffffffffffffffffffffffffff8516331480610a035750610a038533610239565b610a755760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152608401610321565b6105ae8585858585611167565b60005473ffffffffffffffffffffffffffffffffffffffff610100909104163314610aef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610321565b73ffffffffffffffffffffffffffffffffffffffff8116610b525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a206e6577206f776e657220697320307820616464726573736044820152606401610321565b6109d781610f84565b606081610b9b57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610bc55780610baf816120b1565b9150610bbe9050600a83611fb7565b9150610b9f565b60008167ffffffffffffffff811115610be057610be061218b565b6040519080825280601f01601f191660200182016040528015610c0a576020820181803683370190505b5090505b8415610c8d57610c1f600183611fcb565b9150610c2c600a866120ea565b610c37906030611f9f565b60f81b818381518110610c4c57610c4c61215c565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610c86600a86611fb7565b9450610c0e565b949350505050565b8151835114610d0c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610321565b73ffffffffffffffffffffffffffffffffffffffff8416610d955760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610321565b3360005b8451811015610eef576000858281518110610db657610db661215c565b602002602001015190506000858381518110610dd457610dd461215c565b602090810291909101810151600084815260018352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610e885760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152608401610321565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610ed4908490611f9f565b9250508190555050505080610ee8906120b1565b9050610d99565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f66929190611f43565b60405180910390a4610f7c818787878787611368565b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b73ffffffffffffffffffffffffffffffffffffffff841661108a5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610321565b336110a48160008761109b886115b4565b6105ae886115b4565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080548592906110e3908490611f9f565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff80881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46105ae816000878787876115ff565b80516111639060039060208401906117a1565b5050565b73ffffffffffffffffffffffffffffffffffffffff84166111f05760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610321565b3361120081878761109b886115b4565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a168452909152902054838110156112a65760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152608401610321565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168552925280832087850390559088168252812080548692906112f2908490611f9f565b9091555050604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461135f8288888888886115ff565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610f7c576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c81906113df9089908990889088908890600401611e75565b602060405180830381600087803b1580156113f957600080fd5b505af1925050508015611447575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261144491810190611c77565b60015b6114fd576114536121ba565b806308c379a0141561148d57506114686121d6565b80611473575061148f565b8060405162461bcd60e51b81526004016103219190611f68565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610321565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461135f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608401610321565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106115ee576115ee61215c565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610f7c576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906116769089908990889088908890600401611ee0565b602060405180830381600087803b15801561169057600080fd5b505af19250505080156116de575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526116db91810190611c77565b60015b6116ea576114536121ba565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461135f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608401610321565b8280546117ad90612012565b90600052602060002090601f0160209004810192826117cf5760008555611815565b82601f106117e857805160ff1916838001178555611815565b82800160010185558215611815579182015b828111156118155782518255916020019190600101906117fa565b50611821929150611825565b5090565b5b808211156118215760008155600101611826565b600067ffffffffffffffff8311156118545761185461218b565b60405161188960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8701160182612066565b80915083815284848401111561189e57600080fd5b83836020830137600060208583010152509392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146118da57600080fd5b919050565b600082601f8301126118f057600080fd5b813560206118fd82611f7b565b60405161190a8282612066565b8381528281019150858301600585901b8701840188101561192a57600080fd5b60005b858110156119505761193e826118b6565b8452928401929084019060010161192d565b5090979650505050505050565b600082601f83011261196e57600080fd5b8135602061197b82611f7b565b6040516119888282612066565b8381528281019150858301600585901b870184018810156119a857600080fd5b60005b85811015611950578135845292840192908401906001016119ab565b600082601f8301126119d857600080fd5b6119e78383356020850161183a565b9392505050565b600060208284031215611a0057600080fd5b6119e7826118b6565b60008060408385031215611a1c57600080fd5b611a25836118b6565b9150611a33602084016118b6565b90509250929050565b600080600080600060a08688031215611a5457600080fd5b611a5d866118b6565b9450611a6b602087016118b6565b9350604086013567ffffffffffffffff80821115611a8857600080fd5b611a9489838a0161195d565b94506060880135915080821115611aaa57600080fd5b611ab689838a0161195d565b93506080880135915080821115611acc57600080fd5b50611ad9888289016119c7565b9150509295509295909350565b600080600080600060a08688031215611afe57600080fd5b611b07866118b6565b9450611b15602087016118b6565b93506040860135925060608601359150608086013567ffffffffffffffff811115611b3f57600080fd5b611ad9888289016119c7565b60008060408385031215611b5e57600080fd5b611b67836118b6565b915060208301358015158114611b7c57600080fd5b809150509250929050565b60008060408385031215611b9a57600080fd5b611ba3836118b6565b946020939093013593505050565b60008060408385031215611bc457600080fd5b823567ffffffffffffffff80821115611bdc57600080fd5b611be8868387016118df565b93506020850135915080821115611bfe57600080fd5b50611c0b8582860161195d565b9150509250929050565b60008060408385031215611c2857600080fd5b823567ffffffffffffffff811115611c3f57600080fd5b611c4b858286016118df565b95602094909401359450505050565b600060208284031215611c6c57600080fd5b81356119e78161227e565b600060208284031215611c8957600080fd5b81516119e78161227e565b600060208284031215611ca657600080fd5b813567ffffffffffffffff811115611cbd57600080fd5b8201601f81018413611cce57600080fd5b610c8d8482356020840161183a565b600060208284031215611cef57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611d2657815187529582019590820190600101611d0a565b509495945050505050565b60008151808452611d49816020860160208601611fe2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151611d8d818560208601611fe2565b9290920192915050565b600080845481600182811c915080831680611db357607f831692505b6020808410821415611dec577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611e005760018114611e2f57611e5c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611e5c565b60008b81526020902060005b86811015611e545781548b820152908501908301611e3b565b505084890196505b505050505050611e6c8185611d7b565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a06040830152611eae60a0830186611cf6565b8281036060840152611ec08186611cf6565b90508281036080840152611ed48185611d31565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611f2560a0830184611d31565b979650505050505050565b6020815260006119e76020830184611cf6565b604081526000611f566040830185611cf6565b8281036020840152611e6c8185611cf6565b6020815260006119e76020830184611d31565b600067ffffffffffffffff821115611f9557611f9561218b565b5060051b60200190565b60008219821115611fb257611fb26120fe565b500190565b600082611fc657611fc661212d565b500490565b600082821015611fdd57611fdd6120fe565b500390565b60005b83811015611ffd578181015183820152602001611fe5565b8381111561200c576000848401525b50505050565b600181811c9082168061202657607f821691505b60208210811415612060577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156120aa576120aa61218b565b6040525050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156120e3576120e36120fe565b5060010190565b6000826120f9576120f961212d565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156121d35760046000803e5060005160e01c5b90565b600060443d10156121e45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff816024840111818411171561223257505050505090565b828501915081518181111561224a5750505050505090565b843d87010160208285010111156122645750505050505090565b61227360208286010187612066565b509095945050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109d757600080fdfea26469706673582212208e525d76876dc617bd4290eeb83fac1ec395b5e8b36734094d79766199567e2f64736f6c63430008070033

Deployed Bytecode Sourcemap

8687:15485:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10868:231;;;;;;:::i;:::-;;:::i;:::-;;;17706:25:1;;;17694:2;17679:18;10868:231:0;;;;;;;;9851:293;;;;;;:::i;:::-;;:::i;:::-;;;12068:14:1;;12061:22;12043:41;;12031:2;12016:18;9851:293:0;11903:187:1;9151:18:0;;;:::i;:::-;;;;;;;:::i;10555:162::-;;;;;;:::i;:::-;;:::i;12963:442::-;;;;;;:::i;:::-;;:::i;:::-;;11265:524;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3292:94::-;;;:::i;2641:87::-;2687:7;2714:6;;;;;;2641:87;;9670:42:1;9658:55;;;9640:74;;9628:2;9613:18;2641:87:0;9494:226:1;9176:20:0;;;:::i;11862:311::-;;;;;;:::i;:::-;;:::i;9470:207::-;;;;;;:::i;:::-;;:::i;9685:94::-;;;;;;:::i;:::-;;:::i;12245:168::-;;;;;;:::i;:::-;12368:27;;;;12344:4;12368:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;12245:168;12485:401;;;;;;:::i;:::-;;:::i;3541:186::-;;;;;;:::i;:::-;;:::i;10868:231::-;10954:7;10982:21;;;10974:77;;;;-1:-1:-1;;;10974:77:0;;13351:2:1;10974:77:0;;;13333:21:1;13390:2;13370:18;;;13363:30;13429:34;13409:18;;;13402:62;13500:13;13480:18;;;13473:41;13531:19;;10974:77:0;;;;;;;;;-1:-1:-1;11069:13:0;;;;:9;:13;;;;;;;;:22;;;;;;;;;;;;;10868:231::o;9851:293::-;9936:4;9973:41;;;9988:26;9973:41;;:110;;-1:-1:-1;10031:52:0;;;10046:37;10031:52;9973:110;:163;;;-1:-1:-1;441:25:0;426:40;;;;10100:36;9953:183;9851:293;-1:-1:-1;;9851:293:0:o;9151:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10555:162::-;10624:13;10682:4;10688:18;10697:8;10688;:18::i;:::-;10664:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10650:59;;10555:162;;;:::o;12963:442::-;13196:20;;;2104:10;13196:20;;:60;;-1:-1:-1;13220:36:0;13237:4;2104:10;12245:168;:::i;13220:36::-;13174:160;;;;-1:-1:-1;;;13174:160:0;;14940:2:1;13174:160:0;;;14922:21:1;14979:2;14959:18;;;14952:30;15018:34;14998:18;;;14991:62;15089:20;15069:18;;;15062:48;15127:19;;13174:160:0;14738:414:1;13174:160:0;13345:52;13368:4;13374:2;13378:3;13383:7;13392:4;13345:22;:52::i;:::-;12963:442;;;;;:::o;11265:524::-;11421:16;11482:3;:10;11463:8;:15;:29;11455:83;;;;-1:-1:-1;;;11455:83:0;;16541:2:1;11455:83:0;;;16523:21:1;16580:2;16560:18;;;16553:30;16619:34;16599:18;;;16592:62;16690:11;16670:18;;;16663:39;16719:19;;11455:83:0;16339:405:1;11455:83:0;11551:30;11598:8;:15;11584:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11584:30:0;;11551:63;;11632:9;11627:122;11651:8;:15;11647:1;:19;11627:122;;;11707:30;11717:8;11726:1;11717:11;;;;;;;;:::i;:::-;;;;;;;11730:3;11734:1;11730:6;;;;;;;;:::i;:::-;;;;;;;11707:9;:30::i;:::-;11688:13;11702:1;11688:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;11668:3;;;:::i;:::-;;;11627:122;;;-1:-1:-1;11768:13:0;11265:524;-1:-1:-1;;;11265:524:0:o;3292:94::-;2687:7;2714:6;2861:23;2714:6;;;;;2104:10;2861:23;2853:68;;;;-1:-1:-1;;;2853:68:0;;15770:2:1;2853:68:0;;;15752:21:1;;;15789:18;;;15782:30;15848:34;15828:18;;;15821:62;15900:18;;2853:68:0;15568:356:1;2853:68:0;3357:21:::1;3375:1;3357:9;:21::i;:::-;3292:94::o:0;9176:20::-;;;;;;;:::i;11862:311::-;2104:10;11965:24;;;;;11957:78;;;;-1:-1:-1;;;11957:78:0;;16131:2:1;11957:78:0;;;16113:21:1;16170:2;16150:18;;;16143:30;16209:34;16189:18;;;16182:62;16280:11;16260:18;;;16253:39;16309:19;;11957:78:0;15929:405:1;11957:78:0;2104:10;12048:32;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;12117:48;;12043:41:1;;;12048:42:0;;2104:10;12117:48;;12016:18:1;12117:48:0;;;;;;;11862:311;;:::o;9470:207::-;2687:7;2714:6;2861:23;2714:6;;;;;2104:10;2861:23;2853:68;;;;-1:-1:-1;;;2853:68:0;;15770:2:1;2853:68:0;;;15752:21:1;;;15789:18;;;15782:30;15848:34;15828:18;;;15821:62;15900:18;;2853:68:0;15568:356:1;2853:68:0;9568:9:::1;9564:106;9583:10;:17;9579:1;:21;9564:106;;;9621:37;9627:10;9638:1;9627:13;;;;;;;;:::i;:::-;;;;;;;9642:8;9652:1;9621:37;;;;;;;;;;;::::0;:5:::1;:37::i;:::-;9602:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9564:106;;;;9470:207:::0;;:::o;9685:94::-;2687:7;2714:6;2861:23;2714:6;;;;;2104:10;2861:23;2853:68;;;;-1:-1:-1;;;2853:68:0;;15770:2:1;2853:68:0;;;15752:21:1;;;15789:18;;;15782:30;15848:34;15828:18;;;15821:62;15900:18;;2853:68:0;15568:356:1;2853:68:0;9756:15:::1;9764:6;9756:7;:15::i;:::-;9685:94:::0;:::o;12485:401::-;12693:20;;;2104:10;12693:20;;:60;;-1:-1:-1;12717:36:0;12734:4;2104:10;12245:168;:::i;12717:36::-;12671:151;;;;-1:-1:-1;;;12671:151:0;;13763:2:1;12671:151:0;;;13745:21:1;13802:2;13782:18;;;13775:30;13841:34;13821:18;;;13814:62;13912:11;13892:18;;;13885:39;13941:19;;12671:151:0;13561:405:1;12671:151:0;12833:45;12851:4;12857:2;12861;12865:6;12873:4;12833:17;:45::i;3541:186::-;2687:7;2714:6;2861:23;2714:6;;;;;2104:10;2861:23;2853:68;;;;-1:-1:-1;;;2853:68:0;;15770:2:1;2853:68:0;;;15752:21:1;;;15789:18;;;15782:30;15848:34;15828:18;;;15821:62;15900:18;;2853:68:0;15568:356:1;2853:68:0;3630:22:::1;::::0;::::1;3622:67;;;::::0;-1:-1:-1;;;3622:67:0;;14173:2:1;3622:67:0::1;::::0;::::1;14155:21:1::0;;;14192:18;;;14185:30;14251:34;14231:18;;;14224:62;14303:18;;3622:67:0::1;13971:356:1::0;3622:67:0::1;3700:19;3710:8;3700:9;:19::i;3951:532::-:0;4007:13;4037:10;4033:53;;-1:-1:-1;;4064:10:0;;;;;;;;;;;;;;;;;;3951:532::o;4033:53::-;4111:5;4096:12;4152:78;4159:9;;4152:78;;4185:8;;;;:::i;:::-;;-1:-1:-1;4208:10:0;;-1:-1:-1;4216:2:0;4208:10;;:::i;:::-;;;4152:78;;;4240:19;4272:6;4262:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4262:17:0;;4240:39;;4290:154;4297:10;;4290:154;;4324:11;4334:1;4324:11;;:::i;:::-;;-1:-1:-1;4393:10:0;4401:2;4393:5;:10;:::i;:::-;4380:24;;:2;:24;:::i;:::-;4367:39;;4350:6;4357;4350:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;4421:11:0;4430:2;4421:11;;:::i;:::-;;;4290:154;;;4468:6;3951:532;-1:-1:-1;;;;3951:532:0:o;15047:1074::-;15274:7;:14;15260:3;:10;:28;15252:81;;;;-1:-1:-1;;;15252:81:0;;16951:2:1;15252:81:0;;;16933:21:1;16990:2;16970:18;;;16963:30;17029:34;17009:18;;;17002:62;17100:10;17080:18;;;17073:38;17128:19;;15252:81:0;16749:404:1;15252:81:0;15352:16;;;15344:66;;;;-1:-1:-1;;;15344:66:0;;14534:2:1;15344:66:0;;;14516:21:1;14573:2;14553:18;;;14546:30;14612:34;14592:18;;;14585:62;14683:7;14663:18;;;14656:35;14708:19;;15344:66:0;14332:401:1;15344:66:0;2104:10;15423:16;15540:421;15564:3;:10;15560:1;:14;15540:421;;;15596:10;15609:3;15613:1;15609:6;;;;;;;;:::i;:::-;;;;;;;15596:19;;15630:14;15647:7;15655:1;15647:10;;;;;;;;:::i;:::-;;;;;;;;;;;;15674:19;15696:13;;;:9;:13;;;;;;:19;;;;;;;;;;;;;15647:10;;-1:-1:-1;15738:21:0;;;;15730:76;;;;-1:-1:-1;;;15730:76:0;;15359:2:1;15730:76:0;;;15341:21:1;15398:2;15378:18;;;15371:30;15437:34;15417:18;;;15410:62;15508:12;15488:18;;;15481:40;15538:19;;15730:76:0;15157:406:1;15730:76:0;15850:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;15872:20;;;15850:42;;15922:17;;;;;;;:27;;15872:20;;15850:13;15922:27;;15872:20;;15922:27;:::i;:::-;;;;;;;;15581:380;;;15576:3;;;;:::i;:::-;;;15540:421;;;;16008:2;15978:47;;16002:4;15978:47;;15992:8;15978:47;;;16012:3;16017:7;15978:47;;;;;;;:::i;:::-;;;;;;;;16038:75;16074:8;16084:4;16090:2;16094:3;16099:7;16108:4;16038:35;:75::i;:::-;15241:880;15047:1074;;;;;:::o;3735:173::-;3791:16;3810:6;;;3827:17;;;3810:6;3827:17;;;;;;;;;3860:40;;3810:6;;;;;;;3827:17;;3810:6;;3860:40;;;3780:128;3735:173;:::o;17454:599::-;17612:21;;;17604:67;;;;-1:-1:-1;;;17604:67:0;;17360:2:1;17604:67:0;;;17342:21:1;17399:2;17379:18;;;17372:30;17438:34;17418:18;;;17411:62;17509:3;17489:18;;;17482:31;17530:19;;17604:67:0;17158:397:1;17604:67:0;2104:10;17728:107;2104:10;17684:16;17771:7;17780:21;17798:2;17780:17;:21::i;:::-;17803:25;17821:6;17803:17;:25::i;17728:107::-;17848:13;;;;:9;:13;;;;;;;;:22;;;;;;;;;;:32;;17874:6;;17848:13;:32;;17874:6;;17848:32;:::i;:::-;;;;-1:-1:-1;;17896:57:0;;;17916:25:1;;;17972:2;17957:18;;17950:34;;;17896:57:0;;;;;17929:1;;17896:57;;;;;;17889:18:1;17896:57:0;;;;;;;17966:79;17997:8;18015:1;18019:7;18028:2;18032:6;18040:4;17966:30;:79::i;16965:88::-;17032:13;;;;:4;;:13;;;;;:::i;:::-;;16965:88;:::o;13869:820::-;14057:16;;;14049:66;;;;-1:-1:-1;;;14049:66:0;;14534:2:1;14049:66:0;;;14516:21:1;14573:2;14553:18;;;14546:30;14612:34;14592:18;;;14585:62;14683:7;14663:18;;;14656:35;14708:19;;14049:66:0;14332:401:1;14049:66:0;2104:10;14172:96;2104:10;14203:4;14209:2;14213:21;14231:2;14213:17;:21::i;14172:96::-;14281:19;14303:13;;;:9;:13;;;;;;;;:19;;;;;;;;;;;14341:21;;;;14333:76;;;;-1:-1:-1;;;14333:76:0;;15359:2:1;14333:76:0;;;15341:21:1;15398:2;15378:18;;;15371:30;15437:34;15417:18;;;15410:62;15508:12;15488:18;;;15481:40;15538:19;;14333:76:0;15157:406:1;14333:76:0;14445:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;14467:20;;;14445:42;;14509:17;;;;;;;:27;;14467:20;;14445:13;14509:27;;14467:20;;14509:27;:::i;:::-;;;;-1:-1:-1;;14554:46:0;;;17916:25:1;;;17972:2;17957:18;;17950:34;;;14554:46:0;;;;;;;;;;;;;;;17889:18:1;14554:46:0;;;;;;;14613:68;14644:8;14654:4;14660:2;14664;14668:6;14676:4;14613:30;:68::i;:::-;14038:651;;13869:820;;;;;:::o;23140:817::-;23380:13;;;4863:20;4911:8;23376:574;;23416:79;;;;;:43;;;;;;:79;;23460:8;;23470:4;;23476:3;;23481:7;;23490:4;;23416:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23416:79:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23412:527;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;23812:6;23805:14;;-1:-1:-1;;;23805:14:0;;;;;;;;:::i;23412:527::-;;;23861:62;;-1:-1:-1;;;23861:62:0;;12521:2:1;23861:62:0;;;12503:21:1;12560:2;12540:18;;;12533:30;12599:34;12579:18;;;12572:62;12670:22;12650:18;;;12643:50;12710:19;;23861:62:0;12319:416:1;23412:527:0;23577:64;;;23589:52;23577:64;23573:163;;23666:50;;-1:-1:-1;;;23666:50:0;;12942:2:1;23666:50:0;;;12924:21:1;12981:2;12961:18;;;12954:30;13020:34;13000:18;;;12993:62;13091:10;13071:18;;;13064:38;13119:19;;23666:50:0;12740:404:1;23965:198:0;24085:16;;;24099:1;24085:16;;;;;;;;;24031;;24060:22;;24085:16;;;;;;;;;;;;-1:-1:-1;24085:16:0;24060:41;;24123:7;24112:5;24118:1;24112:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;24150:5;23965:198;-1:-1:-1;;23965:198:0:o;22384:748::-;22599:13;;;4863:20;4911:8;22595:530;;22635:72;;;;;:38;;;;;;:72;;22674:8;;22684:4;;22690:2;;22694:6;;22702:4;;22635:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22635:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;22631:483;;;;:::i;:::-;22757:59;;;22769:47;22757:59;22753:158;;22841:50;;-1:-1:-1;;;22841:50:0;;12942:2:1;22841:50:0;;;12924:21:1;12981:2;12961:18;;;12954:30;13020:34;13000:18;;;12993:62;13091:10;13071:18;;;13064:38;13119:19;;22841:50:0;12740:404:1;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:527:1;78:5;112:18;104:6;101:30;98:56;;;134:18;;:::i;:::-;183:2;177:9;195:128;317:4;248:66;243:2;235:6;231:15;227:88;223:99;215:6;195:128;:::i;:::-;341:6;332:15;;371:6;363;356:22;411:3;402:6;397:3;393:16;390:25;387:45;;;428:1;425;418:12;387:45;478:6;473:3;466:4;458:6;454:17;441:44;533:1;526:4;517:6;509;505:19;501:30;494:41;;14:527;;;;;:::o;546:196::-;614:20;;674:42;663:54;;653:65;;643:93;;732:1;729;722:12;643:93;546:196;;;:::o;747:741::-;801:5;854:3;847:4;839:6;835:17;831:27;821:55;;872:1;869;862:12;821:55;908:6;895:20;934:4;957:43;997:2;957:43;:::i;:::-;1029:2;1023:9;1041:31;1069:2;1061:6;1041:31;:::i;:::-;1107:18;;;1141:15;;;;-1:-1:-1;1176:15:1;;;1226:1;1222:10;;;1210:23;;1206:32;;1203:41;-1:-1:-1;1200:61:1;;;1257:1;1254;1247:12;1200:61;1279:1;1289:169;1303:2;1300:1;1297:9;1289:169;;;1360:23;1379:3;1360:23;:::i;:::-;1348:36;;1404:12;;;;1436;;;;1321:1;1314:9;1289:169;;;-1:-1:-1;1476:6:1;;747:741;-1:-1:-1;;;;;;;747:741:1:o;1493:735::-;1547:5;1600:3;1593:4;1585:6;1581:17;1577:27;1567:55;;1618:1;1615;1608:12;1567:55;1654:6;1641:20;1680:4;1703:43;1743:2;1703:43;:::i;:::-;1775:2;1769:9;1787:31;1815:2;1807:6;1787:31;:::i;:::-;1853:18;;;1887:15;;;;-1:-1:-1;1922:15:1;;;1972:1;1968:10;;;1956:23;;1952:32;;1949:41;-1:-1:-1;1946:61:1;;;2003:1;2000;1993:12;1946:61;2025:1;2035:163;2049:2;2046:1;2043:9;2035:163;;;2106:17;;2094:30;;2144:12;;;;2176;;;;2067:1;2060:9;2035:163;;2233:220;2275:5;2328:3;2321:4;2313:6;2309:17;2305:27;2295:55;;2346:1;2343;2336:12;2295:55;2368:79;2443:3;2434:6;2421:20;2414:4;2406:6;2402:17;2368:79;:::i;:::-;2359:88;2233:220;-1:-1:-1;;;2233:220:1:o;2458:186::-;2517:6;2570:2;2558:9;2549:7;2545:23;2541:32;2538:52;;;2586:1;2583;2576:12;2538:52;2609:29;2628:9;2609:29;:::i;2649:260::-;2717:6;2725;2778:2;2766:9;2757:7;2753:23;2749:32;2746:52;;;2794:1;2791;2784:12;2746:52;2817:29;2836:9;2817:29;:::i;:::-;2807:39;;2865:38;2899:2;2888:9;2884:18;2865:38;:::i;:::-;2855:48;;2649:260;;;;;:::o;2914:943::-;3068:6;3076;3084;3092;3100;3153:3;3141:9;3132:7;3128:23;3124:33;3121:53;;;3170:1;3167;3160:12;3121:53;3193:29;3212:9;3193:29;:::i;:::-;3183:39;;3241:38;3275:2;3264:9;3260:18;3241:38;:::i;:::-;3231:48;;3330:2;3319:9;3315:18;3302:32;3353:18;3394:2;3386:6;3383:14;3380:34;;;3410:1;3407;3400:12;3380:34;3433:61;3486:7;3477:6;3466:9;3462:22;3433:61;:::i;:::-;3423:71;;3547:2;3536:9;3532:18;3519:32;3503:48;;3576:2;3566:8;3563:16;3560:36;;;3592:1;3589;3582:12;3560:36;3615:63;3670:7;3659:8;3648:9;3644:24;3615:63;:::i;:::-;3605:73;;3731:3;3720:9;3716:19;3703:33;3687:49;;3761:2;3751:8;3748:16;3745:36;;;3777:1;3774;3767:12;3745:36;;3800:51;3843:7;3832:8;3821:9;3817:24;3800:51;:::i;:::-;3790:61;;;2914:943;;;;;;;;:::o;3862:606::-;3966:6;3974;3982;3990;3998;4051:3;4039:9;4030:7;4026:23;4022:33;4019:53;;;4068:1;4065;4058:12;4019:53;4091:29;4110:9;4091:29;:::i;:::-;4081:39;;4139:38;4173:2;4162:9;4158:18;4139:38;:::i;:::-;4129:48;;4224:2;4213:9;4209:18;4196:32;4186:42;;4275:2;4264:9;4260:18;4247:32;4237:42;;4330:3;4319:9;4315:19;4302:33;4358:18;4350:6;4347:30;4344:50;;;4390:1;4387;4380:12;4344:50;4413:49;4454:7;4445:6;4434:9;4430:22;4413:49;:::i;4473:347::-;4538:6;4546;4599:2;4587:9;4578:7;4574:23;4570:32;4567:52;;;4615:1;4612;4605:12;4567:52;4638:29;4657:9;4638:29;:::i;:::-;4628:39;;4717:2;4706:9;4702:18;4689:32;4764:5;4757:13;4750:21;4743:5;4740:32;4730:60;;4786:1;4783;4776:12;4730:60;4809:5;4799:15;;;4473:347;;;;;:::o;4825:254::-;4893:6;4901;4954:2;4942:9;4933:7;4929:23;4925:32;4922:52;;;4970:1;4967;4960:12;4922:52;4993:29;5012:9;4993:29;:::i;:::-;4983:39;5069:2;5054:18;;;;5041:32;;-1:-1:-1;;;4825:254:1:o;5084:595::-;5202:6;5210;5263:2;5251:9;5242:7;5238:23;5234:32;5231:52;;;5279:1;5276;5269:12;5231:52;5319:9;5306:23;5348:18;5389:2;5381:6;5378:14;5375:34;;;5405:1;5402;5395:12;5375:34;5428:61;5481:7;5472:6;5461:9;5457:22;5428:61;:::i;:::-;5418:71;;5542:2;5531:9;5527:18;5514:32;5498:48;;5571:2;5561:8;5558:16;5555:36;;;5587:1;5584;5577:12;5555:36;;5610:63;5665:7;5654:8;5643:9;5639:24;5610:63;:::i;:::-;5600:73;;;5084:595;;;;;:::o;5684:416::-;5777:6;5785;5838:2;5826:9;5817:7;5813:23;5809:32;5806:52;;;5854:1;5851;5844:12;5806:52;5894:9;5881:23;5927:18;5919:6;5916:30;5913:50;;;5959:1;5956;5949:12;5913:50;5982:61;6035:7;6026:6;6015:9;6011:22;5982:61;:::i;:::-;5972:71;6090:2;6075:18;;;;6062:32;;-1:-1:-1;;;;5684:416:1:o;6105:245::-;6163:6;6216:2;6204:9;6195:7;6191:23;6187:32;6184:52;;;6232:1;6229;6222:12;6184:52;6271:9;6258:23;6290:30;6314:5;6290:30;:::i;6355:249::-;6424:6;6477:2;6465:9;6456:7;6452:23;6448:32;6445:52;;;6493:1;6490;6483:12;6445:52;6525:9;6519:16;6544:30;6568:5;6544:30;:::i;6609:450::-;6678:6;6731:2;6719:9;6710:7;6706:23;6702:32;6699:52;;;6747:1;6744;6737:12;6699:52;6787:9;6774:23;6820:18;6812:6;6809:30;6806:50;;;6852:1;6849;6842:12;6806:50;6875:22;;6928:4;6920:13;;6916:27;-1:-1:-1;6906:55:1;;6957:1;6954;6947:12;6906:55;6980:73;7045:7;7040:2;7027:16;7022:2;7018;7014:11;6980:73;:::i;7064:180::-;7123:6;7176:2;7164:9;7155:7;7151:23;7147:32;7144:52;;;7192:1;7189;7182:12;7144:52;-1:-1:-1;7215:23:1;;7064:180;-1:-1:-1;7064:180:1:o;7249:435::-;7302:3;7340:5;7334:12;7367:6;7362:3;7355:19;7393:4;7422:2;7417:3;7413:12;7406:19;;7459:2;7452:5;7448:14;7480:1;7490:169;7504:6;7501:1;7498:13;7490:169;;;7565:13;;7553:26;;7599:12;;;;7634:15;;;;7526:1;7519:9;7490:169;;;-1:-1:-1;7675:3:1;;7249:435;-1:-1:-1;;;;;7249:435:1:o;7689:316::-;7730:3;7768:5;7762:12;7795:6;7790:3;7783:19;7811:63;7867:6;7860:4;7855:3;7851:14;7844:4;7837:5;7833:16;7811:63;:::i;:::-;7919:2;7907:15;7924:66;7903:88;7894:98;;;;7994:4;7890:109;;7689:316;-1:-1:-1;;7689:316:1:o;8010:185::-;8052:3;8090:5;8084:12;8105:52;8150:6;8145:3;8138:4;8131:5;8127:16;8105:52;:::i;:::-;8173:16;;;;;8010:185;-1:-1:-1;;8010:185:1:o;8200:1289::-;8376:3;8405:1;8438:6;8432:13;8468:3;8490:1;8518:9;8514:2;8510:18;8500:28;;8578:2;8567:9;8563:18;8600;8590:61;;8644:4;8636:6;8632:17;8622:27;;8590:61;8670:2;8718;8710:6;8707:14;8687:18;8684:38;8681:222;;;8757:77;8752:3;8745:90;8858:4;8855:1;8848:15;8888:4;8883:3;8876:17;8681:222;8919:18;8946:162;;;;9122:1;9117:320;;;;8912:525;;8946:162;8994:66;8983:9;8979:82;8974:3;8967:95;9091:6;9086:3;9082:16;9075:23;;8946:162;;9117:320;18256:1;18249:14;;;18293:4;18280:18;;9212:1;9226:165;9240:6;9237:1;9234:13;9226:165;;;9318:14;;9305:11;;;9298:35;9361:16;;;;9255:10;;9226:165;;;9230:3;;9420:6;9415:3;9411:16;9404:23;;8912:525;;;;;;;9453:30;9479:3;9471:6;9453:30;:::i;:::-;9446:37;8200:1289;-1:-1:-1;;;;;8200:1289:1:o;9725:849::-;10047:4;10076:42;10157:2;10149:6;10145:15;10134:9;10127:34;10209:2;10201:6;10197:15;10192:2;10181:9;10177:18;10170:43;;10249:3;10244:2;10233:9;10229:18;10222:31;10276:57;10328:3;10317:9;10313:19;10305:6;10276:57;:::i;:::-;10381:9;10373:6;10369:22;10364:2;10353:9;10349:18;10342:50;10415:44;10452:6;10444;10415:44;:::i;:::-;10401:58;;10508:9;10500:6;10496:22;10490:3;10479:9;10475:19;10468:51;10536:32;10561:6;10553;10536:32;:::i;:::-;10528:40;9725:849;-1:-1:-1;;;;;;;;9725:849:1:o;10579:583::-;10801:4;10830:42;10911:2;10903:6;10899:15;10888:9;10881:34;10963:2;10955:6;10951:15;10946:2;10935:9;10931:18;10924:43;;11003:6;10998:2;10987:9;10983:18;10976:34;11046:6;11041:2;11030:9;11026:18;11019:34;11090:3;11084;11073:9;11069:19;11062:32;11111:45;11151:3;11140:9;11136:19;11128:6;11111:45;:::i;:::-;11103:53;10579:583;-1:-1:-1;;;;;;;10579:583:1:o;11167:261::-;11346:2;11335:9;11328:21;11309:4;11366:56;11418:2;11407:9;11403:18;11395:6;11366:56;:::i;11433:465::-;11690:2;11679:9;11672:21;11653:4;11716:56;11768:2;11757:9;11753:18;11745:6;11716:56;:::i;:::-;11820:9;11812:6;11808:22;11803:2;11792:9;11788:18;11781:50;11848:44;11885:6;11877;11848:44;:::i;12095:219::-;12244:2;12233:9;12226:21;12207:4;12264:44;12304:2;12293:9;12289:18;12281:6;12264:44;:::i;17995:183::-;18055:4;18088:18;18080:6;18077:30;18074:56;;;18110:18;;:::i;:::-;-1:-1:-1;18155:1:1;18151:14;18167:4;18147:25;;17995:183::o;18309:128::-;18349:3;18380:1;18376:6;18373:1;18370:13;18367:39;;;18386:18;;:::i;:::-;-1:-1:-1;18422:9:1;;18309:128::o;18442:120::-;18482:1;18508;18498:35;;18513:18;;:::i;:::-;-1:-1:-1;18547:9:1;;18442:120::o;18567:125::-;18607:4;18635:1;18632;18629:8;18626:34;;;18640:18;;:::i;:::-;-1:-1:-1;18677:9:1;;18567:125::o;18697:258::-;18769:1;18779:113;18793:6;18790:1;18787:13;18779:113;;;18869:11;;;18863:18;18850:11;;;18843:39;18815:2;18808:10;18779:113;;;18910:6;18907:1;18904:13;18901:48;;;18945:1;18936:6;18931:3;18927:16;18920:27;18901:48;;18697:258;;;:::o;18960:437::-;19039:1;19035:12;;;;19082;;;19103:61;;19157:4;19149:6;19145:17;19135:27;;19103:61;19210:2;19202:6;19199:14;19179:18;19176:38;19173:218;;;19247:77;19244:1;19237:88;19348:4;19345:1;19338:15;19376:4;19373:1;19366:15;19173:218;;18960:437;;;:::o;19402:308::-;19508:66;19503:2;19497:4;19493:13;19489:86;19481:6;19477:99;19642:6;19630:10;19627:22;19606:18;19594:10;19591:34;19588:62;19585:88;;;19653:18;;:::i;:::-;19689:2;19682:22;-1:-1:-1;;19402:308:1:o;19715:195::-;19754:3;19785:66;19778:5;19775:77;19772:103;;;19855:18;;:::i;:::-;-1:-1:-1;19902:1:1;19891:13;;19715:195::o;19915:112::-;19947:1;19973;19963:35;;19978:18;;:::i;:::-;-1:-1:-1;20012:9:1;;19915:112::o;20032:184::-;20084:77;20081:1;20074:88;20181:4;20178:1;20171:15;20205:4;20202:1;20195:15;20221:184;20273:77;20270:1;20263:88;20370:4;20367:1;20360:15;20394:4;20391:1;20384:15;20410:184;20462:77;20459:1;20452:88;20559:4;20556:1;20549:15;20583:4;20580:1;20573:15;20599:184;20651:77;20648:1;20641:88;20748:4;20745:1;20738:15;20772:4;20769:1;20762:15;20788:179;20823:3;20865:1;20847:16;20844:23;20841:120;;;20911:1;20908;20905;20890:23;-1:-1:-1;20948:1:1;20942:8;20937:3;20933:18;20841:120;20788:179;:::o;20972:731::-;21011:3;21053:4;21035:16;21032:26;21029:39;;;20972:731;:::o;21029:39::-;21095:2;21089:9;21117:66;21238:2;21220:16;21216:25;21213:1;21207:4;21192:50;21271:4;21265:11;21295:16;21330:18;21401:2;21394:4;21386:6;21382:17;21379:25;21374:2;21366:6;21363:14;21360:45;21357:58;;;21408:5;;;;;20972:731;:::o;21357:58::-;21445:6;21439:4;21435:17;21424:28;;21481:3;21475:10;21508:2;21500:6;21497:14;21494:27;;;21514:5;;;;;;20972:731;:::o;21494:27::-;21598:2;21579:16;21573:4;21569:27;21565:36;21558:4;21549:6;21544:3;21540:16;21536:27;21533:69;21530:82;;;21605:5;;;;;;20972:731;:::o;21530:82::-;21621:57;21672:4;21663:6;21655;21651:19;21647:30;21641:4;21621:57;:::i;:::-;-1:-1:-1;21694:3:1;;20972:731;-1:-1:-1;;;;;20972:731:1:o;21708:177::-;21793:66;21786:5;21782:78;21775:5;21772:89;21762:117;;21875:1;21872;21865:12

Swarm Source

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