ETH Price: $2,380.03 (-1.22%)

Momoguro Official (MOMO)
 

Overview

TokenID

403

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
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:
Momoguro

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-01
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.8.4;

interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error UnableGetTokenOwnerByIndex();
error URIQueryForNonexistentToken();

/**
 * Updated, minimalist and gas efficient version of OpenZeppelins ERC721 contract.
 * Includes the Metadata and  Enumerable extension.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 * Does not support burning tokens
 *
 * @author beskay0x
 * Credits: chiru-labs, solmate, transmissions11, nftchance, squeebo_nft and others
 */

abstract contract ERC721B {
    /*///////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;
    bool internal CanTransfer=true;

    function tokenURI(uint256 tokenId) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                          ERC721 STORAGE
    //////////////////////////////////////////////////////////////*/

    // Array which maps token ID to address (index is tokenID)
    address[] internal _owners;

    address[] internal UsersToTransfer;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /*///////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x780e9d63 || // ERC165 Interface ID for ERC721Enumerable
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*///////////////////////////////////////////////////////////////
                       ERC721ENUMERABLE LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _owners.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     * Dont call this function on chain from another smart contract, since it can become quite expensive
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256 tokenId) {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; tokenId < qty; tokenId++) {
                if (owner == ownerOf(tokenId)) {
                    if (count == index) return tokenId;
                    else count++;
                }
            }
        }

        revert UnableGetTokenOwnerByIndex();
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual returns (uint256) {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Iterates through _owners array, returns balance of address
     * It is not recommended to call this function from another smart contract
     * as it can become quite expensive -- call this function off chain instead.
     */
    function balanceOf(address owner) public view virtual returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty; i++) {
                if (owner == ownerOf(i)) {
                    count++;
                }
            }
        }
        return count;
    }

    /**
     * @dev See {IERC721-ownerOf}.
     * Gas spent here starts off proportional to the maximum mint batch size.
     * It gradually moves to O(1) as tokens get transferred around in the collection over time.
     */
    function ownerOf(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; ; tokenId++) {
                if (_owners[tokenId] != address(0)) {
                    return _owners[tokenId];
                }
            }
        }

        revert UnableDetermineTokenOwner();
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual {
        address owner = ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (msg.sender != owner && !isApprovedForAll(owner, msg.sender)) revert ApprovalCallerNotOwnerNorApproved();

        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual {
        if (operator == msg.sender) revert ApproveToCaller();

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual {
        require(CanTransfer,"You need Transfer Token");
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();
        if (ownerOf(tokenId) != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        bool isApprovedOrOwner = (msg.sender == from ||
            msg.sender == getApproved(tokenId) ||
            isApprovedForAll(from, msg.sender));
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();

        // delete token approvals from previous owner
        delete _tokenApprovals[tokenId];
        _owners[tokenId] = to;

        // if token ID below transferred one isnt set, set it to previous owner
        // if tokenid is zero, skip this to prevent underflow
        if (tokenId > 0 && _owners[tokenId - 1] == address(0)) {
            _owners[tokenId - 1] = from;
        }

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        safeTransferFrom(from, to, id, '');
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        if (!_checkOnERC721Received(from, to, id, data)) revert TransferToNonERC721ReceiverImplementer();
    }

    /**
     * @dev Returns whether `tokenId` exists.
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length;
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.code.length == 0) return true;

        try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) {
            return retval == IERC721Receiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) revert TransferToNonERC721ReceiverImplementer();

            assembly {
                revert(add(32, reason), mload(reason))
            }
        }
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev check if contract confirms token transfer, if not - reverts
     * unlike the standard ERC721 implementation this is only called once per mint,
     * no matter how many tokens get minted, since it is useless to check this
     * requirement several times -- if the contract confirms one token,
     * it will confirm all additional ones too.
     * This saves us around 5k gas per additional mint
     */
    function _safeMint(address to, uint256 qty) internal virtual {
        _safeMint(to, qty, '');
    }

    function _safeMint(
        address to,
        uint256 qty,
        bytes memory data
    ) internal virtual {
        _mint(to, qty);

        if (!_checkOnERC721Received(address(0), to, _owners.length - 1, data))
            revert TransferToNonERC721ReceiverImplementer();
    }

    function _mint(address to, uint256 qty) internal virtual {
        if (to == address(0)) revert MintToZeroAddress();
        if (qty == 0) revert MintZeroQuantity();

        uint256 _currentIndex = _owners.length;

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty - 1; i++) {
                _owners.push();
                emit Transfer(address(0), to, _currentIndex + i);
            }
        }

        // set last index to receiver
        _owners.push(to);
        emit Transfer(address(0), to, _currentIndex + (qty - 1));
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_msgSender());
    }

  
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

  
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI"s implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)

pragma solidity ^0.8.0;

library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV // Deprecated in v4.8
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        }
    }

    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {
        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        uint8 v = uint8((uint256(vs) >> 255) + 27);
        return tryRecover(hash, v, r, s);
    }


    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {

        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
    }

    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

contract Momoguro is ERC721B, Ownable {
	using Strings for uint;
    using ECDSA for bytes32;

    uint public constant maxPerWallet = 10;
	uint public maxSupply = 8888;
    uint public price = 0.01 ether;
    address private _signerAddress;

	bool public isPaused = false;
    string private _baseURL = "";
	mapping(address => uint) private _walletMintedCount;

	constructor()
	ERC721B("Momoguro Official", "MOMO") {
        _signerAddress = msg.sender;
    }

	function contractURI() public pure returns (string memory) {
		return "";
	}

    function mintedCount(address owner) external view returns (uint) {
        return _walletMintedCount[owner];
    }

    function setBaseUri(string memory url) external onlyOwner {
	    _baseURL = url;
	}

	function setPaused(bool paused) external onlyOwner {
	   isPaused = paused;
	}

	function withdraw() external onlyOwner {
		(bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
	}

	function setMaxSupply(uint newMaxSupply) external onlyOwner {
		maxSupply = newMaxSupply;
	}

	function tokenURI(uint tokenId)
		public
		view
		override
		returns (string memory)
	{
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return bytes(_baseURL).length > 0 
            ? string(abi.encodePacked(_baseURL, tokenId.toString(), ".json"))
            : "";
	}

	function publicMint(uint numTokens) external payable {
        require(totalSupply() + numTokens <= maxSupply,"Exceeds max supply");
        require( _walletMintedCount[msg.sender] + numTokens <= maxPerWallet, "Exceeds wallet limit");
        require(msg.value >= price * numTokens, "Not enough ETH sent, check price!" );
		_safeMint(msg.sender, numTokens);
	}

    function whitelistMint(uint numTokens, bytes calldata signature) external {
        require(totalSupply() + numTokens <= maxSupply,"Exceeds max supply");
        require(_signerAddress == keccak256(
            abi.encodePacked(
                "\x19Ethereum Signed Message:\n32",
                bytes32(uint256(uint160(msg.sender)))
            )
        ).recover(signature), "Signer address mismatch.");
        _safeMint(msg.sender, numTokens);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"inputs":[],"name":"UnableGetTokenOwnerByIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"mintedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","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":"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":"string","name":"url","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"whitelistMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600260006101000a81548160ff0219169083151502179055506122b8600855662386f26fc100006009556000600a60146101000a81548160ff02191690831515021790555060405180602001604052806000815250600b90816200006b9190620004bb565b503480156200007957600080fd5b506040518060400160405280601181526020017f4d6f6d6f6775726f204f6666696369616c0000000000000000000000000000008152506040518060400160405280600481526020017f4d4f4d4f000000000000000000000000000000000000000000000000000000008152508160009081620000f79190620004bb565b508060019081620001099190620004bb565b5050506200012c620001206200017360201b60201c565b6200017b60201b60201c565b33600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005a2565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002c357607f821691505b602082108103620002d957620002d86200027b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000304565b6200034f868362000304565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200039c62000396620003908462000367565b62000371565b62000367565b9050919050565b6000819050919050565b620003b8836200037b565b620003d0620003c782620003a3565b84845462000311565b825550505050565b600090565b620003e7620003d8565b620003f4818484620003ad565b505050565b5b818110156200041c5762000410600082620003dd565b600181019050620003fa565b5050565b601f8211156200046b576200043581620002df565b6200044084620002f4565b8101602085101562000450578190505b620004686200045f85620002f4565b830182620003f9565b50505b505050565b600082821c905092915050565b6000620004906000198460080262000470565b1980831691505092915050565b6000620004ab83836200047d565b9150826002028217905092915050565b620004c68262000241565b67ffffffffffffffff811115620004e257620004e16200024c565b5b620004ee8254620002aa565b620004fb82828562000420565b600060209050601f8311600181146200053357600084156200051e578287015190505b6200052a85826200049d565b8655506200059a565b601f1984166200054386620002df565b60005b828110156200056d5784890151825560018201915060208501945060208101905062000546565b868310156200058d578489015162000589601f8916826200047d565b8355505b6001600288020188555050505b505050505050565b61399380620005b26000396000f3fe6080604052600436106101d85760003560e01c806370a0823111610102578063b187bd2611610095578063e8a3d48511610064578063e8a3d4851461069b578063e985e9c5146106c6578063f2fde38b14610703578063fddcb5ea1461072c576101d8565b8063b187bd26146105df578063b88d4fde1461060a578063c87b56dd14610633578063d5abeb0114610670576101d8565b80639e852f75116100d15780639e852f7514610539578063a035b1fe14610562578063a0bcfc7f1461058d578063a22cb465146105b6576101d8565b806370a082311461048f578063715018a6146104cc5780638da5cb5b146104e357806395d89b411461050e576101d8565b80632db115441161017a578063453c231011610149578063453c2310146103c15780634f6ccce7146103ec5780636352211e146104295780636f8b44b014610466576101d8565b80632db11544146103285780632f745c59146103445780633ccfd60b1461038157806342842e0e14610398576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806316c38b3c146102ab57806318160ddd146102d457806323b872dd146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612486565b610769565b60405161021191906124ce565b60405180910390f35b34801561022657600080fd5b5061022f61082b565b60405161023c9190612579565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906125d1565b6108b9565b604051610279919061263f565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612686565b610935565b005b3480156102b757600080fd5b506102d260048036038101906102cd91906126f2565b610ad3565b005b3480156102e057600080fd5b506102e9610af8565b6040516102f6919061272e565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190612749565b610b05565b005b610342600480360381019061033d91906125d1565b610f08565b005b34801561035057600080fd5b5061036b60048036038101906103669190612686565b61104a565b604051610378919061272e565b60405180910390f35b34801561038d57600080fd5b50610396611138565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612749565b6111b9565b005b3480156103cd57600080fd5b506103d66111d9565b6040516103e3919061272e565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906125d1565b6111de565b604051610420919061272e565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906125d1565b611228565b60405161045d919061263f565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906125d1565b611334565b005b34801561049b57600080fd5b506104b660048036038101906104b1919061279c565b611346565b6040516104c3919061272e565b60405180910390f35b3480156104d857600080fd5b506104e161141f565b005b3480156104ef57600080fd5b506104f8611433565b604051610505919061263f565b60405180910390f35b34801561051a57600080fd5b5061052361145d565b6040516105309190612579565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b919061282e565b6114eb565b005b34801561056e57600080fd5b50610577611676565b604051610584919061272e565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906129be565b61167c565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190612a07565b611697565b005b3480156105eb57600080fd5b506105f46117f9565b60405161060191906124ce565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612ae8565b61180c565b005b34801561063f57600080fd5b5061065a600480360381019061065591906125d1565b61185f565b6040516106679190612579565b60405180910390f35b34801561067c57600080fd5b50610685611907565b604051610692919061272e565b60405180910390f35b3480156106a757600080fd5b506106b061190d565b6040516106bd9190612579565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190612b6b565b611924565b6040516106fa91906124ce565b60405180910390f35b34801561070f57600080fd5b5061072a6004803603810190610725919061279c565b6119b8565b005b34801561073857600080fd5b50610753600480360381019061074e919061279c565b611a3b565b604051610760919061272e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107c457506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107f4575063780e9d6360e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108245750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461083890612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612bda565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b505050505081565b60006108c482611a84565b6108fa576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061094082611228565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109a7576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156109ea57506109e88133611924565b155b15610a21576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610adb611a95565b80600a60146101000a81548160ff02191690831515021790555050565b6000600380549050905090565b600260009054906101000a900460ff16610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90612c57565b60405180910390fd5b610b5d81611a84565b610b93576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610bb382611228565b73ffffffffffffffffffffffffffffffffffffffff1614610c00576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c66576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cd55750610ca6826108b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ce65750610ce58433611924565b5b905080610d1f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558260038381548110610d6a57610d69612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600082118015610e385750600073ffffffffffffffffffffffffffffffffffffffff166003600184610de49190612cd5565b81548110610df557610df4612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610ea757836003600184610e4d9190612cd5565b81548110610e5e57610e5d612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60085481610f14610af8565b610f1e9190612d09565b1115610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690612d89565b60405180910390fd5b600a81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac9190612d09565b1115610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612df5565b60405180910390fd5b80600954610ffb9190612e15565b34101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612ee1565b60405180910390fd5b6110473382611b13565b50565b600061105583611346565b821061108d576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060038054905090505b80831015611100576110aa83611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110f3578382036110ea575050611132565b81806001019250505b8280600101935050611099565b6040517f7339954700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b611140611a95565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161116690612f32565b60006040518083038185875af1925050503d80600081146111a3576040519150601f19603f3d011682016040523d82523d6000602084013e6111a8565b606091505b50509050806111b657600080fd5b50565b6111d48383836040518060200160405280600081525061180c565b505050565b600a81565b60006111e8610af8565b8210611220576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b600061123382611a84565b611269576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff166003838154811061129657611295612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132257600382815481106112f0576112ef612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061132f565b818060010192505061126a565b919050565b61133c611a95565b8060088190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600380549050905060005b81811015611414576113cc81611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114075782806001019350505b80806001019150506113bb565b508192505050919050565b611427611a95565b6114316000611b31565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461146a90612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461149690612bda565b80156114e35780601f106114b8576101008083540402835291602001916114e3565b820191906000526020600020905b8154815290600101906020018083116114c657829003601f168201915b505050505081565b600854836114f7610af8565b6115019190612d09565b1115611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990612d89565b60405180910390fd5b6115d882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff1660001b6040516020016115b49190612fc9565b60405160208183030381529060405280519060200120611bf790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e9061303b565b60405180910390fd5b6116713384611b13565b505050565b60095481565b611684611a95565b80600b90816116939190613207565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fc576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117ed91906124ce565b60405180910390a35050565b600a60149054906101000a900460ff1681565b611817848484610b05565b61182384848484611c1e565b611859576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061186a82611a84565b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a09061334b565b60405180910390fd5b6000600b80546118b890612bda565b9050116118d45760405180602001604052806000815250611900565b600b6118df83611d8f565b6040516020016118f092919061346b565b6040516020818303038152906040525b9050919050565b60085481565b606060405180602001604052806000815250905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119c0611a95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a269061350c565b60405180910390fd5b611a3881611b31565b50565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060038054905082109050919050565b611a9d611eef565b73ffffffffffffffffffffffffffffffffffffffff16611abb611433565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890613578565b60405180910390fd5b565b611b2d828260405180602001604052806000815250611ef7565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000611c068585611f5a565b91509150611c1381611fab565b819250505092915050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b03611c475760019050611d87565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611c8694939291906135ed565b6020604051808303816000875af1925050508015611cc257506040513d601f19601f82011682018060405250810190611cbf919061364e565b60015b611d3b573d8060008114611cf2576040519150601f19603f3d011682016040523d82523d6000602084013e611cf7565b606091505b506000815103611d33576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b606060008203611dd6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611eea565b600082905060005b60008214611e08578080611df19061367b565b915050600a82611e0191906136f2565b9150611dde565b60008167ffffffffffffffff811115611e2457611e23612893565b5b6040519080825280601f01601f191660200182016040528015611e565781602001600182028036833780820191505090505b5090505b60008514611ee357600182611e6f9190612cd5565b9150600a85611e7e9190613723565b6030611e8a9190612d09565b60f81b818381518110611ea057611e9f612c77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611edc91906136f2565b9450611e5a565b8093505050505b919050565b600033905090565b611f018383612111565b611f1f6000846001600380549050611f199190612cd5565b84611c1e565b611f55576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806041835103611f9b5760008060006020860151925060408601519150606086015160001a9050611f8f87828585612338565b94509450505050611fa4565b60006002915091505b9250929050565b60006004811115611fbf57611fbe613754565b5b816004811115611fd257611fd1613754565b5b031561210e5760016004811115611fec57611feb613754565b5b816004811115611fff57611ffe613754565b5b0361203f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612036906137cf565b60405180910390fd5b6002600481111561205357612052613754565b5b81600481111561206657612065613754565b5b036120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d9061383b565b60405180910390fd5b600360048111156120ba576120b9613754565b5b8160048111156120cd576120cc613754565b5b0361210d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612104906138cd565b60405180910390fd5b5b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612177576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081036121b1576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600380549050905060005b6001830381101561225c576003600181600181540180825580915050039060005260206000200160009054906101000a9050508082018473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506121be565b506003839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826122cd9190612cd5565b816122d89190612d09565b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612373576000600391509150612411565b6000600187878787604051600081526020016040526040516123989493929190613918565b6020604051602081039080840390855afa1580156123ba573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361240857600060019250925050612411565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124638161242e565b811461246e57600080fd5b50565b6000813590506124808161245a565b92915050565b60006020828403121561249c5761249b612424565b5b60006124aa84828501612471565b91505092915050565b60008115159050919050565b6124c8816124b3565b82525050565b60006020820190506124e360008301846124bf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612523578082015181840152602081019050612508565b60008484015250505050565b6000601f19601f8301169050919050565b600061254b826124e9565b61255581856124f4565b9350612565818560208601612505565b61256e8161252f565b840191505092915050565b600060208201905081810360008301526125938184612540565b905092915050565b6000819050919050565b6125ae8161259b565b81146125b957600080fd5b50565b6000813590506125cb816125a5565b92915050565b6000602082840312156125e7576125e6612424565b5b60006125f5848285016125bc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612629826125fe565b9050919050565b6126398161261e565b82525050565b60006020820190506126546000830184612630565b92915050565b6126638161261e565b811461266e57600080fd5b50565b6000813590506126808161265a565b92915050565b6000806040838503121561269d5761269c612424565b5b60006126ab85828601612671565b92505060206126bc858286016125bc565b9150509250929050565b6126cf816124b3565b81146126da57600080fd5b50565b6000813590506126ec816126c6565b92915050565b60006020828403121561270857612707612424565b5b6000612716848285016126dd565b91505092915050565b6127288161259b565b82525050565b6000602082019050612743600083018461271f565b92915050565b60008060006060848603121561276257612761612424565b5b600061277086828701612671565b935050602061278186828701612671565b9250506040612792868287016125bc565b9150509250925092565b6000602082840312156127b2576127b1612424565b5b60006127c084828501612671565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127ee576127ed6127c9565b5b8235905067ffffffffffffffff81111561280b5761280a6127ce565b5b602083019150836001820283011115612827576128266127d3565b5b9250929050565b60008060006040848603121561284757612846612424565b5b6000612855868287016125bc565b935050602084013567ffffffffffffffff81111561287657612875612429565b5b612882868287016127d8565b92509250509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128cb8261252f565b810181811067ffffffffffffffff821117156128ea576128e9612893565b5b80604052505050565b60006128fd61241a565b905061290982826128c2565b919050565b600067ffffffffffffffff82111561292957612928612893565b5b6129328261252f565b9050602081019050919050565b82818337600083830152505050565b600061296161295c8461290e565b6128f3565b90508281526020810184848401111561297d5761297c61288e565b5b61298884828561293f565b509392505050565b600082601f8301126129a5576129a46127c9565b5b81356129b584826020860161294e565b91505092915050565b6000602082840312156129d4576129d3612424565b5b600082013567ffffffffffffffff8111156129f2576129f1612429565b5b6129fe84828501612990565b91505092915050565b60008060408385031215612a1e57612a1d612424565b5b6000612a2c85828601612671565b9250506020612a3d858286016126dd565b9150509250929050565b600067ffffffffffffffff821115612a6257612a61612893565b5b612a6b8261252f565b9050602081019050919050565b6000612a8b612a8684612a47565b6128f3565b905082815260208101848484011115612aa757612aa661288e565b5b612ab284828561293f565b509392505050565b600082601f830112612acf57612ace6127c9565b5b8135612adf848260208601612a78565b91505092915050565b60008060008060808587031215612b0257612b01612424565b5b6000612b1087828801612671565b9450506020612b2187828801612671565b9350506040612b32878288016125bc565b925050606085013567ffffffffffffffff811115612b5357612b52612429565b5b612b5f87828801612aba565b91505092959194509250565b60008060408385031215612b8257612b81612424565b5b6000612b9085828601612671565b9250506020612ba185828601612671565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bf257607f821691505b602082108103612c0557612c04612bab565b5b50919050565b7f596f75206e656564205472616e7366657220546f6b656e000000000000000000600082015250565b6000612c416017836124f4565b9150612c4c82612c0b565b602082019050919050565b60006020820190508181036000830152612c7081612c34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ce08261259b565b9150612ceb8361259b565b9250828203905081811115612d0357612d02612ca6565b5b92915050565b6000612d148261259b565b9150612d1f8361259b565b9250828201905080821115612d3757612d36612ca6565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b6000612d736012836124f4565b9150612d7e82612d3d565b602082019050919050565b60006020820190508181036000830152612da281612d66565b9050919050565b7f457863656564732077616c6c6574206c696d6974000000000000000000000000600082015250565b6000612ddf6014836124f4565b9150612dea82612da9565b602082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b6000612e208261259b565b9150612e2b8361259b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6457612e63612ca6565b5b828202905092915050565b7f4e6f7420656e6f756768204554482073656e742c20636865636b20707269636560008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ecb6021836124f4565b9150612ed682612e6f565b604082019050919050565b60006020820190508181036000830152612efa81612ebe565b9050919050565b600081905092915050565b50565b6000612f1c600083612f01565b9150612f2782612f0c565b600082019050919050565b6000612f3d82612f0f565b9150819050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612f88601c83612f47565b9150612f9382612f52565b601c82019050919050565b6000819050919050565b6000819050919050565b612fc3612fbe82612f9e565b612fa8565b82525050565b6000612fd482612f7b565b9150612fe08284612fb2565b60208201915081905092915050565b7f5369676e65722061646472657373206d69736d617463682e0000000000000000600082015250565b60006130256018836124f4565b915061303082612fef565b602082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613080565b6130c78683613080565b95508019841693508086168417925050509392505050565b6000819050919050565b60006131046130ff6130fa8461259b565b6130df565b61259b565b9050919050565b6000819050919050565b61311e836130e9565b61313261312a8261310b565b84845461308d565b825550505050565b600090565b61314761313a565b613152818484613115565b505050565b5b818110156131765761316b60008261313f565b600181019050613158565b5050565b601f8211156131bb5761318c8161305b565b61319584613070565b810160208510156131a4578190505b6131b86131b085613070565b830182613157565b50505b505050565b600082821c905092915050565b60006131de600019846008026131c0565b1980831691505092915050565b60006131f783836131cd565b9150826002028217905092915050565b613210826124e9565b67ffffffffffffffff81111561322957613228612893565b5b6132338254612bda565b61323e82828561317a565b600060209050601f831160018114613271576000841561325f578287015190505b61326985826131eb565b8655506132d1565b601f19841661327f8661305b565b60005b828110156132a757848901518255600182019150602085019450602081019050613282565b868310156132c457848901516132c0601f8916826131cd565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613335602f836124f4565b9150613340826132d9565b604082019050919050565b6000602082019050818103600083015261336481613328565b9050919050565b6000815461337881612bda565b6133828186612f47565b9450600182166000811461339d57600181146133b2576133e5565b60ff19831686528115158202860193506133e5565b6133bb8561305b565b60005b838110156133dd578154818901526001820191506020810190506133be565b838801955050505b50505092915050565b60006133f9826124e9565b6134038185612f47565b9350613413818560208601612505565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613455600583612f47565b91506134608261341f565b600582019050919050565b6000613477828561336b565b915061348382846133ee565b915061348e82613448565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134f66026836124f4565b91506135018261349a565b604082019050919050565b60006020820190508181036000830152613525816134e9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135626020836124f4565b915061356d8261352c565b602082019050919050565b6000602082019050818103600083015261359181613555565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135bf82613598565b6135c981856135a3565b93506135d9818560208601612505565b6135e28161252f565b840191505092915050565b60006080820190506136026000830187612630565b61360f6020830186612630565b61361c604083018561271f565b818103606083015261362e81846135b4565b905095945050505050565b6000815190506136488161245a565b92915050565b60006020828403121561366457613663612424565b5b600061367284828501613639565b91505092915050565b60006136868261259b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136b8576136b7612ca6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136fd8261259b565b91506137088361259b565b925082613718576137176136c3565b5b828204905092915050565b600061372e8261259b565b91506137398361259b565b925082613749576137486136c3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006137b96018836124f4565b91506137c482613783565b602082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000613825601f836124f4565b9150613830826137ef565b602082019050919050565b6000602082019050818103600083015261385481613818565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006138b76022836124f4565b91506138c28261385b565b604082019050919050565b600060208201905081810360008301526138e6816138aa565b9050919050565b6138f681612f9e565b82525050565b600060ff82169050919050565b613912816138fc565b82525050565b600060808201905061392d60008301876138ed565b61393a6020830186613909565b61394760408301856138ed565b61395460608301846138ed565b9594505050505056fea2646970667358221220fd210dedd81e0f428adf259ed20093388ef4fb1fdac981976731ffa12ee372b664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101d85760003560e01c806370a0823111610102578063b187bd2611610095578063e8a3d48511610064578063e8a3d4851461069b578063e985e9c5146106c6578063f2fde38b14610703578063fddcb5ea1461072c576101d8565b8063b187bd26146105df578063b88d4fde1461060a578063c87b56dd14610633578063d5abeb0114610670576101d8565b80639e852f75116100d15780639e852f7514610539578063a035b1fe14610562578063a0bcfc7f1461058d578063a22cb465146105b6576101d8565b806370a082311461048f578063715018a6146104cc5780638da5cb5b146104e357806395d89b411461050e576101d8565b80632db115441161017a578063453c231011610149578063453c2310146103c15780634f6ccce7146103ec5780636352211e146104295780636f8b44b014610466576101d8565b80632db11544146103285780632f745c59146103445780633ccfd60b1461038157806342842e0e14610398576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806316c38b3c146102ab57806318160ddd146102d457806323b872dd146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612486565b610769565b60405161021191906124ce565b60405180910390f35b34801561022657600080fd5b5061022f61082b565b60405161023c9190612579565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906125d1565b6108b9565b604051610279919061263f565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612686565b610935565b005b3480156102b757600080fd5b506102d260048036038101906102cd91906126f2565b610ad3565b005b3480156102e057600080fd5b506102e9610af8565b6040516102f6919061272e565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190612749565b610b05565b005b610342600480360381019061033d91906125d1565b610f08565b005b34801561035057600080fd5b5061036b60048036038101906103669190612686565b61104a565b604051610378919061272e565b60405180910390f35b34801561038d57600080fd5b50610396611138565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612749565b6111b9565b005b3480156103cd57600080fd5b506103d66111d9565b6040516103e3919061272e565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906125d1565b6111de565b604051610420919061272e565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906125d1565b611228565b60405161045d919061263f565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906125d1565b611334565b005b34801561049b57600080fd5b506104b660048036038101906104b1919061279c565b611346565b6040516104c3919061272e565b60405180910390f35b3480156104d857600080fd5b506104e161141f565b005b3480156104ef57600080fd5b506104f8611433565b604051610505919061263f565b60405180910390f35b34801561051a57600080fd5b5061052361145d565b6040516105309190612579565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b919061282e565b6114eb565b005b34801561056e57600080fd5b50610577611676565b604051610584919061272e565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906129be565b61167c565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190612a07565b611697565b005b3480156105eb57600080fd5b506105f46117f9565b60405161060191906124ce565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612ae8565b61180c565b005b34801561063f57600080fd5b5061065a600480360381019061065591906125d1565b61185f565b6040516106679190612579565b60405180910390f35b34801561067c57600080fd5b50610685611907565b604051610692919061272e565b60405180910390f35b3480156106a757600080fd5b506106b061190d565b6040516106bd9190612579565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190612b6b565b611924565b6040516106fa91906124ce565b60405180910390f35b34801561070f57600080fd5b5061072a6004803603810190610725919061279c565b6119b8565b005b34801561073857600080fd5b50610753600480360381019061074e919061279c565b611a3b565b604051610760919061272e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107c457506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107f4575063780e9d6360e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108245750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461083890612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612bda565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b505050505081565b60006108c482611a84565b6108fa576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061094082611228565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109a7576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156109ea57506109e88133611924565b155b15610a21576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610adb611a95565b80600a60146101000a81548160ff02191690831515021790555050565b6000600380549050905090565b600260009054906101000a900460ff16610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90612c57565b60405180910390fd5b610b5d81611a84565b610b93576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610bb382611228565b73ffffffffffffffffffffffffffffffffffffffff1614610c00576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c66576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cd55750610ca6826108b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ce65750610ce58433611924565b5b905080610d1f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558260038381548110610d6a57610d69612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600082118015610e385750600073ffffffffffffffffffffffffffffffffffffffff166003600184610de49190612cd5565b81548110610df557610df4612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610ea757836003600184610e4d9190612cd5565b81548110610e5e57610e5d612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60085481610f14610af8565b610f1e9190612d09565b1115610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690612d89565b60405180910390fd5b600a81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac9190612d09565b1115610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612df5565b60405180910390fd5b80600954610ffb9190612e15565b34101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612ee1565b60405180910390fd5b6110473382611b13565b50565b600061105583611346565b821061108d576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060038054905090505b80831015611100576110aa83611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110f3578382036110ea575050611132565b81806001019250505b8280600101935050611099565b6040517f7339954700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b611140611a95565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161116690612f32565b60006040518083038185875af1925050503d80600081146111a3576040519150601f19603f3d011682016040523d82523d6000602084013e6111a8565b606091505b50509050806111b657600080fd5b50565b6111d48383836040518060200160405280600081525061180c565b505050565b600a81565b60006111e8610af8565b8210611220576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b600061123382611a84565b611269576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff166003838154811061129657611295612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132257600382815481106112f0576112ef612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061132f565b818060010192505061126a565b919050565b61133c611a95565b8060088190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600380549050905060005b81811015611414576113cc81611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114075782806001019350505b80806001019150506113bb565b508192505050919050565b611427611a95565b6114316000611b31565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461146a90612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461149690612bda565b80156114e35780601f106114b8576101008083540402835291602001916114e3565b820191906000526020600020905b8154815290600101906020018083116114c657829003601f168201915b505050505081565b600854836114f7610af8565b6115019190612d09565b1115611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990612d89565b60405180910390fd5b6115d882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff1660001b6040516020016115b49190612fc9565b60405160208183030381529060405280519060200120611bf790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e9061303b565b60405180910390fd5b6116713384611b13565b505050565b60095481565b611684611a95565b80600b90816116939190613207565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fc576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117ed91906124ce565b60405180910390a35050565b600a60149054906101000a900460ff1681565b611817848484610b05565b61182384848484611c1e565b611859576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061186a82611a84565b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a09061334b565b60405180910390fd5b6000600b80546118b890612bda565b9050116118d45760405180602001604052806000815250611900565b600b6118df83611d8f565b6040516020016118f092919061346b565b6040516020818303038152906040525b9050919050565b60085481565b606060405180602001604052806000815250905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119c0611a95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a269061350c565b60405180910390fd5b611a3881611b31565b50565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060038054905082109050919050565b611a9d611eef565b73ffffffffffffffffffffffffffffffffffffffff16611abb611433565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890613578565b60405180910390fd5b565b611b2d828260405180602001604052806000815250611ef7565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000611c068585611f5a565b91509150611c1381611fab565b819250505092915050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b03611c475760019050611d87565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611c8694939291906135ed565b6020604051808303816000875af1925050508015611cc257506040513d601f19601f82011682018060405250810190611cbf919061364e565b60015b611d3b573d8060008114611cf2576040519150601f19603f3d011682016040523d82523d6000602084013e611cf7565b606091505b506000815103611d33576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b606060008203611dd6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611eea565b600082905060005b60008214611e08578080611df19061367b565b915050600a82611e0191906136f2565b9150611dde565b60008167ffffffffffffffff811115611e2457611e23612893565b5b6040519080825280601f01601f191660200182016040528015611e565781602001600182028036833780820191505090505b5090505b60008514611ee357600182611e6f9190612cd5565b9150600a85611e7e9190613723565b6030611e8a9190612d09565b60f81b818381518110611ea057611e9f612c77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611edc91906136f2565b9450611e5a565b8093505050505b919050565b600033905090565b611f018383612111565b611f1f6000846001600380549050611f199190612cd5565b84611c1e565b611f55576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806041835103611f9b5760008060006020860151925060408601519150606086015160001a9050611f8f87828585612338565b94509450505050611fa4565b60006002915091505b9250929050565b60006004811115611fbf57611fbe613754565b5b816004811115611fd257611fd1613754565b5b031561210e5760016004811115611fec57611feb613754565b5b816004811115611fff57611ffe613754565b5b0361203f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612036906137cf565b60405180910390fd5b6002600481111561205357612052613754565b5b81600481111561206657612065613754565b5b036120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d9061383b565b60405180910390fd5b600360048111156120ba576120b9613754565b5b8160048111156120cd576120cc613754565b5b0361210d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612104906138cd565b60405180910390fd5b5b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612177576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081036121b1576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600380549050905060005b6001830381101561225c576003600181600181540180825580915050039060005260206000200160009054906101000a9050508082018473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506121be565b506003839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826122cd9190612cd5565b816122d89190612d09565b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612373576000600391509150612411565b6000600187878787604051600081526020016040526040516123989493929190613918565b6020604051602081039080840390855afa1580156123ba573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361240857600060019250925050612411565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124638161242e565b811461246e57600080fd5b50565b6000813590506124808161245a565b92915050565b60006020828403121561249c5761249b612424565b5b60006124aa84828501612471565b91505092915050565b60008115159050919050565b6124c8816124b3565b82525050565b60006020820190506124e360008301846124bf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612523578082015181840152602081019050612508565b60008484015250505050565b6000601f19601f8301169050919050565b600061254b826124e9565b61255581856124f4565b9350612565818560208601612505565b61256e8161252f565b840191505092915050565b600060208201905081810360008301526125938184612540565b905092915050565b6000819050919050565b6125ae8161259b565b81146125b957600080fd5b50565b6000813590506125cb816125a5565b92915050565b6000602082840312156125e7576125e6612424565b5b60006125f5848285016125bc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612629826125fe565b9050919050565b6126398161261e565b82525050565b60006020820190506126546000830184612630565b92915050565b6126638161261e565b811461266e57600080fd5b50565b6000813590506126808161265a565b92915050565b6000806040838503121561269d5761269c612424565b5b60006126ab85828601612671565b92505060206126bc858286016125bc565b9150509250929050565b6126cf816124b3565b81146126da57600080fd5b50565b6000813590506126ec816126c6565b92915050565b60006020828403121561270857612707612424565b5b6000612716848285016126dd565b91505092915050565b6127288161259b565b82525050565b6000602082019050612743600083018461271f565b92915050565b60008060006060848603121561276257612761612424565b5b600061277086828701612671565b935050602061278186828701612671565b9250506040612792868287016125bc565b9150509250925092565b6000602082840312156127b2576127b1612424565b5b60006127c084828501612671565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127ee576127ed6127c9565b5b8235905067ffffffffffffffff81111561280b5761280a6127ce565b5b602083019150836001820283011115612827576128266127d3565b5b9250929050565b60008060006040848603121561284757612846612424565b5b6000612855868287016125bc565b935050602084013567ffffffffffffffff81111561287657612875612429565b5b612882868287016127d8565b92509250509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128cb8261252f565b810181811067ffffffffffffffff821117156128ea576128e9612893565b5b80604052505050565b60006128fd61241a565b905061290982826128c2565b919050565b600067ffffffffffffffff82111561292957612928612893565b5b6129328261252f565b9050602081019050919050565b82818337600083830152505050565b600061296161295c8461290e565b6128f3565b90508281526020810184848401111561297d5761297c61288e565b5b61298884828561293f565b509392505050565b600082601f8301126129a5576129a46127c9565b5b81356129b584826020860161294e565b91505092915050565b6000602082840312156129d4576129d3612424565b5b600082013567ffffffffffffffff8111156129f2576129f1612429565b5b6129fe84828501612990565b91505092915050565b60008060408385031215612a1e57612a1d612424565b5b6000612a2c85828601612671565b9250506020612a3d858286016126dd565b9150509250929050565b600067ffffffffffffffff821115612a6257612a61612893565b5b612a6b8261252f565b9050602081019050919050565b6000612a8b612a8684612a47565b6128f3565b905082815260208101848484011115612aa757612aa661288e565b5b612ab284828561293f565b509392505050565b600082601f830112612acf57612ace6127c9565b5b8135612adf848260208601612a78565b91505092915050565b60008060008060808587031215612b0257612b01612424565b5b6000612b1087828801612671565b9450506020612b2187828801612671565b9350506040612b32878288016125bc565b925050606085013567ffffffffffffffff811115612b5357612b52612429565b5b612b5f87828801612aba565b91505092959194509250565b60008060408385031215612b8257612b81612424565b5b6000612b9085828601612671565b9250506020612ba185828601612671565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bf257607f821691505b602082108103612c0557612c04612bab565b5b50919050565b7f596f75206e656564205472616e7366657220546f6b656e000000000000000000600082015250565b6000612c416017836124f4565b9150612c4c82612c0b565b602082019050919050565b60006020820190508181036000830152612c7081612c34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ce08261259b565b9150612ceb8361259b565b9250828203905081811115612d0357612d02612ca6565b5b92915050565b6000612d148261259b565b9150612d1f8361259b565b9250828201905080821115612d3757612d36612ca6565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b6000612d736012836124f4565b9150612d7e82612d3d565b602082019050919050565b60006020820190508181036000830152612da281612d66565b9050919050565b7f457863656564732077616c6c6574206c696d6974000000000000000000000000600082015250565b6000612ddf6014836124f4565b9150612dea82612da9565b602082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b6000612e208261259b565b9150612e2b8361259b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6457612e63612ca6565b5b828202905092915050565b7f4e6f7420656e6f756768204554482073656e742c20636865636b20707269636560008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ecb6021836124f4565b9150612ed682612e6f565b604082019050919050565b60006020820190508181036000830152612efa81612ebe565b9050919050565b600081905092915050565b50565b6000612f1c600083612f01565b9150612f2782612f0c565b600082019050919050565b6000612f3d82612f0f565b9150819050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612f88601c83612f47565b9150612f9382612f52565b601c82019050919050565b6000819050919050565b6000819050919050565b612fc3612fbe82612f9e565b612fa8565b82525050565b6000612fd482612f7b565b9150612fe08284612fb2565b60208201915081905092915050565b7f5369676e65722061646472657373206d69736d617463682e0000000000000000600082015250565b60006130256018836124f4565b915061303082612fef565b602082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613080565b6130c78683613080565b95508019841693508086168417925050509392505050565b6000819050919050565b60006131046130ff6130fa8461259b565b6130df565b61259b565b9050919050565b6000819050919050565b61311e836130e9565b61313261312a8261310b565b84845461308d565b825550505050565b600090565b61314761313a565b613152818484613115565b505050565b5b818110156131765761316b60008261313f565b600181019050613158565b5050565b601f8211156131bb5761318c8161305b565b61319584613070565b810160208510156131a4578190505b6131b86131b085613070565b830182613157565b50505b505050565b600082821c905092915050565b60006131de600019846008026131c0565b1980831691505092915050565b60006131f783836131cd565b9150826002028217905092915050565b613210826124e9565b67ffffffffffffffff81111561322957613228612893565b5b6132338254612bda565b61323e82828561317a565b600060209050601f831160018114613271576000841561325f578287015190505b61326985826131eb565b8655506132d1565b601f19841661327f8661305b565b60005b828110156132a757848901518255600182019150602085019450602081019050613282565b868310156132c457848901516132c0601f8916826131cd565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613335602f836124f4565b9150613340826132d9565b604082019050919050565b6000602082019050818103600083015261336481613328565b9050919050565b6000815461337881612bda565b6133828186612f47565b9450600182166000811461339d57600181146133b2576133e5565b60ff19831686528115158202860193506133e5565b6133bb8561305b565b60005b838110156133dd578154818901526001820191506020810190506133be565b838801955050505b50505092915050565b60006133f9826124e9565b6134038185612f47565b9350613413818560208601612505565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613455600583612f47565b91506134608261341f565b600582019050919050565b6000613477828561336b565b915061348382846133ee565b915061348e82613448565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134f66026836124f4565b91506135018261349a565b604082019050919050565b60006020820190508181036000830152613525816134e9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135626020836124f4565b915061356d8261352c565b602082019050919050565b6000602082019050818103600083015261359181613555565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135bf82613598565b6135c981856135a3565b93506135d9818560208601612505565b6135e28161252f565b840191505092915050565b60006080820190506136026000830187612630565b61360f6020830186612630565b61361c604083018561271f565b818103606083015261362e81846135b4565b905095945050505050565b6000815190506136488161245a565b92915050565b60006020828403121561366457613663612424565b5b600061367284828501613639565b91505092915050565b60006136868261259b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136b8576136b7612ca6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136fd8261259b565b91506137088361259b565b925082613718576137176136c3565b5b828204905092915050565b600061372e8261259b565b91506137398361259b565b925082613749576137486136c3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006137b96018836124f4565b91506137c482613783565b602082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000613825601f836124f4565b9150613830826137ef565b602082019050919050565b6000602082019050818103600083015261385481613818565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006138b76022836124f4565b91506138c28261385b565b604082019050919050565b600060208201905081810360008301526138e6816138aa565b9050919050565b6138f681612f9e565b82525050565b600060ff82169050919050565b613912816138fc565b82525050565b600060808201905061392d60008301876138ed565b61393a6020830186613909565b61394760408301856138ed565b61395460608301846138ed565b9594505050505056fea2646970667358221220fd210dedd81e0f428adf259ed20093388ef4fb1fdac981976731ffa12ee372b664736f6c63430008100033

Deployed Bytecode Sourcemap

20367:2317:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3740:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2499:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7762:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7319:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21148:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4432:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8602:1068;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21844:365;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4715:631;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21233:177;;;;;;;;;;;;;:::i;:::-;;9741:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20470:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5423:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6777:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21415:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6045:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14150:103;;;;;;;;;;;;;:::i;:::-;;13911:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2526:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22217:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20547:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21058:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8037:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20620:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9978:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21514:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20512:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20848:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8380:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14263:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20934:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3740:426;3816:4;3868:10;3853:25;;:11;:25;;;;:101;;;;3944:10;3929:25;;:11;:25;;;;3853:101;:177;;;;4020:10;4005:25;;:11;:25;;;;3853:177;:263;;;;4106:10;4091:25;;:11;:25;;;;3853:263;3833:283;;3740:426;;;:::o;2499:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7762:203::-;7829:7;7854:16;7862:7;7854;:16::i;:::-;7849:64;;7879:34;;;;;;;;;;;;;;7849:64;7933:15;:24;7949:7;7933:24;;;;;;;;;;;;;;;;;;;;;7926:31;;7762:203;;;:::o;7319:377::-;7391:13;7407:16;7415:7;7407;:16::i;:::-;7391:32;;7444:5;7438:11;;:2;:11;;;7434:48;;7458:24;;;;;;;;;;;;;;7434:48;7513:5;7499:19;;:10;:19;;;;:59;;;;;7523:35;7540:5;7547:10;7523:16;:35::i;:::-;7522:36;7499:59;7495:107;;;7567:35;;;;;;;;;;;;;;7495:107;7642:2;7615:15;:24;7631:7;7615:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7680:7;7676:2;7660:28;;7669:5;7660:28;;;;;;;;;;;;7380:316;7319:377;;:::o;21148:80::-;13870:13;:11;:13::i;:::-;21217:6:::1;21206:8;;:17;;;;;;;;;;;;;;;;;;21148:80:::0;:::o;4432:93::-;4476:7;4503;:14;;;;4496:21;;4432:93;:::o;8602:1068::-;8735:11;;;;;;;;;;;8727:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8789:16;8797:7;8789;:16::i;:::-;8784:61;;8814:31;;;;;;;;;;;;;;8784:61;8880:4;8860:24;;:16;8868:7;8860;:16::i;:::-;:24;;;8856:65;;8893:28;;;;;;;;;;;;;;8856:65;8950:1;8936:16;;:2;:16;;;8932:52;;8961:23;;;;;;;;;;;;;;8932:52;8997:22;9037:4;9023:18;;:10;:18;;;:69;;;;9072:20;9084:7;9072:11;:20::i;:::-;9058:34;;:10;:34;;;9023:69;:120;;;;9109:34;9126:4;9132:10;9109:16;:34::i;:::-;9023:120;8997:147;;9160:17;9155:66;;9186:35;;;;;;;;;;;;;;9155:66;9296:15;:24;9312:7;9296:24;;;;;;;;;;;;9289:31;;;;;;;;;;;9350:2;9331:7;9339;9331:16;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9523:1;9513:7;:11;:49;;;;;9560:1;9528:34;;:7;9546:1;9536:7;:11;;;;:::i;:::-;9528:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:34;;;9513:49;9509:109;;;9602:4;9579:7;9597:1;9587:7;:11;;;;:::i;:::-;9579:20;;;;;;;;:::i;:::-;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9509:109;9654:7;9650:2;9635:27;;9644:4;9635:27;;;;;;;;;;;;8716:954;8602:1068;;;:::o;21844:365::-;21945:9;;21932;21916:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:38;;21908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20506:2;22029:9;21996:18;:30;22015:10;21996:30;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;:58;;21987:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22119:9;22111:5;;:17;;;;:::i;:::-;22098:9;:30;;22090:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22172:32;22182:10;22194:9;22172;:32::i;:::-;21844:365;:::o;4715:631::-;4803:15;4844:16;4854:5;4844:9;:16::i;:::-;4835:5;:25;4831:61;;4869:23;;;;;;;;;;;;;;4831:61;4905:13;4929:11;4943:7;:14;;;;4929:28;;5063:217;5087:3;5077:7;:13;5063:217;;;5135:16;5143:7;5135;:16::i;:::-;5126:25;;:5;:25;;;5122:143;;5189:5;5180;:14;5176:69;;5196:14;;;;5176:69;5238:7;;;;;;;5122:143;5092:9;;;;;;;5063:217;;;5310:28;;;;;;;;;;;;;;4715:631;;;;;:::o;21233:177::-;13870:13;:11;:13::i;:::-;21278:12:::1;21304:10;21296:24;;21342:21;21296:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21277:101;;;21397:7;21389:16;;;::::0;::::1;;21272:138;21233:177::o:0;9741:166::-;9865:34;9882:4;9888:2;9892;9865:34;;;;;;;;;;;;:16;:34::i;:::-;9741:166;;;:::o;20470:38::-;20506:2;20470:38;:::o;5423:175::-;5489:7;5522:13;:11;:13::i;:::-;5513:5;:22;5509:58;;5544:23;;;;;;;;;;;;;;5509:58;5585:5;5578:12;;5423:175;;;:::o;6777:480::-;6840:7;6865:16;6873:7;6865;:16::i;:::-;6860:61;;6890:31;;;;;;;;;;;;;;6860:61;7029:163;7107:1;7079:30;;:7;7087;7079:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;7075:102;;7141:7;7149;7141:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7134:23;;;;7075:102;7045:9;;;;;;;7029:163;;6777:480;;;;:::o;21415:94::-;13870:13;:11;:13::i;:::-;21492:12:::1;21480:9;:24;;;;21415:94:::0;:::o;6045:494::-;6108:7;6149:1;6132:19;;:5;:19;;;6128:60;;6160:28;;;;;;;;;;;;;;6128:60;6201:13;6225:11;6239:7;:14;;;;6225:28;;6364:9;6359:139;6379:3;6375:1;:7;6359:139;;;6421:10;6429:1;6421:7;:10::i;:::-;6412:19;;:5;:19;;;6408:75;;6456:7;;;;;;;6408:75;6384:3;;;;;;;6359:139;;;;6526:5;6519:12;;;;6045:494;;;:::o;14150:103::-;13870:13;:11;:13::i;:::-;14215:30:::1;14242:1;14215:18;:30::i;:::-;14150:103::o:0;13911:87::-;13957:7;13984:6;;;;;;;;;;;13977:13;;13911:87;:::o;2526:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22217:464::-;22339:9;;22326;22310:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:38;;22302:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22407:194;22591:9;;22407:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22543:10;22527:28;;22519:37;;22431:140;;;;;;;;:::i;:::-;;;;;;;;;;;;;22407:175;;;;;;:183;;:194;;;;:::i;:::-;22389:212;;:14;;;;;;;;;;;:212;;;22381:249;;;;;;;;;;;;:::i;:::-;;;;;;;;;22641:32;22651:10;22663:9;22641;:32::i;:::-;22217:464;;;:::o;20547:30::-;;;;:::o;21058:85::-;13870:13;:11;:13::i;:::-;21135:3:::1;21124:8;:14;;;;;;:::i;:::-;;21058:85:::0;:::o;8037:272::-;8139:10;8127:22;;:8;:22;;;8123:52;;8158:17;;;;;;;;;;;;;;8123:52;8231:8;8188:18;:30;8207:10;8188:30;;;;;;;;;;;;;;;:40;8219:8;8188:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;8282:8;8255:46;;8270:10;8255:46;;;8292:8;8255:46;;;;;;:::i;:::-;;;;;;;;8037:272;;:::o;20620:28::-;;;;;;;;;;;;;:::o;9978:295::-;10130:26;10143:4;10149:2;10153;10130:12;:26::i;:::-;10174:42;10197:4;10203:2;10207;10211:4;10174:22;:42::i;:::-;10169:96;;10225:40;;;;;;;;;;;;;;10169:96;9978:295;;;;:::o;21514:325::-;21588:13;21624:16;21632:7;21624;:16::i;:::-;21616:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21735:1;21716:8;21710:22;;;;;:::i;:::-;;;:26;:124;;;;;;;;;;;;;;;;;21777:8;21787:18;:7;:16;:18::i;:::-;21760:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21710:124;21703:131;;21514:325;;;:::o;20512:28::-;;;;:::o;20848:78::-;20892:13;20912:9;;;;;;;;;;;;;;20848:78;:::o;8380:155::-;8468:4;8492:18;:25;8511:5;8492:25;;;;;;;;;;;;;;;:35;8518:8;8492:35;;;;;;;;;;;;;;;;;;;;;;;;;8485:42;;8380:155;;;;:::o;14263:201::-;13870:13;:11;:13::i;:::-;14372:1:::1;14352:22;;:8;:22;;::::0;14344:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14428:28;14447:8;14428:18;:28::i;:::-;14263:201:::0;:::o;20934:116::-;20993:4;21017:18;:25;21036:5;21017:25;;;;;;;;;;;;;;;;21010:32;;20934:116;;;:::o;10346:121::-;10411:4;10445:7;:14;;;;10435:7;:24;10428:31;;10346:121;;;:::o;14006:132::-;14081:12;:10;:12::i;:::-;14070:23;;:7;:5;:7::i;:::-;:23;;;14062:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14006:132::o;12301:102::-;12373:22;12383:2;12387:3;12373:22;;;;;;;;;;;;:9;:22::i;:::-;12301:102;;:::o;14475:191::-;14549:16;14568:6;;;;;;;;;;;14549:25;;14594:8;14585:6;;:17;;;;;;;;;;;;;;;;;;14649:8;14618:40;;14639:8;14618:40;;;;;;;;;;;;14538:128;14475:191;:::o;18040:231::-;18118:7;18139:17;18158:18;18180:27;18191:4;18197:9;18180:10;:27::i;:::-;18138:69;;;;18218:18;18230:5;18218:11;:18::i;:::-;18254:9;18247:16;;;;18040:231;;;;:::o;11032:640::-;11187:4;11226:1;11208:2;:14;;;:19;11204:36;;11236:4;11229:11;;;;11204:36;11273:2;11257:36;;;11294:10;11306:4;11312:7;11321:5;11257:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11253:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11506:1;11489:6;:13;:18;11485:71;;11516:40;;;;;;;;;;;;;;11485:71;11631:6;11625:13;11616:6;11612:2;11608:15;11601:38;11253:412;11384:45;;;11374:55;;;:6;:55;;;;11367:62;;;11032:640;;;;;;;:::o;14861:723::-;14917:13;15147:1;15138:5;:10;15134:53;;15165:10;;;;;;;;;;;;;;;;;;;;;15134:53;15197:12;15212:5;15197:20;;15228:14;15253:78;15268:1;15260:4;:9;15253:78;;15286:8;;;;;:::i;:::-;;;;15317:2;15309:10;;;;;:::i;:::-;;;15253:78;;;15341:19;15373:6;15363:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15341:39;;15391:154;15407:1;15398:5;:10;15391:154;;15435:1;15425:11;;;;;:::i;:::-;;;15502:2;15494:5;:10;;;;:::i;:::-;15481:2;:24;;;;:::i;:::-;15468:39;;15451:6;15458;15451:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;15531:2;15522:11;;;;;:::i;:::-;;;15391:154;;;15569:6;15555:21;;;;;14861:723;;;;:::o;13378:98::-;13431:7;13458:10;13451:17;;13378:98;:::o;12411:291::-;12536:14;12542:2;12546:3;12536:5;:14::i;:::-;12568:64;12599:1;12603:2;12624:1;12607:7;:14;;;;:18;;;;:::i;:::-;12627:4;12568:22;:64::i;:::-;12563:131;;12654:40;;;;;;;;;;;;;;12563:131;12411:291;;;:::o;17466:566::-;17547:7;17556:12;17605:2;17585:9;:16;:22;17581:444;;17624:9;17648;17672:7;17748:4;17737:9;17733:20;17727:27;17722:32;;17798:4;17787:9;17783:20;17777:27;17772:32;;17856:4;17845:9;17841:20;17835:27;17832:1;17827:36;17822:41;;17899:25;17910:4;17916:1;17919;17922;17899:10;:25::i;:::-;17892:32;;;;;;;;;17581:444;17973:1;17977:35;17957:56;;;;17466:566;;;;;;:::o;16937:521::-;17015:20;17006:29;;;;;;;;:::i;:::-;;:5;:29;;;;;;;;:::i;:::-;;;17002:449;17052:7;17002:449;17113:29;17104:38;;;;;;;;:::i;:::-;;:5;:38;;;;;;;;:::i;:::-;;;17100:351;;17159:34;;;;;;;;;;:::i;:::-;;;;;;;;17100:351;17224:35;17215:44;;;;;;;;:::i;:::-;;:5;:44;;;;;;;;:::i;:::-;;;17211:240;;17276:41;;;;;;;;;;:::i;:::-;;;;;;;;17211:240;17348:30;17339:39;;;;;;;;:::i;:::-;;:5;:39;;;;;;;;:::i;:::-;;;17335:116;;17395:44;;;;;;;;;;:::i;:::-;;;;;;;;17335:116;16937:521;;:::o;12710:628::-;12796:1;12782:16;;:2;:16;;;12778:48;;12807:19;;;;;;;;;;;;;;12778:48;12848:1;12841:3;:8;12837:39;;12858:18;;;;;;;;;;;;;;12837:39;12889:21;12913:7;:14;;;;12889:38;;13040:9;13035:150;13061:1;13055:3;:7;13051:1;:11;13035:150;;;13088:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13167:1;13151:13;:17;13147:2;13126:43;;13143:1;13126:43;;;;;;;;;;;;13064:3;;;;;;;13035:150;;;;13247:7;13260:2;13247:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13327:1;13321:3;:7;;;;:::i;:::-;13304:13;:25;;;;:::i;:::-;13300:2;13279:51;;13296:1;13279:51;;;;;;;;;;;;12767:571;12710:628;;:::o;18833:596::-;18921:7;18930:12;18974:66;18969:1;18961:10;;:79;18957:163;;;19073:1;19077:30;19057:51;;;;;;18957:163;19217:14;19234:24;19244:4;19250:1;19253;19256;19234:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19217:41;;19291:1;19273:20;;:6;:20;;;19269:103;;19326:1;19330:29;19310:50;;;;;;;19269:103;19392:6;19400:20;19384:37;;;;;18833:596;;;;;;;;:::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:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:77::-;2897:7;2926:5;2915:16;;2860:77;;;:::o;2943:122::-;3016:24;3034:5;3016:24;:::i;:::-;3009:5;3006:35;2996:63;;3055:1;3052;3045:12;2996:63;2943:122;:::o;3071:139::-;3117:5;3155:6;3142:20;3133:29;;3171:33;3198:5;3171:33;:::i;:::-;3071:139;;;;:::o;3216:329::-;3275:6;3324:2;3312:9;3303:7;3299:23;3295:32;3292:119;;;3330:79;;:::i;:::-;3292:119;3450:1;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3421:117;3216:329;;;;:::o;3551:126::-;3588:7;3628:42;3621:5;3617:54;3606:65;;3551:126;;;:::o;3683:96::-;3720:7;3749:24;3767:5;3749:24;:::i;:::-;3738:35;;3683:96;;;:::o;3785:118::-;3872:24;3890:5;3872:24;:::i;:::-;3867:3;3860:37;3785:118;;:::o;3909:222::-;4002:4;4040:2;4029:9;4025:18;4017:26;;4053:71;4121:1;4110:9;4106:17;4097:6;4053:71;:::i;:::-;3909:222;;;;:::o;4137:122::-;4210:24;4228:5;4210:24;:::i;:::-;4203:5;4200:35;4190:63;;4249:1;4246;4239:12;4190:63;4137:122;:::o;4265:139::-;4311:5;4349:6;4336:20;4327:29;;4365:33;4392:5;4365:33;:::i;:::-;4265:139;;;;:::o;4410:474::-;4478:6;4486;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4788:2;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4759:118;4410:474;;;;;:::o;4890:116::-;4960:21;4975:5;4960:21;:::i;:::-;4953:5;4950:32;4940:60;;4996:1;4993;4986:12;4940:60;4890:116;:::o;5012:133::-;5055:5;5093:6;5080:20;5071:29;;5109:30;5133:5;5109:30;:::i;:::-;5012:133;;;;:::o;5151:323::-;5207:6;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:50;5449:7;5440:6;5429:9;5425:22;5407:50;:::i;:::-;5397:60;;5353:114;5151:323;;;;:::o;5480:118::-;5567:24;5585:5;5567:24;:::i;:::-;5562:3;5555:37;5480:118;;:::o;5604:222::-;5697:4;5735:2;5724:9;5720:18;5712:26;;5748:71;5816:1;5805:9;5801:17;5792:6;5748:71;:::i;:::-;5604:222;;;;:::o;5832:619::-;5909:6;5917;5925;5974:2;5962:9;5953:7;5949:23;5945:32;5942:119;;;5980:79;;:::i;:::-;5942:119;6100:1;6125:53;6170:7;6161:6;6150:9;6146:22;6125:53;:::i;:::-;6115:63;;6071:117;6227:2;6253:53;6298:7;6289:6;6278:9;6274:22;6253:53;:::i;:::-;6243:63;;6198:118;6355:2;6381:53;6426:7;6417:6;6406:9;6402:22;6381:53;:::i;:::-;6371:63;;6326:118;5832:619;;;;;:::o;6457:329::-;6516:6;6565:2;6553:9;6544:7;6540:23;6536:32;6533:119;;;6571:79;;:::i;:::-;6533:119;6691:1;6716:53;6761:7;6752:6;6741:9;6737:22;6716:53;:::i;:::-;6706:63;;6662:117;6457:329;;;;:::o;6792:117::-;6901:1;6898;6891:12;6915:117;7024:1;7021;7014:12;7038:117;7147:1;7144;7137:12;7174:552;7231:8;7241:6;7291:3;7284:4;7276:6;7272:17;7268:27;7258:122;;7299:79;;:::i;:::-;7258:122;7412:6;7399:20;7389:30;;7442:18;7434:6;7431:30;7428:117;;;7464:79;;:::i;:::-;7428:117;7578:4;7570:6;7566:17;7554:29;;7632:3;7624:4;7616:6;7612:17;7602:8;7598:32;7595:41;7592:128;;;7639:79;;:::i;:::-;7592:128;7174:552;;;;;:::o;7732:672::-;7811:6;7819;7827;7876:2;7864:9;7855:7;7851:23;7847:32;7844:119;;;7882:79;;:::i;:::-;7844:119;8002:1;8027:53;8072:7;8063:6;8052:9;8048:22;8027:53;:::i;:::-;8017:63;;7973:117;8157:2;8146:9;8142:18;8129:32;8188:18;8180:6;8177:30;8174:117;;;8210:79;;:::i;:::-;8174:117;8323:64;8379:7;8370:6;8359:9;8355:22;8323:64;:::i;:::-;8305:82;;;;8100:297;7732:672;;;;;:::o;8410:117::-;8519:1;8516;8509:12;8533:180;8581:77;8578:1;8571:88;8678:4;8675:1;8668:15;8702:4;8699:1;8692:15;8719:281;8802:27;8824:4;8802:27;:::i;:::-;8794:6;8790:40;8932:6;8920:10;8917:22;8896:18;8884:10;8881:34;8878:62;8875:88;;;8943:18;;:::i;:::-;8875:88;8983:10;8979:2;8972:22;8762:238;8719:281;;:::o;9006:129::-;9040:6;9067:20;;:::i;:::-;9057:30;;9096:33;9124:4;9116:6;9096:33;:::i;:::-;9006:129;;;:::o;9141:308::-;9203:4;9293:18;9285:6;9282:30;9279:56;;;9315:18;;:::i;:::-;9279:56;9353:29;9375:6;9353:29;:::i;:::-;9345:37;;9437:4;9431;9427:15;9419:23;;9141:308;;;:::o;9455:146::-;9552:6;9547:3;9542;9529:30;9593:1;9584:6;9579:3;9575:16;9568:27;9455:146;;;:::o;9607:425::-;9685:5;9710:66;9726:49;9768:6;9726:49;:::i;:::-;9710:66;:::i;:::-;9701:75;;9799:6;9792:5;9785:21;9837:4;9830:5;9826:16;9875:3;9866:6;9861:3;9857:16;9854:25;9851:112;;;9882:79;;:::i;:::-;9851:112;9972:54;10019:6;10014:3;10009;9972:54;:::i;:::-;9691:341;9607:425;;;;;:::o;10052:340::-;10108:5;10157:3;10150:4;10142:6;10138:17;10134:27;10124:122;;10165:79;;:::i;:::-;10124:122;10282:6;10269:20;10307:79;10382:3;10374:6;10367:4;10359:6;10355:17;10307:79;:::i;:::-;10298:88;;10114:278;10052:340;;;;:::o;10398:509::-;10467:6;10516:2;10504:9;10495:7;10491:23;10487:32;10484:119;;;10522:79;;:::i;:::-;10484:119;10670:1;10659:9;10655:17;10642:31;10700:18;10692:6;10689:30;10686:117;;;10722:79;;:::i;:::-;10686:117;10827:63;10882:7;10873:6;10862:9;10858:22;10827:63;:::i;:::-;10817:73;;10613:287;10398:509;;;;:::o;10913:468::-;10978:6;10986;11035:2;11023:9;11014:7;11010:23;11006:32;11003:119;;;11041:79;;:::i;:::-;11003:119;11161:1;11186:53;11231:7;11222:6;11211:9;11207:22;11186:53;:::i;:::-;11176:63;;11132:117;11288:2;11314:50;11356:7;11347:6;11336:9;11332:22;11314:50;:::i;:::-;11304:60;;11259:115;10913:468;;;;;:::o;11387:307::-;11448:4;11538:18;11530:6;11527:30;11524:56;;;11560:18;;:::i;:::-;11524:56;11598:29;11620:6;11598:29;:::i;:::-;11590:37;;11682:4;11676;11672:15;11664:23;;11387:307;;;:::o;11700:423::-;11777:5;11802:65;11818:48;11859:6;11818:48;:::i;:::-;11802:65;:::i;:::-;11793:74;;11890:6;11883:5;11876:21;11928:4;11921:5;11917:16;11966:3;11957:6;11952:3;11948:16;11945:25;11942:112;;;11973:79;;:::i;:::-;11942:112;12063:54;12110:6;12105:3;12100;12063:54;:::i;:::-;11783:340;11700:423;;;;;:::o;12142:338::-;12197:5;12246:3;12239:4;12231:6;12227:17;12223:27;12213:122;;12254:79;;:::i;:::-;12213:122;12371:6;12358:20;12396:78;12470:3;12462:6;12455:4;12447:6;12443:17;12396:78;:::i;:::-;12387:87;;12203:277;12142:338;;;;:::o;12486:943::-;12581:6;12589;12597;12605;12654:3;12642:9;12633:7;12629:23;12625:33;12622:120;;;12661:79;;:::i;:::-;12622:120;12781:1;12806:53;12851:7;12842:6;12831:9;12827:22;12806:53;:::i;:::-;12796:63;;12752:117;12908:2;12934:53;12979:7;12970:6;12959:9;12955:22;12934:53;:::i;:::-;12924:63;;12879:118;13036:2;13062:53;13107:7;13098:6;13087:9;13083:22;13062:53;:::i;:::-;13052:63;;13007:118;13192:2;13181:9;13177:18;13164:32;13223:18;13215:6;13212:30;13209:117;;;13245:79;;:::i;:::-;13209:117;13350:62;13404:7;13395:6;13384:9;13380:22;13350:62;:::i;:::-;13340:72;;13135:287;12486:943;;;;;;;:::o;13435:474::-;13503:6;13511;13560:2;13548:9;13539:7;13535:23;13531:32;13528:119;;;13566:79;;:::i;:::-;13528:119;13686:1;13711:53;13756:7;13747:6;13736:9;13732:22;13711:53;:::i;:::-;13701:63;;13657:117;13813:2;13839:53;13884:7;13875:6;13864:9;13860:22;13839:53;:::i;:::-;13829:63;;13784:118;13435:474;;;;;:::o;13915:180::-;13963:77;13960:1;13953:88;14060:4;14057:1;14050:15;14084:4;14081:1;14074:15;14101:320;14145:6;14182:1;14176:4;14172:12;14162:22;;14229:1;14223:4;14219:12;14250:18;14240:81;;14306:4;14298:6;14294:17;14284:27;;14240:81;14368:2;14360:6;14357:14;14337:18;14334:38;14331:84;;14387:18;;:::i;:::-;14331:84;14152:269;14101:320;;;:::o;14427:173::-;14567:25;14563:1;14555:6;14551:14;14544:49;14427:173;:::o;14606:366::-;14748:3;14769:67;14833:2;14828:3;14769:67;:::i;:::-;14762:74;;14845:93;14934:3;14845:93;:::i;:::-;14963:2;14958:3;14954:12;14947:19;;14606:366;;;:::o;14978:419::-;15144:4;15182:2;15171:9;15167:18;15159:26;;15231:9;15225:4;15221:20;15217:1;15206:9;15202:17;15195:47;15259:131;15385:4;15259:131;:::i;:::-;15251:139;;14978:419;;;:::o;15403:180::-;15451:77;15448:1;15441:88;15548:4;15545:1;15538:15;15572:4;15569:1;15562:15;15589:180;15637:77;15634:1;15627:88;15734:4;15731:1;15724:15;15758:4;15755:1;15748:15;15775:194;15815:4;15835:20;15853:1;15835:20;:::i;:::-;15830:25;;15869:20;15887:1;15869:20;:::i;:::-;15864:25;;15913:1;15910;15906:9;15898:17;;15937:1;15931:4;15928:11;15925:37;;;15942:18;;:::i;:::-;15925:37;15775:194;;;;:::o;15975:191::-;16015:3;16034:20;16052:1;16034:20;:::i;:::-;16029:25;;16068:20;16086:1;16068:20;:::i;:::-;16063:25;;16111:1;16108;16104:9;16097:16;;16132:3;16129:1;16126:10;16123:36;;;16139:18;;:::i;:::-;16123:36;15975:191;;;;:::o;16172:168::-;16312:20;16308:1;16300:6;16296:14;16289:44;16172:168;:::o;16346:366::-;16488:3;16509:67;16573:2;16568:3;16509:67;:::i;:::-;16502:74;;16585:93;16674:3;16585:93;:::i;:::-;16703:2;16698:3;16694:12;16687:19;;16346:366;;;:::o;16718:419::-;16884:4;16922:2;16911:9;16907:18;16899:26;;16971:9;16965:4;16961:20;16957:1;16946:9;16942:17;16935:47;16999:131;17125:4;16999:131;:::i;:::-;16991:139;;16718:419;;;:::o;17143:170::-;17283:22;17279:1;17271:6;17267:14;17260:46;17143:170;:::o;17319:366::-;17461:3;17482:67;17546:2;17541:3;17482:67;:::i;:::-;17475:74;;17558:93;17647:3;17558:93;:::i;:::-;17676:2;17671:3;17667:12;17660:19;;17319:366;;;:::o;17691:419::-;17857:4;17895:2;17884:9;17880:18;17872:26;;17944:9;17938:4;17934:20;17930:1;17919:9;17915:17;17908:47;17972:131;18098:4;17972:131;:::i;:::-;17964:139;;17691:419;;;:::o;18116:348::-;18156:7;18179:20;18197:1;18179:20;:::i;:::-;18174:25;;18213:20;18231:1;18213:20;:::i;:::-;18208:25;;18401:1;18333:66;18329:74;18326:1;18323:81;18318:1;18311:9;18304:17;18300:105;18297:131;;;18408:18;;:::i;:::-;18297:131;18456:1;18453;18449:9;18438:20;;18116:348;;;;:::o;18470:220::-;18610:34;18606:1;18598:6;18594:14;18587:58;18679:3;18674:2;18666:6;18662:15;18655:28;18470:220;:::o;18696:366::-;18838:3;18859:67;18923:2;18918:3;18859:67;:::i;:::-;18852:74;;18935:93;19024:3;18935:93;:::i;:::-;19053:2;19048:3;19044:12;19037:19;;18696:366;;;:::o;19068:419::-;19234:4;19272:2;19261:9;19257:18;19249:26;;19321:9;19315:4;19311:20;19307:1;19296:9;19292:17;19285:47;19349:131;19475:4;19349:131;:::i;:::-;19341:139;;19068:419;;;:::o;19493:147::-;19594:11;19631:3;19616:18;;19493:147;;;;:::o;19646:114::-;;:::o;19766:398::-;19925:3;19946:83;20027:1;20022:3;19946:83;:::i;:::-;19939:90;;20038:93;20127:3;20038:93;:::i;:::-;20156:1;20151:3;20147:11;20140:18;;19766:398;;;:::o;20170:379::-;20354:3;20376:147;20519:3;20376:147;:::i;:::-;20369:154;;20540:3;20533:10;;20170:379;;;:::o;20555:148::-;20657:11;20694:3;20679:18;;20555:148;;;;:::o;20709:214::-;20849:66;20845:1;20837:6;20833:14;20826:90;20709:214;:::o;20929:402::-;21089:3;21110:85;21192:2;21187:3;21110:85;:::i;:::-;21103:92;;21204:93;21293:3;21204:93;:::i;:::-;21322:2;21317:3;21313:12;21306:19;;20929:402;;;:::o;21337:77::-;21374:7;21403:5;21392:16;;21337:77;;;:::o;21420:79::-;21459:7;21488:5;21477:16;;21420:79;;;:::o;21505:157::-;21610:45;21630:24;21648:5;21630:24;:::i;:::-;21610:45;:::i;:::-;21605:3;21598:58;21505:157;;:::o;21668:522::-;21881:3;21903:148;22047:3;21903:148;:::i;:::-;21896:155;;22061:75;22132:3;22123:6;22061:75;:::i;:::-;22161:2;22156:3;22152:12;22145:19;;22181:3;22174:10;;21668:522;;;;:::o;22196:174::-;22336:26;22332:1;22324:6;22320:14;22313:50;22196:174;:::o;22376:366::-;22518:3;22539:67;22603:2;22598:3;22539:67;:::i;:::-;22532:74;;22615:93;22704:3;22615:93;:::i;:::-;22733:2;22728:3;22724:12;22717:19;;22376:366;;;:::o;22748:419::-;22914:4;22952:2;22941:9;22937:18;22929:26;;23001:9;22995:4;22991:20;22987:1;22976:9;22972:17;22965:47;23029:131;23155:4;23029:131;:::i;:::-;23021:139;;22748:419;;;:::o;23173:141::-;23222:4;23245:3;23237:11;;23268:3;23265:1;23258:14;23302:4;23299:1;23289:18;23281:26;;23173:141;;;:::o;23320:93::-;23357:6;23404:2;23399;23392:5;23388:14;23384:23;23374:33;;23320:93;;;:::o;23419:107::-;23463:8;23513:5;23507:4;23503:16;23482:37;;23419:107;;;;:::o;23532:393::-;23601:6;23651:1;23639:10;23635:18;23674:97;23704:66;23693:9;23674:97;:::i;:::-;23792:39;23822:8;23811:9;23792:39;:::i;:::-;23780:51;;23864:4;23860:9;23853:5;23849:21;23840:30;;23913:4;23903:8;23899:19;23892:5;23889:30;23879:40;;23608:317;;23532:393;;;;;:::o;23931:60::-;23959:3;23980:5;23973:12;;23931:60;;;:::o;23997:142::-;24047:9;24080:53;24098:34;24107:24;24125:5;24107:24;:::i;:::-;24098:34;:::i;:::-;24080:53;:::i;:::-;24067:66;;23997:142;;;:::o;24145:75::-;24188:3;24209:5;24202:12;;24145:75;;;:::o;24226:269::-;24336:39;24367:7;24336:39;:::i;:::-;24397:91;24446:41;24470:16;24446:41;:::i;:::-;24438:6;24431:4;24425:11;24397:91;:::i;:::-;24391:4;24384:105;24302:193;24226:269;;;:::o;24501:73::-;24546:3;24501:73;:::o;24580:189::-;24657:32;;:::i;:::-;24698:65;24756:6;24748;24742:4;24698:65;:::i;:::-;24633:136;24580:189;;:::o;24775:186::-;24835:120;24852:3;24845:5;24842:14;24835:120;;;24906:39;24943:1;24936:5;24906:39;:::i;:::-;24879:1;24872:5;24868:13;24859:22;;24835:120;;;24775:186;;:::o;24967:543::-;25068:2;25063:3;25060:11;25057:446;;;25102:38;25134:5;25102:38;:::i;:::-;25186:29;25204:10;25186:29;:::i;:::-;25176:8;25172:44;25369:2;25357:10;25354:18;25351:49;;;25390:8;25375:23;;25351:49;25413:80;25469:22;25487:3;25469:22;:::i;:::-;25459:8;25455:37;25442:11;25413:80;:::i;:::-;25072:431;;25057:446;24967:543;;;:::o;25516:117::-;25570:8;25620:5;25614:4;25610:16;25589:37;;25516:117;;;;:::o;25639:169::-;25683:6;25716:51;25764:1;25760:6;25752:5;25749:1;25745:13;25716:51;:::i;:::-;25712:56;25797:4;25791;25787:15;25777:25;;25690:118;25639:169;;;;:::o;25813:295::-;25889:4;26035:29;26060:3;26054:4;26035:29;:::i;:::-;26027:37;;26097:3;26094:1;26090:11;26084:4;26081:21;26073:29;;25813:295;;;;:::o;26113:1395::-;26230:37;26263:3;26230:37;:::i;:::-;26332:18;26324:6;26321:30;26318:56;;;26354:18;;:::i;:::-;26318:56;26398:38;26430:4;26424:11;26398:38;:::i;:::-;26483:67;26543:6;26535;26529:4;26483:67;:::i;:::-;26577:1;26601:4;26588:17;;26633:2;26625:6;26622:14;26650:1;26645:618;;;;27307:1;27324:6;27321:77;;;27373:9;27368:3;27364:19;27358:26;27349:35;;27321:77;27424:67;27484:6;27477:5;27424:67;:::i;:::-;27418:4;27411:81;27280:222;26615:887;;26645:618;26697:4;26693:9;26685:6;26681:22;26731:37;26763:4;26731:37;:::i;:::-;26790:1;26804:208;26818:7;26815:1;26812:14;26804:208;;;26897:9;26892:3;26888:19;26882:26;26874:6;26867:42;26948:1;26940:6;26936:14;26926:24;;26995:2;26984:9;26980:18;26967:31;;26841:4;26838:1;26834:12;26829:17;;26804:208;;;27040:6;27031:7;27028:19;27025:179;;;27098:9;27093:3;27089:19;27083:26;27141:48;27183:4;27175:6;27171:17;27160:9;27141:48;:::i;:::-;27133:6;27126:64;27048:156;27025:179;27250:1;27246;27238:6;27234:14;27230:22;27224:4;27217:36;26652:611;;;26615:887;;26205:1303;;;26113:1395;;:::o;27514:234::-;27654:34;27650:1;27642:6;27638:14;27631:58;27723:17;27718:2;27710:6;27706:15;27699:42;27514:234;:::o;27754:366::-;27896:3;27917:67;27981:2;27976:3;27917:67;:::i;:::-;27910:74;;27993:93;28082:3;27993:93;:::i;:::-;28111:2;28106:3;28102:12;28095:19;;27754:366;;;:::o;28126:419::-;28292:4;28330:2;28319:9;28315:18;28307:26;;28379:9;28373:4;28369:20;28365:1;28354:9;28350:17;28343:47;28407:131;28533:4;28407:131;:::i;:::-;28399:139;;28126:419;;;:::o;28575:874::-;28678:3;28715:5;28709:12;28744:36;28770:9;28744:36;:::i;:::-;28796:89;28878:6;28873:3;28796:89;:::i;:::-;28789:96;;28916:1;28905:9;28901:17;28932:1;28927:166;;;;29107:1;29102:341;;;;28894:549;;28927:166;29011:4;29007:9;28996;28992:25;28987:3;28980:38;29073:6;29066:14;29059:22;29051:6;29047:35;29042:3;29038:45;29031:52;;28927:166;;29102:341;29169:38;29201:5;29169:38;:::i;:::-;29229:1;29243:154;29257:6;29254:1;29251:13;29243:154;;;29331:7;29325:14;29321:1;29316:3;29312:11;29305:35;29381:1;29372:7;29368:15;29357:26;;29279:4;29276:1;29272:12;29267:17;;29243:154;;;29426:6;29421:3;29417:16;29410:23;;29109:334;;28894:549;;28682:767;;28575:874;;;;:::o;29455:390::-;29561:3;29589:39;29622:5;29589:39;:::i;:::-;29644:89;29726:6;29721:3;29644:89;:::i;:::-;29637:96;;29742:65;29800:6;29795:3;29788:4;29781:5;29777:16;29742:65;:::i;:::-;29832:6;29827:3;29823:16;29816:23;;29565:280;29455:390;;;;:::o;29851:155::-;29991:7;29987:1;29979:6;29975:14;29968:31;29851:155;:::o;30012:400::-;30172:3;30193:84;30275:1;30270:3;30193:84;:::i;:::-;30186:91;;30286:93;30375:3;30286:93;:::i;:::-;30404:1;30399:3;30395:11;30388:18;;30012:400;;;:::o;30418:695::-;30696:3;30718:92;30806:3;30797:6;30718:92;:::i;:::-;30711:99;;30827:95;30918:3;30909:6;30827:95;:::i;:::-;30820:102;;30939:148;31083:3;30939:148;:::i;:::-;30932:155;;31104:3;31097:10;;30418:695;;;;;:::o;31119:225::-;31259:34;31255:1;31247:6;31243:14;31236:58;31328:8;31323:2;31315:6;31311:15;31304:33;31119:225;:::o;31350:366::-;31492:3;31513:67;31577:2;31572:3;31513:67;:::i;:::-;31506:74;;31589:93;31678:3;31589:93;:::i;:::-;31707:2;31702:3;31698:12;31691:19;;31350:366;;;:::o;31722:419::-;31888:4;31926:2;31915:9;31911:18;31903:26;;31975:9;31969:4;31965:20;31961:1;31950:9;31946:17;31939:47;32003:131;32129:4;32003:131;:::i;:::-;31995:139;;31722:419;;;:::o;32147:182::-;32287:34;32283:1;32275:6;32271:14;32264:58;32147:182;:::o;32335:366::-;32477:3;32498:67;32562:2;32557:3;32498:67;:::i;:::-;32491:74;;32574:93;32663:3;32574:93;:::i;:::-;32692:2;32687:3;32683:12;32676:19;;32335:366;;;:::o;32707:419::-;32873:4;32911:2;32900:9;32896:18;32888:26;;32960:9;32954:4;32950:20;32946:1;32935:9;32931:17;32924:47;32988:131;33114:4;32988:131;:::i;:::-;32980:139;;32707:419;;;:::o;33132:98::-;33183:6;33217:5;33211:12;33201:22;;33132:98;;;:::o;33236:168::-;33319:11;33353:6;33348:3;33341:19;33393:4;33388:3;33384:14;33369:29;;33236:168;;;;:::o;33410:373::-;33496:3;33524:38;33556:5;33524:38;:::i;:::-;33578:70;33641:6;33636:3;33578:70;:::i;:::-;33571:77;;33657:65;33715:6;33710:3;33703:4;33696:5;33692:16;33657:65;:::i;:::-;33747:29;33769:6;33747:29;:::i;:::-;33742:3;33738:39;33731:46;;33500:283;33410:373;;;;:::o;33789:640::-;33984:4;34022:3;34011:9;34007:19;33999:27;;34036:71;34104:1;34093:9;34089:17;34080:6;34036:71;:::i;:::-;34117:72;34185:2;34174:9;34170:18;34161:6;34117:72;:::i;:::-;34199;34267:2;34256:9;34252:18;34243:6;34199:72;:::i;:::-;34318:9;34312:4;34308:20;34303:2;34292:9;34288:18;34281:48;34346:76;34417:4;34408:6;34346:76;:::i;:::-;34338:84;;33789:640;;;;;;;:::o;34435:141::-;34491:5;34522:6;34516:13;34507:22;;34538:32;34564:5;34538:32;:::i;:::-;34435:141;;;;:::o;34582:349::-;34651:6;34700:2;34688:9;34679:7;34675:23;34671:32;34668:119;;;34706:79;;:::i;:::-;34668:119;34826:1;34851:63;34906:7;34897:6;34886:9;34882:22;34851:63;:::i;:::-;34841:73;;34797:127;34582:349;;;;:::o;34937:233::-;34976:3;34999:24;35017:5;34999:24;:::i;:::-;34990:33;;35045:66;35038:5;35035:77;35032:103;;35115:18;;:::i;:::-;35032:103;35162:1;35155:5;35151:13;35144:20;;34937:233;;;:::o;35176:180::-;35224:77;35221:1;35214:88;35321:4;35318:1;35311:15;35345:4;35342:1;35335:15;35362:185;35402:1;35419:20;35437:1;35419:20;:::i;:::-;35414:25;;35453:20;35471:1;35453:20;:::i;:::-;35448:25;;35492:1;35482:35;;35497:18;;:::i;:::-;35482:35;35539:1;35536;35532:9;35527:14;;35362:185;;;;:::o;35553:176::-;35585:1;35602:20;35620:1;35602:20;:::i;:::-;35597:25;;35636:20;35654:1;35636:20;:::i;:::-;35631:25;;35675:1;35665:35;;35680:18;;:::i;:::-;35665:35;35721:1;35718;35714:9;35709:14;;35553:176;;;;:::o;35735:180::-;35783:77;35780:1;35773:88;35880:4;35877:1;35870:15;35904:4;35901:1;35894:15;35921:174;36061:26;36057:1;36049:6;36045:14;36038:50;35921:174;:::o;36101:366::-;36243:3;36264:67;36328:2;36323:3;36264:67;:::i;:::-;36257:74;;36340:93;36429:3;36340:93;:::i;:::-;36458:2;36453:3;36449:12;36442:19;;36101:366;;;:::o;36473:419::-;36639:4;36677:2;36666:9;36662:18;36654:26;;36726:9;36720:4;36716:20;36712:1;36701:9;36697:17;36690:47;36754:131;36880:4;36754:131;:::i;:::-;36746:139;;36473:419;;;:::o;36898:181::-;37038:33;37034:1;37026:6;37022:14;37015:57;36898:181;:::o;37085:366::-;37227:3;37248:67;37312:2;37307:3;37248:67;:::i;:::-;37241:74;;37324:93;37413:3;37324:93;:::i;:::-;37442:2;37437:3;37433:12;37426:19;;37085:366;;;:::o;37457:419::-;37623:4;37661:2;37650:9;37646:18;37638:26;;37710:9;37704:4;37700:20;37696:1;37685:9;37681:17;37674:47;37738:131;37864:4;37738:131;:::i;:::-;37730:139;;37457:419;;;:::o;37882:221::-;38022:34;38018:1;38010:6;38006:14;37999:58;38091:4;38086:2;38078:6;38074:15;38067:29;37882:221;:::o;38109:366::-;38251:3;38272:67;38336:2;38331:3;38272:67;:::i;:::-;38265:74;;38348:93;38437:3;38348:93;:::i;:::-;38466:2;38461:3;38457:12;38450:19;;38109:366;;;:::o;38481:419::-;38647:4;38685:2;38674:9;38670:18;38662:26;;38734:9;38728:4;38724:20;38720:1;38709:9;38705:17;38698:47;38762:131;38888:4;38762:131;:::i;:::-;38754:139;;38481:419;;;:::o;38906:118::-;38993:24;39011:5;38993:24;:::i;:::-;38988:3;38981:37;38906:118;;:::o;39030:86::-;39065:7;39105:4;39098:5;39094:16;39083:27;;39030:86;;;:::o;39122:112::-;39205:22;39221:5;39205:22;:::i;:::-;39200:3;39193:35;39122:112;;:::o;39240:545::-;39413:4;39451:3;39440:9;39436:19;39428:27;;39465:71;39533:1;39522:9;39518:17;39509:6;39465:71;:::i;:::-;39546:68;39610:2;39599:9;39595:18;39586:6;39546:68;:::i;:::-;39624:72;39692:2;39681:9;39677:18;39668:6;39624:72;:::i;:::-;39706;39774:2;39763:9;39759:18;39750:6;39706:72;:::i;:::-;39240:545;;;;;;;:::o

Swarm Source

ipfs://fd210dedd81e0f428adf259ed20093388ef4fb1fdac981976731ffa12ee372b6
Loading...
Loading
Loading...
Loading
[ 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.