Sepolia Testnet

Token

APE NFT TICKETS (APE COIN)
ERC-1155

Overview

Max Total Supply

0 APE COIN

Holders

251

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
0xb12713bfa9d1de339ca14b01f8f14f092ffe75bf
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:
ERC1155

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-07-21
*/

/**
 *Submitted for verification at Etherscan.io on 2023-07-12
*/

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

abstract contract Ownable {
    error NotOwner(); // 0x30cd7471

    address private _owner;

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

    modifier onlyOwner() {
        if (_owner != msg.sender) revert NotOwner();
        _;
    }

    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 value
    );

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(
        address indexed account,
        address indexed operator,
        bool approved
    );

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(
        address account,
        uint256 id
    ) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(
        address[] calldata accounts,
        uint256[] calldata ids
    ) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(
        address account,
        address operator
    ) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `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 calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * 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 safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
     * @dev Handles the receipt of a single ERC1155 token type. This function is
     * called at the end of a `safeTransferFrom` after the balance has been updated.
     *
     * NOTE: To accept the transfer, this must return
     * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     * (i.e. 0xf23a6e61, or its own function selector).
     *
     * @param operator The address which initiated the transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param id The ID of the token being transferred
     * @param value The amount of tokens being transferred
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
     */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
     * @dev Handles the receipt of a multiple ERC1155 token types. This function
     * is called at the end of a `safeBatchTransferFrom` after the balances have
     * been updated.
     *
     * NOTE: To accept the transfer(s), this must return
     * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     * (i.e. 0xbc197c81, or its own function selector).
     *
     * @param operator The address which initiated the batch transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param ids An array containing ids of each token being transferred (order and length must match values array)
     * @param values An array containing amounts of each token being transferred (order and length must match ids array)
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
     */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

library Math {
    /**
     * @dev Return the log in base 10, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10 ** 64) {
                value /= 10 ** 64;
                result += 64;
            }
            if (value >= 10 ** 32) {
                value /= 10 ** 32;
                result += 32;
            }
            if (value >= 10 ** 16) {
                value /= 10 ** 16;
                result += 16;
            }
            if (value >= 10 ** 8) {
                value /= 10 ** 8;
                result += 8;
            }
            if (value >= 10 ** 4) {
                value /= 10 ** 4;
                result += 4;
            }
            if (value >= 10 ** 2) {
                value /= 10 ** 2;
                result += 2;
            }
            if (value >= 10 ** 1) {
                result += 1;
            }
        }
        return result;
    }
}

library Strings {
    bytes16 private constant _SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            /// @solidity memory-safe-assembly
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }
}

contract ERC1155 is Ownable, IERC165, IERC1155, IERC1155MetadataURI {
    using Strings for uint256;

    mapping(uint256 => mapping(address => uint256)) private _balances;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    string private constant _name = "APE NFT TICKETS";
    string private constant _symbol = "APE COIN";

    string private _URI;
    uint256 public nextItemId = 1;

    error NotTokenOwnerOrApproved();
    error InsufficientBalance();
    error SelfApproval();
    error ERC1155ReceiverRejected();
    error NotERC1155Receiver();

    constructor() payable {}

    function name() external pure returns (string memory) {
        return _name;
    }

    function symbol() external pure returns (string memory) {
        return _symbol;
    }

    function supportsInterface(
        bytes4 interfaceId
    ) external pure returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            interfaceId == type(IERC165).interfaceId;
    }

    function uri(uint256 id) external view override returns (string memory) {
        return
            bytes(_URI).length > 0
                ? string(abi.encodePacked(_URI, id.toString(), ".json"))
                : "";
    }

    function balanceOf(
        address account,
        uint256 id
    ) external view override returns (uint256) {
        return _balances[id][account];
    }

    function balanceOfBatch(
        address[] memory accounts,
        uint256[] memory ids
    ) external view override returns (uint256[] memory) {
        uint256[] memory batchBalances = new uint256[](accounts.length);
        for (uint256 i; i < accounts.length; ++i) {
            batchBalances[i] = _balances[ids[i]][accounts[i]];
        }
        return batchBalances;
    }

    function setApprovalForAll(
        address operator,
        bool approved
    ) external override {
        _setApprovalForAll(msg.sender, operator, approved);
    }

    function isApprovedForAll(
        address account,
        address operator
    ) external view override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) external override {
        if (from != msg.sender && !_operatorApprovals[from][msg.sender])
            revert NotTokenOwnerOrApproved();

        _safeTransferFrom(from, to, id, amount, data);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) external override {
        if (from != msg.sender && !_operatorApprovals[from][msg.sender])
            revert NotTokenOwnerOrApproved();

        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (amount > _balances[id][from]) revert InsufficientBalance();
        unchecked {
            _balances[id][from] -= amount;
        }
        _balances[id][to] += amount;
        emit TransferSingle(msg.sender, from, to, id, amount);
        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);
    }

    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        for (uint256 i; i < ids.length; ++i) {
            if (amounts[i] > _balances[ids[i]][from])
                revert InsufficientBalance();
            unchecked {
                _balances[ids[i]][from] -= amounts[i];
            }
            _balances[ids[i]][to] += amounts[i];
        }
        emit TransferBatch(msg.sender, from, to, ids, amounts);
        _doSafeBatchTransferAcceptanceCheck(
            msg.sender,
            from,
            to,
            ids,
            amounts,
            data
        );
    }

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) private {
        if (owner == operator) revert SelfApproval();
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.code.length > 0) {
            try
                IERC1155Receiver(to).onERC1155Received(
                    operator,
                    from,
                    id,
                    amount,
                    data
                )
            returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert ERC1155ReceiverRejected();
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert NotERC1155Receiver();
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.code.length > 0) {
            try
                IERC1155Receiver(to).onERC1155BatchReceived(
                    operator,
                    from,
                    ids,
                    amounts,
                    data
                )
            returns (bytes4 response) {
                if (
                    response != IERC1155Receiver.onERC1155BatchReceived.selector
                ) {
                    revert ERC1155ReceiverRejected();
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert NotERC1155Receiver();
            }
        }
    }

    function updateUri(string calldata _uri) external onlyOwner {
        _URI = _uri;
    }

    function Airdrop(address[] calldata to) external onlyOwner {
        for (uint256 i = 0; i < to.length; i++) {
            uint256 itemId = nextItemId;
            nextItemId++; // Increment the global item ID counter
            _balances[itemId][to[i]]++;
            emit TransferSingle(msg.sender, address(0), to[i], itemId, 1);
        }
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"ERC1155ReceiverRejected","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"NotERC1155Receiver","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotTokenOwnerOrApproved","type":"error"},{"inputs":[],"name":"SelfApproval","type":"error"},{"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":"to","type":"address[]"}],"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":"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":"pure","type":"function"},{"inputs":[],"name":"nextItemId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"updateUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526001600455336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3612a2b806100b36000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c80636a86897411610097578063e985e9c511610066578063e985e9c514610285578063ece8c31c146102b5578063f242432a146102d1578063f2fde38b146102ed576100f4565b80636a8689741461020f5780638da5cb5b1461022d57806395d89b411461024b578063a22cb46514610269576100f4565b80630e89341c116100d35780630e89341c146101775780632eb2c2d6146101a75780634e1273f4146101c3578063570b3c6a146101f3576100f4565b8062fdd58e146100f957806301ffc9a71461012957806306fdde0314610159575b600080fd5b610113600480360381019061010e9190611a58565b610309565b6040516101209190611aa7565b60405180910390f35b610143600480360381019061013e9190611b1a565b610364565b6040516101509190611b62565b60405180910390f35b61016161049e565b60405161016e9190611c16565b60405180910390f35b610191600480360381019061018c9190611c38565b6104db565b60405161019e9190611c16565b60405180910390f35b6101c160048036038101906101bc9190611e62565b61053b565b005b6101dd60048036038101906101d89190611ff4565b610649565b6040516101ea919061212a565b60405180910390f35b61020d600480360381019061020891906121a7565b610765565b005b610217610800565b6040516102249190611aa7565b60405180910390f35b610235610806565b6040516102429190612203565b60405180910390f35b61025361082f565b6040516102609190611c16565b60405180910390f35b610283600480360381019061027e919061224a565b61086c565b005b61029f600480360381019061029a919061228a565b61087b565b6040516102ac9190611b62565b60405180910390f35b6102cf60048036038101906102ca9190612320565b61090f565b005b6102eb60048036038101906102e6919061236d565b610b0e565b005b61030760048036038101906103029190612404565b610c1c565b005b60006001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061042f57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061049757507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600f81526020017f415045204e4654205449434b4554530000000000000000000000000000000000815250905090565b60606000600380546104ec90612460565b9050116105085760405180602001604052806000815250610534565b600361051383610d5e565b6040516020016105249291906125ae565b6040516020818303038152906040525b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156105fe5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610635576040517f99b2a73600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106428585858585610e36565b5050505050565b60606000835167ffffffffffffffff81111561066857610667611c6a565b5b6040519080825280602002602001820160405280156106965781602001602082028036833780820191505090505b50905060005b845181101561075a57600160008583815181106106bc576106bb6125dd565b5b6020026020010151815260200190815260200160002060008683815181106106e7576106e66125dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482828151811061073d5761073c6125dd565b5b602002602001018181525050806107539061263b565b905061069c565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ea576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600391906107fb92919061190d565b505050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f41504520434f494e000000000000000000000000000000000000000000000000815250905090565b6108773383836110d2565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82829050811015610b095760006004549050600460008154809291906109bc9061263b565b91905055506001600082815260200190815260200160002060008585858181106109e9576109e86125dd565b5b90506020020160208101906109fe9190612404565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610a499061263b565b9190505550838383818110610a6157610a606125dd565b5b9050602002016020810190610a769190612404565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62846001604051610aed9291906126c9565b60405180910390a4508080610b019061263b565b915050610997565b505050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610c08576040517f99b2a73600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c158585858585611236565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060006001610d6d84611418565b01905060008167ffffffffffffffff811115610d8c57610d8b611c6a565b5b6040519080825280601f01601f191660200182016040528015610dbe5781602001600182028036833780820191505090505b509050600082602001820190505b600115610e2b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581610e1557610e146126f2565b5b0494506000851415610e2657610e2b565b610dcc565b819350505050919050565b60005b835181101561103e5760016000858381518110610e5957610e586125dd565b5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054838281518110610ec057610ebf6125dd565b5b60200260200101511115610f00576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828181518110610f1357610f126125dd565b5b602002602001015160016000868481518110610f3257610f316125dd565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550828181518110610fa557610fa46125dd565b5b602002602001015160016000868481518110610fc457610fc36125dd565b5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110269190612721565b92505081905550806110379061263b565b9050610e39565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516110b5929190612777565b60405180910390a46110cb33868686868661156b565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611138576040517f3cf0df2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112299190611b62565b60405180910390a3505050565b6001600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112c0576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461137e9190612721565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516113fb9291906127ae565b60405180910390a461141133868686868661173c565b5050505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611476577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161146c5761146b6126f2565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106114b3576d04ee2d6d415b85acef810000000083816114a9576114a86126f2565b5b0492506020810190505b662386f26fc1000083106114e257662386f26fc1000083816114d8576114d76126f2565b5b0492506010810190505b6305f5e100831061150b576305f5e1008381611501576115006126f2565b5b0492506008810190505b6127108310611530576127108381611526576115256126f2565b5b0492506004810190505b606483106115535760648381611549576115486126f2565b5b0492506002810190505b600a8310611562576001810190505b80915050919050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611734578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016115cc95949392919061282c565b602060405180830381600087803b1580156115e657600080fd5b505af192505050801561161757506040513d601f19601f8201168201806040525081019061161491906128a9565b60015b6116b4576116236128e3565b806308c379a014156116805750611638612905565b806116435750611682565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116779190611c16565b60405180910390fd5b505b6040517fc14a9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611732576040517f086d127300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611905578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161179d95949392919061299b565b602060405180830381600087803b1580156117b757600080fd5b505af19250505080156117e857506040513d601f19601f820116820180604052508101906117e591906128a9565b60015b611885576117f46128e3565b806308c379a014156118515750611809612905565b806118145750611853565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118489190611c16565b60405180910390fd5b505b6040517fc14a9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611903576040517f086d127300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b82805461191990612460565b90600052602060002090601f01602090048101928261193b5760008555611982565b82601f1061195457803560ff1916838001178555611982565b82800160010185558215611982579182015b82811115611981578235825591602001919060010190611966565b5b50905061198f9190611993565b5090565b5b808211156119ac576000816000905550600101611994565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119ef826119c4565b9050919050565b6119ff816119e4565b8114611a0a57600080fd5b50565b600081359050611a1c816119f6565b92915050565b6000819050919050565b611a3581611a22565b8114611a4057600080fd5b50565b600081359050611a5281611a2c565b92915050565b60008060408385031215611a6f57611a6e6119ba565b5b6000611a7d85828601611a0d565b9250506020611a8e85828601611a43565b9150509250929050565b611aa181611a22565b82525050565b6000602082019050611abc6000830184611a98565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611af781611ac2565b8114611b0257600080fd5b50565b600081359050611b1481611aee565b92915050565b600060208284031215611b3057611b2f6119ba565b5b6000611b3e84828501611b05565b91505092915050565b60008115159050919050565b611b5c81611b47565b82525050565b6000602082019050611b776000830184611b53565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bb7578082015181840152602081019050611b9c565b83811115611bc6576000848401525b50505050565b6000601f19601f8301169050919050565b6000611be882611b7d565b611bf28185611b88565b9350611c02818560208601611b99565b611c0b81611bcc565b840191505092915050565b60006020820190508181036000830152611c308184611bdd565b905092915050565b600060208284031215611c4e57611c4d6119ba565b5b6000611c5c84828501611a43565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ca282611bcc565b810181811067ffffffffffffffff82111715611cc157611cc0611c6a565b5b80604052505050565b6000611cd46119b0565b9050611ce08282611c99565b919050565b600067ffffffffffffffff821115611d0057611cff611c6a565b5b602082029050602081019050919050565b600080fd5b6000611d29611d2484611ce5565b611cca565b90508083825260208201905060208402830185811115611d4c57611d4b611d11565b5b835b81811015611d755780611d618882611a43565b845260208401935050602081019050611d4e565b5050509392505050565b600082601f830112611d9457611d93611c65565b5b8135611da4848260208601611d16565b91505092915050565b600080fd5b600067ffffffffffffffff821115611dcd57611dcc611c6a565b5b611dd682611bcc565b9050602081019050919050565b82818337600083830152505050565b6000611e05611e0084611db2565b611cca565b905082815260208101848484011115611e2157611e20611dad565b5b611e2c848285611de3565b509392505050565b600082601f830112611e4957611e48611c65565b5b8135611e59848260208601611df2565b91505092915050565b600080600080600060a08688031215611e7e57611e7d6119ba565b5b6000611e8c88828901611a0d565b9550506020611e9d88828901611a0d565b945050604086013567ffffffffffffffff811115611ebe57611ebd6119bf565b5b611eca88828901611d7f565b935050606086013567ffffffffffffffff811115611eeb57611eea6119bf565b5b611ef788828901611d7f565b925050608086013567ffffffffffffffff811115611f1857611f176119bf565b5b611f2488828901611e34565b9150509295509295909350565b600067ffffffffffffffff821115611f4c57611f4b611c6a565b5b602082029050602081019050919050565b6000611f70611f6b84611f31565b611cca565b90508083825260208201905060208402830185811115611f9357611f92611d11565b5b835b81811015611fbc5780611fa88882611a0d565b845260208401935050602081019050611f95565b5050509392505050565b600082601f830112611fdb57611fda611c65565b5b8135611feb848260208601611f5d565b91505092915050565b6000806040838503121561200b5761200a6119ba565b5b600083013567ffffffffffffffff811115612029576120286119bf565b5b61203585828601611fc6565b925050602083013567ffffffffffffffff811115612056576120556119bf565b5b61206285828601611d7f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120a181611a22565b82525050565b60006120b38383612098565b60208301905092915050565b6000602082019050919050565b60006120d78261206c565b6120e18185612077565b93506120ec83612088565b8060005b8381101561211d57815161210488826120a7565b975061210f836120bf565b9250506001810190506120f0565b5085935050505092915050565b6000602082019050818103600083015261214481846120cc565b905092915050565b600080fd5b60008083601f84011261216757612166611c65565b5b8235905067ffffffffffffffff8111156121845761218361214c565b5b6020830191508360018202830111156121a05761219f611d11565b5b9250929050565b600080602083850312156121be576121bd6119ba565b5b600083013567ffffffffffffffff8111156121dc576121db6119bf565b5b6121e885828601612151565b92509250509250929050565b6121fd816119e4565b82525050565b600060208201905061221860008301846121f4565b92915050565b61222781611b47565b811461223257600080fd5b50565b6000813590506122448161221e565b92915050565b60008060408385031215612261576122606119ba565b5b600061226f85828601611a0d565b925050602061228085828601612235565b9150509250929050565b600080604083850312156122a1576122a06119ba565b5b60006122af85828601611a0d565b92505060206122c085828601611a0d565b9150509250929050565b60008083601f8401126122e0576122df611c65565b5b8235905067ffffffffffffffff8111156122fd576122fc61214c565b5b60208301915083602082028301111561231957612318611d11565b5b9250929050565b60008060208385031215612337576123366119ba565b5b600083013567ffffffffffffffff811115612355576123546119bf565b5b612361858286016122ca565b92509250509250929050565b600080600080600060a08688031215612389576123886119ba565b5b600061239788828901611a0d565b95505060206123a888828901611a0d565b94505060406123b988828901611a43565b93505060606123ca88828901611a43565b925050608086013567ffffffffffffffff8111156123eb576123ea6119bf565b5b6123f788828901611e34565b9150509295509295909350565b60006020828403121561241a576124196119ba565b5b600061242884828501611a0d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061247857607f821691505b6020821081141561248c5761248b612431565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546124bf81612460565b6124c98186612492565b945060018216600081146124e457600181146124f557612528565b60ff19831686528186019350612528565b6124fe8561249d565b60005b8381101561252057815481890152600182019150602081019050612501565b838801955050505b50505092915050565b600061253c82611b7d565b6125468185612492565b9350612556818560208601611b99565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000612598600583612492565b91506125a382612562565b600582019050919050565b60006125ba82856124b2565b91506125c68284612531565b91506125d18261258b565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061264682611a22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126795761267861260c565b5b600182019050919050565b6000819050919050565b6000819050919050565b60006126b36126ae6126a984612684565b61268e565b611a22565b9050919050565b6126c381612698565b82525050565b60006040820190506126de6000830185611a98565b6126eb60208301846126ba565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061272c82611a22565b915061273783611a22565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561276c5761276b61260c565b5b828201905092915050565b6000604082019050818103600083015261279181856120cc565b905081810360208301526127a581846120cc565b90509392505050565b60006040820190506127c36000830185611a98565b6127d06020830184611a98565b9392505050565b600081519050919050565b600082825260208201905092915050565b60006127fe826127d7565b61280881856127e2565b9350612818818560208601611b99565b61282181611bcc565b840191505092915050565b600060a08201905061284160008301886121f4565b61284e60208301876121f4565b818103604083015261286081866120cc565b9050818103606083015261287481856120cc565b9050818103608083015261288881846127f3565b90509695505050505050565b6000815190506128a381611aee565b92915050565b6000602082840312156128bf576128be6119ba565b5b60006128cd84828501612894565b91505092915050565b60008160e01c9050919050565b600060033d11156129025760046000803e6128ff6000516128d6565b90505b90565b600060443d101561291557612998565b61291d6119b0565b60043d036004823e80513d602482011167ffffffffffffffff82111715612945575050612998565b808201805167ffffffffffffffff8111156129635750505050612998565b80602083010160043d038501811115612980575050505050612998565b61298f82602001850186611c99565b82955050505050505b90565b600060a0820190506129b060008301886121f4565b6129bd60208301876121f4565b6129ca6040830186611a98565b6129d76060830185611a98565b81810360808301526129e981846127f3565b9050969550505050505056fea26469706673582212205ac7f24a2b1228bb71f60839301b4a5e7c20cd1236ba523dff18dbb80e059c7664736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f45760003560e01c80636a86897411610097578063e985e9c511610066578063e985e9c514610285578063ece8c31c146102b5578063f242432a146102d1578063f2fde38b146102ed576100f4565b80636a8689741461020f5780638da5cb5b1461022d57806395d89b411461024b578063a22cb46514610269576100f4565b80630e89341c116100d35780630e89341c146101775780632eb2c2d6146101a75780634e1273f4146101c3578063570b3c6a146101f3576100f4565b8062fdd58e146100f957806301ffc9a71461012957806306fdde0314610159575b600080fd5b610113600480360381019061010e9190611a58565b610309565b6040516101209190611aa7565b60405180910390f35b610143600480360381019061013e9190611b1a565b610364565b6040516101509190611b62565b60405180910390f35b61016161049e565b60405161016e9190611c16565b60405180910390f35b610191600480360381019061018c9190611c38565b6104db565b60405161019e9190611c16565b60405180910390f35b6101c160048036038101906101bc9190611e62565b61053b565b005b6101dd60048036038101906101d89190611ff4565b610649565b6040516101ea919061212a565b60405180910390f35b61020d600480360381019061020891906121a7565b610765565b005b610217610800565b6040516102249190611aa7565b60405180910390f35b610235610806565b6040516102429190612203565b60405180910390f35b61025361082f565b6040516102609190611c16565b60405180910390f35b610283600480360381019061027e919061224a565b61086c565b005b61029f600480360381019061029a919061228a565b61087b565b6040516102ac9190611b62565b60405180910390f35b6102cf60048036038101906102ca9190612320565b61090f565b005b6102eb60048036038101906102e6919061236d565b610b0e565b005b61030760048036038101906103029190612404565b610c1c565b005b60006001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061042f57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061049757507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600f81526020017f415045204e4654205449434b4554530000000000000000000000000000000000815250905090565b60606000600380546104ec90612460565b9050116105085760405180602001604052806000815250610534565b600361051383610d5e565b6040516020016105249291906125ae565b6040516020818303038152906040525b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156105fe5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610635576040517f99b2a73600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106428585858585610e36565b5050505050565b60606000835167ffffffffffffffff81111561066857610667611c6a565b5b6040519080825280602002602001820160405280156106965781602001602082028036833780820191505090505b50905060005b845181101561075a57600160008583815181106106bc576106bb6125dd565b5b6020026020010151815260200190815260200160002060008683815181106106e7576106e66125dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482828151811061073d5761073c6125dd565b5b602002602001018181525050806107539061263b565b905061069c565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ea576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600391906107fb92919061190d565b505050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f41504520434f494e000000000000000000000000000000000000000000000000815250905090565b6108773383836110d2565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82829050811015610b095760006004549050600460008154809291906109bc9061263b565b91905055506001600082815260200190815260200160002060008585858181106109e9576109e86125dd565b5b90506020020160208101906109fe9190612404565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610a499061263b565b9190505550838383818110610a6157610a606125dd565b5b9050602002016020810190610a769190612404565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62846001604051610aed9291906126c9565b60405180910390a4508080610b019061263b565b915050610997565b505050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610c08576040517f99b2a73600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c158585858585611236565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060006001610d6d84611418565b01905060008167ffffffffffffffff811115610d8c57610d8b611c6a565b5b6040519080825280601f01601f191660200182016040528015610dbe5781602001600182028036833780820191505090505b509050600082602001820190505b600115610e2b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581610e1557610e146126f2565b5b0494506000851415610e2657610e2b565b610dcc565b819350505050919050565b60005b835181101561103e5760016000858381518110610e5957610e586125dd565b5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054838281518110610ec057610ebf6125dd565b5b60200260200101511115610f00576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828181518110610f1357610f126125dd565b5b602002602001015160016000868481518110610f3257610f316125dd565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550828181518110610fa557610fa46125dd565b5b602002602001015160016000868481518110610fc457610fc36125dd565b5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110269190612721565b92505081905550806110379061263b565b9050610e39565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516110b5929190612777565b60405180910390a46110cb33868686868661156b565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611138576040517f3cf0df2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112299190611b62565b60405180910390a3505050565b6001600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112c0576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461137e9190612721565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516113fb9291906127ae565b60405180910390a461141133868686868661173c565b5050505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611476577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161146c5761146b6126f2565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106114b3576d04ee2d6d415b85acef810000000083816114a9576114a86126f2565b5b0492506020810190505b662386f26fc1000083106114e257662386f26fc1000083816114d8576114d76126f2565b5b0492506010810190505b6305f5e100831061150b576305f5e1008381611501576115006126f2565b5b0492506008810190505b6127108310611530576127108381611526576115256126f2565b5b0492506004810190505b606483106115535760648381611549576115486126f2565b5b0492506002810190505b600a8310611562576001810190505b80915050919050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611734578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016115cc95949392919061282c565b602060405180830381600087803b1580156115e657600080fd5b505af192505050801561161757506040513d601f19601f8201168201806040525081019061161491906128a9565b60015b6116b4576116236128e3565b806308c379a014156116805750611638612905565b806116435750611682565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116779190611c16565b60405180910390fd5b505b6040517fc14a9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611732576040517f086d127300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611905578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161179d95949392919061299b565b602060405180830381600087803b1580156117b757600080fd5b505af19250505080156117e857506040513d601f19601f820116820180604052508101906117e591906128a9565b60015b611885576117f46128e3565b806308c379a014156118515750611809612905565b806118145750611853565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118489190611c16565b60405180910390fd5b505b6040517fc14a9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611903576040517f086d127300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505050505050565b82805461191990612460565b90600052602060002090601f01602090048101928261193b5760008555611982565b82601f1061195457803560ff1916838001178555611982565b82800160010185558215611982579182015b82811115611981578235825591602001919060010190611966565b5b50905061198f9190611993565b5090565b5b808211156119ac576000816000905550600101611994565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006119ef826119c4565b9050919050565b6119ff816119e4565b8114611a0a57600080fd5b50565b600081359050611a1c816119f6565b92915050565b6000819050919050565b611a3581611a22565b8114611a4057600080fd5b50565b600081359050611a5281611a2c565b92915050565b60008060408385031215611a6f57611a6e6119ba565b5b6000611a7d85828601611a0d565b9250506020611a8e85828601611a43565b9150509250929050565b611aa181611a22565b82525050565b6000602082019050611abc6000830184611a98565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611af781611ac2565b8114611b0257600080fd5b50565b600081359050611b1481611aee565b92915050565b600060208284031215611b3057611b2f6119ba565b5b6000611b3e84828501611b05565b91505092915050565b60008115159050919050565b611b5c81611b47565b82525050565b6000602082019050611b776000830184611b53565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611bb7578082015181840152602081019050611b9c565b83811115611bc6576000848401525b50505050565b6000601f19601f8301169050919050565b6000611be882611b7d565b611bf28185611b88565b9350611c02818560208601611b99565b611c0b81611bcc565b840191505092915050565b60006020820190508181036000830152611c308184611bdd565b905092915050565b600060208284031215611c4e57611c4d6119ba565b5b6000611c5c84828501611a43565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ca282611bcc565b810181811067ffffffffffffffff82111715611cc157611cc0611c6a565b5b80604052505050565b6000611cd46119b0565b9050611ce08282611c99565b919050565b600067ffffffffffffffff821115611d0057611cff611c6a565b5b602082029050602081019050919050565b600080fd5b6000611d29611d2484611ce5565b611cca565b90508083825260208201905060208402830185811115611d4c57611d4b611d11565b5b835b81811015611d755780611d618882611a43565b845260208401935050602081019050611d4e565b5050509392505050565b600082601f830112611d9457611d93611c65565b5b8135611da4848260208601611d16565b91505092915050565b600080fd5b600067ffffffffffffffff821115611dcd57611dcc611c6a565b5b611dd682611bcc565b9050602081019050919050565b82818337600083830152505050565b6000611e05611e0084611db2565b611cca565b905082815260208101848484011115611e2157611e20611dad565b5b611e2c848285611de3565b509392505050565b600082601f830112611e4957611e48611c65565b5b8135611e59848260208601611df2565b91505092915050565b600080600080600060a08688031215611e7e57611e7d6119ba565b5b6000611e8c88828901611a0d565b9550506020611e9d88828901611a0d565b945050604086013567ffffffffffffffff811115611ebe57611ebd6119bf565b5b611eca88828901611d7f565b935050606086013567ffffffffffffffff811115611eeb57611eea6119bf565b5b611ef788828901611d7f565b925050608086013567ffffffffffffffff811115611f1857611f176119bf565b5b611f2488828901611e34565b9150509295509295909350565b600067ffffffffffffffff821115611f4c57611f4b611c6a565b5b602082029050602081019050919050565b6000611f70611f6b84611f31565b611cca565b90508083825260208201905060208402830185811115611f9357611f92611d11565b5b835b81811015611fbc5780611fa88882611a0d565b845260208401935050602081019050611f95565b5050509392505050565b600082601f830112611fdb57611fda611c65565b5b8135611feb848260208601611f5d565b91505092915050565b6000806040838503121561200b5761200a6119ba565b5b600083013567ffffffffffffffff811115612029576120286119bf565b5b61203585828601611fc6565b925050602083013567ffffffffffffffff811115612056576120556119bf565b5b61206285828601611d7f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120a181611a22565b82525050565b60006120b38383612098565b60208301905092915050565b6000602082019050919050565b60006120d78261206c565b6120e18185612077565b93506120ec83612088565b8060005b8381101561211d57815161210488826120a7565b975061210f836120bf565b9250506001810190506120f0565b5085935050505092915050565b6000602082019050818103600083015261214481846120cc565b905092915050565b600080fd5b60008083601f84011261216757612166611c65565b5b8235905067ffffffffffffffff8111156121845761218361214c565b5b6020830191508360018202830111156121a05761219f611d11565b5b9250929050565b600080602083850312156121be576121bd6119ba565b5b600083013567ffffffffffffffff8111156121dc576121db6119bf565b5b6121e885828601612151565b92509250509250929050565b6121fd816119e4565b82525050565b600060208201905061221860008301846121f4565b92915050565b61222781611b47565b811461223257600080fd5b50565b6000813590506122448161221e565b92915050565b60008060408385031215612261576122606119ba565b5b600061226f85828601611a0d565b925050602061228085828601612235565b9150509250929050565b600080604083850312156122a1576122a06119ba565b5b60006122af85828601611a0d565b92505060206122c085828601611a0d565b9150509250929050565b60008083601f8401126122e0576122df611c65565b5b8235905067ffffffffffffffff8111156122fd576122fc61214c565b5b60208301915083602082028301111561231957612318611d11565b5b9250929050565b60008060208385031215612337576123366119ba565b5b600083013567ffffffffffffffff811115612355576123546119bf565b5b612361858286016122ca565b92509250509250929050565b600080600080600060a08688031215612389576123886119ba565b5b600061239788828901611a0d565b95505060206123a888828901611a0d565b94505060406123b988828901611a43565b93505060606123ca88828901611a43565b925050608086013567ffffffffffffffff8111156123eb576123ea6119bf565b5b6123f788828901611e34565b9150509295509295909350565b60006020828403121561241a576124196119ba565b5b600061242884828501611a0d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061247857607f821691505b6020821081141561248c5761248b612431565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546124bf81612460565b6124c98186612492565b945060018216600081146124e457600181146124f557612528565b60ff19831686528186019350612528565b6124fe8561249d565b60005b8381101561252057815481890152600182019150602081019050612501565b838801955050505b50505092915050565b600061253c82611b7d565b6125468185612492565b9350612556818560208601611b99565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000612598600583612492565b91506125a382612562565b600582019050919050565b60006125ba82856124b2565b91506125c68284612531565b91506125d18261258b565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061264682611a22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126795761267861260c565b5b600182019050919050565b6000819050919050565b6000819050919050565b60006126b36126ae6126a984612684565b61268e565b611a22565b9050919050565b6126c381612698565b82525050565b60006040820190506126de6000830185611a98565b6126eb60208301846126ba565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061272c82611a22565b915061273783611a22565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561276c5761276b61260c565b5b828201905092915050565b6000604082019050818103600083015261279181856120cc565b905081810360208301526127a581846120cc565b90509392505050565b60006040820190506127c36000830185611a98565b6127d06020830184611a98565b9392505050565b600081519050919050565b600082825260208201905092915050565b60006127fe826127d7565b61280881856127e2565b9350612818818560208601611b99565b61282181611bcc565b840191505092915050565b600060a08201905061284160008301886121f4565b61284e60208301876121f4565b818103604083015261286081866120cc565b9050818103606083015261287481856120cc565b9050818103608083015261288881846127f3565b90509695505050505050565b6000815190506128a381611aee565b92915050565b6000602082840312156128bf576128be6119ba565b5b60006128cd84828501612894565b91505092915050565b60008160e01c9050919050565b600060033d11156129025760046000803e6128ff6000516128d6565b90505b90565b600060443d101561291557612998565b61291d6119b0565b60043d036004823e80513d602482011167ffffffffffffffff82111715612945575050612998565b808201805167ffffffffffffffff8111156129635750505050612998565b80602083010160043d038501811115612980575050505050612998565b61298f82602001850186611c99565b82955050505050505b90565b600060a0820190506129b060008301886121f4565b6129bd60208301876121f4565b6129ca6040830186611a98565b6129d76060830185611a98565b81810360808301526129e981846127f3565b9050969550505050505056fea26469706673582212205ac7f24a2b1228bb71f60839301b4a5e7c20cd1236ba523dff18dbb80e059c7664736f6c63430008090033

Deployed Bytecode Sourcemap

10523:6879:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11894:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11351:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11161:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11657:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13200:388;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12064:389;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16946:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10919:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;574:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11254:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12461:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12641:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17044:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12836:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;669:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11894:162;11999:7;12026:9;:13;12036:2;12026:13;;;;;;;;;;;:22;12040:7;12026:22;;;;;;;;;;;;;;;;12019:29;;11894:162;;;;:::o;11351:298::-;11437:4;11489:26;11474:41;;;:11;:41;;;;:110;;;;11547:37;11532:52;;;:11;:52;;;;11474:110;:167;;;;11616:25;11601:40;;;:11;:40;;;;11474:167;11454:187;;11351:298;;;:::o;11161:85::-;11200:13;11233:5;;;;;;;;;;;;;;;;;11226:12;;11161:85;:::o;11657:229::-;11714:13;11781:1;11766:4;11760:18;;;;;:::i;:::-;;;:22;:118;;;;;;;;;;;;;;;;;11826:4;11832:13;:2;:11;:13::i;:::-;11809:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11760:118;11740:138;;11657:229;;;:::o;13200:388::-;13417:10;13409:18;;:4;:18;;;;:59;;;;;13432:18;:24;13451:4;13432:24;;;;;;;;;;;;;;;:36;13457:10;13432:36;;;;;;;;;;;;;;;;;;;;;;;;;13431:37;13409:59;13405:110;;;13490:25;;;;;;;;;;;;;;13405:110;13528:52;13551:4;13557:2;13561:3;13566:7;13575:4;13528:22;:52::i;:::-;13200:388;;;;;:::o;12064:389::-;12194:16;12223:30;12270:8;:15;12256:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12223:63;;12302:9;12297:118;12317:8;:15;12313:1;:19;12297:118;;;12373:9;:17;12383:3;12387:1;12383:6;;;;;;;;:::i;:::-;;;;;;;;12373:17;;;;;;;;;;;:30;12391:8;12400:1;12391:11;;;;;;;;:::i;:::-;;;;;;;;12373:30;;;;;;;;;;;;;;;;12354:13;12368:1;12354:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;12334:3;;;;:::i;:::-;;;12297:118;;;;12432:13;12425:20;;;12064:389;;;;:::o;16946:90::-;397:10;387:20;;:6;;;;;;;;;;:20;;;383:43;;416:10;;;;;;;;;;;;;;383:43;17024:4:::1;;17017;:11;;;;;;;:::i;:::-;;16946:90:::0;;:::o;10919:29::-;;;;:::o;574:87::-;620:7;647:6;;;;;;;;;;;640:13;;574:87;:::o;11254:89::-;11295:13;11328:7;;;;;;;;;;;;;;;;;11321:14;;11254:89;:::o;12461:172::-;12575:50;12594:10;12606:8;12616;12575:18;:50::i;:::-;12461:172;;:::o;12641:187::-;12759:4;12783:18;:27;12802:7;12783:27;;;;;;;;;;;;;;;:37;12811:8;12783:37;;;;;;;;;;;;;;;;;;;;;;;;;12776:44;;12641:187;;;;:::o;17044:355::-;397:10;387:20;;:6;;;;;;;;;;:20;;;383:43;;416:10;;;;;;;;;;;;;;383:43;17119:9:::1;17114:278;17138:2;;:9;;17134:1;:13;17114:278;;;17169:14;17186:10;;17169:27;;17211:10;;:12;;;;;;;;;:::i;:::-;;;;;;17278:9;:17;17288:6;17278:17;;;;;;;;;;;:24;17296:2;;17299:1;17296:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17278:24;;;;;;;;;;;;;;;;:26;;;;;;;;;:::i;:::-;;;;;;17363:2;;17366:1;17363:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17324:56;;17359:1;17324:56;;17339:10;17324:56;;;17370:6;17378:1;17324:56;;;;;;;:::i;:::-;;;;;;;;17154:238;17149:3;;;;;:::i;:::-;;;;17114:278;;;;17044:355:::0;;:::o;12836:356::-;13028:10;13020:18;;:4;:18;;;;:59;;;;;13043:18;:24;13062:4;13043:24;;;;;;;;;;;;;;;:36;13068:10;13043:36;;;;;;;;;;;;;;;;;;;;;;;;;13042:37;13020:59;13016:110;;;13101:25;;;;;;;;;;;;;;13016:110;13139:45;13157:4;13163:2;13167;13171:6;13179:4;13139:17;:45::i;:::-;12836:356;;;;;:::o;669:160::-;397:10;387:20;;:6;;;;;;;;;;:20;;;383:43;;416:10;;;;;;;;;;;;;;383:43;784:8:::1;755:38;;776:6;::::0;::::1;;;;;;;;755:38;;;;;;;;;;;;813:8;804:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;669:160:::0;:::o;9800:716::-;9856:13;9907:14;9944:1;9924:17;9935:5;9924:10;:17::i;:::-;:21;9907:38;;9960:20;9994:6;9983:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9960:41;;10016:11;10145:6;10141:2;10137:15;10129:6;10125:28;10118:35;;10182:288;10189:4;10182:288;;;10214:5;;;;;;;;10356:8;10351:2;10344:5;10340:14;10335:30;10330:3;10322:44;10412:2;10403:11;;;;;;:::i;:::-;;;;;10446:1;10437:5;:10;10433:21;;;10449:5;;10433:21;10182:288;;;10491:6;10484:13;;;;;9800:716;;;:::o;14104:742::-;14305:9;14300:297;14320:3;:10;14316:1;:14;14300:297;;;14369:9;:17;14379:3;14383:1;14379:6;;;;;;;;:::i;:::-;;;;;;;;14369:17;;;;;;;;;;;:23;14387:4;14369:23;;;;;;;;;;;;;;;;14356:7;14364:1;14356:10;;;;;;;;:::i;:::-;;;;;;;;:36;14352:87;;;14418:21;;;;;;;;;;;;;;14352:87;14510:7;14518:1;14510:10;;;;;;;;:::i;:::-;;;;;;;;14483:9;:17;14493:3;14497:1;14493:6;;;;;;;;:::i;:::-;;;;;;;;14483:17;;;;;;;;;;;:23;14501:4;14483:23;;;;;;;;;;;;;;;;:37;;;;;;;;;;;14575:7;14583:1;14575:10;;;;;;;;:::i;:::-;;;;;;;;14550:9;:17;14560:3;14564:1;14560:6;;;;;;;;:::i;:::-;;;;;;;;14550:17;;;;;;;;;;;:21;14568:2;14550:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;14332:3;;;;:::i;:::-;;;14300:297;;;;14644:2;14612:49;;14638:4;14612:49;;14626:10;14612:49;;;14648:3;14653:7;14612:49;;;;;;;:::i;:::-;;;;;;;;14672:166;14722:10;14747:4;14766:2;14783:3;14801:7;14823:4;14672:35;:166::i;:::-;14104:742;;;;;:::o;14854:295::-;14996:8;14987:17;;:5;:17;;;14983:44;;;15013:14;;;;;;;;;;;;;;14983:44;15076:8;15038:18;:25;15057:5;15038:25;;;;;;;;;;;;;;;:35;15064:8;15038:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15122:8;15100:41;;15115:5;15100:41;;;15132:8;15100:41;;;;;;:::i;:::-;;;;;;;;14854:295;;;:::o;13596:500::-;13780:9;:13;13790:2;13780:13;;;;;;;;;;;:19;13794:4;13780:19;;;;;;;;;;;;;;;;13771:6;:28;13767:62;;;13808:21;;;;;;;;;;;;;;13767:62;13888:6;13865:9;:13;13875:2;13865:13;;;;;;;;;;;:19;13879:4;13865:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;13937:6;13916:9;:13;13926:2;13916:13;;;;;;;;;;;:17;13930:2;13916:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;13992:2;13959:48;;13986:4;13959:48;;13974:10;13959:48;;;13996:2;14000:6;13959:48;;;;;;;:::i;:::-;;;;;;;;14018:70;14049:10;14061:4;14067:2;14071;14075:6;14083:4;14018:30;:70::i;:::-;13596:500;;;;;:::o;8759:948::-;8812:7;8832:14;8849:1;8832:18;;8899:8;8890:5;:17;8886:106;;8937:8;8928:17;;;;;;:::i;:::-;;;;;8974:2;8964:12;;;;8886:106;9019:8;9010:5;:17;9006:106;;9057:8;9048:17;;;;;;:::i;:::-;;;;;9094:2;9084:12;;;;9006:106;9139:8;9130:5;:17;9126:106;;9177:8;9168:17;;;;;;:::i;:::-;;;;;9214:2;9204:12;;;;9126:106;9259:7;9250:5;:16;9246:103;;9296:7;9287:16;;;;;;:::i;:::-;;;;;9332:1;9322:11;;;;9246:103;9376:7;9367:5;:16;9363:103;;9413:7;9404:16;;;;;;:::i;:::-;;;;;9449:1;9439:11;;;;9363:103;9493:7;9484:5;:16;9480:103;;9530:7;9521:16;;;;;;:::i;:::-;;;;;9566:1;9556:11;;;;9480:103;9610:7;9601:5;:16;9597:68;;9648:1;9638:11;;;;9597:68;9693:6;9686:13;;;8759:948;;;:::o;16013:925::-;16270:1;16253:2;:14;;;:18;16249:682;;;16326:2;16309:43;;;16375:8;16406:4;16433:3;16459:7;16489:4;16309:203;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16288:632;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16828:6;16821:14;;;;;;;;;;;:::i;:::-;;;;;;;;16288:632;;;16884:20;;;;;;;;;;;;;;16288:632;16609:48;;;16597:60;;;:8;:60;;;;16571:181;;16707:25;;;;;;;;;;;;;;16571:181;16526:241;16249:682;16013:925;;;;;;:::o;15157:848::-;15389:1;15372:2;:14;;;:18;15368:630;;;15445:2;15428:38;;;15489:8;15520:4;15547:2;15572:6;15601:4;15428:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15407:580;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15895:6;15888:14;;;;;;;;;;;:::i;:::-;;;;;;;;15407:580;;;15951:20;;;;;;;;;;;;;;15407:580;15699:43;;;15687:55;;;:8;:55;;;;15683:136;;15774:25;;;;;;;;;;;;;;15683:136;15638:196;15368:630;15157:848;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:149::-;2065:7;2105:66;2098:5;2094:78;2083:89;;2029:149;;;:::o;2184:120::-;2256:23;2273:5;2256:23;:::i;:::-;2249:5;2246:34;2236:62;;2294:1;2291;2284:12;2236:62;2184:120;:::o;2310:137::-;2355:5;2393:6;2380:20;2371:29;;2409:32;2435:5;2409:32;:::i;:::-;2310:137;;;;:::o;2453:327::-;2511:6;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:52;2755:7;2746:6;2735:9;2731:22;2711:52;:::i;:::-;2701:62;;2657:116;2453:327;;;;:::o;2786:90::-;2820:7;2863:5;2856:13;2849:21;2838:32;;2786:90;;;:::o;2882:109::-;2963:21;2978:5;2963:21;:::i;:::-;2958:3;2951:34;2882:109;;:::o;2997:210::-;3084:4;3122:2;3111:9;3107:18;3099:26;;3135:65;3197:1;3186:9;3182:17;3173:6;3135:65;:::i;:::-;2997:210;;;;:::o;3213:99::-;3265:6;3299:5;3293:12;3283:22;;3213:99;;;:::o;3318:169::-;3402:11;3436:6;3431:3;3424:19;3476:4;3471:3;3467:14;3452:29;;3318:169;;;;:::o;3493:307::-;3561:1;3571:113;3585:6;3582:1;3579:13;3571:113;;;3670:1;3665:3;3661:11;3655:18;3651:1;3646:3;3642:11;3635:39;3607:2;3604:1;3600:10;3595:15;;3571:113;;;3702:6;3699:1;3696:13;3693:101;;;3782:1;3773:6;3768:3;3764:16;3757:27;3693:101;3542:258;3493:307;;;:::o;3806:102::-;3847:6;3898:2;3894:7;3889:2;3882:5;3878:14;3874:28;3864:38;;3806:102;;;:::o;3914:364::-;4002:3;4030:39;4063:5;4030:39;:::i;:::-;4085:71;4149:6;4144:3;4085:71;:::i;:::-;4078:78;;4165:52;4210:6;4205:3;4198:4;4191:5;4187:16;4165:52;:::i;:::-;4242:29;4264:6;4242:29;:::i;:::-;4237:3;4233:39;4226:46;;4006:272;3914:364;;;;:::o;4284:313::-;4397:4;4435:2;4424:9;4420:18;4412:26;;4484:9;4478:4;4474:20;4470:1;4459:9;4455:17;4448:47;4512:78;4585:4;4576:6;4512:78;:::i;:::-;4504:86;;4284:313;;;;:::o;4603:329::-;4662:6;4711:2;4699:9;4690:7;4686:23;4682:32;4679:119;;;4717:79;;:::i;:::-;4679:119;4837:1;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4808:117;4603:329;;;;:::o;4938:117::-;5047:1;5044;5037:12;5061:180;5109:77;5106:1;5099:88;5206:4;5203:1;5196:15;5230:4;5227:1;5220:15;5247:281;5330:27;5352:4;5330:27;:::i;:::-;5322:6;5318:40;5460:6;5448:10;5445:22;5424:18;5412:10;5409:34;5406:62;5403:88;;;5471:18;;:::i;:::-;5403:88;5511:10;5507:2;5500:22;5290:238;5247:281;;:::o;5534:129::-;5568:6;5595:20;;:::i;:::-;5585:30;;5624:33;5652:4;5644:6;5624:33;:::i;:::-;5534:129;;;:::o;5669:311::-;5746:4;5836:18;5828:6;5825:30;5822:56;;;5858:18;;:::i;:::-;5822:56;5908:4;5900:6;5896:17;5888:25;;5968:4;5962;5958:15;5950:23;;5669:311;;;:::o;5986:117::-;6095:1;6092;6085:12;6126:710;6222:5;6247:81;6263:64;6320:6;6263:64;:::i;:::-;6247:81;:::i;:::-;6238:90;;6348:5;6377:6;6370:5;6363:21;6411:4;6404:5;6400:16;6393:23;;6464:4;6456:6;6452:17;6444:6;6440:30;6493:3;6485:6;6482:15;6479:122;;;6512:79;;:::i;:::-;6479:122;6627:6;6610:220;6644:6;6639:3;6636:15;6610:220;;;6719:3;6748:37;6781:3;6769:10;6748:37;:::i;:::-;6743:3;6736:50;6815:4;6810:3;6806:14;6799:21;;6686:144;6670:4;6665:3;6661:14;6654:21;;6610:220;;;6614:21;6228:608;;6126:710;;;;;:::o;6859:370::-;6930:5;6979:3;6972:4;6964:6;6960:17;6956:27;6946:122;;6987:79;;:::i;:::-;6946:122;7104:6;7091:20;7129:94;7219:3;7211:6;7204:4;7196:6;7192:17;7129:94;:::i;:::-;7120:103;;6936:293;6859:370;;;;:::o;7235:117::-;7344:1;7341;7334:12;7358:307;7419:4;7509:18;7501:6;7498:30;7495:56;;;7531:18;;:::i;:::-;7495:56;7569:29;7591:6;7569:29;:::i;:::-;7561:37;;7653:4;7647;7643:15;7635:23;;7358:307;;;:::o;7671:154::-;7755:6;7750:3;7745;7732:30;7817:1;7808:6;7803:3;7799:16;7792:27;7671:154;;;:::o;7831:410::-;7908:5;7933:65;7949:48;7990:6;7949:48;:::i;:::-;7933:65;:::i;:::-;7924:74;;8021:6;8014:5;8007:21;8059:4;8052:5;8048:16;8097:3;8088:6;8083:3;8079:16;8076:25;8073:112;;;8104:79;;:::i;:::-;8073:112;8194:41;8228:6;8223:3;8218;8194:41;:::i;:::-;7914:327;7831:410;;;;;:::o;8260:338::-;8315:5;8364:3;8357:4;8349:6;8345:17;8341:27;8331:122;;8372:79;;:::i;:::-;8331:122;8489:6;8476:20;8514:78;8588:3;8580:6;8573:4;8565:6;8561:17;8514:78;:::i;:::-;8505:87;;8321:277;8260:338;;;;:::o;8604:1509::-;8758:6;8766;8774;8782;8790;8839:3;8827:9;8818:7;8814:23;8810:33;8807:120;;;8846:79;;:::i;:::-;8807:120;8966:1;8991:53;9036:7;9027:6;9016:9;9012:22;8991:53;:::i;:::-;8981:63;;8937:117;9093:2;9119:53;9164:7;9155:6;9144:9;9140:22;9119:53;:::i;:::-;9109:63;;9064:118;9249:2;9238:9;9234:18;9221:32;9280:18;9272:6;9269:30;9266:117;;;9302:79;;:::i;:::-;9266:117;9407:78;9477:7;9468:6;9457:9;9453:22;9407:78;:::i;:::-;9397:88;;9192:303;9562:2;9551:9;9547:18;9534:32;9593:18;9585:6;9582:30;9579:117;;;9615:79;;:::i;:::-;9579:117;9720:78;9790:7;9781:6;9770:9;9766:22;9720:78;:::i;:::-;9710:88;;9505:303;9875:3;9864:9;9860:19;9847:33;9907:18;9899:6;9896:30;9893:117;;;9929:79;;:::i;:::-;9893:117;10034:62;10088:7;10079:6;10068:9;10064:22;10034:62;:::i;:::-;10024:72;;9818:288;8604:1509;;;;;;;;:::o;10119:311::-;10196:4;10286:18;10278:6;10275:30;10272:56;;;10308:18;;:::i;:::-;10272:56;10358:4;10350:6;10346:17;10338:25;;10418:4;10412;10408:15;10400:23;;10119:311;;;:::o;10453:710::-;10549:5;10574:81;10590:64;10647:6;10590:64;:::i;:::-;10574:81;:::i;:::-;10565:90;;10675:5;10704:6;10697:5;10690:21;10738:4;10731:5;10727:16;10720:23;;10791:4;10783:6;10779:17;10771:6;10767:30;10820:3;10812:6;10809:15;10806:122;;;10839:79;;:::i;:::-;10806:122;10954:6;10937:220;10971:6;10966:3;10963:15;10937:220;;;11046:3;11075:37;11108:3;11096:10;11075:37;:::i;:::-;11070:3;11063:50;11142:4;11137:3;11133:14;11126:21;;11013:144;10997:4;10992:3;10988:14;10981:21;;10937:220;;;10941:21;10555:608;;10453:710;;;;;:::o;11186:370::-;11257:5;11306:3;11299:4;11291:6;11287:17;11283:27;11273:122;;11314:79;;:::i;:::-;11273:122;11431:6;11418:20;11456:94;11546:3;11538:6;11531:4;11523:6;11519:17;11456:94;:::i;:::-;11447:103;;11263:293;11186:370;;;;:::o;11562:894::-;11680:6;11688;11737:2;11725:9;11716:7;11712:23;11708:32;11705:119;;;11743:79;;:::i;:::-;11705:119;11891:1;11880:9;11876:17;11863:31;11921:18;11913:6;11910:30;11907:117;;;11943:79;;:::i;:::-;11907:117;12048:78;12118:7;12109:6;12098:9;12094:22;12048:78;:::i;:::-;12038:88;;11834:302;12203:2;12192:9;12188:18;12175:32;12234:18;12226:6;12223:30;12220:117;;;12256:79;;:::i;:::-;12220:117;12361:78;12431:7;12422:6;12411:9;12407:22;12361:78;:::i;:::-;12351:88;;12146:303;11562:894;;;;;:::o;12462:114::-;12529:6;12563:5;12557:12;12547:22;;12462:114;;;:::o;12582:184::-;12681:11;12715:6;12710:3;12703:19;12755:4;12750:3;12746:14;12731:29;;12582:184;;;;:::o;12772:132::-;12839:4;12862:3;12854:11;;12892:4;12887:3;12883:14;12875:22;;12772:132;;;:::o;12910:108::-;12987:24;13005:5;12987:24;:::i;:::-;12982:3;12975:37;12910:108;;:::o;13024:179::-;13093:10;13114:46;13156:3;13148:6;13114:46;:::i;:::-;13192:4;13187:3;13183:14;13169:28;;13024:179;;;;:::o;13209:113::-;13279:4;13311;13306:3;13302:14;13294:22;;13209:113;;;:::o;13358:732::-;13477:3;13506:54;13554:5;13506:54;:::i;:::-;13576:86;13655:6;13650:3;13576:86;:::i;:::-;13569:93;;13686:56;13736:5;13686:56;:::i;:::-;13765:7;13796:1;13781:284;13806:6;13803:1;13800:13;13781:284;;;13882:6;13876:13;13909:63;13968:3;13953:13;13909:63;:::i;:::-;13902:70;;13995:60;14048:6;13995:60;:::i;:::-;13985:70;;13841:224;13828:1;13825;13821:9;13816:14;;13781:284;;;13785:14;14081:3;14074:10;;13482:608;;;13358:732;;;;:::o;14096:373::-;14239:4;14277:2;14266:9;14262:18;14254:26;;14326:9;14320:4;14316:20;14312:1;14301:9;14297:17;14290:47;14354:108;14457:4;14448:6;14354:108;:::i;:::-;14346:116;;14096:373;;;;:::o;14475:117::-;14584:1;14581;14574:12;14612:553;14670:8;14680:6;14730:3;14723:4;14715:6;14711:17;14707:27;14697:122;;14738:79;;:::i;:::-;14697:122;14851:6;14838:20;14828:30;;14881:18;14873:6;14870:30;14867:117;;;14903:79;;:::i;:::-;14867:117;15017:4;15009:6;15005:17;14993:29;;15071:3;15063:4;15055:6;15051:17;15041:8;15037:32;15034:41;15031:128;;;15078:79;;:::i;:::-;15031:128;14612:553;;;;;:::o;15171:529::-;15242:6;15250;15299:2;15287:9;15278:7;15274:23;15270:32;15267:119;;;15305:79;;:::i;:::-;15267:119;15453:1;15442:9;15438:17;15425:31;15483:18;15475:6;15472:30;15469:117;;;15505:79;;:::i;:::-;15469:117;15618:65;15675:7;15666:6;15655:9;15651:22;15618:65;:::i;:::-;15600:83;;;;15396:297;15171:529;;;;;:::o;15706:118::-;15793:24;15811:5;15793:24;:::i;:::-;15788:3;15781:37;15706:118;;:::o;15830:222::-;15923:4;15961:2;15950:9;15946:18;15938:26;;15974:71;16042:1;16031:9;16027:17;16018:6;15974:71;:::i;:::-;15830:222;;;;:::o;16058:116::-;16128:21;16143:5;16128:21;:::i;:::-;16121:5;16118:32;16108:60;;16164:1;16161;16154:12;16108:60;16058:116;:::o;16180:133::-;16223:5;16261:6;16248:20;16239:29;;16277:30;16301:5;16277:30;:::i;:::-;16180:133;;;;:::o;16319:468::-;16384:6;16392;16441:2;16429:9;16420:7;16416:23;16412:32;16409:119;;;16447:79;;:::i;:::-;16409:119;16567:1;16592:53;16637:7;16628:6;16617:9;16613:22;16592:53;:::i;:::-;16582:63;;16538:117;16694:2;16720:50;16762:7;16753:6;16742:9;16738:22;16720:50;:::i;:::-;16710:60;;16665:115;16319:468;;;;;:::o;16793:474::-;16861:6;16869;16918:2;16906:9;16897:7;16893:23;16889:32;16886:119;;;16924:79;;:::i;:::-;16886:119;17044:1;17069:53;17114:7;17105:6;17094:9;17090:22;17069:53;:::i;:::-;17059:63;;17015:117;17171:2;17197:53;17242:7;17233:6;17222:9;17218:22;17197:53;:::i;:::-;17187:63;;17142:118;16793:474;;;;;:::o;17290:568::-;17363:8;17373:6;17423:3;17416:4;17408:6;17404:17;17400:27;17390:122;;17431:79;;:::i;:::-;17390:122;17544:6;17531:20;17521:30;;17574:18;17566:6;17563:30;17560:117;;;17596:79;;:::i;:::-;17560:117;17710:4;17702:6;17698:17;17686:29;;17764:3;17756:4;17748:6;17744:17;17734:8;17730:32;17727:41;17724:128;;;17771:79;;:::i;:::-;17724:128;17290:568;;;;;:::o;17864:559::-;17950:6;17958;18007:2;17995:9;17986:7;17982:23;17978:32;17975:119;;;18013:79;;:::i;:::-;17975:119;18161:1;18150:9;18146:17;18133:31;18191:18;18183:6;18180:30;18177:117;;;18213:79;;:::i;:::-;18177:117;18326:80;18398:7;18389:6;18378:9;18374:22;18326:80;:::i;:::-;18308:98;;;;18104:312;17864:559;;;;;:::o;18429:1089::-;18533:6;18541;18549;18557;18565;18614:3;18602:9;18593:7;18589:23;18585:33;18582:120;;;18621:79;;:::i;:::-;18582:120;18741:1;18766:53;18811:7;18802:6;18791:9;18787:22;18766:53;:::i;:::-;18756:63;;18712:117;18868:2;18894:53;18939:7;18930:6;18919:9;18915:22;18894:53;:::i;:::-;18884:63;;18839:118;18996:2;19022:53;19067:7;19058:6;19047:9;19043:22;19022:53;:::i;:::-;19012:63;;18967:118;19124:2;19150:53;19195:7;19186:6;19175:9;19171:22;19150:53;:::i;:::-;19140:63;;19095:118;19280:3;19269:9;19265:19;19252:33;19312:18;19304:6;19301:30;19298:117;;;19334:79;;:::i;:::-;19298:117;19439:62;19493:7;19484:6;19473:9;19469:22;19439:62;:::i;:::-;19429:72;;19223:288;18429:1089;;;;;;;;:::o;19524:329::-;19583:6;19632:2;19620:9;19611:7;19607:23;19603:32;19600:119;;;19638:79;;:::i;:::-;19600:119;19758:1;19783:53;19828:7;19819:6;19808:9;19804:22;19783:53;:::i;:::-;19773:63;;19729:117;19524:329;;;;:::o;19859:180::-;19907:77;19904:1;19897:88;20004:4;20001:1;19994:15;20028:4;20025:1;20018:15;20045:320;20089:6;20126:1;20120:4;20116:12;20106:22;;20173:1;20167:4;20163:12;20194:18;20184:81;;20250:4;20242:6;20238:17;20228:27;;20184:81;20312:2;20304:6;20301:14;20281:18;20278:38;20275:84;;;20331:18;;:::i;:::-;20275:84;20096:269;20045:320;;;:::o;20371:148::-;20473:11;20510:3;20495:18;;20371:148;;;;:::o;20525:141::-;20574:4;20597:3;20589:11;;20620:3;20617:1;20610:14;20654:4;20651:1;20641:18;20633:26;;20525:141;;;:::o;20696:845::-;20799:3;20836:5;20830:12;20865:36;20891:9;20865:36;:::i;:::-;20917:89;20999:6;20994:3;20917:89;:::i;:::-;20910:96;;21037:1;21026:9;21022:17;21053:1;21048:137;;;;21199:1;21194:341;;;;21015:520;;21048:137;21132:4;21128:9;21117;21113:25;21108:3;21101:38;21168:6;21163:3;21159:16;21152:23;;21048:137;;21194:341;21261:38;21293:5;21261:38;:::i;:::-;21321:1;21335:154;21349:6;21346:1;21343:13;21335:154;;;21423:7;21417:14;21413:1;21408:3;21404:11;21397:35;21473:1;21464:7;21460:15;21449:26;;21371:4;21368:1;21364:12;21359:17;;21335:154;;;21518:6;21513:3;21509:16;21502:23;;21201:334;;21015:520;;20803:738;;20696:845;;;;:::o;21547:377::-;21653:3;21681:39;21714:5;21681:39;:::i;:::-;21736:89;21818:6;21813:3;21736:89;:::i;:::-;21729:96;;21834:52;21879:6;21874:3;21867:4;21860:5;21856:16;21834:52;:::i;:::-;21911:6;21906:3;21902:16;21895:23;;21657:267;21547:377;;;;:::o;21930:155::-;22070:7;22066:1;22058:6;22054:14;22047:31;21930:155;:::o;22091:400::-;22251:3;22272:84;22354:1;22349:3;22272:84;:::i;:::-;22265:91;;22365:93;22454:3;22365:93;:::i;:::-;22483:1;22478:3;22474:11;22467:18;;22091:400;;;:::o;22497:695::-;22775:3;22797:92;22885:3;22876:6;22797:92;:::i;:::-;22790:99;;22906:95;22997:3;22988:6;22906:95;:::i;:::-;22899:102;;23018:148;23162:3;23018:148;:::i;:::-;23011:155;;23183:3;23176:10;;22497:695;;;;;:::o;23198:180::-;23246:77;23243:1;23236:88;23343:4;23340:1;23333:15;23367:4;23364:1;23357:15;23384:180;23432:77;23429:1;23422:88;23529:4;23526:1;23519:15;23553:4;23550:1;23543:15;23570:233;23609:3;23632:24;23650:5;23632:24;:::i;:::-;23623:33;;23678:66;23671:5;23668:77;23665:103;;;23748:18;;:::i;:::-;23665:103;23795:1;23788:5;23784:13;23777:20;;23570:233;;;:::o;23809:85::-;23854:7;23883:5;23872:16;;23809:85;;;:::o;23900:60::-;23928:3;23949:5;23942:12;;23900:60;;;:::o;23966:158::-;24024:9;24057:61;24075:42;24084:32;24110:5;24084:32;:::i;:::-;24075:42;:::i;:::-;24057:61;:::i;:::-;24044:74;;23966:158;;;:::o;24130:147::-;24225:45;24264:5;24225:45;:::i;:::-;24220:3;24213:58;24130:147;;:::o;24283:348::-;24412:4;24450:2;24439:9;24435:18;24427:26;;24463:71;24531:1;24520:9;24516:17;24507:6;24463:71;:::i;:::-;24544:80;24620:2;24609:9;24605:18;24596:6;24544:80;:::i;:::-;24283:348;;;;;:::o;24637:180::-;24685:77;24682:1;24675:88;24782:4;24779:1;24772:15;24806:4;24803:1;24796:15;24823:305;24863:3;24882:20;24900:1;24882:20;:::i;:::-;24877:25;;24916:20;24934:1;24916:20;:::i;:::-;24911:25;;25070:1;25002:66;24998:74;24995:1;24992:81;24989:107;;;25076:18;;:::i;:::-;24989:107;25120:1;25117;25113:9;25106:16;;24823:305;;;;:::o;25134:634::-;25355:4;25393:2;25382:9;25378:18;25370:26;;25442:9;25436:4;25432:20;25428:1;25417:9;25413:17;25406:47;25470:108;25573:4;25564:6;25470:108;:::i;:::-;25462:116;;25625:9;25619:4;25615:20;25610:2;25599:9;25595:18;25588:48;25653:108;25756:4;25747:6;25653:108;:::i;:::-;25645:116;;25134:634;;;;;:::o;25774:332::-;25895:4;25933:2;25922:9;25918:18;25910:26;;25946:71;26014:1;26003:9;25999:17;25990:6;25946:71;:::i;:::-;26027:72;26095:2;26084:9;26080:18;26071:6;26027:72;:::i;:::-;25774:332;;;;;:::o;26112:98::-;26163:6;26197:5;26191:12;26181:22;;26112:98;;;:::o;26216:168::-;26299:11;26333:6;26328:3;26321:19;26373:4;26368:3;26364:14;26349:29;;26216:168;;;;:::o;26390:360::-;26476:3;26504:38;26536:5;26504:38;:::i;:::-;26558:70;26621:6;26616:3;26558:70;:::i;:::-;26551:77;;26637:52;26682:6;26677:3;26670:4;26663:5;26659:16;26637:52;:::i;:::-;26714:29;26736:6;26714:29;:::i;:::-;26709:3;26705:39;26698:46;;26480:270;26390:360;;;;:::o;26756:1053::-;27079:4;27117:3;27106:9;27102:19;27094:27;;27131:71;27199:1;27188:9;27184:17;27175:6;27131:71;:::i;:::-;27212:72;27280:2;27269:9;27265:18;27256:6;27212:72;:::i;:::-;27331:9;27325:4;27321:20;27316:2;27305:9;27301:18;27294:48;27359:108;27462:4;27453:6;27359:108;:::i;:::-;27351:116;;27514:9;27508:4;27504:20;27499:2;27488:9;27484:18;27477:48;27542:108;27645:4;27636:6;27542:108;:::i;:::-;27534:116;;27698:9;27692:4;27688:20;27682:3;27671:9;27667:19;27660:49;27726:76;27797:4;27788:6;27726:76;:::i;:::-;27718:84;;26756:1053;;;;;;;;:::o;27815:141::-;27871:5;27902:6;27896:13;27887:22;;27918:32;27944:5;27918:32;:::i;:::-;27815:141;;;;:::o;27962:349::-;28031:6;28080:2;28068:9;28059:7;28055:23;28051:32;28048:119;;;28086:79;;:::i;:::-;28048:119;28206:1;28231:63;28286:7;28277:6;28266:9;28262:22;28231:63;:::i;:::-;28221:73;;28177:127;27962:349;;;;:::o;28317:106::-;28361:8;28410:5;28405:3;28401:15;28380:36;;28317:106;;;:::o;28429:183::-;28464:3;28502:1;28484:16;28481:23;28478:128;;;28540:1;28537;28534;28519:23;28562:34;28593:1;28587:8;28562:34;:::i;:::-;28555:41;;28478:128;28429:183;:::o;28618:711::-;28657:3;28695:4;28677:16;28674:26;28671:39;;;28703:5;;28671:39;28732:20;;:::i;:::-;28807:1;28789:16;28785:24;28782:1;28776:4;28761:49;28840:4;28834:11;28939:16;28932:4;28924:6;28920:17;28917:39;28884:18;28876:6;28873:30;28857:113;28854:146;;;28985:5;;;;28854:146;29031:6;29025:4;29021:17;29067:3;29061:10;29094:18;29086:6;29083:30;29080:43;;;29116:5;;;;;;29080:43;29164:6;29157:4;29152:3;29148:14;29144:27;29223:1;29205:16;29201:24;29195:4;29191:35;29186:3;29183:44;29180:57;;;29230:5;;;;;;;29180:57;29247;29295:6;29289:4;29285:17;29277:6;29273:30;29267:4;29247:57;:::i;:::-;29320:3;29313:10;;28661:668;;;;;28618:711;;:::o;29335:751::-;29558:4;29596:3;29585:9;29581:19;29573:27;;29610:71;29678:1;29667:9;29663:17;29654:6;29610:71;:::i;:::-;29691:72;29759:2;29748:9;29744:18;29735:6;29691:72;:::i;:::-;29773;29841:2;29830:9;29826:18;29817:6;29773:72;:::i;:::-;29855;29923:2;29912:9;29908:18;29899:6;29855:72;:::i;:::-;29975:9;29969:4;29965:20;29959:3;29948:9;29944:19;29937:49;30003:76;30074:4;30065:6;30003:76;:::i;:::-;29995:84;;29335:751;;;;;;;;:::o

Swarm Source

ipfs://5ac7f24a2b1228bb71f60839301b4a5e7c20cd1236ba523dff18dbb80e059c76
[ 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.