ETH Price: $2,484.88 (-1.43%)

Token

A Little Dream (DREAM)
 

Overview

Max Total Supply

107 DREAM

Holders

46

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
lakoubay.eth
Balance
3 DREAM
0xF1db8A2623193757317639d0532daA5e3C8EA20c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A Little Dream for Ukraine is a Generative Art Project from Lapin Mignon (Augmented Watercolour Little Ukrainian Girl), with the Collaboration from Kristy Glas (The beautiful Skies) and the wizard magic coding from Tagachi.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ALittleDream

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 2022-04-04
*/

// SPDX-License-Identifier: MIT

//  @@@@@@@@@@@@&(/((%%&&%&&#*   ,%%%&%#%%%#&#%&##&#%%#                    
//  @@@@@@@@@@@@&(/((%%&&%&&#( .....#......../*/##&#%%#                    
//  @@@@@@@@@@@@&(/((%%&%.........  .... (...,,....#(%%@@@@@@@@@@@@@@/     
//  @@@@@@@@@@@@&(/(/,. ........./#%&&((%(/((#(((%#&#%..%@@@@@@@@@@@@(     
//  @@@@@@@@@@@@&//...........(@%&(//(#(#/(*#(#((((/(%@@%%%&&&&&&&&&&/     
//  @@@@@@@@@@@&.....#.%#%*,,&###*%##/%.*##%#%##*%(((///%%%#%%&&&&&&&/     
//  &&&&&&&&&(..... ((/*(%%(#/%#####//.#/%(%%##/*/(###(**@@&%%%%%%%%%*     
//  @@@@@@@&........(/%/%/((#,((######/,%(#/#(/*(*#*##(//%@%%&#######*     
//  %%%%%%.....*(....*(((((%#(/%(/#%/#/,(/#(%*(/%##(%#((((*  .@@@@@@@(     
//  ##### . .  .......&&&,  .##%%##**/**,..*(../#(##%*#      .@@@@@@@(     
//  &&&@............ &&&&%((((#((*....* ....*....##(#((      .@@@@@@@(     
//  (((/,((((*,,& ..///////////(*.,.., .........,///(                      
//  ((,.*(/*,(......#(((((/////,.*..**.,...(..( ,,.******************      
//  (((,****/.. ./,.(%%%%#((((#/.** ........... *,,.#*((((((((((((((,.     
//  #(/**(***,.... %.****////(** *#**#,..... #/#((*,.%*.(/##((((((((,.     
//  *%(*,****/(,  ...#((/**/,*(/,///*//#(.,&#*,(#/*,,,#*%*/(((((((((,.     
//  *((,,,**/%,#  ....#((**#,#*.((/(*/ #, . %//##%/***/(%#*((//////(,.     
//  (#****,.*//(. .#..*.#(#,(* ,/***,/ .(#%(,....((#***,(/&#(%@@@&@ ,.     
//  #%***,*,*/.. %/...,(/,,,(../ /,**/.  *. .... *..((,**//(///((&@ ,.     
//  (///,*(.%,/...*( (,,,%**. *. *., *(# ,....,#*..,..*%,**,&/(#/%%%..     
//  /(/*#(/*......(,,,,(,*(( */....,..(/.# #..#....,./*///,/*#(,%&&&&      
//  &&&(/*........(.(./(#*(*%*(..../..,.*(,...(*#..*%/#%,**%%..((((((,     
//  @@@@., %....#....*,,## *.*(//..%/.....,....%(/, .((/&&*..*@  ////,     
//  @..((#,....*.%./.../ ..,.(.%#*,..,.............,,,/.... @@@@ ((((,     
//  ..//#%%&..,...../ ..... , *(.........(..,,,*. ...(*,.*@@@@@@ ((((,     
//  ..((////(#...(,...........(   ....,***,*..*..(..&.*&&@@@@@@@ ((((,     
//  ..(%@@@@@&%%%......./,(.../.....***(**#/(#.( .,&%&&&&@@@@@@@ ((((,     
//  ..(%@@@@@&%%%%%&%*.... ..... #.**,,*,,#.,/%%%%%@%&&&&@@@@@@@ ((((,     
//  ..(%@@@@@&%%%%%&%#%%&(((##/,,.%,#/##%#&///%%%%%@%&&&&@@@@@@@ ((((, 

// A Little Dream for Ukraine is a Generative Art Project from Lapin Mignon 
//(Augmented Watercolour Little Ukrainian Girl), with the Collaboration from 
//Kristy Glas (The beautiful Skies) and the wizard magic coding from Tagachi.

// Every mint is a dynamic NFT, with a day and night version aligned to Kiyv 
//Sunset and Sunrise.

// All benefits will be given to Voices Of Children 🔗, in Ukraine, 
//which helps children in wartime to relieve their trauma with the power of 
//Psychology and Art. A full team of amazing people in Ukraine, fighting to 
//protect and mend a dented childhood.

// Lots of love to anyone who support this project with us ❤️.

/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

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




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

////import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

////import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

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

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

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

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




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 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);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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);
            }
        }
    }
}




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;

////import "../IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

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




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

////import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;

////import "./IERC721.sol";
////import "./IERC721Receiver.sol";
////import "./extensions/IERC721Metadata.sol";
////import "../../utils/Address.sol";
////import "../../utils/Context.sol";
////import "../../utils/Strings.sol";
////import "../../utils/introspection/ERC165.sol";

/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

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

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

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

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

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


/** 
 *  SourceUnit: d:\TagachiStudio\Lapin\A Little Dream\codebase\alittledream\contracts\ALittleDream.sol
*/

////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT


pragma solidity ^0.8.7;

////import '@openzeppelin/contracts/token/ERC721/ERC721.sol';
////import '@openzeppelin/contracts/access/Ownable.sol';

contract ALittleDream is ERC721, Ownable {
    uint256 public mintPrice;
    uint256 public totalSupply;
    uint256 public maxSupply;
    bool public isPublicMintEnabled;
    string internal baseTokenUri;
    string public hiddenMetadataUri;
    address public withdrawWallet;
    mapping(address => uint256) public WalletMints;

    bool public isRevealed;

    constructor() payable ERC721('A Little Dream', 'DREAM') {
        mintPrice = 0.1 ether; 
        maxSupply = 288;
        withdrawWallet = 0xe481387CA21AeA113180a184d14B64D804027deb;
        setHiddenMetadataUri("ipfs://QmePaWBPUzudprRHPSym29umGi2xwyFLBPePR9nDUhpGW7/"); 
        isRevealed = false;

    }

    modifier callerIsAWallet() {
        require(tx.origin ==msg.sender, "Another contract detected");
        _;
    }

    function setIsPublicMintEnabled(bool isPublicMintEnabled_) external onlyOwner {
        isPublicMintEnabled = isPublicMintEnabled_;
    }

    function reveal() external onlyOwner {
        isRevealed = true;
    }

    function setHiddenMetadataUri(string memory hiddenMetadataUri_) public onlyOwner {
        hiddenMetadataUri = hiddenMetadataUri_;
    }

    function setBaseTokenUri(string calldata baseTokenUri_) external onlyOwner {
        baseTokenUri = baseTokenUri_;
    }

    function tokenURI(uint256 tokenId_) public view override returns (string memory) {

        if (isRevealed == false) {
            return hiddenMetadataUri;
            }

        require(_exists(tokenId_), 'Token does not exist!');
        return string(abi.encodePacked(baseTokenUri, Strings.toString(tokenId_), ".json"));
    }

    string private customContractURI = "ipfs://QmaNhL43nG9pjNx4467JtBLjCfiz6wPWA2s84ugHPXr6CG/";

    function setContractURI(string memory customContractURI_) external onlyOwner {
        customContractURI = customContractURI_;
    }

    function contractURI() public view returns (string memory) {
        return customContractURI;
    }

    function withdraw() external onlyOwner {
        (bool success, ) = withdrawWallet.call{ value: address(this).balance }('');
        require(success, 'withdraw failed');
    }

    function mint(uint256 quantity_) public payable callerIsAWallet {
        require(isPublicMintEnabled, 'minting not enabled');
        require(msg.value >= quantity_ * mintPrice, 'wrong mint value');
        require(totalSupply + quantity_ <= maxSupply, 'sold out');

        for(uint256 i = 0; i < quantity_; i++) {
            uint256 newTokenId = totalSupply + 1;
            WalletMints[msg.sender]++;
            totalSupply++;
            _safeMint(msg.sender, newTokenId);
        }
    }  
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"WalletMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicMintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRevealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity_","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseTokenUri_","type":"string"}],"name":"setBaseTokenUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"customContractURI_","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"hiddenMetadataUri_","type":"string"}],"name":"setHiddenMetadataUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPublicMintEnabled_","type":"bool"}],"name":"setIsPublicMintEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052604051806060016040528060368152602001620042e560369139601090805190602001906200003592919062000351565b506040518060400160405280600e81526020017f41204c6974746c6520447265616d0000000000000000000000000000000000008152506040518060400160405280600581526020017f445245414d0000000000000000000000000000000000000000000000000000008152508160009080519060200190620000ba92919062000351565b508060019080519060200190620000d392919062000351565b505050620000f6620000ea620001ae60201b60201c565b620001b660201b60201c565b67016345785d8a000060078190555061012060098190555073e481387ca21aea113180a184d14b64d804027deb600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200018d6040518060600160405280603681526020016200431b603691396200027c60201b60201c565b6000600f60006101000a81548160ff021916908315150217905550620004e9565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200028c620001ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002b26200032760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200030b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003029062000428565b60405180910390fd5b80600c90805190602001906200032392919062000351565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200035f906200045b565b90600052602060002090601f016020900481019282620003835760008555620003cf565b82601f106200039e57805160ff1916838001178555620003cf565b82800160010185558215620003cf579182015b82811115620003ce578251825591602001919060010190620003b1565b5b509050620003de9190620003e2565b5090565b5b80821115620003fd576000816000905550600101620003e3565b5090565b6000620004106020836200044a565b91506200041d82620004c0565b602082019050919050565b60006020820190508181036000830152620004438162000401565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200047457607f821691505b602082108114156200048b576200048a62000491565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b613dec80620004f96000396000f3fe6080604052600436106101e35760003560e01c8063715018a611610102578063a45ba8e711610095578063d5abeb0111610064578063d5abeb01146106ab578063e8a3d485146106d6578063e985e9c514610701578063f2fde38b1461073e576101e3565b8063a45ba8e714610603578063a475b5dd1461062e578063b88d4fde14610645578063c87b56dd1461066e576101e3565b806395652cfa116100d157806395652cfa1461056a57806395d89b4114610593578063a0712d68146105be578063a22cb465146105da576101e3565b8063715018a6146104d457806385d178f4146104eb5780638da5cb5b14610516578063938e3d7b14610541576101e3565b806323b872dd1161017a57806354214f691161014957806354214f69146104045780636352211e1461042f5780636817c76c1461046c57806370a0823114610497576101e3565b806323b872dd146103725780633ccfd60b1461039b57806342842e0e146103b25780634fdd43cb146103db576101e3565b8063095ea7b3116101b6578063095ea7b3146102b857806318160ddd146102e15780631b22020a1461030c5780632373ac2214610349576101e3565b80630116bc2d146101e857806301ffc9a71461021357806306fdde0314610250578063081812fc1461027b575b600080fd5b3480156101f457600080fd5b506101fd610767565b60405161020a919061308b565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612a4f565b61077a565b604051610247919061308b565b60405180910390f35b34801561025c57600080fd5b5061026561085c565b60405161027291906130a6565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190612b3f565b6108ee565b6040516102af9190613024565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da91906129e2565b610973565b005b3480156102ed57600080fd5b506102f6610a8b565b6040516103039190613368565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e919061285f565b610a91565b6040516103409190613368565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612a22565b610aa9565b005b34801561037e57600080fd5b50610399600480360381019061039491906128cc565b610b42565b005b3480156103a757600080fd5b506103b0610ba2565b005b3480156103be57600080fd5b506103d960048036038101906103d491906128cc565b610cef565b005b3480156103e757600080fd5b5061040260048036038101906103fd9190612af6565b610d0f565b005b34801561041057600080fd5b50610419610da5565b604051610426919061308b565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190612b3f565b610db8565b6040516104639190613024565b60405180910390f35b34801561047857600080fd5b50610481610e6a565b60405161048e9190613368565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b9919061285f565b610e70565b6040516104cb9190613368565b60405180910390f35b3480156104e057600080fd5b506104e9610f28565b005b3480156104f757600080fd5b50610500610fb0565b60405161050d9190613024565b60405180910390f35b34801561052257600080fd5b5061052b610fd6565b6040516105389190613024565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190612af6565b611000565b005b34801561057657600080fd5b50610591600480360381019061058c9190612aa9565b611096565b005b34801561059f57600080fd5b506105a8611128565b6040516105b591906130a6565b60405180910390f35b6105d860048036038101906105d39190612b3f565b6111ba565b005b3480156105e657600080fd5b5061060160048036038101906105fc91906129a2565b6113c6565b005b34801561060f57600080fd5b506106186113dc565b60405161062591906130a6565b60405180910390f35b34801561063a57600080fd5b5061064361146a565b005b34801561065157600080fd5b5061066c6004803603810190610667919061291f565b611503565b005b34801561067a57600080fd5b5061069560048036038101906106909190612b3f565b611565565b6040516106a291906130a6565b60405180910390f35b3480156106b757600080fd5b506106c0611690565b6040516106cd9190613368565b60405180910390f35b3480156106e257600080fd5b506106eb611696565b6040516106f891906130a6565b60405180910390f35b34801561070d57600080fd5b506107286004803603810190610723919061288c565b611728565b604051610735919061308b565b60405180910390f35b34801561074a57600080fd5b506107656004803603810190610760919061285f565b6117bc565b005b600a60009054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108555750610854826118b4565b5b9050919050565b60606000805461086b90613638565b80601f016020809104026020016040519081016040528092919081815260200182805461089790613638565b80156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b5050505050905090565b60006108f98261191e565b610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f906132a8565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061097e82610db8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e6906132e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a0e61198a565b73ffffffffffffffffffffffffffffffffffffffff161480610a3d5750610a3c81610a3761198a565b611728565b5b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390613228565b60405180910390fd5b610a868383611992565b505050565b60085481565b600e6020528060005260406000206000915090505481565b610ab161198a565b73ffffffffffffffffffffffffffffffffffffffff16610acf610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1c906132c8565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b610b53610b4d61198a565b82611a4b565b610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990613308565b60405180910390fd5b610b9d838383611b29565b505050565b610baa61198a565b73ffffffffffffffffffffffffffffffffffffffff16610bc8610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c15906132c8565b60405180910390fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610c669061300f565b60006040518083038185875af1925050503d8060008114610ca3576040519150601f19603f3d011682016040523d82523d6000602084013e610ca8565b606091505b5050905080610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390613348565b60405180910390fd5b50565b610d0a83838360405180602001604052806000815250611503565b505050565b610d1761198a565b73ffffffffffffffffffffffffffffffffffffffff16610d35610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d82906132c8565b60405180910390fd5b80600c9080519060200190610da1929190612597565b5050565b600f60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613268565b60405180910390fd5b80915050919050565b60075481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613248565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f3061198a565b73ffffffffffffffffffffffffffffffffffffffff16610f4e610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b906132c8565b60405180910390fd5b610fae6000611d90565b565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61100861198a565b73ffffffffffffffffffffffffffffffffffffffff16611026610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461107c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611073906132c8565b60405180910390fd5b8060109080519060200190611092929190612597565b5050565b61109e61198a565b73ffffffffffffffffffffffffffffffffffffffff166110bc610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906132c8565b60405180910390fd5b8181600b919061112392919061261d565b505050565b60606001805461113790613638565b80601f016020809104026020016040519081016040528092919081815260200182805461116390613638565b80156111b05780601f10611185576101008083540402835291602001916111b0565b820191906000526020600020905b81548152906001019060200180831161119357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f906130e8565b60405180910390fd5b600a60009054906101000a900460ff16611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e90613128565b60405180910390fd5b6007548161128591906134f4565b3410156112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be906130c8565b60405180910390fd5b600954816008546112d8919061346d565b1115611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090613208565b60405180910390fd5b60005b818110156113c25760006001600854611335919061346d565b9050600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906113879061369b565b91905055506008600081548092919061139f9061369b565b91905055506113ae3382611e56565b5080806113ba9061369b565b91505061131c565b5050565b6113d86113d161198a565b8383611e74565b5050565b600c80546113e990613638565b80601f016020809104026020016040519081016040528092919081815260200182805461141590613638565b80156114625780601f1061143757610100808354040283529160200191611462565b820191906000526020600020905b81548152906001019060200180831161144557829003601f168201915b505050505081565b61147261198a565b73ffffffffffffffffffffffffffffffffffffffff16611490610fd6565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd906132c8565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550565b61151461150e61198a565b83611a4b565b611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90613308565b60405180910390fd5b61155f84848484611fe1565b50505050565b606060001515600f60009054906101000a900460ff161515141561161557600c805461159090613638565b80601f01602080910402602001604051908101604052809291908181526020018280546115bc90613638565b80156116095780601f106115de57610100808354040283529160200191611609565b820191906000526020600020905b8154815290600101906020018083116115ec57829003601f168201915b5050505050905061168b565b61161e8261191e565b61165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613328565b60405180910390fd5b600b6116688361203d565b604051602001611679929190612fe0565b60405160208183030381529060405290505b919050565b60095481565b6060601080546116a590613638565b80601f01602080910402602001604051908101604052809291908181526020018280546116d190613638565b801561171e5780601f106116f35761010080835404028352916020019161171e565b820191906000526020600020905b81548152906001019060200180831161170157829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117c461198a565b73ffffffffffffffffffffffffffffffffffffffff166117e2610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f906132c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90613148565b60405180910390fd5b6118b181611d90565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a0583610db8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a568261191e565b611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c906131e8565b60405180910390fd5b6000611aa083610db8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b0f57508373ffffffffffffffffffffffffffffffffffffffff16611af7846108ee565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b205750611b1f8185611728565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4982610db8565b73ffffffffffffffffffffffffffffffffffffffff1614611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690613168565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c06906131a8565b60405180910390fd5b611c1a83838361219e565b611c25600082611992565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c75919061354e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ccc919061346d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d8b8383836121a3565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e708282604051806020016040528060008152506121a8565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda906131c8565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fd4919061308b565b60405180910390a3505050565b611fec848484611b29565b611ff884848484612203565b612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e90613108565b60405180910390fd5b50505050565b60606000821415612085576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612199565b600082905060005b600082146120b75780806120a09061369b565b915050600a826120b091906134c3565b915061208d565b60008167ffffffffffffffff8111156120d3576120d26137d1565b5b6040519080825280601f01601f1916602001820160405280156121055781602001600182028036833780820191505090505b5090505b600085146121925760018261211e919061354e565b9150600a8561212d91906136e4565b6030612139919061346d565b60f81b81838151811061214f5761214e6137a2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561218b91906134c3565b9450612109565b8093505050505b919050565b505050565b505050565b6121b2838361239a565b6121bf6000848484612203565b6121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590613108565b60405180910390fd5b505050565b60006122248473ffffffffffffffffffffffffffffffffffffffff16612574565b1561238d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261224d61198a565b8786866040518563ffffffff1660e01b815260040161226f949392919061303f565b602060405180830381600087803b15801561228957600080fd5b505af19250505080156122ba57506040513d601f19601f820116820180604052508101906122b79190612a7c565b60015b61233d573d80600081146122ea576040519150601f19603f3d011682016040523d82523d6000602084013e6122ef565b606091505b50600081511415612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90613108565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612392565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190613288565b60405180910390fd5b6124138161191e565b15612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a90613188565b60405180910390fd5b61245f6000838361219e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124af919061346d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612570600083836121a3565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546125a390613638565b90600052602060002090601f0160209004810192826125c5576000855561260c565b82601f106125de57805160ff191683800117855561260c565b8280016001018555821561260c579182015b8281111561260b5782518255916020019190600101906125f0565b5b50905061261991906126a3565b5090565b82805461262990613638565b90600052602060002090601f01602090048101928261264b5760008555612692565b82601f1061266457803560ff1916838001178555612692565b82800160010185558215612692579182015b82811115612691578235825591602001919060010190612676565b5b50905061269f91906126a3565b5090565b5b808211156126bc5760008160009055506001016126a4565b5090565b60006126d36126ce846133a8565b613383565b9050828152602081018484840111156126ef576126ee61380f565b5b6126fa8482856135f6565b509392505050565b6000612715612710846133d9565b613383565b9050828152602081018484840111156127315761273061380f565b5b61273c8482856135f6565b509392505050565b60008135905061275381613d5a565b92915050565b60008135905061276881613d71565b92915050565b60008135905061277d81613d88565b92915050565b60008151905061279281613d88565b92915050565b600082601f8301126127ad576127ac613805565b5b81356127bd8482602086016126c0565b91505092915050565b60008083601f8401126127dc576127db613805565b5b8235905067ffffffffffffffff8111156127f9576127f8613800565b5b6020830191508360018202830111156128155761281461380a565b5b9250929050565b600082601f83011261283157612830613805565b5b8135612841848260208601612702565b91505092915050565b60008135905061285981613d9f565b92915050565b60006020828403121561287557612874613819565b5b600061288384828501612744565b91505092915050565b600080604083850312156128a3576128a2613819565b5b60006128b185828601612744565b92505060206128c285828601612744565b9150509250929050565b6000806000606084860312156128e5576128e4613819565b5b60006128f386828701612744565b935050602061290486828701612744565b92505060406129158682870161284a565b9150509250925092565b6000806000806080858703121561293957612938613819565b5b600061294787828801612744565b945050602061295887828801612744565b93505060406129698782880161284a565b925050606085013567ffffffffffffffff81111561298a57612989613814565b5b61299687828801612798565b91505092959194509250565b600080604083850312156129b9576129b8613819565b5b60006129c785828601612744565b92505060206129d885828601612759565b9150509250929050565b600080604083850312156129f9576129f8613819565b5b6000612a0785828601612744565b9250506020612a188582860161284a565b9150509250929050565b600060208284031215612a3857612a37613819565b5b6000612a4684828501612759565b91505092915050565b600060208284031215612a6557612a64613819565b5b6000612a738482850161276e565b91505092915050565b600060208284031215612a9257612a91613819565b5b6000612aa084828501612783565b91505092915050565b60008060208385031215612ac057612abf613819565b5b600083013567ffffffffffffffff811115612ade57612add613814565b5b612aea858286016127c6565b92509250509250929050565b600060208284031215612b0c57612b0b613819565b5b600082013567ffffffffffffffff811115612b2a57612b29613814565b5b612b368482850161281c565b91505092915050565b600060208284031215612b5557612b54613819565b5b6000612b638482850161284a565b91505092915050565b612b7581613582565b82525050565b612b8481613594565b82525050565b6000612b958261341f565b612b9f8185613435565b9350612baf818560208601613605565b612bb88161381e565b840191505092915050565b6000612bce8261342a565b612bd88185613451565b9350612be8818560208601613605565b612bf18161381e565b840191505092915050565b6000612c078261342a565b612c118185613462565b9350612c21818560208601613605565b80840191505092915050565b60008154612c3a81613638565b612c448186613462565b94506001821660008114612c5f5760018114612c7057612ca3565b60ff19831686528186019350612ca3565b612c798561340a565b60005b83811015612c9b57815481890152600182019150602081019050612c7c565b838801955050505b50505092915050565b6000612cb9601083613451565b9150612cc48261382f565b602082019050919050565b6000612cdc601983613451565b9150612ce782613858565b602082019050919050565b6000612cff603283613451565b9150612d0a82613881565b604082019050919050565b6000612d22601383613451565b9150612d2d826138d0565b602082019050919050565b6000612d45602683613451565b9150612d50826138f9565b604082019050919050565b6000612d68602583613451565b9150612d7382613948565b604082019050919050565b6000612d8b601c83613451565b9150612d9682613997565b602082019050919050565b6000612dae602483613451565b9150612db9826139c0565b604082019050919050565b6000612dd1601983613451565b9150612ddc82613a0f565b602082019050919050565b6000612df4602c83613451565b9150612dff82613a38565b604082019050919050565b6000612e17600883613451565b9150612e2282613a87565b602082019050919050565b6000612e3a603883613451565b9150612e4582613ab0565b604082019050919050565b6000612e5d602a83613451565b9150612e6882613aff565b604082019050919050565b6000612e80602983613451565b9150612e8b82613b4e565b604082019050919050565b6000612ea3602083613451565b9150612eae82613b9d565b602082019050919050565b6000612ec6602c83613451565b9150612ed182613bc6565b604082019050919050565b6000612ee9600583613462565b9150612ef482613c15565b600582019050919050565b6000612f0c602083613451565b9150612f1782613c3e565b602082019050919050565b6000612f2f602183613451565b9150612f3a82613c67565b604082019050919050565b6000612f52600083613446565b9150612f5d82613cb6565b600082019050919050565b6000612f75603183613451565b9150612f8082613cb9565b604082019050919050565b6000612f98601583613451565b9150612fa382613d08565b602082019050919050565b6000612fbb600f83613451565b9150612fc682613d31565b602082019050919050565b612fda816135ec565b82525050565b6000612fec8285612c2d565b9150612ff88284612bfc565b915061300382612edc565b91508190509392505050565b600061301a82612f45565b9150819050919050565b60006020820190506130396000830184612b6c565b92915050565b60006080820190506130546000830187612b6c565b6130616020830186612b6c565b61306e6040830185612fd1565b81810360608301526130808184612b8a565b905095945050505050565b60006020820190506130a06000830184612b7b565b92915050565b600060208201905081810360008301526130c08184612bc3565b905092915050565b600060208201905081810360008301526130e181612cac565b9050919050565b6000602082019050818103600083015261310181612ccf565b9050919050565b6000602082019050818103600083015261312181612cf2565b9050919050565b6000602082019050818103600083015261314181612d15565b9050919050565b6000602082019050818103600083015261316181612d38565b9050919050565b6000602082019050818103600083015261318181612d5b565b9050919050565b600060208201905081810360008301526131a181612d7e565b9050919050565b600060208201905081810360008301526131c181612da1565b9050919050565b600060208201905081810360008301526131e181612dc4565b9050919050565b6000602082019050818103600083015261320181612de7565b9050919050565b6000602082019050818103600083015261322181612e0a565b9050919050565b6000602082019050818103600083015261324181612e2d565b9050919050565b6000602082019050818103600083015261326181612e50565b9050919050565b6000602082019050818103600083015261328181612e73565b9050919050565b600060208201905081810360008301526132a181612e96565b9050919050565b600060208201905081810360008301526132c181612eb9565b9050919050565b600060208201905081810360008301526132e181612eff565b9050919050565b6000602082019050818103600083015261330181612f22565b9050919050565b6000602082019050818103600083015261332181612f68565b9050919050565b6000602082019050818103600083015261334181612f8b565b9050919050565b6000602082019050818103600083015261336181612fae565b9050919050565b600060208201905061337d6000830184612fd1565b92915050565b600061338d61339e565b9050613399828261366a565b919050565b6000604051905090565b600067ffffffffffffffff8211156133c3576133c26137d1565b5b6133cc8261381e565b9050602081019050919050565b600067ffffffffffffffff8211156133f4576133f36137d1565b5b6133fd8261381e565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613478826135ec565b9150613483836135ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134b8576134b7613715565b5b828201905092915050565b60006134ce826135ec565b91506134d9836135ec565b9250826134e9576134e8613744565b5b828204905092915050565b60006134ff826135ec565b915061350a836135ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561354357613542613715565b5b828202905092915050565b6000613559826135ec565b9150613564836135ec565b92508282101561357757613576613715565b5b828203905092915050565b600061358d826135cc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613623578082015181840152602081019050613608565b83811115613632576000848401525b50505050565b6000600282049050600182168061365057607f821691505b6020821081141561366457613663613773565b5b50919050565b6136738261381e565b810181811067ffffffffffffffff82111715613692576136916137d1565b5b80604052505050565b60006136a6826135ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156136d9576136d8613715565b5b600182019050919050565b60006136ef826135ec565b91506136fa836135ec565b92508261370a57613709613744565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f77726f6e67206d696e742076616c756500000000000000000000000000000000600082015250565b7f416e6f7468657220636f6e747261637420646574656374656400000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f6d696e74696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f736f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f546f6b656e20646f6573206e6f74206578697374210000000000000000000000600082015250565b7f7769746864726177206661696c65640000000000000000000000000000000000600082015250565b613d6381613582565b8114613d6e57600080fd5b50565b613d7a81613594565b8114613d8557600080fd5b50565b613d91816135a0565b8114613d9c57600080fd5b50565b613da8816135ec565b8114613db357600080fd5b5056fea2646970667358221220135f49fa54fd4f977e82afae5d87e0c4acce2872c32ea5305ff2ed264384bf8364736f6c63430008070033697066733a2f2f516d614e684c34336e4739706a4e78343436374a74424c6a4366697a3677505741327338347567485058723643472f697066733a2f2f516d655061574250557a7564707252485053796d3239756d476932787779464c4250655052396e445568704757372f

Deployed Bytecode

0x6080604052600436106101e35760003560e01c8063715018a611610102578063a45ba8e711610095578063d5abeb0111610064578063d5abeb01146106ab578063e8a3d485146106d6578063e985e9c514610701578063f2fde38b1461073e576101e3565b8063a45ba8e714610603578063a475b5dd1461062e578063b88d4fde14610645578063c87b56dd1461066e576101e3565b806395652cfa116100d157806395652cfa1461056a57806395d89b4114610593578063a0712d68146105be578063a22cb465146105da576101e3565b8063715018a6146104d457806385d178f4146104eb5780638da5cb5b14610516578063938e3d7b14610541576101e3565b806323b872dd1161017a57806354214f691161014957806354214f69146104045780636352211e1461042f5780636817c76c1461046c57806370a0823114610497576101e3565b806323b872dd146103725780633ccfd60b1461039b57806342842e0e146103b25780634fdd43cb146103db576101e3565b8063095ea7b3116101b6578063095ea7b3146102b857806318160ddd146102e15780631b22020a1461030c5780632373ac2214610349576101e3565b80630116bc2d146101e857806301ffc9a71461021357806306fdde0314610250578063081812fc1461027b575b600080fd5b3480156101f457600080fd5b506101fd610767565b60405161020a919061308b565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612a4f565b61077a565b604051610247919061308b565b60405180910390f35b34801561025c57600080fd5b5061026561085c565b60405161027291906130a6565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190612b3f565b6108ee565b6040516102af9190613024565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da91906129e2565b610973565b005b3480156102ed57600080fd5b506102f6610a8b565b6040516103039190613368565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e919061285f565b610a91565b6040516103409190613368565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612a22565b610aa9565b005b34801561037e57600080fd5b50610399600480360381019061039491906128cc565b610b42565b005b3480156103a757600080fd5b506103b0610ba2565b005b3480156103be57600080fd5b506103d960048036038101906103d491906128cc565b610cef565b005b3480156103e757600080fd5b5061040260048036038101906103fd9190612af6565b610d0f565b005b34801561041057600080fd5b50610419610da5565b604051610426919061308b565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190612b3f565b610db8565b6040516104639190613024565b60405180910390f35b34801561047857600080fd5b50610481610e6a565b60405161048e9190613368565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b9919061285f565b610e70565b6040516104cb9190613368565b60405180910390f35b3480156104e057600080fd5b506104e9610f28565b005b3480156104f757600080fd5b50610500610fb0565b60405161050d9190613024565b60405180910390f35b34801561052257600080fd5b5061052b610fd6565b6040516105389190613024565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190612af6565b611000565b005b34801561057657600080fd5b50610591600480360381019061058c9190612aa9565b611096565b005b34801561059f57600080fd5b506105a8611128565b6040516105b591906130a6565b60405180910390f35b6105d860048036038101906105d39190612b3f565b6111ba565b005b3480156105e657600080fd5b5061060160048036038101906105fc91906129a2565b6113c6565b005b34801561060f57600080fd5b506106186113dc565b60405161062591906130a6565b60405180910390f35b34801561063a57600080fd5b5061064361146a565b005b34801561065157600080fd5b5061066c6004803603810190610667919061291f565b611503565b005b34801561067a57600080fd5b5061069560048036038101906106909190612b3f565b611565565b6040516106a291906130a6565b60405180910390f35b3480156106b757600080fd5b506106c0611690565b6040516106cd9190613368565b60405180910390f35b3480156106e257600080fd5b506106eb611696565b6040516106f891906130a6565b60405180910390f35b34801561070d57600080fd5b506107286004803603810190610723919061288c565b611728565b604051610735919061308b565b60405180910390f35b34801561074a57600080fd5b506107656004803603810190610760919061285f565b6117bc565b005b600a60009054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108555750610854826118b4565b5b9050919050565b60606000805461086b90613638565b80601f016020809104026020016040519081016040528092919081815260200182805461089790613638565b80156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b5050505050905090565b60006108f98261191e565b610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f906132a8565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061097e82610db8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e6906132e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a0e61198a565b73ffffffffffffffffffffffffffffffffffffffff161480610a3d5750610a3c81610a3761198a565b611728565b5b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390613228565b60405180910390fd5b610a868383611992565b505050565b60085481565b600e6020528060005260406000206000915090505481565b610ab161198a565b73ffffffffffffffffffffffffffffffffffffffff16610acf610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1c906132c8565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b610b53610b4d61198a565b82611a4b565b610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990613308565b60405180910390fd5b610b9d838383611b29565b505050565b610baa61198a565b73ffffffffffffffffffffffffffffffffffffffff16610bc8610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c15906132c8565b60405180910390fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610c669061300f565b60006040518083038185875af1925050503d8060008114610ca3576040519150601f19603f3d011682016040523d82523d6000602084013e610ca8565b606091505b5050905080610cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce390613348565b60405180910390fd5b50565b610d0a83838360405180602001604052806000815250611503565b505050565b610d1761198a565b73ffffffffffffffffffffffffffffffffffffffff16610d35610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d82906132c8565b60405180910390fd5b80600c9080519060200190610da1929190612597565b5050565b600f60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613268565b60405180910390fd5b80915050919050565b60075481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613248565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f3061198a565b73ffffffffffffffffffffffffffffffffffffffff16610f4e610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b906132c8565b60405180910390fd5b610fae6000611d90565b565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61100861198a565b73ffffffffffffffffffffffffffffffffffffffff16611026610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461107c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611073906132c8565b60405180910390fd5b8060109080519060200190611092929190612597565b5050565b61109e61198a565b73ffffffffffffffffffffffffffffffffffffffff166110bc610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906132c8565b60405180910390fd5b8181600b919061112392919061261d565b505050565b60606001805461113790613638565b80601f016020809104026020016040519081016040528092919081815260200182805461116390613638565b80156111b05780601f10611185576101008083540402835291602001916111b0565b820191906000526020600020905b81548152906001019060200180831161119357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f906130e8565b60405180910390fd5b600a60009054906101000a900460ff16611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e90613128565b60405180910390fd5b6007548161128591906134f4565b3410156112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be906130c8565b60405180910390fd5b600954816008546112d8919061346d565b1115611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090613208565b60405180910390fd5b60005b818110156113c25760006001600854611335919061346d565b9050600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906113879061369b565b91905055506008600081548092919061139f9061369b565b91905055506113ae3382611e56565b5080806113ba9061369b565b91505061131c565b5050565b6113d86113d161198a565b8383611e74565b5050565b600c80546113e990613638565b80601f016020809104026020016040519081016040528092919081815260200182805461141590613638565b80156114625780601f1061143757610100808354040283529160200191611462565b820191906000526020600020905b81548152906001019060200180831161144557829003601f168201915b505050505081565b61147261198a565b73ffffffffffffffffffffffffffffffffffffffff16611490610fd6565b73ffffffffffffffffffffffffffffffffffffffff16146114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd906132c8565b60405180910390fd5b6001600f60006101000a81548160ff021916908315150217905550565b61151461150e61198a565b83611a4b565b611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90613308565b60405180910390fd5b61155f84848484611fe1565b50505050565b606060001515600f60009054906101000a900460ff161515141561161557600c805461159090613638565b80601f01602080910402602001604051908101604052809291908181526020018280546115bc90613638565b80156116095780601f106115de57610100808354040283529160200191611609565b820191906000526020600020905b8154815290600101906020018083116115ec57829003601f168201915b5050505050905061168b565b61161e8261191e565b61165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613328565b60405180910390fd5b600b6116688361203d565b604051602001611679929190612fe0565b60405160208183030381529060405290505b919050565b60095481565b6060601080546116a590613638565b80601f01602080910402602001604051908101604052809291908181526020018280546116d190613638565b801561171e5780601f106116f35761010080835404028352916020019161171e565b820191906000526020600020905b81548152906001019060200180831161170157829003601f168201915b5050505050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117c461198a565b73ffffffffffffffffffffffffffffffffffffffff166117e2610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f906132c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90613148565b60405180910390fd5b6118b181611d90565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a0583610db8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a568261191e565b611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c906131e8565b60405180910390fd5b6000611aa083610db8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b0f57508373ffffffffffffffffffffffffffffffffffffffff16611af7846108ee565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b205750611b1f8185611728565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4982610db8565b73ffffffffffffffffffffffffffffffffffffffff1614611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690613168565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c06906131a8565b60405180910390fd5b611c1a83838361219e565b611c25600082611992565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c75919061354e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ccc919061346d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d8b8383836121a3565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e708282604051806020016040528060008152506121a8565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda906131c8565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fd4919061308b565b60405180910390a3505050565b611fec848484611b29565b611ff884848484612203565b612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e90613108565b60405180910390fd5b50505050565b60606000821415612085576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612199565b600082905060005b600082146120b75780806120a09061369b565b915050600a826120b091906134c3565b915061208d565b60008167ffffffffffffffff8111156120d3576120d26137d1565b5b6040519080825280601f01601f1916602001820160405280156121055781602001600182028036833780820191505090505b5090505b600085146121925760018261211e919061354e565b9150600a8561212d91906136e4565b6030612139919061346d565b60f81b81838151811061214f5761214e6137a2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561218b91906134c3565b9450612109565b8093505050505b919050565b505050565b505050565b6121b2838361239a565b6121bf6000848484612203565b6121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590613108565b60405180910390fd5b505050565b60006122248473ffffffffffffffffffffffffffffffffffffffff16612574565b1561238d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261224d61198a565b8786866040518563ffffffff1660e01b815260040161226f949392919061303f565b602060405180830381600087803b15801561228957600080fd5b505af19250505080156122ba57506040513d601f19601f820116820180604052508101906122b79190612a7c565b60015b61233d573d80600081146122ea576040519150601f19603f3d011682016040523d82523d6000602084013e6122ef565b606091505b50600081511415612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90613108565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612392565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190613288565b60405180910390fd5b6124138161191e565b15612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a90613188565b60405180910390fd5b61245f6000838361219e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124af919061346d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612570600083836121a3565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546125a390613638565b90600052602060002090601f0160209004810192826125c5576000855561260c565b82601f106125de57805160ff191683800117855561260c565b8280016001018555821561260c579182015b8281111561260b5782518255916020019190600101906125f0565b5b50905061261991906126a3565b5090565b82805461262990613638565b90600052602060002090601f01602090048101928261264b5760008555612692565b82601f1061266457803560ff1916838001178555612692565b82800160010185558215612692579182015b82811115612691578235825591602001919060010190612676565b5b50905061269f91906126a3565b5090565b5b808211156126bc5760008160009055506001016126a4565b5090565b60006126d36126ce846133a8565b613383565b9050828152602081018484840111156126ef576126ee61380f565b5b6126fa8482856135f6565b509392505050565b6000612715612710846133d9565b613383565b9050828152602081018484840111156127315761273061380f565b5b61273c8482856135f6565b509392505050565b60008135905061275381613d5a565b92915050565b60008135905061276881613d71565b92915050565b60008135905061277d81613d88565b92915050565b60008151905061279281613d88565b92915050565b600082601f8301126127ad576127ac613805565b5b81356127bd8482602086016126c0565b91505092915050565b60008083601f8401126127dc576127db613805565b5b8235905067ffffffffffffffff8111156127f9576127f8613800565b5b6020830191508360018202830111156128155761281461380a565b5b9250929050565b600082601f83011261283157612830613805565b5b8135612841848260208601612702565b91505092915050565b60008135905061285981613d9f565b92915050565b60006020828403121561287557612874613819565b5b600061288384828501612744565b91505092915050565b600080604083850312156128a3576128a2613819565b5b60006128b185828601612744565b92505060206128c285828601612744565b9150509250929050565b6000806000606084860312156128e5576128e4613819565b5b60006128f386828701612744565b935050602061290486828701612744565b92505060406129158682870161284a565b9150509250925092565b6000806000806080858703121561293957612938613819565b5b600061294787828801612744565b945050602061295887828801612744565b93505060406129698782880161284a565b925050606085013567ffffffffffffffff81111561298a57612989613814565b5b61299687828801612798565b91505092959194509250565b600080604083850312156129b9576129b8613819565b5b60006129c785828601612744565b92505060206129d885828601612759565b9150509250929050565b600080604083850312156129f9576129f8613819565b5b6000612a0785828601612744565b9250506020612a188582860161284a565b9150509250929050565b600060208284031215612a3857612a37613819565b5b6000612a4684828501612759565b91505092915050565b600060208284031215612a6557612a64613819565b5b6000612a738482850161276e565b91505092915050565b600060208284031215612a9257612a91613819565b5b6000612aa084828501612783565b91505092915050565b60008060208385031215612ac057612abf613819565b5b600083013567ffffffffffffffff811115612ade57612add613814565b5b612aea858286016127c6565b92509250509250929050565b600060208284031215612b0c57612b0b613819565b5b600082013567ffffffffffffffff811115612b2a57612b29613814565b5b612b368482850161281c565b91505092915050565b600060208284031215612b5557612b54613819565b5b6000612b638482850161284a565b91505092915050565b612b7581613582565b82525050565b612b8481613594565b82525050565b6000612b958261341f565b612b9f8185613435565b9350612baf818560208601613605565b612bb88161381e565b840191505092915050565b6000612bce8261342a565b612bd88185613451565b9350612be8818560208601613605565b612bf18161381e565b840191505092915050565b6000612c078261342a565b612c118185613462565b9350612c21818560208601613605565b80840191505092915050565b60008154612c3a81613638565b612c448186613462565b94506001821660008114612c5f5760018114612c7057612ca3565b60ff19831686528186019350612ca3565b612c798561340a565b60005b83811015612c9b57815481890152600182019150602081019050612c7c565b838801955050505b50505092915050565b6000612cb9601083613451565b9150612cc48261382f565b602082019050919050565b6000612cdc601983613451565b9150612ce782613858565b602082019050919050565b6000612cff603283613451565b9150612d0a82613881565b604082019050919050565b6000612d22601383613451565b9150612d2d826138d0565b602082019050919050565b6000612d45602683613451565b9150612d50826138f9565b604082019050919050565b6000612d68602583613451565b9150612d7382613948565b604082019050919050565b6000612d8b601c83613451565b9150612d9682613997565b602082019050919050565b6000612dae602483613451565b9150612db9826139c0565b604082019050919050565b6000612dd1601983613451565b9150612ddc82613a0f565b602082019050919050565b6000612df4602c83613451565b9150612dff82613a38565b604082019050919050565b6000612e17600883613451565b9150612e2282613a87565b602082019050919050565b6000612e3a603883613451565b9150612e4582613ab0565b604082019050919050565b6000612e5d602a83613451565b9150612e6882613aff565b604082019050919050565b6000612e80602983613451565b9150612e8b82613b4e565b604082019050919050565b6000612ea3602083613451565b9150612eae82613b9d565b602082019050919050565b6000612ec6602c83613451565b9150612ed182613bc6565b604082019050919050565b6000612ee9600583613462565b9150612ef482613c15565b600582019050919050565b6000612f0c602083613451565b9150612f1782613c3e565b602082019050919050565b6000612f2f602183613451565b9150612f3a82613c67565b604082019050919050565b6000612f52600083613446565b9150612f5d82613cb6565b600082019050919050565b6000612f75603183613451565b9150612f8082613cb9565b604082019050919050565b6000612f98601583613451565b9150612fa382613d08565b602082019050919050565b6000612fbb600f83613451565b9150612fc682613d31565b602082019050919050565b612fda816135ec565b82525050565b6000612fec8285612c2d565b9150612ff88284612bfc565b915061300382612edc565b91508190509392505050565b600061301a82612f45565b9150819050919050565b60006020820190506130396000830184612b6c565b92915050565b60006080820190506130546000830187612b6c565b6130616020830186612b6c565b61306e6040830185612fd1565b81810360608301526130808184612b8a565b905095945050505050565b60006020820190506130a06000830184612b7b565b92915050565b600060208201905081810360008301526130c08184612bc3565b905092915050565b600060208201905081810360008301526130e181612cac565b9050919050565b6000602082019050818103600083015261310181612ccf565b9050919050565b6000602082019050818103600083015261312181612cf2565b9050919050565b6000602082019050818103600083015261314181612d15565b9050919050565b6000602082019050818103600083015261316181612d38565b9050919050565b6000602082019050818103600083015261318181612d5b565b9050919050565b600060208201905081810360008301526131a181612d7e565b9050919050565b600060208201905081810360008301526131c181612da1565b9050919050565b600060208201905081810360008301526131e181612dc4565b9050919050565b6000602082019050818103600083015261320181612de7565b9050919050565b6000602082019050818103600083015261322181612e0a565b9050919050565b6000602082019050818103600083015261324181612e2d565b9050919050565b6000602082019050818103600083015261326181612e50565b9050919050565b6000602082019050818103600083015261328181612e73565b9050919050565b600060208201905081810360008301526132a181612e96565b9050919050565b600060208201905081810360008301526132c181612eb9565b9050919050565b600060208201905081810360008301526132e181612eff565b9050919050565b6000602082019050818103600083015261330181612f22565b9050919050565b6000602082019050818103600083015261332181612f68565b9050919050565b6000602082019050818103600083015261334181612f8b565b9050919050565b6000602082019050818103600083015261336181612fae565b9050919050565b600060208201905061337d6000830184612fd1565b92915050565b600061338d61339e565b9050613399828261366a565b919050565b6000604051905090565b600067ffffffffffffffff8211156133c3576133c26137d1565b5b6133cc8261381e565b9050602081019050919050565b600067ffffffffffffffff8211156133f4576133f36137d1565b5b6133fd8261381e565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613478826135ec565b9150613483836135ec565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134b8576134b7613715565b5b828201905092915050565b60006134ce826135ec565b91506134d9836135ec565b9250826134e9576134e8613744565b5b828204905092915050565b60006134ff826135ec565b915061350a836135ec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561354357613542613715565b5b828202905092915050565b6000613559826135ec565b9150613564836135ec565b92508282101561357757613576613715565b5b828203905092915050565b600061358d826135cc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613623578082015181840152602081019050613608565b83811115613632576000848401525b50505050565b6000600282049050600182168061365057607f821691505b6020821081141561366457613663613773565b5b50919050565b6136738261381e565b810181811067ffffffffffffffff82111715613692576136916137d1565b5b80604052505050565b60006136a6826135ec565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156136d9576136d8613715565b5b600182019050919050565b60006136ef826135ec565b91506136fa836135ec565b92508261370a57613709613744565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f77726f6e67206d696e742076616c756500000000000000000000000000000000600082015250565b7f416e6f7468657220636f6e747261637420646574656374656400000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f6d696e74696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f736f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f546f6b656e20646f6573206e6f74206578697374210000000000000000000000600082015250565b7f7769746864726177206661696c65640000000000000000000000000000000000600082015250565b613d6381613582565b8114613d6e57600080fd5b50565b613d7a81613594565b8114613d8557600080fd5b50565b613d91816135a0565b8114613d9c57600080fd5b50565b613da8816135ec565b8114613db357600080fd5b5056fea2646970667358221220135f49fa54fd4f977e82afae5d87e0c4acce2872c32ea5305ff2ed264384bf8364736f6c63430008070033

Deployed Bytecode Sourcemap

42244:2723:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42387:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28796:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29741:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31300:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30823:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42323:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42534:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43068:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32050:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44270:178;;;;;;;;;;;;;:::i;:::-;;32460:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43296:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42589:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29435:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42292:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29165:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26167:103;;;;;;;;;;;;;:::i;:::-;;42498:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25516:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44018:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43442:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29910:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44456:506;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31593:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42460:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43215:73;;;;;;;;;;;;;:::i;:::-;;32716:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43572:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42356:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44160:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31819:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26425:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42387:31;;;;;;;;;;;;;:::o;28796:305::-;28898:4;28950:25;28935:40;;;:11;:40;;;;:105;;;;29007:33;28992:48;;;:11;:48;;;;28935:105;:158;;;;29057:36;29081:11;29057:23;:36::i;:::-;28935:158;28915:178;;28796:305;;;:::o;29741:100::-;29795:13;29828:5;29821:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29741:100;:::o;31300:221::-;31376:7;31404:16;31412:7;31404;:16::i;:::-;31396:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31489:15;:24;31505:7;31489:24;;;;;;;;;;;;;;;;;;;;;31482:31;;31300:221;;;:::o;30823:411::-;30904:13;30920:23;30935:7;30920:14;:23::i;:::-;30904:39;;30968:5;30962:11;;:2;:11;;;;30954:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;31062:5;31046:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;31071:37;31088:5;31095:12;:10;:12::i;:::-;31071:16;:37::i;:::-;31046:62;31024:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;31205:21;31214:2;31218:7;31205:8;:21::i;:::-;30893:341;30823:411;;:::o;42323:26::-;;;;:::o;42534:46::-;;;;;;;;;;;;;;;;;:::o;43068:139::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43179:20:::1;43157:19;;:42;;;;;;;;;;;;;;;;;;43068:139:::0;:::o;32050:339::-;32245:41;32264:12;:10;:12::i;:::-;32278:7;32245:18;:41::i;:::-;32237:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;32353:28;32363:4;32369:2;32373:7;32353:9;:28::i;:::-;32050:339;;;:::o;44270:178::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44321:12:::1;44339:14;;;;;;;;;;;:19;;44367:21;44339:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44320:74;;;44413:7;44405:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;44309:139;44270:178::o:0;32460:185::-;32598:39;32615:4;32621:2;32625:7;32598:39;;;;;;;;;;;;:16;:39::i;:::-;32460:185;;;:::o;43296:138::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43408:18:::1;43388:17;:38;;;;;;;;;;;;:::i;:::-;;43296:138:::0;:::o;42589:22::-;;;;;;;;;;;;;:::o;29435:239::-;29507:7;29527:13;29543:7;:16;29551:7;29543:16;;;;;;;;;;;;;;;;;;;;;29527:32;;29595:1;29578:19;;:5;:19;;;;29570:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29661:5;29654:12;;;29435:239;;;:::o;42292:24::-;;;;:::o;29165:208::-;29237:7;29282:1;29265:19;;:5;:19;;;;29257:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29349:9;:16;29359:5;29349:16;;;;;;;;;;;;;;;;29342:23;;29165:208;;;:::o;26167:103::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26232:30:::1;26259:1;26232:18;:30::i;:::-;26167:103::o:0;42498:29::-;;;;;;;;;;;;;:::o;25516:87::-;25562:7;25589:6;;;;;;;;;;;25582:13;;25516:87;:::o;44018:134::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44126:18:::1;44106:17;:38;;;;;;;;;;;;:::i;:::-;;44018:134:::0;:::o;43442:122::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43543:13:::1;;43528:12;:28;;;;;;;:::i;:::-;;43442:122:::0;;:::o;29910:104::-;29966:13;29999:7;29992:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29910:104;:::o;44456:506::-;43000:10;42988:22;;:9;:22;;;42980:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;44539:19:::1;;;;;;;;;;;44531:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;44626:9;;44614;:21;;;;:::i;:::-;44601:9;:34;;44593:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;44702:9;;44689;44675:11;;:23;;;;:::i;:::-;:36;;44667:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;44741:9;44737:218;44760:9;44756:1;:13;44737:218;;;44791:18;44826:1;44812:11;;:15;;;;:::i;:::-;44791:36;;44842:11;:23;44854:10;44842:23;;;;;;;;;;;;;;;;:25;;;;;;;;;:::i;:::-;;;;;;44882:11;;:13;;;;;;;;;:::i;:::-;;;;;;44910:33;44920:10;44932;44910:9;:33::i;:::-;44776:179;44771:3;;;;;:::i;:::-;;;;44737:218;;;;44456:506:::0;:::o;31593:155::-;31688:52;31707:12;:10;:12::i;:::-;31721:8;31731;31688:18;:52::i;:::-;31593:155;;:::o;42460:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;43215:73::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43276:4:::1;43263:10;;:17;;;;;;;;;;;;;;;;;;43215:73::o:0;32716:328::-;32891:41;32910:12;:10;:12::i;:::-;32924:7;32891:18;:41::i;:::-;32883:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;32997:39;33011:4;33017:2;33021:7;33030:5;32997:13;:39::i;:::-;32716:328;;;;:::o;43572:338::-;43638:13;43684:5;43670:19;;:10;;;;;;;;;;;:19;;;43666:80;;;43713:17;43706:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43666:80;43766:17;43774:8;43766:7;:17::i;:::-;43758:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;43851:12;43865:26;43882:8;43865:16;:26::i;:::-;43834:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;43820:82;;43572:338;;;;:::o;42356:24::-;;;;:::o;44160:102::-;44204:13;44237:17;44230:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44160:102;:::o;31819:164::-;31916:4;31940:18;:25;31959:5;31940:25;;;;;;;;;;;;;;;:35;31966:8;31940:35;;;;;;;;;;;;;;;;;;;;;;;;;31933:42;;31819:164;;;;:::o;26425:201::-;25747:12;:10;:12::i;:::-;25736:23;;:7;:5;:7::i;:::-;:23;;;25728:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26534:1:::1;26514:22;;:8;:22;;;;26506:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26590:28;26609:8;26590:18;:28::i;:::-;26425:201:::0;:::o;11087:157::-;11172:4;11211:25;11196:40;;;:11;:40;;;;11189:47;;11087:157;;;:::o;34554:127::-;34619:4;34671:1;34643:30;;:7;:16;34651:7;34643:16;;;;;;;;;;;;;;;;;;;;;:30;;;;34636:37;;34554:127;;;:::o;3761:98::-;3814:7;3841:10;3834:17;;3761:98;:::o;38700:174::-;38802:2;38775:15;:24;38791:7;38775:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;38858:7;38854:2;38820:46;;38829:23;38844:7;38829:14;:23::i;:::-;38820:46;;;;;;;;;;;;38700:174;;:::o;34848:348::-;34941:4;34966:16;34974:7;34966;:16::i;:::-;34958:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;35042:13;35058:23;35073:7;35058:14;:23::i;:::-;35042:39;;35111:5;35100:16;;:7;:16;;;:51;;;;35144:7;35120:31;;:20;35132:7;35120:11;:20::i;:::-;:31;;;35100:51;:87;;;;35155:32;35172:5;35179:7;35155:16;:32::i;:::-;35100:87;35092:96;;;34848:348;;;;:::o;37957:625::-;38116:4;38089:31;;:23;38104:7;38089:14;:23::i;:::-;:31;;;38081:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;38195:1;38181:16;;:2;:16;;;;38173:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;38251:39;38272:4;38278:2;38282:7;38251:20;:39::i;:::-;38355:29;38372:1;38376:7;38355:8;:29::i;:::-;38416:1;38397:9;:15;38407:4;38397:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;38445:1;38428:9;:13;38438:2;38428:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;38476:2;38457:7;:16;38465:7;38457:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;38515:7;38511:2;38496:27;;38505:4;38496:27;;;;;;;;;;;;38536:38;38556:4;38562:2;38566:7;38536:19;:38::i;:::-;37957:625;;;:::o;26786:191::-;26860:16;26879:6;;;;;;;;;;;26860:25;;26905:8;26896:6;;:17;;;;;;;;;;;;;;;;;;26960:8;26929:40;;26950:8;26929:40;;;;;;;;;;;;26849:128;26786:191;:::o;35538:110::-;35614:26;35624:2;35628:7;35614:26;;;;;;;;;;;;:9;:26::i;:::-;35538:110;;:::o;39016:315::-;39171:8;39162:17;;:5;:17;;;;39154:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;39258:8;39220:18;:25;39239:5;39220:25;;;;;;;;;;;;;;;:35;39246:8;39220:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;39304:8;39282:41;;39297:5;39282:41;;;39314:8;39282:41;;;;;;:::i;:::-;;;;;;;;39016:315;;;:::o;33926:::-;34083:28;34093:4;34099:2;34103:7;34083:9;:28::i;:::-;34130:48;34153:4;34159:2;34163:7;34172:5;34130:22;:48::i;:::-;34122:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;33926:315;;;;:::o;11756:723::-;11812:13;12042:1;12033:5;:10;12029:53;;;12060:10;;;;;;;;;;;;;;;;;;;;;12029:53;12092:12;12107:5;12092:20;;12123:14;12148:78;12163:1;12155:4;:9;12148:78;;12181:8;;;;;:::i;:::-;;;;12212:2;12204:10;;;;;:::i;:::-;;;12148:78;;;12236:19;12268:6;12258:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12236:39;;12286:154;12302:1;12293:5;:10;12286:154;;12330:1;12320:11;;;;;:::i;:::-;;;12397:2;12389:5;:10;;;;:::i;:::-;12376:2;:24;;;;:::i;:::-;12363:39;;12346:6;12353;12346:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;12426:2;12417:11;;;;;:::i;:::-;;;12286:154;;;12464:6;12450:21;;;;;11756:723;;;;:::o;41267:126::-;;;;:::o;41778:125::-;;;;:::o;35875:321::-;36005:18;36011:2;36015:7;36005:5;:18::i;:::-;36056:54;36087:1;36091:2;36095:7;36104:5;36056:22;:54::i;:::-;36034:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;35875:321;;;:::o;39896:799::-;40051:4;40072:15;:2;:13;;;:15::i;:::-;40068:620;;;40124:2;40108:36;;;40145:12;:10;:12::i;:::-;40159:4;40165:7;40174:5;40108:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;40104:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40367:1;40350:6;:13;:18;40346:272;;;40393:60;;;;;;;;;;:::i;:::-;;;;;;;;40346:272;40568:6;40562:13;40553:6;40549:2;40545:15;40538:38;40104:529;40241:41;;;40231:51;;;:6;:51;;;;40224:58;;;;;40068:620;40672:4;40665:11;;39896:799;;;;;;;:::o;36532:439::-;36626:1;36612:16;;:2;:16;;;;36604:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36685:16;36693:7;36685;:16::i;:::-;36684:17;36676:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;36747:45;36776:1;36780:2;36784:7;36747:20;:45::i;:::-;36822:1;36805:9;:13;36815:2;36805:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;36853:2;36834:7;:16;36842:7;36834:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;36898:7;36894:2;36873:33;;36890:1;36873:33;;;;;;;;;;;;36919:44;36947:1;36951:2;36955:7;36919:19;:44::i;:::-;36532:439;;:::o;14892:326::-;14952:4;15209:1;15187:7;:19;;;:23;15180:30;;14892:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:553::-;1844:8;1854:6;1904:3;1897:4;1889:6;1885:17;1881:27;1871:122;;1912:79;;:::i;:::-;1871:122;2025:6;2012:20;2002:30;;2055:18;2047:6;2044:30;2041:117;;;2077:79;;:::i;:::-;2041:117;2191:4;2183:6;2179:17;2167:29;;2245:3;2237:4;2229:6;2225:17;2215:8;2211:32;2208:41;2205:128;;;2252:79;;:::i;:::-;2205:128;1786:553;;;;;:::o;2359:340::-;2415:5;2464:3;2457:4;2449:6;2445:17;2441:27;2431:122;;2472:79;;:::i;:::-;2431:122;2589:6;2576:20;2614:79;2689:3;2681:6;2674:4;2666:6;2662:17;2614:79;:::i;:::-;2605:88;;2421:278;2359:340;;;;:::o;2705:139::-;2751:5;2789:6;2776:20;2767:29;;2805:33;2832:5;2805:33;:::i;:::-;2705:139;;;;:::o;2850:329::-;2909:6;2958:2;2946:9;2937:7;2933:23;2929:32;2926:119;;;2964:79;;:::i;:::-;2926:119;3084:1;3109:53;3154:7;3145:6;3134:9;3130:22;3109:53;:::i;:::-;3099:63;;3055:117;2850:329;;;;:::o;3185:474::-;3253:6;3261;3310:2;3298:9;3289:7;3285:23;3281:32;3278:119;;;3316:79;;:::i;:::-;3278:119;3436:1;3461:53;3506:7;3497:6;3486:9;3482:22;3461:53;:::i;:::-;3451:63;;3407:117;3563:2;3589:53;3634:7;3625:6;3614:9;3610:22;3589:53;:::i;:::-;3579:63;;3534:118;3185:474;;;;;:::o;3665:619::-;3742:6;3750;3758;3807:2;3795:9;3786:7;3782:23;3778:32;3775:119;;;3813:79;;:::i;:::-;3775:119;3933:1;3958:53;4003:7;3994:6;3983:9;3979:22;3958:53;:::i;:::-;3948:63;;3904:117;4060:2;4086:53;4131:7;4122:6;4111:9;4107:22;4086:53;:::i;:::-;4076:63;;4031:118;4188:2;4214:53;4259:7;4250:6;4239:9;4235:22;4214:53;:::i;:::-;4204:63;;4159:118;3665:619;;;;;:::o;4290:943::-;4385:6;4393;4401;4409;4458:3;4446:9;4437:7;4433:23;4429:33;4426:120;;;4465:79;;:::i;:::-;4426:120;4585:1;4610:53;4655:7;4646:6;4635:9;4631:22;4610:53;:::i;:::-;4600:63;;4556:117;4712:2;4738:53;4783:7;4774:6;4763:9;4759:22;4738:53;:::i;:::-;4728:63;;4683:118;4840:2;4866:53;4911:7;4902:6;4891:9;4887:22;4866:53;:::i;:::-;4856:63;;4811:118;4996:2;4985:9;4981:18;4968:32;5027:18;5019:6;5016:30;5013:117;;;5049:79;;:::i;:::-;5013:117;5154:62;5208:7;5199:6;5188:9;5184:22;5154:62;:::i;:::-;5144:72;;4939:287;4290:943;;;;;;;:::o;5239:468::-;5304:6;5312;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5614:2;5640:50;5682:7;5673:6;5662:9;5658:22;5640:50;:::i;:::-;5630:60;;5585:115;5239:468;;;;;:::o;5713:474::-;5781:6;5789;5838:2;5826:9;5817:7;5813:23;5809:32;5806:119;;;5844:79;;:::i;:::-;5806:119;5964:1;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;:::i;:::-;5979:63;;5935:117;6091:2;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6062:118;5713:474;;;;;:::o;6193:323::-;6249:6;6298:2;6286:9;6277:7;6273:23;6269:32;6266:119;;;6304:79;;:::i;:::-;6266:119;6424:1;6449:50;6491:7;6482:6;6471:9;6467:22;6449:50;:::i;:::-;6439:60;;6395:114;6193:323;;;;:::o;6522:327::-;6580:6;6629:2;6617:9;6608:7;6604:23;6600:32;6597:119;;;6635:79;;:::i;:::-;6597:119;6755:1;6780:52;6824:7;6815:6;6804:9;6800:22;6780:52;:::i;:::-;6770:62;;6726:116;6522:327;;;;:::o;6855:349::-;6924:6;6973:2;6961:9;6952:7;6948:23;6944:32;6941:119;;;6979:79;;:::i;:::-;6941:119;7099:1;7124:63;7179:7;7170:6;7159:9;7155:22;7124:63;:::i;:::-;7114:73;;7070:127;6855:349;;;;:::o;7210:529::-;7281:6;7289;7338:2;7326:9;7317:7;7313:23;7309:32;7306:119;;;7344:79;;:::i;:::-;7306:119;7492:1;7481:9;7477:17;7464:31;7522:18;7514:6;7511:30;7508:117;;;7544:79;;:::i;:::-;7508:117;7657:65;7714:7;7705:6;7694:9;7690:22;7657:65;:::i;:::-;7639:83;;;;7435:297;7210:529;;;;;:::o;7745:509::-;7814:6;7863:2;7851:9;7842:7;7838:23;7834:32;7831:119;;;7869:79;;:::i;:::-;7831:119;8017:1;8006:9;8002:17;7989:31;8047:18;8039:6;8036:30;8033:117;;;8069:79;;:::i;:::-;8033:117;8174:63;8229:7;8220:6;8209:9;8205:22;8174:63;:::i;:::-;8164:73;;7960:287;7745:509;;;;:::o;8260:329::-;8319:6;8368:2;8356:9;8347:7;8343:23;8339:32;8336:119;;;8374:79;;:::i;:::-;8336:119;8494:1;8519:53;8564:7;8555:6;8544:9;8540:22;8519:53;:::i;:::-;8509:63;;8465:117;8260:329;;;;:::o;8595:118::-;8682:24;8700:5;8682:24;:::i;:::-;8677:3;8670:37;8595:118;;:::o;8719:109::-;8800:21;8815:5;8800:21;:::i;:::-;8795:3;8788:34;8719:109;;:::o;8834:360::-;8920:3;8948:38;8980:5;8948:38;:::i;:::-;9002:70;9065:6;9060:3;9002:70;:::i;:::-;8995:77;;9081:52;9126:6;9121:3;9114:4;9107:5;9103:16;9081:52;:::i;:::-;9158:29;9180:6;9158:29;:::i;:::-;9153:3;9149:39;9142:46;;8924:270;8834:360;;;;:::o;9200:364::-;9288:3;9316:39;9349:5;9316:39;:::i;:::-;9371:71;9435:6;9430:3;9371:71;:::i;:::-;9364:78;;9451:52;9496:6;9491:3;9484:4;9477:5;9473:16;9451:52;:::i;:::-;9528:29;9550:6;9528:29;:::i;:::-;9523:3;9519:39;9512:46;;9292:272;9200:364;;;;:::o;9570:377::-;9676:3;9704:39;9737:5;9704:39;:::i;:::-;9759:89;9841:6;9836:3;9759:89;:::i;:::-;9752:96;;9857:52;9902:6;9897:3;9890:4;9883:5;9879:16;9857:52;:::i;:::-;9934:6;9929:3;9925:16;9918:23;;9680:267;9570:377;;;;:::o;9977:845::-;10080:3;10117:5;10111:12;10146:36;10172:9;10146:36;:::i;:::-;10198:89;10280:6;10275:3;10198:89;:::i;:::-;10191:96;;10318:1;10307:9;10303:17;10334:1;10329:137;;;;10480:1;10475:341;;;;10296:520;;10329:137;10413:4;10409:9;10398;10394:25;10389:3;10382:38;10449:6;10444:3;10440:16;10433:23;;10329:137;;10475:341;10542:38;10574:5;10542:38;:::i;:::-;10602:1;10616:154;10630:6;10627:1;10624:13;10616:154;;;10704:7;10698:14;10694:1;10689:3;10685:11;10678:35;10754:1;10745:7;10741:15;10730:26;;10652:4;10649:1;10645:12;10640:17;;10616:154;;;10799:6;10794:3;10790:16;10783:23;;10482:334;;10296:520;;10084:738;;9977:845;;;;:::o;10828:366::-;10970:3;10991:67;11055:2;11050:3;10991:67;:::i;:::-;10984:74;;11067:93;11156:3;11067:93;:::i;:::-;11185:2;11180:3;11176:12;11169:19;;10828:366;;;:::o;11200:::-;11342:3;11363:67;11427:2;11422:3;11363:67;:::i;:::-;11356:74;;11439:93;11528:3;11439:93;:::i;:::-;11557:2;11552:3;11548:12;11541:19;;11200:366;;;:::o;11572:::-;11714:3;11735:67;11799:2;11794:3;11735:67;:::i;:::-;11728:74;;11811:93;11900:3;11811:93;:::i;:::-;11929:2;11924:3;11920:12;11913:19;;11572:366;;;:::o;11944:::-;12086:3;12107:67;12171:2;12166:3;12107:67;:::i;:::-;12100:74;;12183:93;12272:3;12183:93;:::i;:::-;12301:2;12296:3;12292:12;12285:19;;11944:366;;;:::o;12316:::-;12458:3;12479:67;12543:2;12538:3;12479:67;:::i;:::-;12472:74;;12555:93;12644:3;12555:93;:::i;:::-;12673:2;12668:3;12664:12;12657:19;;12316:366;;;:::o;12688:::-;12830:3;12851:67;12915:2;12910:3;12851:67;:::i;:::-;12844:74;;12927:93;13016:3;12927:93;:::i;:::-;13045:2;13040:3;13036:12;13029:19;;12688:366;;;:::o;13060:::-;13202:3;13223:67;13287:2;13282:3;13223:67;:::i;:::-;13216:74;;13299:93;13388:3;13299:93;:::i;:::-;13417:2;13412:3;13408:12;13401:19;;13060:366;;;:::o;13432:::-;13574:3;13595:67;13659:2;13654:3;13595:67;:::i;:::-;13588:74;;13671:93;13760:3;13671:93;:::i;:::-;13789:2;13784:3;13780:12;13773:19;;13432:366;;;:::o;13804:::-;13946:3;13967:67;14031:2;14026:3;13967:67;:::i;:::-;13960:74;;14043:93;14132:3;14043:93;:::i;:::-;14161:2;14156:3;14152:12;14145:19;;13804:366;;;:::o;14176:::-;14318:3;14339:67;14403:2;14398:3;14339:67;:::i;:::-;14332:74;;14415:93;14504:3;14415:93;:::i;:::-;14533:2;14528:3;14524:12;14517:19;;14176:366;;;:::o;14548:365::-;14690:3;14711:66;14775:1;14770:3;14711:66;:::i;:::-;14704:73;;14786:93;14875:3;14786:93;:::i;:::-;14904:2;14899:3;14895:12;14888:19;;14548:365;;;:::o;14919:366::-;15061:3;15082:67;15146:2;15141:3;15082:67;:::i;:::-;15075:74;;15158:93;15247:3;15158:93;:::i;:::-;15276:2;15271:3;15267:12;15260:19;;14919:366;;;:::o;15291:::-;15433:3;15454:67;15518:2;15513:3;15454:67;:::i;:::-;15447:74;;15530:93;15619:3;15530:93;:::i;:::-;15648:2;15643:3;15639:12;15632:19;;15291:366;;;:::o;15663:::-;15805:3;15826:67;15890:2;15885:3;15826:67;:::i;:::-;15819:74;;15902:93;15991:3;15902:93;:::i;:::-;16020:2;16015:3;16011:12;16004:19;;15663:366;;;:::o;16035:::-;16177:3;16198:67;16262:2;16257:3;16198:67;:::i;:::-;16191:74;;16274:93;16363:3;16274:93;:::i;:::-;16392:2;16387:3;16383:12;16376:19;;16035:366;;;:::o;16407:::-;16549:3;16570:67;16634:2;16629:3;16570:67;:::i;:::-;16563:74;;16646:93;16735:3;16646:93;:::i;:::-;16764:2;16759:3;16755:12;16748:19;;16407:366;;;:::o;16779:400::-;16939:3;16960:84;17042:1;17037:3;16960:84;:::i;:::-;16953:91;;17053:93;17142:3;17053:93;:::i;:::-;17171:1;17166:3;17162:11;17155:18;;16779:400;;;:::o;17185:366::-;17327:3;17348:67;17412:2;17407:3;17348:67;:::i;:::-;17341:74;;17424:93;17513:3;17424:93;:::i;:::-;17542:2;17537:3;17533:12;17526:19;;17185:366;;;:::o;17557:::-;17699:3;17720:67;17784:2;17779:3;17720:67;:::i;:::-;17713:74;;17796:93;17885:3;17796:93;:::i;:::-;17914:2;17909:3;17905:12;17898:19;;17557:366;;;:::o;17929:398::-;18088:3;18109:83;18190:1;18185:3;18109:83;:::i;:::-;18102:90;;18201:93;18290:3;18201:93;:::i;:::-;18319:1;18314:3;18310:11;18303:18;;17929:398;;;:::o;18333:366::-;18475:3;18496:67;18560:2;18555:3;18496:67;:::i;:::-;18489:74;;18572:93;18661:3;18572:93;:::i;:::-;18690:2;18685:3;18681:12;18674:19;;18333:366;;;:::o;18705:::-;18847:3;18868:67;18932:2;18927:3;18868:67;:::i;:::-;18861:74;;18944:93;19033:3;18944:93;:::i;:::-;19062:2;19057:3;19053:12;19046:19;;18705:366;;;:::o;19077:::-;19219:3;19240:67;19304:2;19299:3;19240:67;:::i;:::-;19233:74;;19316:93;19405:3;19316:93;:::i;:::-;19434:2;19429:3;19425:12;19418:19;;19077:366;;;:::o;19449:118::-;19536:24;19554:5;19536:24;:::i;:::-;19531:3;19524:37;19449:118;;:::o;19573:695::-;19851:3;19873:92;19961:3;19952:6;19873:92;:::i;:::-;19866:99;;19982:95;20073:3;20064:6;19982:95;:::i;:::-;19975:102;;20094:148;20238:3;20094:148;:::i;:::-;20087:155;;20259:3;20252:10;;19573:695;;;;;:::o;20274:379::-;20458:3;20480:147;20623:3;20480:147;:::i;:::-;20473:154;;20644:3;20637:10;;20274:379;;;:::o;20659:222::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20803:71;20871:1;20860:9;20856:17;20847:6;20803:71;:::i;:::-;20659:222;;;;:::o;20887:640::-;21082:4;21120:3;21109:9;21105:19;21097:27;;21134:71;21202:1;21191:9;21187:17;21178:6;21134:71;:::i;:::-;21215:72;21283:2;21272:9;21268:18;21259:6;21215:72;:::i;:::-;21297;21365:2;21354:9;21350:18;21341:6;21297:72;:::i;:::-;21416:9;21410:4;21406:20;21401:2;21390:9;21386:18;21379:48;21444:76;21515:4;21506:6;21444:76;:::i;:::-;21436:84;;20887:640;;;;;;;:::o;21533:210::-;21620:4;21658:2;21647:9;21643:18;21635:26;;21671:65;21733:1;21722:9;21718:17;21709:6;21671:65;:::i;:::-;21533:210;;;;:::o;21749:313::-;21862:4;21900:2;21889:9;21885:18;21877:26;;21949:9;21943:4;21939:20;21935:1;21924:9;21920:17;21913:47;21977:78;22050:4;22041:6;21977:78;:::i;:::-;21969:86;;21749:313;;;;:::o;22068:419::-;22234:4;22272:2;22261:9;22257:18;22249:26;;22321:9;22315:4;22311:20;22307:1;22296:9;22292:17;22285:47;22349:131;22475:4;22349:131;:::i;:::-;22341:139;;22068:419;;;:::o;22493:::-;22659:4;22697:2;22686:9;22682:18;22674:26;;22746:9;22740:4;22736:20;22732:1;22721:9;22717:17;22710:47;22774:131;22900:4;22774:131;:::i;:::-;22766:139;;22493:419;;;:::o;22918:::-;23084:4;23122:2;23111:9;23107:18;23099:26;;23171:9;23165:4;23161:20;23157:1;23146:9;23142:17;23135:47;23199:131;23325:4;23199:131;:::i;:::-;23191:139;;22918:419;;;:::o;23343:::-;23509:4;23547:2;23536:9;23532:18;23524:26;;23596:9;23590:4;23586:20;23582:1;23571:9;23567:17;23560:47;23624:131;23750:4;23624:131;:::i;:::-;23616:139;;23343:419;;;:::o;23768:::-;23934:4;23972:2;23961:9;23957:18;23949:26;;24021:9;24015:4;24011:20;24007:1;23996:9;23992:17;23985:47;24049:131;24175:4;24049:131;:::i;:::-;24041:139;;23768:419;;;:::o;24193:::-;24359:4;24397:2;24386:9;24382:18;24374:26;;24446:9;24440:4;24436:20;24432:1;24421:9;24417:17;24410:47;24474:131;24600:4;24474:131;:::i;:::-;24466:139;;24193:419;;;:::o;24618:::-;24784:4;24822:2;24811:9;24807:18;24799:26;;24871:9;24865:4;24861:20;24857:1;24846:9;24842:17;24835:47;24899:131;25025:4;24899:131;:::i;:::-;24891:139;;24618:419;;;:::o;25043:::-;25209:4;25247:2;25236:9;25232:18;25224:26;;25296:9;25290:4;25286:20;25282:1;25271:9;25267:17;25260:47;25324:131;25450:4;25324:131;:::i;:::-;25316:139;;25043:419;;;:::o;25468:::-;25634:4;25672:2;25661:9;25657:18;25649:26;;25721:9;25715:4;25711:20;25707:1;25696:9;25692:17;25685:47;25749:131;25875:4;25749:131;:::i;:::-;25741:139;;25468:419;;;:::o;25893:::-;26059:4;26097:2;26086:9;26082:18;26074:26;;26146:9;26140:4;26136:20;26132:1;26121:9;26117:17;26110:47;26174:131;26300:4;26174:131;:::i;:::-;26166:139;;25893:419;;;:::o;26318:::-;26484:4;26522:2;26511:9;26507:18;26499:26;;26571:9;26565:4;26561:20;26557:1;26546:9;26542:17;26535:47;26599:131;26725:4;26599:131;:::i;:::-;26591:139;;26318:419;;;:::o;26743:::-;26909:4;26947:2;26936:9;26932:18;26924:26;;26996:9;26990:4;26986:20;26982:1;26971:9;26967:17;26960:47;27024:131;27150:4;27024:131;:::i;:::-;27016:139;;26743:419;;;:::o;27168:::-;27334:4;27372:2;27361:9;27357:18;27349:26;;27421:9;27415:4;27411:20;27407:1;27396:9;27392:17;27385:47;27449:131;27575:4;27449:131;:::i;:::-;27441:139;;27168:419;;;:::o;27593:::-;27759:4;27797:2;27786:9;27782:18;27774:26;;27846:9;27840:4;27836:20;27832:1;27821:9;27817:17;27810:47;27874:131;28000:4;27874:131;:::i;:::-;27866:139;;27593:419;;;:::o;28018:::-;28184:4;28222:2;28211:9;28207:18;28199:26;;28271:9;28265:4;28261:20;28257:1;28246:9;28242:17;28235:47;28299:131;28425:4;28299:131;:::i;:::-;28291:139;;28018:419;;;:::o;28443:::-;28609:4;28647:2;28636:9;28632:18;28624:26;;28696:9;28690:4;28686:20;28682:1;28671:9;28667:17;28660:47;28724:131;28850:4;28724:131;:::i;:::-;28716:139;;28443:419;;;:::o;28868:::-;29034:4;29072:2;29061:9;29057:18;29049:26;;29121:9;29115:4;29111:20;29107:1;29096:9;29092:17;29085:47;29149:131;29275:4;29149:131;:::i;:::-;29141:139;;28868:419;;;:::o;29293:::-;29459:4;29497:2;29486:9;29482:18;29474:26;;29546:9;29540:4;29536:20;29532:1;29521:9;29517:17;29510:47;29574:131;29700:4;29574:131;:::i;:::-;29566:139;;29293:419;;;:::o;29718:::-;29884:4;29922:2;29911:9;29907:18;29899:26;;29971:9;29965:4;29961:20;29957:1;29946:9;29942:17;29935:47;29999:131;30125:4;29999:131;:::i;:::-;29991:139;;29718:419;;;:::o;30143:::-;30309:4;30347:2;30336:9;30332:18;30324:26;;30396:9;30390:4;30386:20;30382:1;30371:9;30367:17;30360:47;30424:131;30550:4;30424:131;:::i;:::-;30416:139;;30143:419;;;:::o;30568:::-;30734:4;30772:2;30761:9;30757:18;30749:26;;30821:9;30815:4;30811:20;30807:1;30796:9;30792:17;30785:47;30849:131;30975:4;30849:131;:::i;:::-;30841:139;;30568:419;;;:::o;30993:222::-;31086:4;31124:2;31113:9;31109:18;31101:26;;31137:71;31205:1;31194:9;31190:17;31181:6;31137:71;:::i;:::-;30993:222;;;;:::o;31221:129::-;31255:6;31282:20;;:::i;:::-;31272:30;;31311:33;31339:4;31331:6;31311:33;:::i;:::-;31221:129;;;:::o;31356:75::-;31389:6;31422:2;31416:9;31406:19;;31356:75;:::o;31437:307::-;31498:4;31588:18;31580:6;31577:30;31574:56;;;31610:18;;:::i;:::-;31574:56;31648:29;31670:6;31648:29;:::i;:::-;31640:37;;31732:4;31726;31722:15;31714:23;;31437:307;;;:::o;31750:308::-;31812:4;31902:18;31894:6;31891:30;31888:56;;;31924:18;;:::i;:::-;31888:56;31962:29;31984:6;31962:29;:::i;:::-;31954:37;;32046:4;32040;32036:15;32028:23;;31750:308;;;:::o;32064:141::-;32113:4;32136:3;32128:11;;32159:3;32156:1;32149:14;32193:4;32190:1;32180:18;32172:26;;32064:141;;;:::o;32211:98::-;32262:6;32296:5;32290:12;32280:22;;32211:98;;;:::o;32315:99::-;32367:6;32401:5;32395:12;32385:22;;32315:99;;;:::o;32420:168::-;32503:11;32537:6;32532:3;32525:19;32577:4;32572:3;32568:14;32553:29;;32420:168;;;;:::o;32594:147::-;32695:11;32732:3;32717:18;;32594:147;;;;:::o;32747:169::-;32831:11;32865:6;32860:3;32853:19;32905:4;32900:3;32896:14;32881:29;;32747:169;;;;:::o;32922:148::-;33024:11;33061:3;33046:18;;32922:148;;;;:::o;33076:305::-;33116:3;33135:20;33153:1;33135:20;:::i;:::-;33130:25;;33169:20;33187:1;33169:20;:::i;:::-;33164:25;;33323:1;33255:66;33251:74;33248:1;33245:81;33242:107;;;33329:18;;:::i;:::-;33242:107;33373:1;33370;33366:9;33359:16;;33076:305;;;;:::o;33387:185::-;33427:1;33444:20;33462:1;33444:20;:::i;:::-;33439:25;;33478:20;33496:1;33478:20;:::i;:::-;33473:25;;33517:1;33507:35;;33522:18;;:::i;:::-;33507:35;33564:1;33561;33557:9;33552:14;;33387:185;;;;:::o;33578:348::-;33618:7;33641:20;33659:1;33641:20;:::i;:::-;33636:25;;33675:20;33693:1;33675:20;:::i;:::-;33670:25;;33863:1;33795:66;33791:74;33788:1;33785:81;33780:1;33773:9;33766:17;33762:105;33759:131;;;33870:18;;:::i;:::-;33759:131;33918:1;33915;33911:9;33900:20;;33578:348;;;;:::o;33932:191::-;33972:4;33992:20;34010:1;33992:20;:::i;:::-;33987:25;;34026:20;34044:1;34026:20;:::i;:::-;34021:25;;34065:1;34062;34059:8;34056:34;;;34070:18;;:::i;:::-;34056:34;34115:1;34112;34108:9;34100:17;;33932:191;;;;:::o;34129:96::-;34166:7;34195:24;34213:5;34195:24;:::i;:::-;34184:35;;34129:96;;;:::o;34231:90::-;34265:7;34308:5;34301:13;34294:21;34283:32;;34231:90;;;:::o;34327:149::-;34363:7;34403:66;34396:5;34392:78;34381:89;;34327:149;;;:::o;34482:126::-;34519:7;34559:42;34552:5;34548:54;34537:65;;34482:126;;;:::o;34614:77::-;34651:7;34680:5;34669:16;;34614:77;;;:::o;34697:154::-;34781:6;34776:3;34771;34758:30;34843:1;34834:6;34829:3;34825:16;34818:27;34697:154;;;:::o;34857:307::-;34925:1;34935:113;34949:6;34946:1;34943:13;34935:113;;;35034:1;35029:3;35025:11;35019:18;35015:1;35010:3;35006:11;34999:39;34971:2;34968:1;34964:10;34959:15;;34935:113;;;35066:6;35063:1;35060:13;35057:101;;;35146:1;35137:6;35132:3;35128:16;35121:27;35057:101;34906:258;34857:307;;;:::o;35170:320::-;35214:6;35251:1;35245:4;35241:12;35231:22;;35298:1;35292:4;35288:12;35319:18;35309:81;;35375:4;35367:6;35363:17;35353:27;;35309:81;35437:2;35429:6;35426:14;35406:18;35403:38;35400:84;;;35456:18;;:::i;:::-;35400:84;35221:269;35170:320;;;:::o;35496:281::-;35579:27;35601:4;35579:27;:::i;:::-;35571:6;35567:40;35709:6;35697:10;35694:22;35673:18;35661:10;35658:34;35655:62;35652:88;;;35720:18;;:::i;:::-;35652:88;35760:10;35756:2;35749:22;35539:238;35496:281;;:::o;35783:233::-;35822:3;35845:24;35863:5;35845:24;:::i;:::-;35836:33;;35891:66;35884:5;35881:77;35878:103;;;35961:18;;:::i;:::-;35878:103;36008:1;36001:5;35997:13;35990:20;;35783:233;;;:::o;36022:176::-;36054:1;36071:20;36089:1;36071:20;:::i;:::-;36066:25;;36105:20;36123:1;36105:20;:::i;:::-;36100:25;;36144:1;36134:35;;36149:18;;:::i;:::-;36134:35;36190:1;36187;36183:9;36178:14;;36022:176;;;;:::o;36204:180::-;36252:77;36249:1;36242:88;36349:4;36346:1;36339:15;36373:4;36370:1;36363:15;36390:180;36438:77;36435:1;36428:88;36535:4;36532:1;36525:15;36559:4;36556:1;36549:15;36576:180;36624:77;36621:1;36614:88;36721:4;36718:1;36711:15;36745:4;36742:1;36735:15;36762:180;36810:77;36807:1;36800:88;36907:4;36904:1;36897:15;36931:4;36928:1;36921:15;36948:180;36996:77;36993:1;36986:88;37093:4;37090:1;37083:15;37117:4;37114:1;37107:15;37134:117;37243:1;37240;37233:12;37257:117;37366:1;37363;37356:12;37380:117;37489:1;37486;37479:12;37503:117;37612:1;37609;37602:12;37626:117;37735:1;37732;37725:12;37749:117;37858:1;37855;37848:12;37872:102;37913:6;37964:2;37960:7;37955:2;37948:5;37944:14;37940:28;37930:38;;37872:102;;;:::o;37980:166::-;38120:18;38116:1;38108:6;38104:14;38097:42;37980:166;:::o;38152:175::-;38292:27;38288:1;38280:6;38276:14;38269:51;38152:175;:::o;38333:237::-;38473:34;38469:1;38461:6;38457:14;38450:58;38542:20;38537:2;38529:6;38525:15;38518:45;38333:237;:::o;38576:169::-;38716:21;38712:1;38704:6;38700:14;38693:45;38576:169;:::o;38751:225::-;38891:34;38887:1;38879:6;38875:14;38868:58;38960:8;38955:2;38947:6;38943:15;38936:33;38751:225;:::o;38982:224::-;39122:34;39118:1;39110:6;39106:14;39099:58;39191:7;39186:2;39178:6;39174:15;39167:32;38982:224;:::o;39212:178::-;39352:30;39348:1;39340:6;39336:14;39329:54;39212:178;:::o;39396:223::-;39536:34;39532:1;39524:6;39520:14;39513:58;39605:6;39600:2;39592:6;39588:15;39581:31;39396:223;:::o;39625:175::-;39765:27;39761:1;39753:6;39749:14;39742:51;39625:175;:::o;39806:231::-;39946:34;39942:1;39934:6;39930:14;39923:58;40015:14;40010:2;40002:6;39998:15;39991:39;39806:231;:::o;40043:158::-;40183:10;40179:1;40171:6;40167:14;40160:34;40043:158;:::o;40207:243::-;40347:34;40343:1;40335:6;40331:14;40324:58;40416:26;40411:2;40403:6;40399:15;40392:51;40207:243;:::o;40456:229::-;40596:34;40592:1;40584:6;40580:14;40573:58;40665:12;40660:2;40652:6;40648:15;40641:37;40456:229;:::o;40691:228::-;40831:34;40827:1;40819:6;40815:14;40808:58;40900:11;40895:2;40887:6;40883:15;40876:36;40691:228;:::o;40925:182::-;41065:34;41061:1;41053:6;41049:14;41042:58;40925:182;:::o;41113:231::-;41253:34;41249:1;41241:6;41237:14;41230:58;41322:14;41317:2;41309:6;41305:15;41298:39;41113:231;:::o;41350:155::-;41490:7;41486:1;41478:6;41474:14;41467:31;41350:155;:::o;41511:182::-;41651:34;41647:1;41639:6;41635:14;41628:58;41511:182;:::o;41699:220::-;41839:34;41835:1;41827:6;41823:14;41816:58;41908:3;41903:2;41895:6;41891:15;41884:28;41699:220;:::o;41925:114::-;;:::o;42045:236::-;42185:34;42181:1;42173:6;42169:14;42162:58;42254:19;42249:2;42241:6;42237:15;42230:44;42045:236;:::o;42287:171::-;42427:23;42423:1;42415:6;42411:14;42404:47;42287:171;:::o;42464:165::-;42604:17;42600:1;42592:6;42588:14;42581:41;42464:165;:::o;42635:122::-;42708:24;42726:5;42708:24;:::i;:::-;42701:5;42698:35;42688:63;;42747:1;42744;42737:12;42688:63;42635:122;:::o;42763:116::-;42833:21;42848:5;42833:21;:::i;:::-;42826:5;42823:32;42813:60;;42869:1;42866;42859:12;42813:60;42763:116;:::o;42885:120::-;42957:23;42974:5;42957:23;:::i;:::-;42950:5;42947:34;42937:62;;42995:1;42992;42985:12;42937:62;42885:120;:::o;43011:122::-;43084:24;43102:5;43084:24;:::i;:::-;43077:5;43074:35;43064:63;;43123:1;43120;43113:12;43064:63;43011:122;:::o

Swarm Source

ipfs://135f49fa54fd4f977e82afae5d87e0c4acce2872c32ea5305ff2ed264384bf83
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.