ETH Price: $2,905.17 (-4.13%)
Gas: 1 Gwei

Token

 

Overview

Max Total Supply

196

Holders

137

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0x0dddc679028c2171ad0f5acc2336fe7d5e6231ed
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ERC1155

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-17
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

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

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

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

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

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

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

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

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

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

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

interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

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

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

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

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

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

library Strings {
    bytes16 private constant alphabet = "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] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}

contract ERC1155 is ERC165, IERC1155, IERC1155MetadataURI {
    
    using Address for address;
    using Strings for uint256;
    
    address private _manager;
    address payable private _owner1;
    address payable private _owner2;
    address payable private _owner3;
    
    uint256 private _price = 20000000000000000; //20000000000000000
    uint256 private _totalAllowedMints = 10000;
    uint256 private _totalAllowedMintsPerUser = 97;
    uint256 private _totalMints;
    
    mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from token ID to account balances
    mapping(address => mapping(address => bool)) private _operatorApprovals; // Mapping from account to operator approvals
    mapping(address => uint256) private _mints;

    string private _uri;
    
    constructor() {
        _manager = msg.sender;
    }
    
    function setOwners(address payable owner1, address payable owner2, address payable owner3) external {
        require(msg.sender == _manager);
        
        _owner1 = owner1;
        _owner2 = owner2;
        _owner3 = owner3;
    }
    
    //Read Functions======================================================================================================================================================
    function owner() external view returns (address) {
        return _manager;
    }
    
    function balanceOf(address account, uint256 id) public view override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    function balanceOfBatch(address[] memory accounts, uint256[] memory ids) external view override returns (uint256[] memory) {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

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

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

        return batchBalances;
    }
    
    function uri(uint256 id) external view override returns (string memory) {
        return _uri;
    }
    
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    
    function isApprovedForAll(address account, address operator) public view override returns (bool) {
        return _operatorApprovals[account][operator];
    }
    
    function webData(address user) external view returns(uint256 totalAllowedMintsPerUser, uint256 leftNFT, uint256 userMints, uint256 price) {
        totalAllowedMintsPerUser = _totalAllowedMintsPerUser;
        leftNFT = _totalAllowedMints - _totalMints;
        userMints = _mints[user];
        price = _price;
    }
    
    //Moderator Functions======================================================================================================================================================
    function changeOwner1(address payable Owner) external {
        require(msg.sender == _owner1);
        _owner1 = Owner;
    }
    
    function changeOwner2(address payable Owner) external {
        require(msg.sender == _owner2);
        _owner2 = Owner;
    }
    
    function changeOwner3(address payable Owner) external {
        require(msg.sender == _owner3);
        _owner3 = Owner;
    }
    
    function changeManager(address manager) external {
        require(msg.sender == _manager);
        _manager = manager;
    }
    
    function changePrice(uint256 newPrice) external {
        require(msg.sender == _owner1 || msg.sender == _owner2 || msg.sender == _owner3 || msg.sender == _manager);
        _price = newPrice;
    }
    
    function changeTotalAllowedMintsPerUser(uint256 newTotalAllowedMintsPerUser) external {
        require(msg.sender == _owner1 || msg.sender == _owner2 || msg.sender == _owner3 || msg.sender == _manager);
        _totalAllowedMintsPerUser = newTotalAllowedMintsPerUser;
    }
    
    function changeTotalAllowedMints(uint256 newTotalAllowedMints) external {
        require(msg.sender == _owner1 || msg.sender == _owner2 || msg.sender == _owner3 || msg.sender == _manager);
        _totalAllowedMints = newTotalAllowedMints;
    }
    
    function setUri(string calldata Uri) external {
        require(msg.sender == _owner1 || msg.sender == _owner2 || msg.sender == _owner3 || msg.sender == _manager);
       _uri = Uri;
    }
    
    function distributeEth() external {
        _owner1.transfer(address(this).balance / 2);
        _owner2.transfer(address(this).balance / 2);
        _owner3.transfer(address(this).balance);
    }
    
    function managerWithdraw(address payable to, uint256 amount) external {
        require (msg.sender == _manager);
        to.transfer(amount);
    }
    
    function giveawayMint(address[] calldata winners) external {
        require(msg.sender == _owner1 || msg.sender == _owner2 || msg.sender == _owner3 || msg.sender == _manager);
        uint256 length = winners.length;
        for(uint256 t; t < length; ++t) {
            
        ++_balances[0][winners[t]];
        
        emit TransferSingle(msg.sender, address(0), winners[t], 0, 1);
        }
        
        _totalMints += length;
    }
    
    //User Functions======================================================================================================================================================
    function setApprovalForAll(address operator, bool approved) external override {
        require(msg.sender != operator, "ERC1155: setting approval status for self");

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

    function safeTransferFrom(address from,address to,uint256 id,uint256 amount,bytes memory data) external override {
        require(
            from == msg.sender || isApprovedForAll(from, msg.sender),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    function safeBatchTransferFrom(address from,address to,uint256[] memory ids,uint256[] memory amounts,bytes memory data) public virtual override {
        require(
            from == msg.sender || isApprovedForAll(from, msg.sender),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }
    
    function mint(address account, uint256 amount) external payable {
        require(msg.value == _price * amount, "BigToys: Insufficient balance");
        require(_mints[msg.sender] + amount <= _totalAllowedMintsPerUser, "BigToys: Max mints reached");
        require(_totalMints + amount <= _totalAllowedMints, "BigToys: Insufficient NFTs for minting");
        
        _mints[msg.sender] += amount;
        _totalMints += amount;
        
        _balances[0][account] += amount;
        
        emit TransferSingle(msg.sender, address(0), account, 0, amount);

    }
    
    //Internal Functions======================================================================================================================================================
    function _safeTransferFrom(address from,address to,uint256 id,uint256 amount,bytes memory data) internal virtual {

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

        emit TransferSingle(msg.sender, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);
    }

    function _safeBatchTransferFrom(address from,address to,uint256[] memory ids,uint256[] memory amounts,bytes memory data) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

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

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

        emit TransferBatch(msg.sender, from, to, ids, amounts);

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

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

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

        return array;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"changeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"Owner","type":"address"}],"name":"changeOwner1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"Owner","type":"address"}],"name":"changeOwner2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"Owner","type":"address"}],"name":"changeOwner3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"changePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalAllowedMints","type":"uint256"}],"name":"changeTotalAllowedMints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalAllowedMintsPerUser","type":"uint256"}],"name":"changeTotalAllowedMintsPerUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"winners","type":"address[]"}],"name":"giveawayMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"managerWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"owner1","type":"address"},{"internalType":"address payable","name":"owner2","type":"address"},{"internalType":"address payable","name":"owner3","type":"address"}],"name":"setOwners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"Uri","type":"string"}],"name":"setUri","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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"webData","outputs":[{"internalType":"uint256","name":"totalAllowedMintsPerUser","type":"uint256"},{"internalType":"uint256","name":"leftNFT","type":"uint256"},{"internalType":"uint256","name":"userMints","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405266470de4df820000600455612710600555606160065534801561002657600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613e5b806100766000396000f3fe60806040526004361061013f5760003560e01c8063805eff82116100b6578063a3fbbaae1161006f578063a3fbbaae14610442578063af0087b01461046b578063c16e76b2146104ab578063dbc938d8146104d4578063e985e9c5146104eb578063f242432a146105285761013f565b8063805eff821461034a578063840a1128146103735780638da5cb5b1461039c5780639b642de1146103c7578063a22cb465146103f0578063a2b40d19146104195761013f565b8063279093a511610108578063279093a51461024d5780632eb2c2d61461027657806340c10f191461029f5780634e1273f4146102bb578063512fcd60146102f85780635779444f146103215761013f565b8062fdd58e1461014457806301ffc9a714610181578063053a24d6146101be5780630e802db4146101e75780630e89341c14610210575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612c12565b610551565b6040516101789190613416565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a39190612d17565b61061b565b6040516101b59190613207565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612c52565b6106fd565b005b3480156101f357600080fd5b5061020e60048036038101906102099190612999565b6109d3565b005b34801561021c57600080fd5b5061023760048036038101906102329190612dbe565b610af3565b6040516102449190613274565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f91906129ec565b610b87565b005b34801561028257600080fd5b5061029d60048036038101906102989190612a6c565b610c2a565b005b6102b960048036038101906102b49190612c12565b610cbd565b005b3480156102c757600080fd5b506102e260048036038101906102dd9190612c9f565b610f47565b6040516102ef91906131ae565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a919061296c565b611060565b005b34801561032d57600080fd5b5061034860048036038101906103439190612dbe565b6110fe565b005b34801561035657600080fd5b50610371600480360381019061036c9190612dbe565b611268565b005b34801561037f57600080fd5b5061039a6004803603810190610395919061296c565b6113d2565b005b3480156103a857600080fd5b506103b1611470565b6040516103be91906130d1565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190612d71565b611499565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612bd2565b61160f565b005b34801561042557600080fd5b50610440600480360381019061043b9190612dbe565b61177b565b005b34801561044e57600080fd5b506104696004803603810190610464919061293f565b6118e5565b005b34801561047757600080fd5b50610492600480360381019061048d919061293f565b611980565b6040516104a2949392919061345a565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd919061296c565b6119eb565b005b3480156104e057600080fd5b506104e9611a89565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a2c565b611bde565b60405161051f9190613207565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612b3b565b611c72565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b990613316565b60405180910390fd5b6008600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106e657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106f657506106f582611d05565b5b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107a65750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806107fe5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610854575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61085d57600080fd5b600082829050905060005b818110156109b457600860008081526020019081526020016000206000858584818110610898576108976138f8565b5b90506020020160208101906108ad919061293f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546108f490613822565b9190508190555083838281811061090e5761090d6138f8565b5b9050602002016020810190610923919061293f565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626000600160405161099b929190613222565b60405180910390a4806109ad90613822565b9050610868565b5080600760008282546109c791906135be565b92505081905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2b57600080fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6060600b8054610b02906137bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2e906137bf565b8015610b7b5780601f10610b5057610100808354040283529160200191610b7b565b820191906000526020600020905b815481529060010190602001808311610b5e57829003601f168201915b50505050509050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdf57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c25573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c6a5750610c698533611bde565b5b610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613356565b60405180910390fd5b610cb68585858585611d6f565b5050505050565b80600454610ccb9190613645565b3414610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906132b6565b60405180910390fd5b60065481600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5a91906135be565b1115610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9290613376565b60405180910390fd5b60055481600754610dac91906135be565b1115610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de4906132f6565b60405180910390fd5b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e3c91906135be565b925050819055508060076000828254610e5591906135be565b92505081905550806008600080815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ebc91906135be565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62600085604051610f3b92919061324b565b60405180910390a45050565b60608151835114610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f84906133d6565b60405180910390fd5b6000835167ffffffffffffffff811115610faa57610fa9613927565b5b604051908082528060200260200182016040528015610fd85781602001602082028036833780820191505090505b50905060005b845181101561105557611025858281518110610ffd57610ffc6138f8565b5b6020026020010151858381518110611018576110176138f8565b5b6020026020010151610551565b828281518110611038576110376138f8565b5b6020026020010181815250508061104e90613822565b9050610fde565b508091505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110ba57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111a75750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111ff5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611255575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61125e57600080fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113115750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113695750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113bf575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113c857600080fd5b8060068190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461142c57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115425750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061159a5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806115f0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115f957600080fd5b8181600b919061160a9291906125c6565b505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561167e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611675906133b6565b60405180910390fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161176f9190613207565b60405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118245750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061187c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118d2575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6118db57600080fd5b8060048190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600654935060075460055461199b919061369f565b9250600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060045490509193509193565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a4557600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600247611ad29190613614565b9081150290604051600060405180830381858888f19350505050158015611afd573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600247611b479190613614565b9081150290604051600060405180830381858888f19350505050158015611b72573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611bdb573d6000803e3d6000fd5b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611cb25750611cb18533611bde565b5b611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890613336565b60405180910390fd5b611cfe8585858585611ffb565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8151835114611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906133f6565b60405180910390fd5b60005b8351811015611f67576000848281518110611dd457611dd36138f8565b5b602002602001015190506000848381518110611df357611df26138f8565b5b6020026020010151905060006008600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90613396565b60405180910390fd5b8181036008600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816008600085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f4c91906135be565b9250508190555050505080611f6090613822565b9050611db6565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611fde9291906131d0565b60405180910390a4611ff43386868686866121e5565b5050505050565b60006008600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90613396565b60405180910390fd5b8281036008600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826008600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214a91906135be565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516121c7929190613431565b60405180910390a46121dd3387878787876123cc565b505050505050565b6122048473ffffffffffffffffffffffffffffffffffffffff166125b3565b156123c4578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161224a9594939291906130ec565b602060405180830381600087803b15801561226457600080fd5b505af192505050801561229557506040513d601f19601f820116820180604052508101906122929190612d44565b60015b61233b576122a1613956565b806308c379a014156122fe57506122b6613d1c565b806122c15750612300565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f59190613274565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233290613296565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b9906132d6565b60405180910390fd5b505b505050505050565b6123eb8473ffffffffffffffffffffffffffffffffffffffff166125b3565b156125ab578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612431959493929190613154565b602060405180830381600087803b15801561244b57600080fd5b505af192505050801561247c57506040513d601f19601f820116820180604052508101906124799190612d44565b60015b61252257612488613956565b806308c379a014156124e5575061249d613d1c565b806124a857506124e7565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9190613274565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251990613296565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a0906132d6565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b8280546125d2906137bf565b90600052602060002090601f0160209004810192826125f4576000855561263b565b82601f1061260d57803560ff191683800117855561263b565b8280016001018555821561263b579182015b8281111561263a57823582559160200191906001019061261f565b5b509050612648919061264c565b5090565b5b8082111561266557600081600090555060010161264d565b5090565b600061267c612677846134c4565b61349f565b9050808382526020820190508285602086028201111561269f5761269e613982565b5b60005b858110156126cf57816126b5888261278b565b8452602084019350602083019250506001810190506126a2565b5050509392505050565b60006126ec6126e7846134f0565b61349f565b9050808382526020820190508285602086028201111561270f5761270e613982565b5b60005b8581101561273f5781612725888261292a565b845260208401935060208301925050600181019050612712565b5050509392505050565b600061275c6127578461351c565b61349f565b90508281526020810184848401111561277857612777613987565b5b61278384828561377d565b509392505050565b60008135905061279a81613db2565b92915050565b6000813590506127af81613dc9565b92915050565b60008083601f8401126127cb576127ca61397d565b5b8235905067ffffffffffffffff8111156127e8576127e7613978565b5b60208301915083602082028301111561280457612803613982565b5b9250929050565b600082601f8301126128205761281f61397d565b5b8135612830848260208601612669565b91505092915050565b600082601f83011261284e5761284d61397d565b5b813561285e8482602086016126d9565b91505092915050565b60008135905061287681613de0565b92915050565b60008135905061288b81613df7565b92915050565b6000815190506128a081613df7565b92915050565b600082601f8301126128bb576128ba61397d565b5b81356128cb848260208601612749565b91505092915050565b60008083601f8401126128ea576128e961397d565b5b8235905067ffffffffffffffff81111561290757612906613978565b5b60208301915083600182028301111561292357612922613982565b5b9250929050565b60008135905061293981613e0e565b92915050565b60006020828403121561295557612954613991565b5b60006129638482850161278b565b91505092915050565b60006020828403121561298257612981613991565b5b6000612990848285016127a0565b91505092915050565b6000806000606084860312156129b2576129b1613991565b5b60006129c0868287016127a0565b93505060206129d1868287016127a0565b92505060406129e2868287016127a0565b9150509250925092565b60008060408385031215612a0357612a02613991565b5b6000612a11858286016127a0565b9250506020612a228582860161292a565b9150509250929050565b60008060408385031215612a4357612a42613991565b5b6000612a518582860161278b565b9250506020612a628582860161278b565b9150509250929050565b600080600080600060a08688031215612a8857612a87613991565b5b6000612a968882890161278b565b9550506020612aa78882890161278b565b945050604086013567ffffffffffffffff811115612ac857612ac761398c565b5b612ad488828901612839565b935050606086013567ffffffffffffffff811115612af557612af461398c565b5b612b0188828901612839565b925050608086013567ffffffffffffffff811115612b2257612b2161398c565b5b612b2e888289016128a6565b9150509295509295909350565b600080600080600060a08688031215612b5757612b56613991565b5b6000612b658882890161278b565b9550506020612b768882890161278b565b9450506040612b878882890161292a565b9350506060612b988882890161292a565b925050608086013567ffffffffffffffff811115612bb957612bb861398c565b5b612bc5888289016128a6565b9150509295509295909350565b60008060408385031215612be957612be8613991565b5b6000612bf78582860161278b565b9250506020612c0885828601612867565b9150509250929050565b60008060408385031215612c2957612c28613991565b5b6000612c378582860161278b565b9250506020612c488582860161292a565b9150509250929050565b60008060208385031215612c6957612c68613991565b5b600083013567ffffffffffffffff811115612c8757612c8661398c565b5b612c93858286016127b5565b92509250509250929050565b60008060408385031215612cb657612cb5613991565b5b600083013567ffffffffffffffff811115612cd457612cd361398c565b5b612ce08582860161280b565b925050602083013567ffffffffffffffff811115612d0157612d0061398c565b5b612d0d85828601612839565b9150509250929050565b600060208284031215612d2d57612d2c613991565b5b6000612d3b8482850161287c565b91505092915050565b600060208284031215612d5a57612d59613991565b5b6000612d6884828501612891565b91505092915050565b60008060208385031215612d8857612d87613991565b5b600083013567ffffffffffffffff811115612da657612da561398c565b5b612db2858286016128d4565b92509250509250929050565b600060208284031215612dd457612dd3613991565b5b6000612de28482850161292a565b91505092915050565b6000612df783836130b3565b60208301905092915050565b612e0c816136d3565b82525050565b6000612e1d8261355d565b612e27818561358b565b9350612e328361354d565b8060005b83811015612e63578151612e4a8882612deb565b9750612e558361357e565b925050600181019050612e36565b5085935050505092915050565b612e79816136f7565b82525050565b6000612e8a82613568565b612e94818561359c565b9350612ea481856020860161378c565b612ead81613996565b840191505092915050565b612ec181613759565b82525050565b612ed08161376b565b82525050565b6000612ee182613573565b612eeb81856135ad565b9350612efb81856020860161378c565b612f0481613996565b840191505092915050565b6000612f1c6034836135ad565b9150612f27826139b4565b604082019050919050565b6000612f3f601d836135ad565b9150612f4a82613a03565b602082019050919050565b6000612f626028836135ad565b9150612f6d82613a2c565b604082019050919050565b6000612f856026836135ad565b9150612f9082613a7b565b604082019050919050565b6000612fa8602b836135ad565b9150612fb382613aca565b604082019050919050565b6000612fcb6029836135ad565b9150612fd682613b19565b604082019050919050565b6000612fee6032836135ad565b9150612ff982613b68565b604082019050919050565b6000613011601a836135ad565b915061301c82613bb7565b602082019050919050565b6000613034602a836135ad565b915061303f82613be0565b604082019050919050565b60006130576029836135ad565b915061306282613c2f565b604082019050919050565b600061307a6029836135ad565b915061308582613c7e565b604082019050919050565b600061309d6028836135ad565b91506130a882613ccd565b604082019050919050565b6130bc8161374f565b82525050565b6130cb8161374f565b82525050565b60006020820190506130e66000830184612e03565b92915050565b600060a0820190506131016000830188612e03565b61310e6020830187612e03565b81810360408301526131208186612e12565b905081810360608301526131348185612e12565b905081810360808301526131488184612e7f565b90509695505050505050565b600060a0820190506131696000830188612e03565b6131766020830187612e03565b61318360408301866130c2565b61319060608301856130c2565b81810360808301526131a28184612e7f565b90509695505050505050565b600060208201905081810360008301526131c88184612e12565b905092915050565b600060408201905081810360008301526131ea8185612e12565b905081810360208301526131fe8184612e12565b90509392505050565b600060208201905061321c6000830184612e70565b92915050565b60006040820190506132376000830185612eb8565b6132446020830184612ec7565b9392505050565b60006040820190506132606000830185612eb8565b61326d60208301846130c2565b9392505050565b6000602082019050818103600083015261328e8184612ed6565b905092915050565b600060208201905081810360008301526132af81612f0f565b9050919050565b600060208201905081810360008301526132cf81612f32565b9050919050565b600060208201905081810360008301526132ef81612f55565b9050919050565b6000602082019050818103600083015261330f81612f78565b9050919050565b6000602082019050818103600083015261332f81612f9b565b9050919050565b6000602082019050818103600083015261334f81612fbe565b9050919050565b6000602082019050818103600083015261336f81612fe1565b9050919050565b6000602082019050818103600083015261338f81613004565b9050919050565b600060208201905081810360008301526133af81613027565b9050919050565b600060208201905081810360008301526133cf8161304a565b9050919050565b600060208201905081810360008301526133ef8161306d565b9050919050565b6000602082019050818103600083015261340f81613090565b9050919050565b600060208201905061342b60008301846130c2565b92915050565b600060408201905061344660008301856130c2565b61345360208301846130c2565b9392505050565b600060808201905061346f60008301876130c2565b61347c60208301866130c2565b61348960408301856130c2565b61349660608301846130c2565b95945050505050565b60006134a96134ba565b90506134b582826137f1565b919050565b6000604051905090565b600067ffffffffffffffff8211156134df576134de613927565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561350b5761350a613927565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561353757613536613927565b5b61354082613996565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006135c98261374f565b91506135d48361374f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136095761360861386b565b5b828201905092915050565b600061361f8261374f565b915061362a8361374f565b92508261363a5761363961389a565b5b828204905092915050565b60006136508261374f565b915061365b8361374f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136945761369361386b565b5b828202905092915050565b60006136aa8261374f565b91506136b58361374f565b9250828210156136c8576136c761386b565b5b828203905092915050565b60006136de8261372f565b9050919050565b60006136f08261372f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006137648261374f565b9050919050565b60006137768261374f565b9050919050565b82818337600083830152505050565b60005b838110156137aa57808201518184015260208101905061378f565b838111156137b9576000848401525b50505050565b600060028204905060018216806137d757607f821691505b602082108114156137eb576137ea6138c9565b5b50919050565b6137fa82613996565b810181811067ffffffffffffffff8211171561381957613818613927565b5b80604052505050565b600061382d8261374f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138605761385f61386b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139755760046000803e6139726000516139a7565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f426967546f79733a20496e73756666696369656e742062616c616e6365000000600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f426967546f79733a20496e73756666696369656e74204e46547320666f72206d60008201527f696e74696e670000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f426967546f79733a204d6178206d696e74732072656163686564000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015613d2c57613daf565b613d346134ba565b60043d036004823e80513d602482011167ffffffffffffffff82111715613d5c575050613daf565b808201805167ffffffffffffffff811115613d7a5750505050613daf565b80602083010160043d038501811115613d97575050505050613daf565b613da6826020018501866137f1565b82955050505050505b90565b613dbb816136d3565b8114613dc657600080fd5b50565b613dd2816136e5565b8114613ddd57600080fd5b50565b613de9816136f7565b8114613df457600080fd5b50565b613e0081613703565b8114613e0b57600080fd5b50565b613e178161374f565b8114613e2257600080fd5b5056fea2646970667358221220240cf66fd0279cc29b3a8514cd863246972bcddf72184ca444951fe3623deeff64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061013f5760003560e01c8063805eff82116100b6578063a3fbbaae1161006f578063a3fbbaae14610442578063af0087b01461046b578063c16e76b2146104ab578063dbc938d8146104d4578063e985e9c5146104eb578063f242432a146105285761013f565b8063805eff821461034a578063840a1128146103735780638da5cb5b1461039c5780639b642de1146103c7578063a22cb465146103f0578063a2b40d19146104195761013f565b8063279093a511610108578063279093a51461024d5780632eb2c2d61461027657806340c10f191461029f5780634e1273f4146102bb578063512fcd60146102f85780635779444f146103215761013f565b8062fdd58e1461014457806301ffc9a714610181578063053a24d6146101be5780630e802db4146101e75780630e89341c14610210575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612c12565b610551565b6040516101789190613416565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a39190612d17565b61061b565b6040516101b59190613207565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612c52565b6106fd565b005b3480156101f357600080fd5b5061020e60048036038101906102099190612999565b6109d3565b005b34801561021c57600080fd5b5061023760048036038101906102329190612dbe565b610af3565b6040516102449190613274565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f91906129ec565b610b87565b005b34801561028257600080fd5b5061029d60048036038101906102989190612a6c565b610c2a565b005b6102b960048036038101906102b49190612c12565b610cbd565b005b3480156102c757600080fd5b506102e260048036038101906102dd9190612c9f565b610f47565b6040516102ef91906131ae565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a919061296c565b611060565b005b34801561032d57600080fd5b5061034860048036038101906103439190612dbe565b6110fe565b005b34801561035657600080fd5b50610371600480360381019061036c9190612dbe565b611268565b005b34801561037f57600080fd5b5061039a6004803603810190610395919061296c565b6113d2565b005b3480156103a857600080fd5b506103b1611470565b6040516103be91906130d1565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190612d71565b611499565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612bd2565b61160f565b005b34801561042557600080fd5b50610440600480360381019061043b9190612dbe565b61177b565b005b34801561044e57600080fd5b506104696004803603810190610464919061293f565b6118e5565b005b34801561047757600080fd5b50610492600480360381019061048d919061293f565b611980565b6040516104a2949392919061345a565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd919061296c565b6119eb565b005b3480156104e057600080fd5b506104e9611a89565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612a2c565b611bde565b60405161051f9190613207565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612b3b565b611c72565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b990613316565b60405180910390fd5b6008600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106e657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106f657506106f582611d05565b5b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107a65750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806107fe5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610854575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61085d57600080fd5b600082829050905060005b818110156109b457600860008081526020019081526020016000206000858584818110610898576108976138f8565b5b90506020020160208101906108ad919061293f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546108f490613822565b9190508190555083838281811061090e5761090d6138f8565b5b9050602002016020810190610923919061293f565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626000600160405161099b929190613222565b60405180910390a4806109ad90613822565b9050610868565b5080600760008282546109c791906135be565b92505081905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2b57600080fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6060600b8054610b02906137bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2e906137bf565b8015610b7b5780601f10610b5057610100808354040283529160200191610b7b565b820191906000526020600020905b815481529060010190602001808311610b5e57829003601f168201915b50505050509050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdf57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c25573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c6a5750610c698533611bde565b5b610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613356565b60405180910390fd5b610cb68585858585611d6f565b5050505050565b80600454610ccb9190613645565b3414610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906132b6565b60405180910390fd5b60065481600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5a91906135be565b1115610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9290613376565b60405180910390fd5b60055481600754610dac91906135be565b1115610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de4906132f6565b60405180910390fd5b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e3c91906135be565b925050819055508060076000828254610e5591906135be565b92505081905550806008600080815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ebc91906135be565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62600085604051610f3b92919061324b565b60405180910390a45050565b60608151835114610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f84906133d6565b60405180910390fd5b6000835167ffffffffffffffff811115610faa57610fa9613927565b5b604051908082528060200260200182016040528015610fd85781602001602082028036833780820191505090505b50905060005b845181101561105557611025858281518110610ffd57610ffc6138f8565b5b6020026020010151858381518110611018576110176138f8565b5b6020026020010151610551565b828281518110611038576110376138f8565b5b6020026020010181815250508061104e90613822565b9050610fde565b508091505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110ba57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111a75750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111ff5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611255575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61125e57600080fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113115750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113695750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113bf575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6113c857600080fd5b8060068190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461142c57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115425750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061159a5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806115f0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115f957600080fd5b8181600b919061160a9291906125c6565b505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561167e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611675906133b6565b60405180910390fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161176f9190613207565b60405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118245750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061187c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118d2575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6118db57600080fd5b8060048190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600654935060075460055461199b919061369f565b9250600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060045490509193509193565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a4557600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600247611ad29190613614565b9081150290604051600060405180830381858888f19350505050158015611afd573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600247611b479190613614565b9081150290604051600060405180830381858888f19350505050158015611b72573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611bdb573d6000803e3d6000fd5b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611cb25750611cb18533611bde565b5b611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890613336565b60405180910390fd5b611cfe8585858585611ffb565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8151835114611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906133f6565b60405180910390fd5b60005b8351811015611f67576000848281518110611dd457611dd36138f8565b5b602002602001015190506000848381518110611df357611df26138f8565b5b6020026020010151905060006008600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90613396565b60405180910390fd5b8181036008600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816008600085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f4c91906135be565b9250508190555050505080611f6090613822565b9050611db6565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611fde9291906131d0565b60405180910390a4611ff43386868686866121e5565b5050505050565b60006008600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90613396565b60405180910390fd5b8281036008600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826008600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214a91906135be565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516121c7929190613431565b60405180910390a46121dd3387878787876123cc565b505050505050565b6122048473ffffffffffffffffffffffffffffffffffffffff166125b3565b156123c4578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161224a9594939291906130ec565b602060405180830381600087803b15801561226457600080fd5b505af192505050801561229557506040513d601f19601f820116820180604052508101906122929190612d44565b60015b61233b576122a1613956565b806308c379a014156122fe57506122b6613d1c565b806122c15750612300565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f59190613274565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233290613296565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b9906132d6565b60405180910390fd5b505b505050505050565b6123eb8473ffffffffffffffffffffffffffffffffffffffff166125b3565b156125ab578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612431959493929190613154565b602060405180830381600087803b15801561244b57600080fd5b505af192505050801561247c57506040513d601f19601f820116820180604052508101906124799190612d44565b60015b61252257612488613956565b806308c379a014156124e5575061249d613d1c565b806124a857506124e7565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9190613274565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251990613296565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a0906132d6565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b8280546125d2906137bf565b90600052602060002090601f0160209004810192826125f4576000855561263b565b82601f1061260d57803560ff191683800117855561263b565b8280016001018555821561263b579182015b8281111561263a57823582559160200191906001019061261f565b5b509050612648919061264c565b5090565b5b8082111561266557600081600090555060010161264d565b5090565b600061267c612677846134c4565b61349f565b9050808382526020820190508285602086028201111561269f5761269e613982565b5b60005b858110156126cf57816126b5888261278b565b8452602084019350602083019250506001810190506126a2565b5050509392505050565b60006126ec6126e7846134f0565b61349f565b9050808382526020820190508285602086028201111561270f5761270e613982565b5b60005b8581101561273f5781612725888261292a565b845260208401935060208301925050600181019050612712565b5050509392505050565b600061275c6127578461351c565b61349f565b90508281526020810184848401111561277857612777613987565b5b61278384828561377d565b509392505050565b60008135905061279a81613db2565b92915050565b6000813590506127af81613dc9565b92915050565b60008083601f8401126127cb576127ca61397d565b5b8235905067ffffffffffffffff8111156127e8576127e7613978565b5b60208301915083602082028301111561280457612803613982565b5b9250929050565b600082601f8301126128205761281f61397d565b5b8135612830848260208601612669565b91505092915050565b600082601f83011261284e5761284d61397d565b5b813561285e8482602086016126d9565b91505092915050565b60008135905061287681613de0565b92915050565b60008135905061288b81613df7565b92915050565b6000815190506128a081613df7565b92915050565b600082601f8301126128bb576128ba61397d565b5b81356128cb848260208601612749565b91505092915050565b60008083601f8401126128ea576128e961397d565b5b8235905067ffffffffffffffff81111561290757612906613978565b5b60208301915083600182028301111561292357612922613982565b5b9250929050565b60008135905061293981613e0e565b92915050565b60006020828403121561295557612954613991565b5b60006129638482850161278b565b91505092915050565b60006020828403121561298257612981613991565b5b6000612990848285016127a0565b91505092915050565b6000806000606084860312156129b2576129b1613991565b5b60006129c0868287016127a0565b93505060206129d1868287016127a0565b92505060406129e2868287016127a0565b9150509250925092565b60008060408385031215612a0357612a02613991565b5b6000612a11858286016127a0565b9250506020612a228582860161292a565b9150509250929050565b60008060408385031215612a4357612a42613991565b5b6000612a518582860161278b565b9250506020612a628582860161278b565b9150509250929050565b600080600080600060a08688031215612a8857612a87613991565b5b6000612a968882890161278b565b9550506020612aa78882890161278b565b945050604086013567ffffffffffffffff811115612ac857612ac761398c565b5b612ad488828901612839565b935050606086013567ffffffffffffffff811115612af557612af461398c565b5b612b0188828901612839565b925050608086013567ffffffffffffffff811115612b2257612b2161398c565b5b612b2e888289016128a6565b9150509295509295909350565b600080600080600060a08688031215612b5757612b56613991565b5b6000612b658882890161278b565b9550506020612b768882890161278b565b9450506040612b878882890161292a565b9350506060612b988882890161292a565b925050608086013567ffffffffffffffff811115612bb957612bb861398c565b5b612bc5888289016128a6565b9150509295509295909350565b60008060408385031215612be957612be8613991565b5b6000612bf78582860161278b565b9250506020612c0885828601612867565b9150509250929050565b60008060408385031215612c2957612c28613991565b5b6000612c378582860161278b565b9250506020612c488582860161292a565b9150509250929050565b60008060208385031215612c6957612c68613991565b5b600083013567ffffffffffffffff811115612c8757612c8661398c565b5b612c93858286016127b5565b92509250509250929050565b60008060408385031215612cb657612cb5613991565b5b600083013567ffffffffffffffff811115612cd457612cd361398c565b5b612ce08582860161280b565b925050602083013567ffffffffffffffff811115612d0157612d0061398c565b5b612d0d85828601612839565b9150509250929050565b600060208284031215612d2d57612d2c613991565b5b6000612d3b8482850161287c565b91505092915050565b600060208284031215612d5a57612d59613991565b5b6000612d6884828501612891565b91505092915050565b60008060208385031215612d8857612d87613991565b5b600083013567ffffffffffffffff811115612da657612da561398c565b5b612db2858286016128d4565b92509250509250929050565b600060208284031215612dd457612dd3613991565b5b6000612de28482850161292a565b91505092915050565b6000612df783836130b3565b60208301905092915050565b612e0c816136d3565b82525050565b6000612e1d8261355d565b612e27818561358b565b9350612e328361354d565b8060005b83811015612e63578151612e4a8882612deb565b9750612e558361357e565b925050600181019050612e36565b5085935050505092915050565b612e79816136f7565b82525050565b6000612e8a82613568565b612e94818561359c565b9350612ea481856020860161378c565b612ead81613996565b840191505092915050565b612ec181613759565b82525050565b612ed08161376b565b82525050565b6000612ee182613573565b612eeb81856135ad565b9350612efb81856020860161378c565b612f0481613996565b840191505092915050565b6000612f1c6034836135ad565b9150612f27826139b4565b604082019050919050565b6000612f3f601d836135ad565b9150612f4a82613a03565b602082019050919050565b6000612f626028836135ad565b9150612f6d82613a2c565b604082019050919050565b6000612f856026836135ad565b9150612f9082613a7b565b604082019050919050565b6000612fa8602b836135ad565b9150612fb382613aca565b604082019050919050565b6000612fcb6029836135ad565b9150612fd682613b19565b604082019050919050565b6000612fee6032836135ad565b9150612ff982613b68565b604082019050919050565b6000613011601a836135ad565b915061301c82613bb7565b602082019050919050565b6000613034602a836135ad565b915061303f82613be0565b604082019050919050565b60006130576029836135ad565b915061306282613c2f565b604082019050919050565b600061307a6029836135ad565b915061308582613c7e565b604082019050919050565b600061309d6028836135ad565b91506130a882613ccd565b604082019050919050565b6130bc8161374f565b82525050565b6130cb8161374f565b82525050565b60006020820190506130e66000830184612e03565b92915050565b600060a0820190506131016000830188612e03565b61310e6020830187612e03565b81810360408301526131208186612e12565b905081810360608301526131348185612e12565b905081810360808301526131488184612e7f565b90509695505050505050565b600060a0820190506131696000830188612e03565b6131766020830187612e03565b61318360408301866130c2565b61319060608301856130c2565b81810360808301526131a28184612e7f565b90509695505050505050565b600060208201905081810360008301526131c88184612e12565b905092915050565b600060408201905081810360008301526131ea8185612e12565b905081810360208301526131fe8184612e12565b90509392505050565b600060208201905061321c6000830184612e70565b92915050565b60006040820190506132376000830185612eb8565b6132446020830184612ec7565b9392505050565b60006040820190506132606000830185612eb8565b61326d60208301846130c2565b9392505050565b6000602082019050818103600083015261328e8184612ed6565b905092915050565b600060208201905081810360008301526132af81612f0f565b9050919050565b600060208201905081810360008301526132cf81612f32565b9050919050565b600060208201905081810360008301526132ef81612f55565b9050919050565b6000602082019050818103600083015261330f81612f78565b9050919050565b6000602082019050818103600083015261332f81612f9b565b9050919050565b6000602082019050818103600083015261334f81612fbe565b9050919050565b6000602082019050818103600083015261336f81612fe1565b9050919050565b6000602082019050818103600083015261338f81613004565b9050919050565b600060208201905081810360008301526133af81613027565b9050919050565b600060208201905081810360008301526133cf8161304a565b9050919050565b600060208201905081810360008301526133ef8161306d565b9050919050565b6000602082019050818103600083015261340f81613090565b9050919050565b600060208201905061342b60008301846130c2565b92915050565b600060408201905061344660008301856130c2565b61345360208301846130c2565b9392505050565b600060808201905061346f60008301876130c2565b61347c60208301866130c2565b61348960408301856130c2565b61349660608301846130c2565b95945050505050565b60006134a96134ba565b90506134b582826137f1565b919050565b6000604051905090565b600067ffffffffffffffff8211156134df576134de613927565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561350b5761350a613927565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561353757613536613927565b5b61354082613996565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006135c98261374f565b91506135d48361374f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136095761360861386b565b5b828201905092915050565b600061361f8261374f565b915061362a8361374f565b92508261363a5761363961389a565b5b828204905092915050565b60006136508261374f565b915061365b8361374f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136945761369361386b565b5b828202905092915050565b60006136aa8261374f565b91506136b58361374f565b9250828210156136c8576136c761386b565b5b828203905092915050565b60006136de8261372f565b9050919050565b60006136f08261372f565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006137648261374f565b9050919050565b60006137768261374f565b9050919050565b82818337600083830152505050565b60005b838110156137aa57808201518184015260208101905061378f565b838111156137b9576000848401525b50505050565b600060028204905060018216806137d757607f821691505b602082108114156137eb576137ea6138c9565b5b50919050565b6137fa82613996565b810181811067ffffffffffffffff8211171561381957613818613927565b5b80604052505050565b600061382d8261374f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138605761385f61386b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139755760046000803e6139726000516139a7565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f426967546f79733a20496e73756666696369656e742062616c616e6365000000600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f426967546f79733a20496e73756666696369656e74204e46547320666f72206d60008201527f696e74696e670000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f426967546f79733a204d6178206d696e74732072656163686564000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015613d2c57613daf565b613d346134ba565b60043d036004823e80513d602482011167ffffffffffffffff82111715613d5c575050613daf565b808201805167ffffffffffffffff811115613d7a5750505050613daf565b80602083010160043d038501811115613d97575050505050613daf565b613da6826020018501866137f1565b82955050505050505b90565b613dbb816136d3565b8114613dc657600080fd5b50565b613dd2816136e5565b8114613ddd57600080fd5b50565b613de9816136f7565b8114613df457600080fd5b50565b613e0081613703565b8114613e0b57600080fd5b50565b613e178161374f565b8114613e2257600080fd5b5056fea2646970667358221220240cf66fd0279cc29b3a8514cd863246972bcddf72184ca444951fe3623deeff64736f6c63430008070033

Deployed Bytecode Sourcemap

16910:10645:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18323:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19148:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22057:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17803:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19034:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21894:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23346:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23740:582;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18554:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20435:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21218:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20929:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20153:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18228:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21479:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22696:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20716:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20576:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19642:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;20294:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21682:200;;;;;;;;;;;;;:::i;:::-;;19470:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23003:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18323:223;18401:7;18448:1;18429:21;;:7;:21;;;;18421:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18516:9;:13;18526:2;18516:13;;;;;;;;;;;:22;18530:7;18516:22;;;;;;;;;;;;;;;;18509:29;;18323:223;;;;:::o;19148:310::-;19250:4;19302:26;19287:41;;;:11;:41;;;;:110;;;;19360:37;19345:52;;;:11;:52;;;;19287:110;:163;;;;19414:36;19438:11;19414:23;:36::i;:::-;19287:163;19267:183;;19148:310;;;:::o;22057:455::-;22149:7;;;;;;;;;;;22135:21;;:10;:21;;;:46;;;;22174:7;;;;;;;;;;;22160:21;;:10;:21;;;22135:46;:71;;;;22199:7;;;;;;;;;;;22185:21;;:10;:21;;;22135:71;:97;;;;22224:8;;;;;;;;;;22210:22;;:10;:22;;;22135:97;22127:106;;;;;;22244:14;22261:7;;:14;;22244:31;;22290:9;22286:177;22305:6;22301:1;:10;22286:177;;;22345:9;:12;22355:1;22345:12;;;;;;;;;;;:24;22358:7;;22366:1;22358:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22345:24;;;;;;;;;;;;;;;;22343:26;;;;;:::i;:::-;;;;;;;;22434:7;;22442:1;22434:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22395:56;;22430:1;22395:56;;22410:10;22395:56;;;22446:1;22449;22395:56;;;;;;;:::i;:::-;;;;;;;;22313:3;;;;:::i;:::-;;;22286:177;;;;22498:6;22483:11;;:21;;;;;;;:::i;:::-;;;;;;;;22116:396;22057:455;;:::o;17803:241::-;17936:8;;;;;;;;;;17922:22;;:10;:22;;;17914:31;;;;;;17976:6;17966:7;;:16;;;;;;;;;;;;;;;;;;18003:6;17993:7;;:16;;;;;;;;;;;;;;;;;;18030:6;18020:7;;:16;;;;;;;;;;;;;;;;;;17803:241;;;:::o;19034:102::-;19091:13;19124:4;19117:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19034:102;;;:::o;21894:151::-;21998:8;;;;;;;;;;21984:22;;:10;:22;;;21975:32;;;;;;22018:2;:11;;:19;22030:6;22018:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21894:151;;:::o;23346:382::-;23531:10;23523:18;;:4;:18;;;:56;;;;23545:34;23562:4;23568:10;23545:16;:34::i;:::-;23523:56;23501:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;23668:52;23691:4;23697:2;23701:3;23706:7;23715:4;23668:22;:52::i;:::-;23346:382;;;;;:::o;23740:582::-;23845:6;23836;;:15;;;;:::i;:::-;23823:9;:28;23815:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23935:25;;23925:6;23904;:18;23911:10;23904:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;:56;;23896:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;24034:18;;24024:6;24010:11;;:20;;;;:::i;:::-;:42;;24002:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;24138:6;24116;:18;24123:10;24116:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;24170:6;24155:11;;:21;;;;;;;:::i;:::-;;;;;;;;24222:6;24197:9;:12;24207:1;24197:12;;;;;;;;;;;:21;24210:7;24197:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;24293:7;24254:58;;24289:1;24254:58;;24269:10;24254:58;;;24302:1;24305:6;24254:58;;;;;;;:::i;:::-;;;;;;;;23740:582;;:::o;18554:468::-;18659:16;18715:3;:10;18696:8;:15;:29;18688:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18784:30;18831:8;:15;18817:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18784:63;;18865:9;18860:122;18884:8;:15;18880:1;:19;18860:122;;;18940:30;18950:8;18959:1;18950:11;;;;;;;;:::i;:::-;;;;;;;;18963:3;18967:1;18963:6;;;;;;;;:::i;:::-;;;;;;;;18940:9;:30::i;:::-;18921:13;18935:1;18921:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;18901:3;;;;:::i;:::-;;;18860:122;;;;19001:13;18994:20;;;18554:468;;;;:::o;20435:129::-;20522:7;;;;;;;;;;;20508:21;;:10;:21;;;20500:30;;;;;;20551:5;20541:7;;:15;;;;;;;;;;;;;;;;;;20435:129;:::o;21218:249::-;21323:7;;;;;;;;;;;21309:21;;:10;:21;;;:46;;;;21348:7;;;;;;;;;;;21334:21;;:10;:21;;;21309:46;:71;;;;21373:7;;;;;;;;;;;21359:21;;:10;:21;;;21309:71;:97;;;;21398:8;;;;;;;;;;21384:22;;:10;:22;;;21309:97;21301:106;;;;;;21439:20;21418:18;:41;;;;21218:249;:::o;20929:277::-;21048:7;;;;;;;;;;;21034:21;;:10;:21;;;:46;;;;21073:7;;;;;;;;;;;21059:21;;:10;:21;;;21034:46;:71;;;;21098:7;;;;;;;;;;;21084:21;;:10;:21;;;21034:71;:97;;;;21123:8;;;;;;;;;;21109:22;;:10;:22;;;21034:97;21026:106;;;;;;21171:27;21143:25;:55;;;;20929:277;:::o;20153:129::-;20240:7;;;;;;;;;;;20226:21;;:10;:21;;;20218:30;;;;;;20269:5;20259:7;;:15;;;;;;;;;;;;;;;;;;20153:129;:::o;18228:83::-;18268:7;18295:8;;;;;;;;;;;18288:15;;18228:83;:::o;21479:191::-;21558:7;;;;;;;;;;;21544:21;;:10;:21;;;:46;;;;21583:7;;;;;;;;;;;21569:21;;:10;:21;;;21544:46;:71;;;;21608:7;;;;;;;;;;;21594:21;;:10;:21;;;21544:71;:97;;;;21633:8;;;;;;;;;;21619:22;;:10;:22;;;21544:97;21536:106;;;;;;21659:3;;21652:4;:10;;;;;;;:::i;:::-;;21479:191;;:::o;22696:299::-;22807:8;22793:22;;:10;:22;;;;22785:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22917:8;22874:18;:30;22893:10;22874:30;;;;;;;;;;;;;;;:40;22905:8;22874:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;22968:8;22941:46;;22956:10;22941:46;;;22978:8;22941:46;;;;;;:::i;:::-;;;;;;;;22696:299;;:::o;20716:201::-;20797:7;;;;;;;;;;;20783:21;;:10;:21;;;:46;;;;20822:7;;;;;;;;;;;20808:21;;:10;:21;;;20783:46;:71;;;;20847:7;;;;;;;;;;;20833:21;;:10;:21;;;20783:71;:97;;;;20872:8;;;;;;;;;;20858:22;;:10;:22;;;20783:97;20775:106;;;;;;20901:8;20892:6;:17;;;;20716:201;:::o;20576:128::-;20658:8;;;;;;;;;;20644:22;;:10;:22;;;20636:31;;;;;;20689:7;20678:8;;:18;;;;;;;;;;;;;;;;;;20576:128;:::o;19642:322::-;19695:32;19729:15;19746:17;19765:13;19818:25;;19791:52;;19885:11;;19864:18;;:32;;;;:::i;:::-;19854:42;;19919:6;:12;19926:4;19919:12;;;;;;;;;;;;;;;;19907:24;;19950:6;;19942:14;;19642:322;;;;;:::o;20294:129::-;20381:7;;;;;;;;;;;20367:21;;:10;:21;;;20359:30;;;;;;20410:5;20400:7;;:15;;;;;;;;;;;;;;;;;;20294:129;:::o;21682:200::-;21727:7;;;;;;;;;;;:16;;:43;21768:1;21744:21;:25;;;;:::i;:::-;21727:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21781:7;;;;;;;;;;;:16;;:43;21822:1;21798:21;:25;;;;:::i;:::-;21781:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21835:7;;;;;;;;;;;:16;;:39;21852:21;21835:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21682:200::o;19470:160::-;19561:4;19585:18;:27;19604:7;19585:27;;;;;;;;;;;;;;;:37;19613:8;19585:37;;;;;;;;;;;;;;;;;;;;;;;;;19578:44;;19470:160;;;;:::o;23003:335::-;23157:10;23149:18;;:4;:18;;;:56;;;;23171:34;23188:4;23194:10;23171:16;:34::i;:::-;23149:56;23127:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;23285:45;23303:4;23309:2;23313;23317:6;23325:4;23285:17;:45::i;:::-;23003:335;;;;;:::o;7081:157::-;7166:4;7205:25;7190:40;;;:11;:40;;;;7183:47;;7081:157;;;:::o;25056:828::-;25227:7;:14;25213:3;:10;:28;25205:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25304:9;25299:421;25323:3;:10;25319:1;:14;25299:421;;;25355:10;25368:3;25372:1;25368:6;;;;;;;;:::i;:::-;;;;;;;;25355:19;;25389:14;25406:7;25414:1;25406:10;;;;;;;;:::i;:::-;;;;;;;;25389:27;;25433:19;25455:9;:13;25465:2;25455:13;;;;;;;;;;;:19;25469:4;25455:19;;;;;;;;;;;;;;;;25433:41;;25512:6;25497:11;:21;;25489:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25645:6;25631:11;:20;25609:9;:13;25619:2;25609:13;;;;;;;;;;;:19;25623:4;25609:19;;;;;;;;;;;;;;;:42;;;;25702:6;25681:9;:13;25691:2;25681:13;;;;;;;;;;;:17;25695:2;25681:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25340:380;;;25335:3;;;;:::i;:::-;;;25299:421;;;;25769:2;25737:49;;25763:4;25737:49;;25751:10;25737:49;;;25773:3;25778:7;25737:49;;;;;;;:::i;:::-;;;;;;;;25799:77;25835:10;25847:4;25853:2;25857:3;25862:7;25871:4;25799:35;:77::i;:::-;25056:828;;;;;:::o;24510:538::-;24636:19;24658:9;:13;24668:2;24658:13;;;;;;;;;;;:19;24672:4;24658:19;;;;;;;;;;;;;;;;24636:41;;24711:6;24696:11;:21;;24688:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24836:6;24822:11;:20;24800:9;:13;24810:2;24800:13;;;;;;;;;;;:19;24814:4;24800:19;;;;;;;;;;;;;;;:42;;;;24885:6;24864:9;:13;24874:2;24864:13;;;;;;;;;;;:17;24878:2;24864:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;24942:2;24909:48;;24936:4;24909:48;;24924:10;24909:48;;;24946:2;24950:6;24909:48;;;;;;;:::i;:::-;;;;;;;;24970:70;25001:10;25013:4;25019:2;25023;25027:6;25035:4;24970:30;:70::i;:::-;24623:425;24510:538;;;;;:::o;26590:756::-;26769:15;:2;:13;;;:15::i;:::-;26765:574;;;26822:2;26805:43;;;26849:8;26859:4;26865:3;26870:7;26879:4;26805:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26801:527;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;27201:6;27194:14;;;;;;;;;;;:::i;:::-;;;;;;;;26801:527;;;27250:62;;;;;;;;;;:::i;:::-;;;;;;;;26801:527;26978:52;;;26966:64;;;:8;:64;;;;26962:163;;27055:50;;;;;;;;;;:::i;:::-;;;;;;;;26962:163;26885:255;26765:574;26590:756;;;;;;:::o;25895:687::-;26049:15;:2;:13;;;:15::i;:::-;26045:530;;;26102:2;26085:38;;;26124:8;26134:4;26140:2;26144:6;26152:4;26085:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26081:483;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;26437:6;26430:14;;;;;;;;;;;:::i;:::-;;;;;;;;26081:483;;;26486:62;;;;;;;;;;:::i;:::-;;;;;;;;26081:483;26219:47;;;26207:59;;;:8;:59;;;;26203:158;;26291:50;;;;;;;;;;:::i;:::-;;;;;;;;26203:158;26158:218;26045:530;25895:687;;;;;;:::o;7855:387::-;7915:4;8123:12;8190:7;8178:20;8170:28;;8233:1;8226:4;:8;8219:15;;;7855:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1913:139;;;;:::o;2058:155::-;2112:5;2150:6;2137:20;2128:29;;2166:41;2201:5;2166:41;:::i;:::-;2058:155;;;;:::o;2236:568::-;2309:8;2319:6;2369:3;2362:4;2354:6;2350:17;2346:27;2336:122;;2377:79;;:::i;:::-;2336:122;2490:6;2477:20;2467:30;;2520:18;2512:6;2509:30;2506:117;;;2542:79;;:::i;:::-;2506:117;2656:4;2648:6;2644:17;2632:29;;2710:3;2702:4;2694:6;2690:17;2680:8;2676:32;2673:41;2670:128;;;2717:79;;:::i;:::-;2670:128;2236:568;;;;;:::o;2827:370::-;2898:5;2947:3;2940:4;2932:6;2928:17;2924:27;2914:122;;2955:79;;:::i;:::-;2914:122;3072:6;3059:20;3097:94;3187:3;3179:6;3172:4;3164:6;3160:17;3097:94;:::i;:::-;3088:103;;2904:293;2827:370;;;;:::o;3220:::-;3291:5;3340:3;3333:4;3325:6;3321:17;3317:27;3307:122;;3348:79;;:::i;:::-;3307:122;3465:6;3452:20;3490:94;3580:3;3572:6;3565:4;3557:6;3553:17;3490:94;:::i;:::-;3481:103;;3297:293;3220:370;;;;:::o;3596:133::-;3639:5;3677:6;3664:20;3655:29;;3693:30;3717:5;3693:30;:::i;:::-;3596:133;;;;:::o;3735:137::-;3780:5;3818:6;3805:20;3796:29;;3834:32;3860:5;3834:32;:::i;:::-;3735:137;;;;:::o;3878:141::-;3934:5;3965:6;3959:13;3950:22;;3981:32;4007:5;3981:32;:::i;:::-;3878:141;;;;:::o;4038:338::-;4093:5;4142:3;4135:4;4127:6;4123:17;4119:27;4109:122;;4150:79;;:::i;:::-;4109:122;4267:6;4254:20;4292:78;4366:3;4358:6;4351:4;4343:6;4339:17;4292:78;:::i;:::-;4283:87;;4099:277;4038:338;;;;:::o;4396:553::-;4454:8;4464:6;4514:3;4507:4;4499:6;4495:17;4491:27;4481:122;;4522:79;;:::i;:::-;4481:122;4635:6;4622:20;4612:30;;4665:18;4657:6;4654:30;4651:117;;;4687:79;;:::i;:::-;4651:117;4801:4;4793:6;4789:17;4777:29;;4855:3;4847:4;4839:6;4835:17;4825:8;4821:32;4818:41;4815:128;;;4862:79;;:::i;:::-;4815:128;4396:553;;;;;:::o;4955:139::-;5001:5;5039:6;5026:20;5017:29;;5055:33;5082:5;5055:33;:::i;:::-;4955:139;;;;:::o;5100:329::-;5159:6;5208:2;5196:9;5187:7;5183:23;5179:32;5176:119;;;5214:79;;:::i;:::-;5176:119;5334:1;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5305:117;5100:329;;;;:::o;5435:345::-;5502:6;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:61;5755:7;5746:6;5735:9;5731:22;5702:61;:::i;:::-;5692:71;;5648:125;5435:345;;;;:::o;5786:667::-;5887:6;5895;5903;5952:2;5940:9;5931:7;5927:23;5923:32;5920:119;;;5958:79;;:::i;:::-;5920:119;6078:1;6103:61;6156:7;6147:6;6136:9;6132:22;6103:61;:::i;:::-;6093:71;;6049:125;6213:2;6239:61;6292:7;6283:6;6272:9;6268:22;6239:61;:::i;:::-;6229:71;;6184:126;6349:2;6375:61;6428:7;6419:6;6408:9;6404:22;6375:61;:::i;:::-;6365:71;;6320:126;5786:667;;;;;:::o;6459:490::-;6535:6;6543;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:61;6796:7;6787:6;6776:9;6772:22;6743:61;:::i;:::-;6733:71;;6689:125;6853:2;6879:53;6924:7;6915:6;6904:9;6900:22;6879:53;:::i;:::-;6869:63;;6824:118;6459:490;;;;;:::o;6955:474::-;7023:6;7031;7080:2;7068:9;7059:7;7055:23;7051:32;7048:119;;;7086:79;;:::i;:::-;7048:119;7206:1;7231:53;7276:7;7267:6;7256:9;7252:22;7231:53;:::i;:::-;7221:63;;7177:117;7333:2;7359:53;7404:7;7395:6;7384:9;7380:22;7359:53;:::i;:::-;7349:63;;7304:118;6955:474;;;;;:::o;7435:1509::-;7589:6;7597;7605;7613;7621;7670:3;7658:9;7649:7;7645:23;7641:33;7638:120;;;7677:79;;:::i;:::-;7638:120;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:53;7995:7;7986:6;7975:9;7971:22;7950:53;:::i;:::-;7940:63;;7895:118;8080:2;8069:9;8065:18;8052:32;8111:18;8103:6;8100:30;8097:117;;;8133:79;;:::i;:::-;8097:117;8238:78;8308:7;8299:6;8288:9;8284:22;8238:78;:::i;:::-;8228:88;;8023:303;8393:2;8382:9;8378:18;8365:32;8424:18;8416:6;8413:30;8410:117;;;8446:79;;:::i;:::-;8410:117;8551:78;8621:7;8612:6;8601:9;8597:22;8551:78;:::i;:::-;8541:88;;8336:303;8706:3;8695:9;8691:19;8678:33;8738:18;8730:6;8727:30;8724:117;;;8760:79;;:::i;:::-;8724:117;8865:62;8919:7;8910:6;8899:9;8895:22;8865:62;:::i;:::-;8855:72;;8649:288;7435:1509;;;;;;;;:::o;8950:1089::-;9054:6;9062;9070;9078;9086;9135:3;9123:9;9114:7;9110:23;9106:33;9103:120;;;9142:79;;:::i;:::-;9103:120;9262:1;9287:53;9332:7;9323:6;9312:9;9308:22;9287:53;:::i;:::-;9277:63;;9233:117;9389:2;9415:53;9460:7;9451:6;9440:9;9436:22;9415:53;:::i;:::-;9405:63;;9360:118;9517:2;9543:53;9588:7;9579:6;9568:9;9564:22;9543:53;:::i;:::-;9533:63;;9488:118;9645:2;9671:53;9716:7;9707:6;9696:9;9692:22;9671:53;:::i;:::-;9661:63;;9616:118;9801:3;9790:9;9786:19;9773:33;9833:18;9825:6;9822:30;9819:117;;;9855:79;;:::i;:::-;9819:117;9960:62;10014:7;10005:6;9994:9;9990:22;9960:62;:::i;:::-;9950:72;;9744:288;8950:1089;;;;;;;;:::o;10045:468::-;10110:6;10118;10167:2;10155:9;10146:7;10142:23;10138:32;10135:119;;;10173:79;;:::i;:::-;10135:119;10293:1;10318:53;10363:7;10354:6;10343:9;10339:22;10318:53;:::i;:::-;10308:63;;10264:117;10420:2;10446:50;10488:7;10479:6;10468:9;10464:22;10446:50;:::i;:::-;10436:60;;10391:115;10045:468;;;;;:::o;10519:474::-;10587:6;10595;10644:2;10632:9;10623:7;10619:23;10615:32;10612:119;;;10650:79;;:::i;:::-;10612:119;10770:1;10795:53;10840:7;10831:6;10820:9;10816:22;10795:53;:::i;:::-;10785:63;;10741:117;10897:2;10923:53;10968:7;10959:6;10948:9;10944:22;10923:53;:::i;:::-;10913:63;;10868:118;10519:474;;;;;:::o;10999:559::-;11085:6;11093;11142:2;11130:9;11121:7;11117:23;11113:32;11110:119;;;11148:79;;:::i;:::-;11110:119;11296:1;11285:9;11281:17;11268:31;11326:18;11318:6;11315:30;11312:117;;;11348:79;;:::i;:::-;11312:117;11461:80;11533:7;11524:6;11513:9;11509:22;11461:80;:::i;:::-;11443:98;;;;11239:312;10999:559;;;;;:::o;11564:894::-;11682:6;11690;11739:2;11727:9;11718:7;11714:23;11710:32;11707:119;;;11745:79;;:::i;:::-;11707:119;11893:1;11882:9;11878:17;11865:31;11923:18;11915:6;11912:30;11909:117;;;11945:79;;:::i;:::-;11909:117;12050:78;12120:7;12111:6;12100:9;12096:22;12050:78;:::i;:::-;12040:88;;11836:302;12205:2;12194:9;12190:18;12177:32;12236:18;12228:6;12225:30;12222:117;;;12258:79;;:::i;:::-;12222:117;12363:78;12433:7;12424:6;12413:9;12409:22;12363:78;:::i;:::-;12353:88;;12148:303;11564:894;;;;;:::o;12464:327::-;12522:6;12571:2;12559:9;12550:7;12546:23;12542:32;12539:119;;;12577:79;;:::i;:::-;12539:119;12697:1;12722:52;12766:7;12757:6;12746:9;12742:22;12722:52;:::i;:::-;12712:62;;12668:116;12464:327;;;;:::o;12797:349::-;12866:6;12915:2;12903:9;12894:7;12890:23;12886:32;12883:119;;;12921:79;;:::i;:::-;12883:119;13041:1;13066:63;13121:7;13112:6;13101:9;13097:22;13066:63;:::i;:::-;13056:73;;13012:127;12797:349;;;;:::o;13152:529::-;13223:6;13231;13280:2;13268:9;13259:7;13255:23;13251:32;13248:119;;;13286:79;;:::i;:::-;13248:119;13434:1;13423:9;13419:17;13406:31;13464:18;13456:6;13453:30;13450:117;;;13486:79;;:::i;:::-;13450:117;13599:65;13656:7;13647:6;13636:9;13632:22;13599:65;:::i;:::-;13581:83;;;;13377:297;13152:529;;;;;:::o;13687:329::-;13746:6;13795:2;13783:9;13774:7;13770:23;13766:32;13763:119;;;13801:79;;:::i;:::-;13763:119;13921:1;13946:53;13991:7;13982:6;13971:9;13967:22;13946:53;:::i;:::-;13936:63;;13892:117;13687:329;;;;:::o;14022:179::-;14091:10;14112:46;14154:3;14146:6;14112:46;:::i;:::-;14190:4;14185:3;14181:14;14167:28;;14022:179;;;;:::o;14207:118::-;14294:24;14312:5;14294:24;:::i;:::-;14289:3;14282:37;14207:118;;:::o;14361:732::-;14480:3;14509:54;14557:5;14509:54;:::i;:::-;14579:86;14658:6;14653:3;14579:86;:::i;:::-;14572:93;;14689:56;14739:5;14689:56;:::i;:::-;14768:7;14799:1;14784:284;14809:6;14806:1;14803:13;14784:284;;;14885:6;14879:13;14912:63;14971:3;14956:13;14912:63;:::i;:::-;14905:70;;14998:60;15051:6;14998:60;:::i;:::-;14988:70;;14844:224;14831:1;14828;14824:9;14819:14;;14784:284;;;14788:14;15084:3;15077:10;;14485:608;;;14361:732;;;;:::o;15099:109::-;15180:21;15195:5;15180:21;:::i;:::-;15175:3;15168:34;15099:109;;:::o;15214:360::-;15300:3;15328:38;15360:5;15328:38;:::i;:::-;15382:70;15445:6;15440:3;15382:70;:::i;:::-;15375:77;;15461:52;15506:6;15501:3;15494:4;15487:5;15483:16;15461:52;:::i;:::-;15538:29;15560:6;15538:29;:::i;:::-;15533:3;15529:39;15522:46;;15304:270;15214:360;;;;:::o;15580:147::-;15675:45;15714:5;15675:45;:::i;:::-;15670:3;15663:58;15580:147;;:::o;15733:::-;15828:45;15867:5;15828:45;:::i;:::-;15823:3;15816:58;15733:147;;:::o;15886:364::-;15974:3;16002:39;16035:5;16002:39;:::i;:::-;16057:71;16121:6;16116:3;16057:71;:::i;:::-;16050:78;;16137:52;16182:6;16177:3;16170:4;16163:5;16159:16;16137:52;:::i;:::-;16214:29;16236:6;16214:29;:::i;:::-;16209:3;16205:39;16198:46;;15978:272;15886:364;;;;:::o;16256:366::-;16398:3;16419:67;16483:2;16478:3;16419:67;:::i;:::-;16412:74;;16495:93;16584:3;16495:93;:::i;:::-;16613:2;16608:3;16604:12;16597:19;;16256:366;;;:::o;16628:::-;16770:3;16791:67;16855:2;16850:3;16791:67;:::i;:::-;16784:74;;16867:93;16956:3;16867:93;:::i;:::-;16985:2;16980:3;16976:12;16969:19;;16628:366;;;:::o;17000:::-;17142:3;17163:67;17227:2;17222:3;17163:67;:::i;:::-;17156:74;;17239:93;17328:3;17239:93;:::i;:::-;17357:2;17352:3;17348:12;17341:19;;17000:366;;;:::o;17372:::-;17514:3;17535:67;17599:2;17594:3;17535:67;:::i;:::-;17528:74;;17611:93;17700:3;17611:93;:::i;:::-;17729:2;17724:3;17720:12;17713:19;;17372:366;;;:::o;17744:::-;17886:3;17907:67;17971:2;17966:3;17907:67;:::i;:::-;17900:74;;17983:93;18072:3;17983:93;:::i;:::-;18101:2;18096:3;18092:12;18085:19;;17744:366;;;:::o;18116:::-;18258:3;18279:67;18343:2;18338:3;18279:67;:::i;:::-;18272:74;;18355:93;18444:3;18355:93;:::i;:::-;18473:2;18468:3;18464:12;18457:19;;18116:366;;;:::o;18488:::-;18630:3;18651:67;18715:2;18710:3;18651:67;:::i;:::-;18644:74;;18727:93;18816:3;18727:93;:::i;:::-;18845:2;18840:3;18836:12;18829:19;;18488:366;;;:::o;18860:::-;19002:3;19023:67;19087:2;19082:3;19023:67;:::i;:::-;19016:74;;19099:93;19188:3;19099:93;:::i;:::-;19217:2;19212:3;19208:12;19201:19;;18860:366;;;:::o;19232:::-;19374:3;19395:67;19459:2;19454:3;19395:67;:::i;:::-;19388:74;;19471:93;19560:3;19471:93;:::i;:::-;19589:2;19584:3;19580:12;19573:19;;19232:366;;;:::o;19604:::-;19746:3;19767:67;19831:2;19826:3;19767:67;:::i;:::-;19760:74;;19843:93;19932:3;19843:93;:::i;:::-;19961:2;19956:3;19952:12;19945:19;;19604:366;;;:::o;19976:::-;20118:3;20139:67;20203:2;20198:3;20139:67;:::i;:::-;20132:74;;20215:93;20304:3;20215:93;:::i;:::-;20333:2;20328:3;20324:12;20317:19;;19976:366;;;:::o;20348:::-;20490:3;20511:67;20575:2;20570:3;20511:67;:::i;:::-;20504:74;;20587:93;20676:3;20587:93;:::i;:::-;20705:2;20700:3;20696:12;20689:19;;20348:366;;;:::o;20720:108::-;20797:24;20815:5;20797:24;:::i;:::-;20792:3;20785:37;20720:108;;:::o;20834:118::-;20921:24;20939:5;20921:24;:::i;:::-;20916:3;20909:37;20834:118;;:::o;20958:222::-;21051:4;21089:2;21078:9;21074:18;21066:26;;21102:71;21170:1;21159:9;21155:17;21146:6;21102:71;:::i;:::-;20958:222;;;;:::o;21186:1053::-;21509:4;21547:3;21536:9;21532:19;21524:27;;21561:71;21629:1;21618:9;21614:17;21605:6;21561:71;:::i;:::-;21642:72;21710:2;21699:9;21695:18;21686:6;21642:72;:::i;:::-;21761:9;21755:4;21751:20;21746:2;21735:9;21731:18;21724:48;21789:108;21892:4;21883:6;21789:108;:::i;:::-;21781:116;;21944:9;21938:4;21934:20;21929:2;21918:9;21914:18;21907:48;21972:108;22075:4;22066:6;21972:108;:::i;:::-;21964:116;;22128:9;22122:4;22118:20;22112:3;22101:9;22097:19;22090:49;22156:76;22227:4;22218:6;22156:76;:::i;:::-;22148:84;;21186:1053;;;;;;;;:::o;22245:751::-;22468:4;22506:3;22495:9;22491:19;22483:27;;22520:71;22588:1;22577:9;22573:17;22564:6;22520:71;:::i;:::-;22601:72;22669:2;22658:9;22654:18;22645:6;22601:72;:::i;:::-;22683;22751:2;22740:9;22736:18;22727:6;22683:72;:::i;:::-;22765;22833:2;22822:9;22818:18;22809:6;22765:72;:::i;:::-;22885:9;22879:4;22875:20;22869:3;22858:9;22854:19;22847:49;22913:76;22984:4;22975:6;22913:76;:::i;:::-;22905:84;;22245:751;;;;;;;;:::o;23002:373::-;23145:4;23183:2;23172:9;23168:18;23160:26;;23232:9;23226:4;23222:20;23218:1;23207:9;23203:17;23196:47;23260:108;23363:4;23354:6;23260:108;:::i;:::-;23252:116;;23002:373;;;;:::o;23381:634::-;23602:4;23640:2;23629:9;23625:18;23617:26;;23689:9;23683:4;23679:20;23675:1;23664:9;23660:17;23653:47;23717:108;23820:4;23811:6;23717:108;:::i;:::-;23709:116;;23872:9;23866:4;23862:20;23857:2;23846:9;23842:18;23835:48;23900:108;24003:4;23994:6;23900:108;:::i;:::-;23892:116;;23381:634;;;;;:::o;24021:210::-;24108:4;24146:2;24135:9;24131:18;24123:26;;24159:65;24221:1;24210:9;24206:17;24197:6;24159:65;:::i;:::-;24021:210;;;;:::o;24237:364::-;24374:4;24412:2;24401:9;24397:18;24389:26;;24425:79;24501:1;24490:9;24486:17;24477:6;24425:79;:::i;:::-;24514:80;24590:2;24579:9;24575:18;24566:6;24514:80;:::i;:::-;24237:364;;;;;:::o;24607:348::-;24736:4;24774:2;24763:9;24759:18;24751:26;;24787:79;24863:1;24852:9;24848:17;24839:6;24787:79;:::i;:::-;24876:72;24944:2;24933:9;24929:18;24920:6;24876:72;:::i;:::-;24607:348;;;;;:::o;24961:313::-;25074:4;25112:2;25101:9;25097:18;25089:26;;25161:9;25155:4;25151:20;25147:1;25136:9;25132:17;25125:47;25189:78;25262:4;25253:6;25189:78;:::i;:::-;25181:86;;24961:313;;;;:::o;25280:419::-;25446:4;25484:2;25473:9;25469:18;25461:26;;25533:9;25527:4;25523:20;25519:1;25508:9;25504:17;25497:47;25561:131;25687:4;25561:131;:::i;:::-;25553:139;;25280:419;;;:::o;25705:::-;25871:4;25909:2;25898:9;25894:18;25886:26;;25958:9;25952:4;25948:20;25944:1;25933:9;25929:17;25922:47;25986:131;26112:4;25986:131;:::i;:::-;25978:139;;25705:419;;;:::o;26130:::-;26296:4;26334:2;26323:9;26319:18;26311:26;;26383:9;26377:4;26373:20;26369:1;26358:9;26354:17;26347:47;26411:131;26537:4;26411:131;:::i;:::-;26403:139;;26130:419;;;:::o;26555:::-;26721:4;26759:2;26748:9;26744:18;26736:26;;26808:9;26802:4;26798:20;26794:1;26783:9;26779:17;26772:47;26836:131;26962:4;26836:131;:::i;:::-;26828:139;;26555:419;;;:::o;26980:::-;27146:4;27184:2;27173:9;27169:18;27161:26;;27233:9;27227:4;27223:20;27219:1;27208:9;27204:17;27197:47;27261:131;27387:4;27261:131;:::i;:::-;27253:139;;26980:419;;;:::o;27405:::-;27571:4;27609:2;27598:9;27594:18;27586:26;;27658:9;27652:4;27648:20;27644:1;27633:9;27629:17;27622:47;27686:131;27812:4;27686:131;:::i;:::-;27678:139;;27405:419;;;:::o;27830:::-;27996:4;28034:2;28023:9;28019:18;28011:26;;28083:9;28077:4;28073:20;28069:1;28058:9;28054:17;28047:47;28111:131;28237:4;28111:131;:::i;:::-;28103:139;;27830:419;;;:::o;28255:::-;28421:4;28459:2;28448:9;28444:18;28436:26;;28508:9;28502:4;28498:20;28494:1;28483:9;28479:17;28472:47;28536:131;28662:4;28536:131;:::i;:::-;28528:139;;28255:419;;;:::o;28680:::-;28846:4;28884:2;28873:9;28869:18;28861:26;;28933:9;28927:4;28923:20;28919:1;28908:9;28904:17;28897:47;28961:131;29087:4;28961:131;:::i;:::-;28953:139;;28680:419;;;:::o;29105:::-;29271:4;29309:2;29298:9;29294:18;29286:26;;29358:9;29352:4;29348:20;29344:1;29333:9;29329:17;29322:47;29386:131;29512:4;29386:131;:::i;:::-;29378:139;;29105:419;;;:::o;29530:::-;29696:4;29734:2;29723:9;29719:18;29711:26;;29783:9;29777:4;29773:20;29769:1;29758:9;29754:17;29747:47;29811:131;29937:4;29811:131;:::i;:::-;29803:139;;29530:419;;;:::o;29955:::-;30121:4;30159:2;30148:9;30144:18;30136:26;;30208:9;30202:4;30198:20;30194:1;30183:9;30179:17;30172:47;30236:131;30362:4;30236:131;:::i;:::-;30228:139;;29955:419;;;:::o;30380:222::-;30473:4;30511:2;30500:9;30496:18;30488:26;;30524:71;30592:1;30581:9;30577:17;30568:6;30524:71;:::i;:::-;30380:222;;;;:::o;30608:332::-;30729:4;30767:2;30756:9;30752:18;30744:26;;30780:71;30848:1;30837:9;30833:17;30824:6;30780:71;:::i;:::-;30861:72;30929:2;30918:9;30914:18;30905:6;30861:72;:::i;:::-;30608:332;;;;;:::o;30946:553::-;31123:4;31161:3;31150:9;31146:19;31138:27;;31175:71;31243:1;31232:9;31228:17;31219:6;31175:71;:::i;:::-;31256:72;31324:2;31313:9;31309:18;31300:6;31256:72;:::i;:::-;31338;31406:2;31395:9;31391:18;31382:6;31338:72;:::i;:::-;31420;31488:2;31477:9;31473:18;31464:6;31420:72;:::i;:::-;30946:553;;;;;;;:::o;31505:129::-;31539:6;31566:20;;:::i;:::-;31556:30;;31595:33;31623:4;31615:6;31595:33;:::i;:::-;31505:129;;;:::o;31640:75::-;31673:6;31706:2;31700:9;31690:19;;31640:75;:::o;31721:311::-;31798:4;31888:18;31880:6;31877:30;31874:56;;;31910:18;;:::i;:::-;31874:56;31960:4;31952:6;31948:17;31940:25;;32020:4;32014;32010:15;32002:23;;31721:311;;;:::o;32038:::-;32115:4;32205:18;32197:6;32194:30;32191:56;;;32227:18;;:::i;:::-;32191:56;32277:4;32269:6;32265:17;32257:25;;32337:4;32331;32327:15;32319:23;;32038:311;;;:::o;32355:307::-;32416:4;32506:18;32498:6;32495:30;32492:56;;;32528:18;;:::i;:::-;32492:56;32566:29;32588:6;32566:29;:::i;:::-;32558:37;;32650:4;32644;32640:15;32632:23;;32355:307;;;:::o;32668:132::-;32735:4;32758:3;32750:11;;32788:4;32783:3;32779:14;32771:22;;32668:132;;;:::o;32806:114::-;32873:6;32907:5;32901:12;32891:22;;32806:114;;;:::o;32926:98::-;32977:6;33011:5;33005:12;32995:22;;32926:98;;;:::o;33030:99::-;33082:6;33116:5;33110:12;33100:22;;33030:99;;;:::o;33135:113::-;33205:4;33237;33232:3;33228:14;33220:22;;33135:113;;;:::o;33254:184::-;33353:11;33387:6;33382:3;33375:19;33427:4;33422:3;33418:14;33403:29;;33254:184;;;;:::o;33444:168::-;33527:11;33561:6;33556:3;33549:19;33601:4;33596:3;33592:14;33577:29;;33444:168;;;;:::o;33618:169::-;33702:11;33736:6;33731:3;33724:19;33776:4;33771:3;33767:14;33752:29;;33618:169;;;;:::o;33793:305::-;33833:3;33852:20;33870:1;33852:20;:::i;:::-;33847:25;;33886:20;33904:1;33886:20;:::i;:::-;33881:25;;34040:1;33972:66;33968:74;33965:1;33962:81;33959:107;;;34046:18;;:::i;:::-;33959:107;34090:1;34087;34083:9;34076:16;;33793:305;;;;:::o;34104:185::-;34144:1;34161:20;34179:1;34161:20;:::i;:::-;34156:25;;34195:20;34213:1;34195:20;:::i;:::-;34190:25;;34234:1;34224:35;;34239:18;;:::i;:::-;34224:35;34281:1;34278;34274:9;34269:14;;34104:185;;;;:::o;34295:348::-;34335:7;34358:20;34376:1;34358:20;:::i;:::-;34353:25;;34392:20;34410:1;34392:20;:::i;:::-;34387:25;;34580:1;34512:66;34508:74;34505:1;34502:81;34497:1;34490:9;34483:17;34479:105;34476:131;;;34587:18;;:::i;:::-;34476:131;34635:1;34632;34628:9;34617:20;;34295:348;;;;:::o;34649:191::-;34689:4;34709:20;34727:1;34709:20;:::i;:::-;34704:25;;34743:20;34761:1;34743:20;:::i;:::-;34738:25;;34782:1;34779;34776:8;34773:34;;;34787:18;;:::i;:::-;34773:34;34832:1;34829;34825:9;34817:17;;34649:191;;;;:::o;34846:96::-;34883:7;34912:24;34930:5;34912:24;:::i;:::-;34901:35;;34846:96;;;:::o;34948:104::-;34993:7;35022:24;35040:5;35022:24;:::i;:::-;35011:35;;34948:104;;;:::o;35058:90::-;35092:7;35135:5;35128:13;35121:21;35110:32;;35058:90;;;:::o;35154:149::-;35190:7;35230:66;35223:5;35219:78;35208:89;;35154:149;;;:::o;35309:126::-;35346:7;35386:42;35379:5;35375:54;35364:65;;35309:126;;;:::o;35441:77::-;35478:7;35507:5;35496:16;;35441:77;;;:::o;35524:121::-;35582:9;35615:24;35633:5;35615:24;:::i;:::-;35602:37;;35524:121;;;:::o;35651:::-;35709:9;35742:24;35760:5;35742:24;:::i;:::-;35729:37;;35651:121;;;:::o;35778:154::-;35862:6;35857:3;35852;35839:30;35924:1;35915:6;35910:3;35906:16;35899:27;35778:154;;;:::o;35938:307::-;36006:1;36016:113;36030:6;36027:1;36024:13;36016:113;;;36115:1;36110:3;36106:11;36100:18;36096:1;36091:3;36087:11;36080:39;36052:2;36049:1;36045:10;36040:15;;36016:113;;;36147:6;36144:1;36141:13;36138:101;;;36227:1;36218:6;36213:3;36209:16;36202:27;36138:101;35987:258;35938:307;;;:::o;36251:320::-;36295:6;36332:1;36326:4;36322:12;36312:22;;36379:1;36373:4;36369:12;36400:18;36390:81;;36456:4;36448:6;36444:17;36434:27;;36390:81;36518:2;36510:6;36507:14;36487:18;36484:38;36481:84;;;36537:18;;:::i;:::-;36481:84;36302:269;36251:320;;;:::o;36577:281::-;36660:27;36682:4;36660:27;:::i;:::-;36652:6;36648:40;36790:6;36778:10;36775:22;36754:18;36742:10;36739:34;36736:62;36733:88;;;36801:18;;:::i;:::-;36733:88;36841:10;36837:2;36830:22;36620:238;36577:281;;:::o;36864:233::-;36903:3;36926:24;36944:5;36926:24;:::i;:::-;36917:33;;36972:66;36965:5;36962:77;36959:103;;;37042:18;;:::i;:::-;36959:103;37089:1;37082:5;37078:13;37071:20;;36864:233;;;:::o;37103:180::-;37151:77;37148:1;37141:88;37248:4;37245:1;37238:15;37272:4;37269:1;37262:15;37289:180;37337:77;37334:1;37327:88;37434:4;37431:1;37424:15;37458:4;37455:1;37448:15;37475:180;37523:77;37520:1;37513:88;37620:4;37617:1;37610:15;37644:4;37641:1;37634:15;37661:180;37709:77;37706:1;37699:88;37806:4;37803:1;37796:15;37830:4;37827:1;37820:15;37847:180;37895:77;37892:1;37885:88;37992:4;37989:1;37982:15;38016:4;38013:1;38006:15;38033:183;38068:3;38106:1;38088:16;38085:23;38082:128;;;38144:1;38141;38138;38123:23;38166:34;38197:1;38191:8;38166:34;:::i;:::-;38159:41;;38082:128;38033:183;:::o;38222:117::-;38331:1;38328;38321:12;38345:117;38454:1;38451;38444:12;38468:117;38577:1;38574;38567:12;38591:117;38700:1;38697;38690:12;38714:117;38823:1;38820;38813:12;38837:117;38946:1;38943;38936:12;38960:102;39001:6;39052:2;39048:7;39043:2;39036:5;39032:14;39028:28;39018:38;;38960:102;;;:::o;39068:106::-;39112:8;39161:5;39156:3;39152:15;39131:36;;39068:106;;;:::o;39180:239::-;39320:34;39316:1;39308:6;39304:14;39297:58;39389:22;39384:2;39376:6;39372:15;39365:47;39180:239;:::o;39425:179::-;39565:31;39561:1;39553:6;39549:14;39542:55;39425:179;:::o;39610:227::-;39750:34;39746:1;39738:6;39734:14;39727:58;39819:10;39814:2;39806:6;39802:15;39795:35;39610:227;:::o;39843:225::-;39983:34;39979:1;39971:6;39967:14;39960:58;40052:8;40047:2;40039:6;40035:15;40028:33;39843:225;:::o;40074:230::-;40214:34;40210:1;40202:6;40198:14;40191:58;40283:13;40278:2;40270:6;40266:15;40259:38;40074:230;:::o;40310:228::-;40450:34;40446:1;40438:6;40434:14;40427:58;40519:11;40514:2;40506:6;40502:15;40495:36;40310:228;:::o;40544:237::-;40684:34;40680:1;40672:6;40668:14;40661:58;40753:20;40748:2;40740:6;40736:15;40729:45;40544:237;:::o;40787:176::-;40927:28;40923:1;40915:6;40911:14;40904:52;40787:176;:::o;40969:229::-;41109:34;41105:1;41097:6;41093:14;41086:58;41178:12;41173:2;41165:6;41161:15;41154:37;40969:229;:::o;41204:228::-;41344:34;41340:1;41332:6;41328:14;41321:58;41413:11;41408:2;41400:6;41396:15;41389:36;41204:228;:::o;41438:::-;41578:34;41574:1;41566:6;41562:14;41555:58;41647:11;41642:2;41634:6;41630:15;41623:36;41438:228;:::o;41672:227::-;41812:34;41808:1;41800:6;41796:14;41789:58;41881:10;41876:2;41868:6;41864:15;41857:35;41672:227;:::o;41905:711::-;41944:3;41982:4;41964:16;41961:26;41958:39;;;41990:5;;41958:39;42019:20;;:::i;:::-;42094:1;42076:16;42072:24;42069:1;42063:4;42048:49;42127:4;42121:11;42226:16;42219:4;42211:6;42207:17;42204:39;42171:18;42163:6;42160:30;42144:113;42141:146;;;42272:5;;;;42141:146;42318:6;42312:4;42308:17;42354:3;42348:10;42381:18;42373:6;42370:30;42367:43;;;42403:5;;;;;;42367:43;42451:6;42444:4;42439:3;42435:14;42431:27;42510:1;42492:16;42488:24;42482:4;42478:35;42473:3;42470:44;42467:57;;;42517:5;;;;;;;42467:57;42534;42582:6;42576:4;42572:17;42564:6;42560:30;42554:4;42534:57;:::i;:::-;42607:3;42600:10;;41948:668;;;;;41905:711;;:::o;42622:122::-;42695:24;42713:5;42695:24;:::i;:::-;42688:5;42685:35;42675:63;;42734:1;42731;42724:12;42675:63;42622:122;:::o;42750:138::-;42831:32;42857:5;42831:32;:::i;:::-;42824:5;42821:43;42811:71;;42878:1;42875;42868:12;42811:71;42750:138;:::o;42894:116::-;42964:21;42979:5;42964:21;:::i;:::-;42957:5;42954:32;42944:60;;43000:1;42997;42990:12;42944:60;42894:116;:::o;43016:120::-;43088:23;43105:5;43088:23;:::i;:::-;43081:5;43078:34;43068:62;;43126:1;43123;43116:12;43068:62;43016:120;:::o;43142:122::-;43215:24;43233:5;43215:24;:::i;:::-;43208:5;43205:35;43195:63;;43254:1;43251;43244:12;43195:63;43142:122;:::o

Swarm Source

ipfs://240cf66fd0279cc29b3a8514cd863246972bcddf72184ca444951fe3623deeff
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.