ETH Price: $2,445.61 (+1.84%)

Token

The Lost Kids (LOST)
 

Overview

Max Total Supply

200 LOST

Holders

49

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 LOST
0xe6AC0069ee75B4A9bc1f1A669983e52cF0F1cB15
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TheLostKids

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-15
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.14;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/introspection/IERC165.sol

interface IERC165 {

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

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol

interface IERC721 is IERC165 {

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

    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );

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

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

// File: @openzeppelin/contracts/token/ERC721/IERC721Metadata.sol

interface IERC721Metadata is IERC721 {

    function name() external view returns (string memory);


    function symbol() external view returns (string memory);


    function tokenURI(uint256 tokenId) external view returns (string memory);
}

// File: @openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol

interface IERC721Enumerable is IERC721 {

    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256 tokenId);

    function tokenByIndex(uint256 index) external view returns (uint256);
}

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

// File: @openzeppelin/contracts/introspection/ERC165.sol

abstract contract ERC165 is IERC165 {

    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;

    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor() {
        // Derived contracts need only register support for their own interfaces,
        // we register support for ERC165 itself here
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal virtual {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}

// File: @openzeppelin/contracts/math/SafeMath.sol

library SafeMath {

    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {

        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/utils/Address.sol

library Address {

    function isContract(address account) internal view returns (bool) {

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

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

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

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/utils/EnumerableSet.sol

library EnumerableSet {


    struct Set {
        // Storage of set values
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {


            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;


            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = toDeleteIndex + 1;

            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value)
        private
        view
        returns (bool)
    {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index)
        private
        view
        returns (bytes32)
    {
        require(
            set._values.length > index,
            "EnumerableSet: index out of bounds"
        );
        return set._values[index];
    }

    // Bytes32Set

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value)
        internal
        returns (bool)
    {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index)
        internal
        view
        returns (bytes32)
    {
        return _at(set._inner, index);
    }

    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index)
        internal
        view
        returns (address)
    {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    // UintSet

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index)
        internal
        view
        returns (uint256)
    {
        return uint256(_at(set._inner, index));
    }
}

// File: @openzeppelin/contracts/utils/EnumerableMap.sol

library EnumerableMap {


    struct MapEntry {
        bytes32 _key;
        bytes32 _value;
    }

    struct Map {
        // Storage of map keys and values
        MapEntry[] _entries;

        mapping(bytes32 => uint256) _indexes;
    }

    function _set(
        Map storage map,
        bytes32 key,
        bytes32 value
    ) private returns (bool) {
        // We read and store the key's index to prevent multiple reads from the same storage slot
        uint256 keyIndex = map._indexes[key];

        if (keyIndex == 0) {
            // Equivalent to !contains(map, key)
            map._entries.push(MapEntry({_key: key, _value: value}));

            map._indexes[key] = map._entries.length;
            return true;
        } else {
            map._entries[keyIndex - 1]._value = value;
            return false;
        }
    }

    function _remove(Map storage map, bytes32 key) private returns (bool) {
        // We read and store the key's index to prevent multiple reads from the same storage slot
        uint256 keyIndex = map._indexes[key];

        if (keyIndex != 0) {

            uint256 toDeleteIndex = keyIndex - 1;
            uint256 lastIndex = map._entries.length - 1;

            MapEntry storage lastEntry = map._entries[lastIndex];

            // Move the last entry to the index where the entry to delete is
            map._entries[toDeleteIndex] = lastEntry;
            // Update the index for the moved entry
            map._indexes[lastEntry._key] = toDeleteIndex + 1;
            // All indexes are 1-based

            // Delete the slot where the moved entry was stored
            map._entries.pop();

            // Delete the index for the deleted slot
            delete map._indexes[key];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Map storage map, bytes32 key)
        private
        view
        returns (bool)
    {
        return map._indexes[key] != 0;
    }

    function _length(Map storage map) private view returns (uint256) {
        return map._entries.length;
    }

    function _at(Map storage map, uint256 index)
        private
        view
        returns (bytes32, bytes32)
    {
        require(
            map._entries.length > index,
            "EnumerableMap: index out of bounds"
        );

        MapEntry storage entry = map._entries[index];
        return (entry._key, entry._value);
    }

    function _tryGet(Map storage map, bytes32 key)
        private
        view
        returns (bool, bytes32)
    {
        uint256 keyIndex = map._indexes[key];
        if (keyIndex == 0) return (false, 0);
        // Equivalent to contains(map, key)
        return (true, map._entries[keyIndex - 1]._value);
        // All indexes are 1-based
    }

    function _get(Map storage map, bytes32 key) private view returns (bytes32) {
        uint256 keyIndex = map._indexes[key];
        require(keyIndex != 0, "EnumerableMap: nonexistent key");
        // Equivalent to contains(map, key)
        return map._entries[keyIndex - 1]._value;
        // All indexes are 1-based
    }

    function _get(
        Map storage map,
        bytes32 key,
        string memory errorMessage
    ) private view returns (bytes32) {
        uint256 keyIndex = map._indexes[key];
        require(keyIndex != 0, errorMessage);
        // Equivalent to contains(map, key)
        return map._entries[keyIndex - 1]._value;
        // All indexes are 1-based
    }

    // UintToAddressMap

    struct UintToAddressMap {
        Map _inner;
    }

    function set(
        UintToAddressMap storage map,
        uint256 key,
        address value
    ) internal returns (bool) {
        return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));
    }

    function remove(UintToAddressMap storage map, uint256 key)
        internal
        returns (bool)
    {
        return _remove(map._inner, bytes32(key));
    }

    function contains(UintToAddressMap storage map, uint256 key)
        internal
        view
        returns (bool)
    {
        return _contains(map._inner, bytes32(key));
    }

    function length(UintToAddressMap storage map)
        internal
        view
        returns (uint256)
    {
        return _length(map._inner);
    }

    function at(UintToAddressMap storage map, uint256 index)
        internal
        view
        returns (uint256, address)
    {
        (bytes32 key, bytes32 value) = _at(map._inner, index);
        return (uint256(key), address(uint160(uint256(value))));
    }

    function tryGet(UintToAddressMap storage map, uint256 key)
        internal
        view
        returns (bool, address)
    {
        (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));
        return (success, address(uint160(uint256(value))));
    }

    function get(UintToAddressMap storage map, uint256 key)
        internal
        view
        returns (address)
    {
        return address(uint160(uint256(_get(map._inner, bytes32(key)))));
    }

    function get(
        UintToAddressMap storage map,
        uint256 key,
        string memory errorMessage
    ) internal view returns (address) {
        return
            address(
                uint160(uint256(_get(map._inner, bytes32(key), errorMessage)))
            );
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol

library Strings {
    /**
     * @dev Converts a `uint256` to its ASCII `string` representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {

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

// File: @openzeppelin/contracts/token/ERC721/ERC721.sol

contract ERC721 is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using SafeMath for uint256;
    using Address for address;
    using EnumerableSet for EnumerableSet.UintSet;
    using EnumerableMap for EnumerableMap.UintToAddressMap;
    using Strings for uint256;

    bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;

    // Mapping from holder address to their (enumerable) set of owned tokens
    mapping(address => EnumerableSet.UintSet) private _holderTokens;

    // Enumerable mapping from token ids to their owners
    EnumerableMap.UintToAddressMap private _tokenOwners;

    // 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;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Optional mapping for token URIs
    mapping(uint256 => string) private _tokenURIs;

    // Base URI
    string private _baseURI;

    bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;

    bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;

    bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;

        // register the supported interfaces to conform to ERC721 via ERC165
        _registerInterface(_INTERFACE_ID_ERC721);
        _registerInterface(_INTERFACE_ID_ERC721_METADATA);
        _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);
    }

    function balanceOf(address owner)
        public
        view
        virtual
        override
        returns (uint256)
    {
        require(
            owner != address(0),
            "ERC721: balance query for the zero address"
        );
        return _holderTokens[owner].length();
    }

    function ownerOf(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        return
            _tokenOwners.get(
                tokenId,
                "ERC721: owner query for nonexistent token"
            );
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = baseURI();

        // If there is no base URI, return the token URI.
        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }
        // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.
        return string(abi.encodePacked(base, tokenId.toString()));
    }

    function baseURI() public view virtual returns (string memory) {
        return _baseURI;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _holderTokens[owner].at(index);
    }

    function totalSupply() public view virtual override returns (uint256) {
        // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds
        return _tokenOwners.length();
    }

    function tokenByIndex(uint256 index)
        public
        view
        virtual
        override
        returns (uint256)
    {
        (uint256 tokenId, ) = _tokenOwners.at(index);
        return tokenId;
    }

    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 ||
                ERC721.isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        require(operator != _msgSender(), "ERC721: approve to caller");

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

    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }

    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);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    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);
    }

    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"
        );
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _tokenOwners.contains(tokenId);
    }

    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 ||
            ERC721.isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    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"
        );
    }

    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);

        _holderTokens[to].add(tokenId);

        _tokenOwners.set(tokenId, to);

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

    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);
        // internal owner

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

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

        // Clear metadata (if any)
        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }

        _holderTokens[owner].remove(tokenId);

        _tokenOwners.remove(tokenId);

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

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(
            ERC721.ownerOf(tokenId) == from,
            "ERC721: transfer of token that is not own"
        );
        // internal 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);

        _holderTokens[from].remove(tokenId);
        _holderTokens[to].add(tokenId);

        _tokenOwners.set(tokenId, to);

        emit Transfer(from, to, tokenId);
    }

    function _setTokenURI(uint256 tokenId, string memory _tokenURI)
        internal
        virtual
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI set of nonexistent token"
        );
        _tokenURIs[tokenId] = _tokenURI;
    }

    function _setBaseURI(string memory baseURI_) internal virtual {
        _baseURI = baseURI_;
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (!to.isContract()) {
            return true;
        }
        bytes memory returndata = to.functionCall(
            abi.encodeWithSelector(
                IERC721Receiver(to).onERC721Received.selector,
                _msgSender(),
                from,
                tokenId,
                _data
            ),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
        bytes4 retval = abi.decode(returndata, (bytes4));
        return (retval == _ERC721_RECEIVED);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
        // internal owner
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

// File: @openzeppelin/contracts/access/Ownable.sol

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

// File: contracts/TheLostKids.sol

contract TheLostKids is ERC721, Ownable {
    using SafeMath for uint256;
    using Strings for uint256;

    uint256 public startingIndexBlock;
    uint256 public startingIndex;
    uint256 public privateMintPrice = 0 ether;
    uint256 public publicMintPrice = 1 ether;
    uint256 public MAX_MINT_WHITELIST = 2;
    uint256 public MAX_ELEMENTS = 200;
    uint256 public REVEAL_TIMESTAMP;

    bool public revealed = false;

    string public notRevealedUri = "";

    string public PROVENANCE_HASH = "";
    bool public saleIsActive = false;
    bool public privateSaleIsActive = true;

    struct Whitelist {
        address addr;
        uint256 claimAmount;
        uint256 hasMinted;
    }

    mapping(address => Whitelist) public whitelist;
    mapping(address => Whitelist) public winnerlist;

    address[] whitelistAddr;
    address[] winnerlistAddr;

    constructor(
        string memory _name,
        string memory _symbol,
        string memory _initBaseURI,
        string memory _initNotRevealedUri
    ) ERC721(_name, _symbol) {
        REVEAL_TIMESTAMP = block.timestamp;
        _setBaseURI(_initBaseURI);
        setNotRevealedURI(_initNotRevealedUri);
    }

    function tokensOfOwner(address _owner)
        external
        view
        returns (uint256[] memory)
    {
        uint256 tokenCount = balanceOf(_owner);
        if (tokenCount == 0) {
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](tokenCount);
            for (uint256 index; index < tokenCount; index++) {
                result[index] = tokenOfOwnerByIndex(_owner, index);
            }
            return result;
        }
    }

    function exists(uint256 _tokenId) public view returns (bool) {
        return _exists(_tokenId);
    }

    function setPublicMintPrice(uint256 _price) external onlyOwner {
        publicMintPrice = _price;
    }

    function reserve(uint256 _count) public onlyOwner {
        uint256 total = totalSupply();
        require(total + _count <= MAX_ELEMENTS, "Exceeded");
        for (uint256 i = 0; i < _count; i++) {
            _safeMint(msg.sender, total + i);
        }
    }

    function setRevealTimestamp(uint256 _revealTimeStamp) external onlyOwner {
        REVEAL_TIMESTAMP = _revealTimeStamp;
    }

    function setProvenanceHash(string memory _provenanceHash)
        external
        onlyOwner
    {
        PROVENANCE_HASH = _provenanceHash;
    }

    function setBaseURI(string memory baseURI) external onlyOwner {
        _setBaseURI(baseURI);
    }

    function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
        notRevealedUri = _notRevealedURI;
    }

    //only owner
    function reveal() public onlyOwner {
        revealed = true;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );
        require(tokenId <= totalSupply(), "URI query for nonexistent token");
        if (revealed == false) {
            return notRevealedUri;
        }
        string memory base = baseURI();
        return string(abi.encodePacked(base, "/", tokenId.toString(), ".json"));
    }

    function flipSaleState() public onlyOwner {
        saleIsActive = !saleIsActive;
    }

    function flipPrivateSaleState() public onlyOwner {
        privateSaleIsActive = !privateSaleIsActive;
    }

    function mint(uint256 _count) public payable {
        uint256 total = totalSupply();
        require(saleIsActive, "Sale must be active to mint");
        require((total + _count) <= MAX_ELEMENTS, "Max limit");

        if (privateSaleIsActive) {
            require(
                (privateMintPrice * _count) <= msg.value,
                "Value below price"
            );
            require(_count <= MAX_MINT_WHITELIST, "Minting too Many");
            require(isWhitelisted(msg.sender), "Is not whitelisted");
            require(
                whitelist[msg.sender].hasMinted.add(_count) <=
                    MAX_MINT_WHITELIST,
                "Can only mint 2 Free Kids"
            );
            whitelist[msg.sender].hasMinted = whitelist[msg.sender]
                .hasMinted
                .add(_count);
        } else {
            require(
                (publicMintPrice * _count) <= msg.value,
                "Value below price"
            );
        }

        for (uint256 i = 0; i < _count; i++) {
            uint256 mintIndex = totalSupply() + 1;
            if (totalSupply() < MAX_ELEMENTS) {
                _safeMint(msg.sender, mintIndex);
            }
        }

        // If we haven't set the starting index and this is either
        // 1) the last saleable token or
        // 2) the first token to be sold after the end of pre-sale, set the starting index block
        if (
            startingIndexBlock == 0 &&
            (totalSupply() == MAX_ELEMENTS ||
                block.timestamp >= REVEAL_TIMESTAMP)
        ) {
            startingIndexBlock = block.number;
        }
    }


    function freeMint(uint256 _count) public {
        uint256 total = totalSupply();
        require(isWinnerlisted(msg.sender), "Is not winnerlisted");
        require(saleIsActive, "Sale must be active to mint");
        require((total + _count) <= MAX_ELEMENTS, "Exceeds max supply");
        require(
            winnerlist[msg.sender].claimAmount > 0,
            "You have no amount to claim"
        );
        require(
            _count <= winnerlist[msg.sender].claimAmount,
            "You claim amount exceeded"
        );

        for (uint256 i = 0; i < _count; i++) {
            uint256 mintIndex = totalSupply() + 1;
            if (totalSupply() < MAX_ELEMENTS) {
                _safeMint(msg.sender, mintIndex);
            }
        }

        winnerlist[msg.sender].claimAmount =
            winnerlist[msg.sender].claimAmount -
            _count;

        if (
            startingIndexBlock == 0 &&
            (totalSupply() == MAX_ELEMENTS ||
                block.timestamp >= REVEAL_TIMESTAMP)
        ) {
            startingIndexBlock = block.number;
        }
    }

    function setStartingIndex() external onlyOwner {
        require(startingIndex == 0, "Starting index is already set");
        require(startingIndexBlock != 0, "Starting index block must be set");

        startingIndex = uint256(blockhash(startingIndexBlock)) % MAX_ELEMENTS;
        // Just a sanity case in the worst case if this function is called late (EVM only stores last 256 block hashes)
        if ((block.number - startingIndexBlock) > 255) {
            startingIndex = uint256(blockhash(block.number - 1)) % MAX_ELEMENTS;
        }
        // Prevent default sequence
        if (startingIndex == 0) {
            startingIndex = startingIndex + 1;
        }
    }

    function setWhitelistAddr(address[] memory addrs) public onlyOwner {
        whitelistAddr = addrs;
        for (uint256 i = 0; i < whitelistAddr.length; i++) {
            addAddressToWhitelist(whitelistAddr[i]);
        }
    }

    function emergencySetStartingIndexBlock() external onlyOwner {
        require(startingIndex == 0, "Starting index is already set");

        startingIndexBlock = block.number;
    }

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

    function partialWithdraw(uint256 _amount, address payable _to)
        external
        onlyOwner
    {
        require(_amount > 0, "Withdraw must be greater than 0");
        require(_amount <= address(this).balance, "Amount too high");
        (bool success, ) = _to.call{value: _amount}("");
        require(success);
    }

    function addAddressToWhitelist(address addr)
        public
        onlyOwner
        returns (bool success)
    {
        require(!isWhitelisted(addr), "Already whitelisted");
        whitelist[addr].addr = addr;
        success = true;
    }

    function isWhitelisted(address addr)
        public
        view
        returns (bool isWhiteListed)
    {
        return whitelist[addr].addr == addr;
    }

    function addAddressToWinnerlist(address addr, uint256 claimAmount)
        public
        onlyOwner
        returns (bool success)
    {
        require(!isWinnerlisted(addr), "Already winnerlisted");
        winnerlist[addr].addr = addr;
        winnerlist[addr].claimAmount = claimAmount;
        winnerlist[addr].hasMinted = 0;
        success = true;
    }

    function isWinnerlisted(address addr)
        public
        view
        returns (bool isWinnerListed)
    {
        return winnerlist[addr].addr == addr;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","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":[],"name":"MAX_ELEMENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINT_WHITELIST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROVENANCE_HASH","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REVEAL_TIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"addAddressToWhitelist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"claimAmount","type":"uint256"}],"name":"addAddressToWinnerlist","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencySetStartingIndexBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPrivateSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"isWhiteListed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isWinnerlisted","outputs":[{"internalType":"bool","name":"isWinnerListed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","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":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address payable","name":"_to","type":"address"}],"name":"partialWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"privateMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"reserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_provenanceHash","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPublicMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_revealTimeStamp","type":"uint256"}],"name":"setRevealTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setStartingIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"setWhitelistAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startingIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startingIndexBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"claimAmount","type":"uint256"},{"internalType":"uint256","name":"hasMinted","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"winnerlist","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"claimAmount","type":"uint256"},{"internalType":"uint256","name":"hasMinted","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6000600d819055670de0b6b3a7640000600e556002600f5560c86010556012805460ff1916905560a0604081905260808290526200004191601391906200028b565b5060408051602081019182905260009081905262000062916014916200028b565b506015805461ffff19166101001790553480156200007f57600080fd5b5060405162003a7a38038062003a7a833981016040819052620000a291620003fe565b8383620000b66301ffc9a760e01b62000181565b8151620000cb9060069060208501906200028b565b508051620000e19060079060208401906200028b565b50620000f46380ac58cd60e01b62000181565b62000106635b5e139f60e01b62000181565b6200011863780e9d6360e01b62000181565b5050600a80546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350426011556200016c8262000206565b62000177816200021f565b50505050620004f3565b6001600160e01b03198082169003620001e15760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064015b60405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b80516200021b9060099060208401906200028b565b5050565b600a546001600160a01b031633146200027b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001d8565b80516200021b9060139060208401905b8280546200029990620004b7565b90600052602060002090601f016020900481019282620002bd576000855562000308565b82601f10620002d857805160ff191683800117855562000308565b8280016001018555821562000308579182015b8281111562000308578251825591602001919060010190620002eb565b50620003169291506200031a565b5090565b5b808211156200031657600081556001016200031b565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200035957600080fd5b81516001600160401b038082111562000376576200037662000331565b604051601f8301601f19908116603f01168101908282118183101715620003a157620003a162000331565b81604052838152602092508683858801011115620003be57600080fd5b600091505b83821015620003e25785820183015181830184015290820190620003c3565b83821115620003f45760008385830101525b9695505050505050565b600080600080608085870312156200041557600080fd5b84516001600160401b03808211156200042d57600080fd5b6200043b8883890162000347565b955060208701519150808211156200045257600080fd5b620004608883890162000347565b945060408701519150808211156200047757600080fd5b620004858883890162000347565b935060608701519150808211156200049c57600080fd5b50620004ab8782880162000347565b91505092959194509250565b600181811c90821680620004cc57607f821691505b602082108103620004ed57634e487b7160e01b600052602260045260246000fd5b50919050565b61357780620005036000396000f3fe60806040526004361061036a5760003560e01c80636c0360eb116101c6578063a475b5dd116100f7578063e985e9c511610095578063f2c4ce1e1161006f578063f2c4ce1e14610a30578063f2fde38b14610a50578063f571d67c14610a70578063ff1b655614610aac57600080fd5b8063e985e9c5146109b8578063e986655014610a01578063eb8d244414610a1657600080fd5b8063cb774d47116100d1578063cb774d4714610956578063cd7d508f1461096c578063dc53fd921461098c578063e36d6498146109a257600080fd5b8063a475b5dd14610901578063b88d4fde14610916578063c87b56dd1461093657600080fd5b8063819b25ba1161016457806395d89b411161013e57806395d89b41146108735780639b19251a14610888578063a0712d68146108ce578063a22cb465146108e157600080fd5b8063819b25ba146108085780638462151c146108285780638da5cb5b1461085557600080fd5b8063738c69a6116101a0578063738c69a6146107485780637b9417c8146107b35780637c928fe9146107d35780637d17fcbe146107f357600080fd5b80636c0360eb146106fe57806370a0823114610713578063715018a61461073357600080fd5b80632f745c59116102a05780634f558e791161023e57806355f804b31161021857806355f804b31461068857806358941a4d146106a85780635d82cf6e146106be5780636352211e146106de57600080fd5b80634f558e791461062e5780634f6ccce71461064e578063518302271461066e57600080fd5b80633719e3b01161027a5780633719e3b0146105a85780633af32abf146105bd5780633ccfd60b146105f957806342842e0e1461060e57600080fd5b80632f745c591461055d57806334918dfd1461057d5780633502a7161461059257600080fd5b8063095ea7b31161030d57806318160ddd116102e757806318160ddd146104f257806318e20a38146105075780631d97f38e1461051d57806323b872dd1461053d57600080fd5b8063095ea7b31461049257806310969523146104b257806314967837146104d257600080fd5b806304737a011161034957806304737a011461040457806306fdde0314610423578063081812fc14610445578063081c8c441461047d57600080fd5b806204348e1461036f578063018a2c371461039857806301ffc9a7146103ba575b600080fd5b34801561037b57600080fd5b50610385600d5481565b6040519081526020015b60405180910390f35b3480156103a457600080fd5b506103b86103b3366004612dea565b610ac1565b005b3480156103c657600080fd5b506103f46103d5366004612e19565b6001600160e01b03191660009081526020819052604090205460ff1690565b604051901515815260200161038f565b34801561041057600080fd5b506015546103f490610100900460ff1681565b34801561042f57600080fd5b50610438610af9565b60405161038f9190612e8e565b34801561045157600080fd5b50610465610460366004612dea565b610b8b565b6040516001600160a01b03909116815260200161038f565b34801561048957600080fd5b50610438610c13565b34801561049e57600080fd5b506103b86104ad366004612eb6565b610ca1565b3480156104be57600080fd5b506103b86104cd366004612f81565b610db6565b3480156104de57600080fd5b506103f46104ed366004612eb6565b610df7565b3480156104fe57600080fd5b50610385610ec2565b34801561051357600080fd5b5061038560115481565b34801561052957600080fd5b506103b8610538366004612fca565b610ed3565b34801561054957600080fd5b506103b8610558366004612ffa565b610fef565b34801561056957600080fd5b50610385610578366004612eb6565b611020565b34801561058957600080fd5b506103b861104b565b34801561059e57600080fd5b5061038560105481565b3480156105b457600080fd5b506103b8611089565b3480156105c957600080fd5b506103f46105d836600461303b565b6001600160a01b039081166000818152601660205260409020549091161490565b34801561060557600080fd5b506103b86110d0565b34801561061a57600080fd5b506103b8610629366004612ffa565b611151565b34801561063a57600080fd5b506103f4610649366004612dea565b61116c565b34801561065a57600080fd5b50610385610669366004612dea565b611177565b34801561067a57600080fd5b506012546103f49060ff1681565b34801561069457600080fd5b506103b86106a3366004612f81565b61118d565b3480156106b457600080fd5b50610385600f5481565b3480156106ca57600080fd5b506103b86106d9366004612dea565b6111c3565b3480156106ea57600080fd5b506104656106f9366004612dea565b6111f2565b34801561070a57600080fd5b5061043861121a565b34801561071f57600080fd5b5061038561072e36600461303b565b611229565b34801561073f57600080fd5b506103b86112b5565b34801561075457600080fd5b5061078e61076336600461303b565b6017602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161038f565b3480156107bf57600080fd5b506103f46107ce36600461303b565b611329565b3480156107df57600080fd5b506103b86107ee366004612dea565b6113e4565b3480156107ff57600080fd5b506103b8611665565b34801561081457600080fd5b506103b8610823366004612dea565b6116e5565b34801561083457600080fd5b5061084861084336600461303b565b611792565b60405161038f9190613058565b34801561086157600080fd5b50600a546001600160a01b0316610465565b34801561087f57600080fd5b50610438611850565b34801561089457600080fd5b5061078e6108a336600461303b565b6016602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b6103b86108dc366004612dea565b61185f565b3480156108ed57600080fd5b506103b86108fc36600461309c565b611b61565b34801561090d57600080fd5b506103b8611c25565b34801561092257600080fd5b506103b86109313660046130cf565b611c5e565b34801561094257600080fd5b50610438610951366004612dea565b611c96565b34801561096257600080fd5b50610385600c5481565b34801561097857600080fd5b506103b861098736600461314f565b611e3b565b34801561099857600080fd5b50610385600e5481565b3480156109ae57600080fd5b50610385600b5481565b3480156109c457600080fd5b506103f46109d3366004613201565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a0d57600080fd5b506103b8611ec9565b348015610a2257600080fd5b506015546103f49060ff1681565b348015610a3c57600080fd5b506103b8610a4b366004612f81565b611ffa565b348015610a5c57600080fd5b506103b8610a6b36600461303b565b612037565b348015610a7c57600080fd5b506103f4610a8b36600461303b565b6001600160a01b039081166000818152601760205260409020549091161490565b348015610ab857600080fd5b50610438612122565b600a546001600160a01b03163314610af45760405162461bcd60e51b8152600401610aeb9061322f565b60405180910390fd5b601155565b606060068054610b0890613264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3490613264565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b5050505050905090565b6000610b968261212f565b610bf75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aeb565b506000908152600460205260409020546001600160a01b031690565b60138054610c2090613264565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4c90613264565b8015610c995780601f10610c6e57610100808354040283529160200191610c99565b820191906000526020600020905b815481529060010190602001808311610c7c57829003601f168201915b505050505081565b6000610cac826111f2565b9050806001600160a01b0316836001600160a01b031603610d195760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610aeb565b336001600160a01b0382161480610d355750610d3581336109d3565b610da75760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610aeb565b610db1838361213c565b505050565b600a546001600160a01b03163314610de05760405162461bcd60e51b8152600401610aeb9061322f565b8051610df3906014906020840190612cfc565b5050565b600a546000906001600160a01b03163314610e245760405162461bcd60e51b8152600401610aeb9061322f565b6001600160a01b0380841660008181526017602052604090205490911603610e855760405162461bcd60e51b8152602060048201526014602482015273105b1c9958591e481dda5b9b995c9b1a5cdd195960621b6044820152606401610aeb565b506001600160a01b03909116600081815260176020526040812080546001600160a01b031916909217825560018083019390935560029091015590565b6000610ece60026121aa565b905090565b600a546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610aeb9061322f565b60008211610f4d5760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177206d7573742062652067726561746572207468616e2030006044820152606401610aeb565b47821115610f8f5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aeb565b6000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5050905080610db157600080fd5b610ff933826121b4565b6110155760405162461bcd60e51b8152600401610aeb90613298565b610db183838361229e565b6001600160a01b0382166000908152600160205260408120611042908361241f565b90505b92915050565b600a546001600160a01b031633146110755760405162461bcd60e51b8152600401610aeb9061322f565b6015805460ff19811660ff90911615179055565b600a546001600160a01b031633146110b35760405162461bcd60e51b8152600401610aeb9061322f565b6015805461ff001981166101009182900460ff1615909102179055565b600a546001600160a01b031633146110fa5760405162461bcd60e51b8152600401610aeb9061322f565b6040514790600090339083908381818185875af1925050503d806000811461113e576040519150601f19603f3d011682016040523d82523d6000602084013e611143565b606091505b5050905080610df357600080fd5b610db183838360405180602001604052806000815250611c5e565b60006110458261212f565b60008061118560028461242b565b509392505050565b600a546001600160a01b031633146111b75760405162461bcd60e51b8152600401610aeb9061322f565b6111c081612447565b50565b600a546001600160a01b031633146111ed5760405162461bcd60e51b8152600401610aeb9061322f565b600e55565b600061104582604051806060016040528060298152602001613519602991396002919061245a565b606060098054610b0890613264565b60006001600160a01b0382166112945760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610aeb565b6001600160a01b0382166000908152600160205260409020611045906121aa565b600a546001600160a01b031633146112df5760405162461bcd60e51b8152600401610aeb9061322f565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546000906001600160a01b031633146113565760405162461bcd60e51b8152600401610aeb9061322f565b6001600160a01b03808316600081815260166020526040902054909116036113b65760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481dda1a5d195b1a5cdd1959606a1b6044820152606401610aeb565b506001600160a01b0316600081815260166020526040902080546001600160a01b0319169091179055600190565b60006113ee610ec2565b336000818152601760205260409020549192506001600160a01b039091161461144f5760405162461bcd60e51b8152602060048201526013602482015272125cc81b9bdd081dda5b9b995c9b1a5cdd1959606a1b6044820152606401610aeb565b60155460ff166114a15760405162461bcd60e51b815260206004820152601b60248201527f53616c65206d7573742062652061637469766520746f206d696e7400000000006044820152606401610aeb565b6010546114ae83836132ff565b11156114f15760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610aeb565b336000908152601760205260409020600101546115505760405162461bcd60e51b815260206004820152601b60248201527f596f752068617665206e6f20616d6f756e7420746f20636c61696d00000000006044820152606401610aeb565b336000908152601760205260409020600101548211156115b25760405162461bcd60e51b815260206004820152601960248201527f596f7520636c61696d20616d6f756e74206578636565646564000000000000006044820152606401610aeb565b60005b828110156116025760006115c7610ec2565b6115d29060016132ff565b90506010546115df610ec2565b10156115ef576115ef3382612471565b50806115fa81613317565b9150506115b5565b5033600090815260176020526040902060010154611621908390613330565b33600090815260176020526040902060010155600b54158015611658575060105461164a610ec2565b148061165857506011544210155b15610df35743600b555050565b600a546001600160a01b0316331461168f5760405162461bcd60e51b8152600401610aeb9061322f565b600c54156116df5760405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606401610aeb565b43600b55565b600a546001600160a01b0316331461170f5760405162461bcd60e51b8152600401610aeb9061322f565b6000611719610ec2565b60105490915061172983836132ff565b11156117625760405162461bcd60e51b8152602060048201526008602482015267115e18d95959195960c21b6044820152606401610aeb565b60005b82811015610db1576117803361177b83856132ff565b612471565b8061178a81613317565b915050611765565b6060600061179f83611229565b9050806000036117bf576040805160008082526020820190925290611185565b60008167ffffffffffffffff8111156117da576117da612ee2565b604051908082528060200260200182016040528015611803578160200160208202803683370190505b50905060005b828110156111855761181b8582611020565b82828151811061182d5761182d613347565b60209081029190910101528061184281613317565b915050611809565b50919050565b606060078054610b0890613264565b6000611869610ec2565b60155490915060ff166118be5760405162461bcd60e51b815260206004820152601b60248201527f53616c65206d7573742062652061637469766520746f206d696e7400000000006044820152606401610aeb565b6010546118cb83836132ff565b11156119055760405162461bcd60e51b815260206004820152600960248201526813585e081b1a5b5a5d60ba1b6044820152606401610aeb565b601554610100900460ff1615611aa9573482600d54611924919061335d565b11156119665760405162461bcd60e51b815260206004820152601160248201527056616c75652062656c6f7720707269636560781b6044820152606401610aeb565b600f548211156119ab5760405162461bcd60e51b815260206004820152601060248201526f4d696e74696e6720746f6f204d616e7960801b6044820152606401610aeb565b336000818152601660205260409020546001600160a01b031614611a065760405162461bcd60e51b8152602060048201526012602482015271125cc81b9bdd081dda1a5d195b1a5cdd195960721b6044820152606401610aeb565b600f5433600090815260166020526040902060020154611a26908461248b565b1115611a745760405162461bcd60e51b815260206004820152601960248201527f43616e206f6e6c79206d696e7420322046726565204b696473000000000000006044820152606401610aeb565b33600090815260166020526040902060020154611a91908361248b565b33600090815260166020526040902060020155611afa565b3482600e54611ab8919061335d565b1115611afa5760405162461bcd60e51b815260206004820152601160248201527056616c75652062656c6f7720707269636560781b6044820152606401610aeb565b60005b82811015611b4a576000611b0f610ec2565b611b1a9060016132ff565b9050601054611b27610ec2565b1015611b3757611b373382612471565b5080611b4281613317565b915050611afd565b50600b54158015611658575060105461164a610ec2565b336001600160a01b03831603611bb95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610aeb565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b03163314611c4f5760405162461bcd60e51b8152600401610aeb9061322f565b6012805460ff19166001179055565b611c6833836121b4565b611c845760405162461bcd60e51b8152600401610aeb90613298565b611c90848484846124ea565b50505050565b6060611ca18261212f565b611d055760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610aeb565b611d0d610ec2565b821115611d5c5760405162461bcd60e51b815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606401610aeb565b60125460ff161515600003611dfd5760138054611d7890613264565b80601f0160208091040260200160405190810160405280929190818152602001828054611da490613264565b8015611df15780601f10611dc657610100808354040283529160200191611df1565b820191906000526020600020905b815481529060010190602001808311611dd457829003601f168201915b50505050509050919050565b6000611e0761121a565b905080611e138461251d565b604051602001611e2492919061337c565b604051602081830303815290604052915050919050565b600a546001600160a01b03163314611e655760405162461bcd60e51b8152600401610aeb9061322f565b8051611e78906018906020840190612d80565b5060005b601854811015610df357611eb660188281548110611e9c57611e9c613347565b6000918252602090912001546001600160a01b0316611329565b5080611ec181613317565b915050611e7c565b600a546001600160a01b03163314611ef35760405162461bcd60e51b8152600401610aeb9061322f565b600c5415611f435760405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606401610aeb565b600b54600003611f955760405162461bcd60e51b815260206004820181905260248201527f5374617274696e6720696e64657820626c6f636b206d757374206265207365746044820152606401610aeb565b601054600b54611fa69190406133e0565b600c55600b5460ff90611fb99043613330565b1115611fdc57601054611fcd600143613330565b611fd89190406133e0565b600c555b600c54600003611ff857600c54611ff49060016132ff565b600c555b565b600a546001600160a01b031633146120245760405162461bcd60e51b8152600401610aeb9061322f565b8051610df3906013906020840190612cfc565b600a546001600160a01b031633146120615760405162461bcd60e51b8152600401610aeb9061322f565b6001600160a01b0381166120c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aeb565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60148054610c2090613264565b600061104560028361261e565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612171826111f2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611045825490565b60006121bf8261212f565b6122205760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aeb565b600061222b836111f2565b9050806001600160a01b0316846001600160a01b031614806122665750836001600160a01b031661225b84610b8b565b6001600160a01b0316145b8061229657506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166122b1826111f2565b6001600160a01b0316146123195760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610aeb565b6001600160a01b03821661237b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610aeb565b61238660008261213c565b6001600160a01b03831660009081526001602052604090206123a89082612636565b506001600160a01b03821660009081526001602052604090206123cb9082612642565b506123d86002828461264e565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006110428383612664565b600080808061243a86866126ea565b9097909650945050505050565b8051610df3906009906020840190612cfc565b6000612467848484612787565b90505b9392505050565b610df38282604051806020016040528060008152506127f0565b60008061249883856132ff565b9050838110156110425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aeb565b6124f584848461229e565b61250184848484612823565b611c905760405162461bcd60e51b8152600401610aeb906133f4565b6060816000036125445750506040805180820190915260018152600360fc1b602082015290565b8160005b811561256e578061255881613317565b91506125679050600a83613446565b9150612548565b60008167ffffffffffffffff81111561258957612589612ee2565b6040519080825280601f01601f1916602001820160405280156125b3576020820181803683370190505b5090505b8415612296576125c8600183613330565b91506125d5600a866133e0565b6125e09060306132ff565b60f81b8183815181106125f5576125f5613347565b60200101906001600160f81b031916908160001a905350612617600a86613446565b94506125b7565b60008181526001830160205260408120541515611042565b600061104283836128f4565b600061104283836129e7565b600061246784846001600160a01b038516612a36565b815460009082106126c25760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610aeb565b8260000182815481106126d7576126d7613347565b9060005260206000200154905092915050565b81546000908190831061274a5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610aeb565b600084600001848154811061276157612761613347565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816127b75760405162461bcd60e51b8152600401610aeb9190612e8e565b50846127c4600183613330565b815481106127d4576127d4613347565b9060005260206000209060020201600101549150509392505050565b6127fa8383612ad9565b6128076000848484612823565b610db15760405162461bcd60e51b8152600401610aeb906133f4565b60006001600160a01b0384163b61283c57506001612296565b60006128bd630a85bd0160e11b33888787604051602401612860949392919061345a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518060600160405280603281526020016134e7603291396001600160a01b0388169190612bf1565b90506000818060200190518101906128d59190613497565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b600081815260018301602052604081205480156129dd576000612918600183613330565b855490915060009061292c90600190613330565b9050600086600001828154811061294557612945613347565b906000526020600020015490508087600001848154811061296857612968613347565b60009182526020909120015561297f8360016132ff565b600082815260018901602052604090205586548790806129a1576129a16134b4565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611045565b6000915050611045565b6000818152600183016020526040812054612a2e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611045565b506000611045565b6000828152600184016020526040812054808203612a9d57505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561246a565b8285612aaa600184613330565b81548110612aba57612aba613347565b906000526020600020906002020160010181905550600091505061246a565b6001600160a01b038216612b2f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610aeb565b612b388161212f565b15612b855760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610aeb565b6001600160a01b0382166000908152600160205260409020612ba79082612642565b50612bb46002828461264e565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060612467848460008585843b612c4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610aeb565b600080866001600160a01b03168587604051612c6691906134ca565b60006040518083038185875af1925050503d8060008114612ca3576040519150601f19603f3d011682016040523d82523d6000602084013e612ca8565b606091505b5091509150612cb8828286612cc3565b979650505050505050565b60608315612cd257508161246a565b825115612ce25782518084602001fd5b8160405162461bcd60e51b8152600401610aeb9190612e8e565b828054612d0890613264565b90600052602060002090601f016020900481019282612d2a5760008555612d70565b82601f10612d4357805160ff1916838001178555612d70565b82800160010185558215612d70579182015b82811115612d70578251825591602001919060010190612d55565b50612d7c929150612dd5565b5090565b828054828255906000526020600020908101928215612d70579160200282015b82811115612d7057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612da0565b5b80821115612d7c5760008155600101612dd6565b600060208284031215612dfc57600080fd5b5035919050565b6001600160e01b0319811681146111c057600080fd5b600060208284031215612e2b57600080fd5b813561104281612e03565b60005b83811015612e51578181015183820152602001612e39565b83811115611c905750506000910152565b60008151808452612e7a816020860160208601612e36565b601f01601f19169290920160200192915050565b6020815260006110426020830184612e62565b6001600160a01b03811681146111c057600080fd5b60008060408385031215612ec957600080fd5b8235612ed481612ea1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612f2157612f21612ee2565b604052919050565b600067ffffffffffffffff831115612f4357612f43612ee2565b612f56601f8401601f1916602001612ef8565b9050828152838383011115612f6a57600080fd5b828260208301376000602084830101529392505050565b600060208284031215612f9357600080fd5b813567ffffffffffffffff811115612faa57600080fd5b8201601f81018413612fbb57600080fd5b61229684823560208401612f29565b60008060408385031215612fdd57600080fd5b823591506020830135612fef81612ea1565b809150509250929050565b60008060006060848603121561300f57600080fd5b833561301a81612ea1565b9250602084013561302a81612ea1565b929592945050506040919091013590565b60006020828403121561304d57600080fd5b813561104281612ea1565b6020808252825182820181905260009190848201906040850190845b8181101561309057835183529284019291840191600101613074565b50909695505050505050565b600080604083850312156130af57600080fd5b82356130ba81612ea1565b915060208301358015158114612fef57600080fd5b600080600080608085870312156130e557600080fd5b84356130f081612ea1565b9350602085013561310081612ea1565b925060408501359150606085013567ffffffffffffffff81111561312357600080fd5b8501601f8101871361313457600080fd5b61314387823560208401612f29565b91505092959194509250565b6000602080838503121561316257600080fd5b823567ffffffffffffffff8082111561317a57600080fd5b818501915085601f83011261318e57600080fd5b8135818111156131a0576131a0612ee2565b8060051b91506131b1848301612ef8565b81815291830184019184810190888411156131cb57600080fd5b938501935b838510156131f557843592506131e583612ea1565b82825293850193908501906131d0565b98975050505050505050565b6000806040838503121561321457600080fd5b823561321f81612ea1565b91506020830135612fef81612ea1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061327857607f821691505b60208210810361184a57634e487b7160e01b600052602260045260246000fd5b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613312576133126132e9565b500190565b600060018201613329576133296132e9565b5060010190565b600082821015613342576133426132e9565b500390565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615613377576133776132e9565b500290565b6000835161338e818460208801612e36565b602f60f81b90830190815283516133ac816001840160208801612e36565b64173539b7b760d91b60019290910191820152600601949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826133ef576133ef6133ca565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082613455576134556133ca565b500490565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061348d90830184612e62565b9695505050505050565b6000602082840312156134a957600080fd5b815161104281612e03565b634e487b7160e01b600052603160045260246000fd5b600082516134dc818460208701612e36565b919091019291505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212208f8d9be09c43b4a6611e49316e167db9481b2dcab721495866f19297f725a62464736f6c634300080e0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000d546865204c6f7374204b6964730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c4f535400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f6d616e646f782e6d7970696e6174612e636c6f75642f697066732f516d5578616254377131444470364a746f6b53366379626f374b564652454239414654465376346e776452356775000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f6d616e646f782e6d7970696e6174612e636c6f75642f697066732f516d54706b42414a7964424c36325835716742694459674c4c4b5046746658744635566e50385178553558505067000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061036a5760003560e01c80636c0360eb116101c6578063a475b5dd116100f7578063e985e9c511610095578063f2c4ce1e1161006f578063f2c4ce1e14610a30578063f2fde38b14610a50578063f571d67c14610a70578063ff1b655614610aac57600080fd5b8063e985e9c5146109b8578063e986655014610a01578063eb8d244414610a1657600080fd5b8063cb774d47116100d1578063cb774d4714610956578063cd7d508f1461096c578063dc53fd921461098c578063e36d6498146109a257600080fd5b8063a475b5dd14610901578063b88d4fde14610916578063c87b56dd1461093657600080fd5b8063819b25ba1161016457806395d89b411161013e57806395d89b41146108735780639b19251a14610888578063a0712d68146108ce578063a22cb465146108e157600080fd5b8063819b25ba146108085780638462151c146108285780638da5cb5b1461085557600080fd5b8063738c69a6116101a0578063738c69a6146107485780637b9417c8146107b35780637c928fe9146107d35780637d17fcbe146107f357600080fd5b80636c0360eb146106fe57806370a0823114610713578063715018a61461073357600080fd5b80632f745c59116102a05780634f558e791161023e57806355f804b31161021857806355f804b31461068857806358941a4d146106a85780635d82cf6e146106be5780636352211e146106de57600080fd5b80634f558e791461062e5780634f6ccce71461064e578063518302271461066e57600080fd5b80633719e3b01161027a5780633719e3b0146105a85780633af32abf146105bd5780633ccfd60b146105f957806342842e0e1461060e57600080fd5b80632f745c591461055d57806334918dfd1461057d5780633502a7161461059257600080fd5b8063095ea7b31161030d57806318160ddd116102e757806318160ddd146104f257806318e20a38146105075780631d97f38e1461051d57806323b872dd1461053d57600080fd5b8063095ea7b31461049257806310969523146104b257806314967837146104d257600080fd5b806304737a011161034957806304737a011461040457806306fdde0314610423578063081812fc14610445578063081c8c441461047d57600080fd5b806204348e1461036f578063018a2c371461039857806301ffc9a7146103ba575b600080fd5b34801561037b57600080fd5b50610385600d5481565b6040519081526020015b60405180910390f35b3480156103a457600080fd5b506103b86103b3366004612dea565b610ac1565b005b3480156103c657600080fd5b506103f46103d5366004612e19565b6001600160e01b03191660009081526020819052604090205460ff1690565b604051901515815260200161038f565b34801561041057600080fd5b506015546103f490610100900460ff1681565b34801561042f57600080fd5b50610438610af9565b60405161038f9190612e8e565b34801561045157600080fd5b50610465610460366004612dea565b610b8b565b6040516001600160a01b03909116815260200161038f565b34801561048957600080fd5b50610438610c13565b34801561049e57600080fd5b506103b86104ad366004612eb6565b610ca1565b3480156104be57600080fd5b506103b86104cd366004612f81565b610db6565b3480156104de57600080fd5b506103f46104ed366004612eb6565b610df7565b3480156104fe57600080fd5b50610385610ec2565b34801561051357600080fd5b5061038560115481565b34801561052957600080fd5b506103b8610538366004612fca565b610ed3565b34801561054957600080fd5b506103b8610558366004612ffa565b610fef565b34801561056957600080fd5b50610385610578366004612eb6565b611020565b34801561058957600080fd5b506103b861104b565b34801561059e57600080fd5b5061038560105481565b3480156105b457600080fd5b506103b8611089565b3480156105c957600080fd5b506103f46105d836600461303b565b6001600160a01b039081166000818152601660205260409020549091161490565b34801561060557600080fd5b506103b86110d0565b34801561061a57600080fd5b506103b8610629366004612ffa565b611151565b34801561063a57600080fd5b506103f4610649366004612dea565b61116c565b34801561065a57600080fd5b50610385610669366004612dea565b611177565b34801561067a57600080fd5b506012546103f49060ff1681565b34801561069457600080fd5b506103b86106a3366004612f81565b61118d565b3480156106b457600080fd5b50610385600f5481565b3480156106ca57600080fd5b506103b86106d9366004612dea565b6111c3565b3480156106ea57600080fd5b506104656106f9366004612dea565b6111f2565b34801561070a57600080fd5b5061043861121a565b34801561071f57600080fd5b5061038561072e36600461303b565b611229565b34801561073f57600080fd5b506103b86112b5565b34801561075457600080fd5b5061078e61076336600461303b565b6017602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b03909416845260208401929092529082015260600161038f565b3480156107bf57600080fd5b506103f46107ce36600461303b565b611329565b3480156107df57600080fd5b506103b86107ee366004612dea565b6113e4565b3480156107ff57600080fd5b506103b8611665565b34801561081457600080fd5b506103b8610823366004612dea565b6116e5565b34801561083457600080fd5b5061084861084336600461303b565b611792565b60405161038f9190613058565b34801561086157600080fd5b50600a546001600160a01b0316610465565b34801561087f57600080fd5b50610438611850565b34801561089457600080fd5b5061078e6108a336600461303b565b6016602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b6103b86108dc366004612dea565b61185f565b3480156108ed57600080fd5b506103b86108fc36600461309c565b611b61565b34801561090d57600080fd5b506103b8611c25565b34801561092257600080fd5b506103b86109313660046130cf565b611c5e565b34801561094257600080fd5b50610438610951366004612dea565b611c96565b34801561096257600080fd5b50610385600c5481565b34801561097857600080fd5b506103b861098736600461314f565b611e3b565b34801561099857600080fd5b50610385600e5481565b3480156109ae57600080fd5b50610385600b5481565b3480156109c457600080fd5b506103f46109d3366004613201565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a0d57600080fd5b506103b8611ec9565b348015610a2257600080fd5b506015546103f49060ff1681565b348015610a3c57600080fd5b506103b8610a4b366004612f81565b611ffa565b348015610a5c57600080fd5b506103b8610a6b36600461303b565b612037565b348015610a7c57600080fd5b506103f4610a8b36600461303b565b6001600160a01b039081166000818152601760205260409020549091161490565b348015610ab857600080fd5b50610438612122565b600a546001600160a01b03163314610af45760405162461bcd60e51b8152600401610aeb9061322f565b60405180910390fd5b601155565b606060068054610b0890613264565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3490613264565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b5050505050905090565b6000610b968261212f565b610bf75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aeb565b506000908152600460205260409020546001600160a01b031690565b60138054610c2090613264565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4c90613264565b8015610c995780601f10610c6e57610100808354040283529160200191610c99565b820191906000526020600020905b815481529060010190602001808311610c7c57829003601f168201915b505050505081565b6000610cac826111f2565b9050806001600160a01b0316836001600160a01b031603610d195760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610aeb565b336001600160a01b0382161480610d355750610d3581336109d3565b610da75760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610aeb565b610db1838361213c565b505050565b600a546001600160a01b03163314610de05760405162461bcd60e51b8152600401610aeb9061322f565b8051610df3906014906020840190612cfc565b5050565b600a546000906001600160a01b03163314610e245760405162461bcd60e51b8152600401610aeb9061322f565b6001600160a01b0380841660008181526017602052604090205490911603610e855760405162461bcd60e51b8152602060048201526014602482015273105b1c9958591e481dda5b9b995c9b1a5cdd195960621b6044820152606401610aeb565b506001600160a01b03909116600081815260176020526040812080546001600160a01b031916909217825560018083019390935560029091015590565b6000610ece60026121aa565b905090565b600a546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610aeb9061322f565b60008211610f4d5760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177206d7573742062652067726561746572207468616e2030006044820152606401610aeb565b47821115610f8f5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aeb565b6000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5050905080610db157600080fd5b610ff933826121b4565b6110155760405162461bcd60e51b8152600401610aeb90613298565b610db183838361229e565b6001600160a01b0382166000908152600160205260408120611042908361241f565b90505b92915050565b600a546001600160a01b031633146110755760405162461bcd60e51b8152600401610aeb9061322f565b6015805460ff19811660ff90911615179055565b600a546001600160a01b031633146110b35760405162461bcd60e51b8152600401610aeb9061322f565b6015805461ff001981166101009182900460ff1615909102179055565b600a546001600160a01b031633146110fa5760405162461bcd60e51b8152600401610aeb9061322f565b6040514790600090339083908381818185875af1925050503d806000811461113e576040519150601f19603f3d011682016040523d82523d6000602084013e611143565b606091505b5050905080610df357600080fd5b610db183838360405180602001604052806000815250611c5e565b60006110458261212f565b60008061118560028461242b565b509392505050565b600a546001600160a01b031633146111b75760405162461bcd60e51b8152600401610aeb9061322f565b6111c081612447565b50565b600a546001600160a01b031633146111ed5760405162461bcd60e51b8152600401610aeb9061322f565b600e55565b600061104582604051806060016040528060298152602001613519602991396002919061245a565b606060098054610b0890613264565b60006001600160a01b0382166112945760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610aeb565b6001600160a01b0382166000908152600160205260409020611045906121aa565b600a546001600160a01b031633146112df5760405162461bcd60e51b8152600401610aeb9061322f565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546000906001600160a01b031633146113565760405162461bcd60e51b8152600401610aeb9061322f565b6001600160a01b03808316600081815260166020526040902054909116036113b65760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481dda1a5d195b1a5cdd1959606a1b6044820152606401610aeb565b506001600160a01b0316600081815260166020526040902080546001600160a01b0319169091179055600190565b60006113ee610ec2565b336000818152601760205260409020549192506001600160a01b039091161461144f5760405162461bcd60e51b8152602060048201526013602482015272125cc81b9bdd081dda5b9b995c9b1a5cdd1959606a1b6044820152606401610aeb565b60155460ff166114a15760405162461bcd60e51b815260206004820152601b60248201527f53616c65206d7573742062652061637469766520746f206d696e7400000000006044820152606401610aeb565b6010546114ae83836132ff565b11156114f15760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610aeb565b336000908152601760205260409020600101546115505760405162461bcd60e51b815260206004820152601b60248201527f596f752068617665206e6f20616d6f756e7420746f20636c61696d00000000006044820152606401610aeb565b336000908152601760205260409020600101548211156115b25760405162461bcd60e51b815260206004820152601960248201527f596f7520636c61696d20616d6f756e74206578636565646564000000000000006044820152606401610aeb565b60005b828110156116025760006115c7610ec2565b6115d29060016132ff565b90506010546115df610ec2565b10156115ef576115ef3382612471565b50806115fa81613317565b9150506115b5565b5033600090815260176020526040902060010154611621908390613330565b33600090815260176020526040902060010155600b54158015611658575060105461164a610ec2565b148061165857506011544210155b15610df35743600b555050565b600a546001600160a01b0316331461168f5760405162461bcd60e51b8152600401610aeb9061322f565b600c54156116df5760405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606401610aeb565b43600b55565b600a546001600160a01b0316331461170f5760405162461bcd60e51b8152600401610aeb9061322f565b6000611719610ec2565b60105490915061172983836132ff565b11156117625760405162461bcd60e51b8152602060048201526008602482015267115e18d95959195960c21b6044820152606401610aeb565b60005b82811015610db1576117803361177b83856132ff565b612471565b8061178a81613317565b915050611765565b6060600061179f83611229565b9050806000036117bf576040805160008082526020820190925290611185565b60008167ffffffffffffffff8111156117da576117da612ee2565b604051908082528060200260200182016040528015611803578160200160208202803683370190505b50905060005b828110156111855761181b8582611020565b82828151811061182d5761182d613347565b60209081029190910101528061184281613317565b915050611809565b50919050565b606060078054610b0890613264565b6000611869610ec2565b60155490915060ff166118be5760405162461bcd60e51b815260206004820152601b60248201527f53616c65206d7573742062652061637469766520746f206d696e7400000000006044820152606401610aeb565b6010546118cb83836132ff565b11156119055760405162461bcd60e51b815260206004820152600960248201526813585e081b1a5b5a5d60ba1b6044820152606401610aeb565b601554610100900460ff1615611aa9573482600d54611924919061335d565b11156119665760405162461bcd60e51b815260206004820152601160248201527056616c75652062656c6f7720707269636560781b6044820152606401610aeb565b600f548211156119ab5760405162461bcd60e51b815260206004820152601060248201526f4d696e74696e6720746f6f204d616e7960801b6044820152606401610aeb565b336000818152601660205260409020546001600160a01b031614611a065760405162461bcd60e51b8152602060048201526012602482015271125cc81b9bdd081dda1a5d195b1a5cdd195960721b6044820152606401610aeb565b600f5433600090815260166020526040902060020154611a26908461248b565b1115611a745760405162461bcd60e51b815260206004820152601960248201527f43616e206f6e6c79206d696e7420322046726565204b696473000000000000006044820152606401610aeb565b33600090815260166020526040902060020154611a91908361248b565b33600090815260166020526040902060020155611afa565b3482600e54611ab8919061335d565b1115611afa5760405162461bcd60e51b815260206004820152601160248201527056616c75652062656c6f7720707269636560781b6044820152606401610aeb565b60005b82811015611b4a576000611b0f610ec2565b611b1a9060016132ff565b9050601054611b27610ec2565b1015611b3757611b373382612471565b5080611b4281613317565b915050611afd565b50600b54158015611658575060105461164a610ec2565b336001600160a01b03831603611bb95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610aeb565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b03163314611c4f5760405162461bcd60e51b8152600401610aeb9061322f565b6012805460ff19166001179055565b611c6833836121b4565b611c845760405162461bcd60e51b8152600401610aeb90613298565b611c90848484846124ea565b50505050565b6060611ca18261212f565b611d055760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610aeb565b611d0d610ec2565b821115611d5c5760405162461bcd60e51b815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606401610aeb565b60125460ff161515600003611dfd5760138054611d7890613264565b80601f0160208091040260200160405190810160405280929190818152602001828054611da490613264565b8015611df15780601f10611dc657610100808354040283529160200191611df1565b820191906000526020600020905b815481529060010190602001808311611dd457829003601f168201915b50505050509050919050565b6000611e0761121a565b905080611e138461251d565b604051602001611e2492919061337c565b604051602081830303815290604052915050919050565b600a546001600160a01b03163314611e655760405162461bcd60e51b8152600401610aeb9061322f565b8051611e78906018906020840190612d80565b5060005b601854811015610df357611eb660188281548110611e9c57611e9c613347565b6000918252602090912001546001600160a01b0316611329565b5080611ec181613317565b915050611e7c565b600a546001600160a01b03163314611ef35760405162461bcd60e51b8152600401610aeb9061322f565b600c5415611f435760405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606401610aeb565b600b54600003611f955760405162461bcd60e51b815260206004820181905260248201527f5374617274696e6720696e64657820626c6f636b206d757374206265207365746044820152606401610aeb565b601054600b54611fa69190406133e0565b600c55600b5460ff90611fb99043613330565b1115611fdc57601054611fcd600143613330565b611fd89190406133e0565b600c555b600c54600003611ff857600c54611ff49060016132ff565b600c555b565b600a546001600160a01b031633146120245760405162461bcd60e51b8152600401610aeb9061322f565b8051610df3906013906020840190612cfc565b600a546001600160a01b031633146120615760405162461bcd60e51b8152600401610aeb9061322f565b6001600160a01b0381166120c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aeb565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60148054610c2090613264565b600061104560028361261e565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612171826111f2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611045825490565b60006121bf8261212f565b6122205760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aeb565b600061222b836111f2565b9050806001600160a01b0316846001600160a01b031614806122665750836001600160a01b031661225b84610b8b565b6001600160a01b0316145b8061229657506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166122b1826111f2565b6001600160a01b0316146123195760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610aeb565b6001600160a01b03821661237b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610aeb565b61238660008261213c565b6001600160a01b03831660009081526001602052604090206123a89082612636565b506001600160a01b03821660009081526001602052604090206123cb9082612642565b506123d86002828461264e565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006110428383612664565b600080808061243a86866126ea565b9097909650945050505050565b8051610df3906009906020840190612cfc565b6000612467848484612787565b90505b9392505050565b610df38282604051806020016040528060008152506127f0565b60008061249883856132ff565b9050838110156110425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aeb565b6124f584848461229e565b61250184848484612823565b611c905760405162461bcd60e51b8152600401610aeb906133f4565b6060816000036125445750506040805180820190915260018152600360fc1b602082015290565b8160005b811561256e578061255881613317565b91506125679050600a83613446565b9150612548565b60008167ffffffffffffffff81111561258957612589612ee2565b6040519080825280601f01601f1916602001820160405280156125b3576020820181803683370190505b5090505b8415612296576125c8600183613330565b91506125d5600a866133e0565b6125e09060306132ff565b60f81b8183815181106125f5576125f5613347565b60200101906001600160f81b031916908160001a905350612617600a86613446565b94506125b7565b60008181526001830160205260408120541515611042565b600061104283836128f4565b600061104283836129e7565b600061246784846001600160a01b038516612a36565b815460009082106126c25760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610aeb565b8260000182815481106126d7576126d7613347565b9060005260206000200154905092915050565b81546000908190831061274a5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610aeb565b600084600001848154811061276157612761613347565b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816127b75760405162461bcd60e51b8152600401610aeb9190612e8e565b50846127c4600183613330565b815481106127d4576127d4613347565b9060005260206000209060020201600101549150509392505050565b6127fa8383612ad9565b6128076000848484612823565b610db15760405162461bcd60e51b8152600401610aeb906133f4565b60006001600160a01b0384163b61283c57506001612296565b60006128bd630a85bd0160e11b33888787604051602401612860949392919061345a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518060600160405280603281526020016134e7603291396001600160a01b0388169190612bf1565b90506000818060200190518101906128d59190613497565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b600081815260018301602052604081205480156129dd576000612918600183613330565b855490915060009061292c90600190613330565b9050600086600001828154811061294557612945613347565b906000526020600020015490508087600001848154811061296857612968613347565b60009182526020909120015561297f8360016132ff565b600082815260018901602052604090205586548790806129a1576129a16134b4565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611045565b6000915050611045565b6000818152600183016020526040812054612a2e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611045565b506000611045565b6000828152600184016020526040812054808203612a9d57505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205561246a565b8285612aaa600184613330565b81548110612aba57612aba613347565b906000526020600020906002020160010181905550600091505061246a565b6001600160a01b038216612b2f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610aeb565b612b388161212f565b15612b855760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610aeb565b6001600160a01b0382166000908152600160205260409020612ba79082612642565b50612bb46002828461264e565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060612467848460008585843b612c4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610aeb565b600080866001600160a01b03168587604051612c6691906134ca565b60006040518083038185875af1925050503d8060008114612ca3576040519150601f19603f3d011682016040523d82523d6000602084013e612ca8565b606091505b5091509150612cb8828286612cc3565b979650505050505050565b60608315612cd257508161246a565b825115612ce25782518084602001fd5b8160405162461bcd60e51b8152600401610aeb9190612e8e565b828054612d0890613264565b90600052602060002090601f016020900481019282612d2a5760008555612d70565b82601f10612d4357805160ff1916838001178555612d70565b82800160010185558215612d70579182015b82811115612d70578251825591602001919060010190612d55565b50612d7c929150612dd5565b5090565b828054828255906000526020600020908101928215612d70579160200282015b82811115612d7057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612da0565b5b80821115612d7c5760008155600101612dd6565b600060208284031215612dfc57600080fd5b5035919050565b6001600160e01b0319811681146111c057600080fd5b600060208284031215612e2b57600080fd5b813561104281612e03565b60005b83811015612e51578181015183820152602001612e39565b83811115611c905750506000910152565b60008151808452612e7a816020860160208601612e36565b601f01601f19169290920160200192915050565b6020815260006110426020830184612e62565b6001600160a01b03811681146111c057600080fd5b60008060408385031215612ec957600080fd5b8235612ed481612ea1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612f2157612f21612ee2565b604052919050565b600067ffffffffffffffff831115612f4357612f43612ee2565b612f56601f8401601f1916602001612ef8565b9050828152838383011115612f6a57600080fd5b828260208301376000602084830101529392505050565b600060208284031215612f9357600080fd5b813567ffffffffffffffff811115612faa57600080fd5b8201601f81018413612fbb57600080fd5b61229684823560208401612f29565b60008060408385031215612fdd57600080fd5b823591506020830135612fef81612ea1565b809150509250929050565b60008060006060848603121561300f57600080fd5b833561301a81612ea1565b9250602084013561302a81612ea1565b929592945050506040919091013590565b60006020828403121561304d57600080fd5b813561104281612ea1565b6020808252825182820181905260009190848201906040850190845b8181101561309057835183529284019291840191600101613074565b50909695505050505050565b600080604083850312156130af57600080fd5b82356130ba81612ea1565b915060208301358015158114612fef57600080fd5b600080600080608085870312156130e557600080fd5b84356130f081612ea1565b9350602085013561310081612ea1565b925060408501359150606085013567ffffffffffffffff81111561312357600080fd5b8501601f8101871361313457600080fd5b61314387823560208401612f29565b91505092959194509250565b6000602080838503121561316257600080fd5b823567ffffffffffffffff8082111561317a57600080fd5b818501915085601f83011261318e57600080fd5b8135818111156131a0576131a0612ee2565b8060051b91506131b1848301612ef8565b81815291830184019184810190888411156131cb57600080fd5b938501935b838510156131f557843592506131e583612ea1565b82825293850193908501906131d0565b98975050505050505050565b6000806040838503121561321457600080fd5b823561321f81612ea1565b91506020830135612fef81612ea1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061327857607f821691505b60208210810361184a57634e487b7160e01b600052602260045260246000fd5b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613312576133126132e9565b500190565b600060018201613329576133296132e9565b5060010190565b600082821015613342576133426132e9565b500390565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615613377576133776132e9565b500290565b6000835161338e818460208801612e36565b602f60f81b90830190815283516133ac816001840160208801612e36565b64173539b7b760d91b60019290910191820152600601949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826133ef576133ef6133ca565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082613455576134556133ca565b500490565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061348d90830184612e62565b9695505050505050565b6000602082840312156134a957600080fd5b815161104281612e03565b634e487b7160e01b600052603160045260246000fd5b600082516134dc818460208701612e36565b919091019291505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656ea26469706673582212208f8d9be09c43b4a6611e49316e167db9481b2dcab721495866f19297f725a62464736f6c634300080e0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000d546865204c6f7374204b6964730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c4f535400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f6d616e646f782e6d7970696e6174612e636c6f75642f697066732f516d5578616254377131444470364a746f6b53366379626f374b564652454239414654465376346e776452356775000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f6d616e646f782e6d7970696e6174612e636c6f75642f697066732f516d54706b42414a7964424c36325835716742694459674c4c4b5046746658744635566e50385178553558505067000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): The Lost Kids
Arg [1] : _symbol (string): LOST
Arg [2] : _initBaseURI (string): https://mandox.mypinata.cloud/ipfs/QmUxabT7q1DDp6JtokS6cybo7KVFREB9AFTFSv4nwdR5gu
Arg [3] : _initNotRevealedUri (string): https://mandox.mypinata.cloud/ipfs/QmTpkBAJydBL62X5qgBiDYgLLKPFtfXtF5VnP8QxU5XPPg

-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [5] : 546865204c6f7374204b69647300000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 4c4f535400000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [9] : 68747470733a2f2f6d616e646f782e6d7970696e6174612e636c6f75642f6970
Arg [10] : 66732f516d5578616254377131444470364a746f6b53366379626f374b564652
Arg [11] : 454239414654465376346e776452356775000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [13] : 68747470733a2f2f6d616e646f782e6d7970696e6174612e636c6f75642f6970
Arg [14] : 66732f516d54706b42414a7964424c36325835716742694459674c4c4b504674
Arg [15] : 6658744635566e50385178553558505067000000000000000000000000000000


Deployed Bytecode Sourcemap

34346:9133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34535:41;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;34535:41:0;;;;;;;;36595:127;;;;;;;;;;-1:-1:-1;36595:127:0;;;;;:::i;:::-;;:::i;:::-;;3475:200;;;;;;;;;;-1:-1:-1;3475:200:0;;;;;:::i;:::-;-1:-1:-1;;;;;;3634:33:0;3605:4;3634:33;;;;;;;;;;;;;;3475:200;;;;932:14:1;;925:22;907:41;;895:2;880:18;3475:200:0;767:187:1;34913:38:0;;;;;;;;;;-1:-1:-1;34913:38:0;;;;;;;;;;;24581:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26905:308::-;;;;;;;;;;-1:-1:-1;26905:308:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1874:32:1;;;1856:51;;1844:2;1829:18;26905:308:0;1710:203:1;34791:33:0;;;;;;;;;;;;;:::i;26462:435::-;;;;;;;;;;-1:-1:-1;26462:435:0;;;;;:::i;:::-;;:::i;36730:152::-;;;;;;;;;;-1:-1:-1;36730:152:0;;;;;:::i;:::-;;:::i;42931:370::-;;;;;;;;;;-1:-1:-1;42931:370:0;;;;;:::i;:::-;;:::i;26013:211::-;;;;;;;;;;;;;:::i;34714:31::-;;;;;;;;;;;;;;;;42157:335;;;;;;;;;;-1:-1:-1;42157:335:0;;;;;:::i;:::-;;:::i;27778:376::-;;;;;;;;;;-1:-1:-1;27778:376:0;;;;;:::i;:::-;;:::i;25793:212::-;;;;;;;;;;-1:-1:-1;25793:212:0;;;;;:::i;:::-;;:::i;37789:89::-;;;;;;;;;;;;;:::i;34674:33::-;;;;;;;;;;;;;;;;37886:110;;;;;;;;;;;;;:::i;42759:164::-;;;;;;;;;;-1:-1:-1;42759:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;42887:28:0;;;42844:18;42887:15;;;:9;:15;;;;;:20;;;;:28;;42759:164;41962:187;;;;;;;;;;;;;:::i;28162:185::-;;;;;;;;;;-1:-1:-1;28162:185:0;;;;;:::i;:::-;;:::i;36095:104::-;;;;;;;;;;-1:-1:-1;36095:104:0;;;;;:::i;:::-;;:::i;26232:222::-;;;;;;;;;;-1:-1:-1;26232:222:0;;;;;:::i;:::-;;:::i;34754:28::-;;;;;;;;;;-1:-1:-1;34754:28:0;;;;;;;;36890:101;;;;;;;;;;-1:-1:-1;36890:101:0;;;;;:::i;:::-;;:::i;34630:37::-;;;;;;;;;;;;;;;;36207:106;;;;;;;;;;-1:-1:-1;36207:106:0;;;;;:::i;:::-;;:::i;24284:289::-;;;;;;;;;;-1:-1:-1;24284:289:0;;;;;:::i;:::-;;:::i;25688:97::-;;;;;;;;;;;;;:::i;23968:308::-;;;;;;;;;;-1:-1:-1;23968:308:0;;;;;:::i;:::-;;:::i;33864:148::-;;;;;;;;;;;;;:::i;35127:47::-;;;;;;;;;;-1:-1:-1;35127:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35127:47:0;;;;;;;;;;;-1:-1:-1;;;;;4915:32:1;;;4897:51;;4979:2;4964:18;;4957:34;;;;5007:18;;;5000:34;4885:2;4870:18;35127:47:0;4695:345:1;42500:251:0;;;;;;;;;;-1:-1:-1;42500:251:0;;;;;:::i;:::-;;:::i;39693:1127::-;;;;;;;;;;-1:-1:-1;39693:1127:0;;;;;:::i;:::-;;:::i;41768:186::-;;;;;;;;;;;;;:::i;36321:266::-;;;;;;;;;;-1:-1:-1;36321:266:0;;;;;:::i;:::-;;:::i;35577:510::-;;;;;;;;;;-1:-1:-1;35577:510:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;33641:87::-;;;;;;;;;;-1:-1:-1;33714:6:0;;-1:-1:-1;;;;;33714:6:0;33641:87;;24689:104;;;;;;;;;;;;;:::i;35074:46::-;;;;;;;;;;-1:-1:-1;35074:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35074:46:0;;;;;;;38004:1679;;;;;;:::i;:::-;;:::i;27221:327::-;;;;;;;;;;-1:-1:-1;27221:327:0;;;;;:::i;:::-;;:::i;37151:69::-;;;;;;;;;;;;;:::i;28355:365::-;;;;;;;;;;-1:-1:-1;28355:365:0;;;;;:::i;:::-;;:::i;37228:553::-;;;;;;;;;;-1:-1:-1;37228:553:0;;;;;:::i;:::-;;:::i;34500:28::-;;;;;;;;;;;;;;;;41526:234;;;;;;;;;;-1:-1:-1;41526:234:0;;;;;:::i;:::-;;:::i;34583:40::-;;;;;;;;;;;;;;;;34460:33;;;;;;;;;;;;;;;;27556:214;;;;;;;;;;-1:-1:-1;27556:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;27727:25:0;;;27698:4;27727:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;27556:214;40828:690;;;;;;;;;;;;;:::i;34874:32::-;;;;;;;;;;-1:-1:-1;34874:32:0;;;;;;;;36999:126;;;;;;;;;;-1:-1:-1;36999:126:0;;;;;:::i;:::-;;:::i;34020:281::-;;;;;;;;;;-1:-1:-1;34020:281:0;;;;;:::i;:::-;;:::i;43309:167::-;;;;;;;;;;-1:-1:-1;43309:167:0;;;;;:::i;:::-;-1:-1:-1;;;;;43439:29:0;;;43395:19;43439:16;;;:10;:16;;;;;:21;;;;:29;;43309:167;34833:34;;;;;;;;;;;;;:::i;36595:127::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;;;;;;;;;36679:16:::1;:35:::0;36595:127::o;24581:100::-;24635:13;24668:5;24661:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24581:100;:::o;26905:308::-;27026:7;27073:16;27081:7;27073;:16::i;:::-;27051:110;;;;-1:-1:-1;;;27051:110:0;;9270:2:1;27051:110:0;;;9252:21:1;9309:2;9289:18;;;9282:30;9348:34;9328:18;;;9321:62;-1:-1:-1;;;9399:18:1;;;9392:42;9451:19;;27051:110:0;9068:408:1;27051:110:0;-1:-1:-1;27181:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;27181:24:0;;26905:308::o;34791:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26462:435::-;26543:13;26559:23;26574:7;26559:14;:23::i;:::-;26543:39;;26607:5;-1:-1:-1;;;;;26601:11:0;:2;-1:-1:-1;;;;;26601:11:0;;26593:57;;;;-1:-1:-1;;;26593:57:0;;9683:2:1;26593:57:0;;;9665:21:1;9722:2;9702:18;;;9695:30;9761:34;9741:18;;;9734:62;-1:-1:-1;;;9812:18:1;;;9805:31;9853:19;;26593:57:0;9481:397:1;26593:57:0;175:10;-1:-1:-1;;;;;26685:21:0;;;;:86;;-1:-1:-1;26727:44:0;26751:5;175:10;27556:214;:::i;26727:44::-;26663:192;;;;-1:-1:-1;;;26663:192:0;;10085:2:1;26663:192:0;;;10067:21:1;10124:2;10104:18;;;10097:30;10163:34;10143:18;;;10136:62;10234:26;10214:18;;;10207:54;10278:19;;26663:192:0;9883:420:1;26663:192:0;26868:21;26877:2;26881:7;26868:8;:21::i;:::-;26532:365;26462:435;;:::o;36730:152::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;36841:33;;::::1;::::0;:15:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;:::-;;36730:152:::0;:::o;42931:370::-;33714:6;;43051:12;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43439:29:0;;;43395:19;43439:16;;;:10;:16;;;;;:21;;;;:29;43081:54:::1;;;::::0;-1:-1:-1;;;43081:54:0;;10510:2:1;43081:54:0::1;::::0;::::1;10492:21:1::0;10549:2;10529:18;;;10522:30;-1:-1:-1;;;10568:18:1;;;10561:50;10628:18;;43081:54:0::1;10308:344:1::0;43081:54:0::1;-1:-1:-1::0;;;;;;43146:16:0;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:28;;-1:-1:-1;;;;;;43146:28:0::1;::::0;;::::1;::::0;;;43185;;::::1;:42:::0;;;;43238:26:::1;::::0;;::::1;:30:::0;43146:28;42931:370::o;26013:211::-;26074:7;26195:21;:12;:19;:21::i;:::-;26188:28;;26013:211;:::o;42157:335::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;42291:1:::1;42281:7;:11;42273:55;;;::::0;-1:-1:-1;;;42273:55:0;;10859:2:1;42273:55:0::1;::::0;::::1;10841:21:1::0;10898:2;10878:18;;;10871:30;10937:33;10917:18;;;10910:61;10988:18;;42273:55:0::1;10657:355:1::0;42273:55:0::1;42358:21;42347:7;:32;;42339:60;;;::::0;-1:-1:-1;;;42339:60:0;;11219:2:1;42339:60:0::1;::::0;::::1;11201:21:1::0;11258:2;11238:18;;;11231:30;-1:-1:-1;;;11277:18:1;;;11270:45;11332:18;;42339:60:0::1;11017:339:1::0;42339:60:0::1;42411:12;42429:3;-1:-1:-1::0;;;;;42429:8:0::1;42445:7;42429:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42410:47;;;42476:7;42468:16;;;::::0;::::1;27778:376:::0;27987:41;175:10;28020:7;27987:18;:41::i;:::-;27965:140;;;;-1:-1:-1;;;27965:140:0;;;;;;;:::i;:::-;28118:28;28128:4;28134:2;28138:7;28118:9;:28::i;25793:212::-;-1:-1:-1;;;;;25967:20:0;;25935:7;25967:20;;;:13;:20;;;;;:30;;25991:5;25967:23;:30::i;:::-;25960:37;;25793:212;;;;;:::o;37789:89::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;37858:12:::1;::::0;;-1:-1:-1;;37842:28:0;::::1;37858:12;::::0;;::::1;37857:13;37842:28;::::0;;37789:89::o;37886:110::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;37969:19:::1;::::0;;-1:-1:-1;;37946:42:0;::::1;37969:19;::::0;;;::::1;;;37968:20;37946:42:::0;;::::1;;::::0;;37886:110::o;41962:187::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;42079:35:::1;::::0;42028:21:::1;::::0;42010:15:::1;::::0;42079:10:::1;::::0;42028:21;;42010:15;42079:35;42010:15;42079:35;42028:21;42079:10;:35:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42060:54;;;42133:7;42125:16;;;::::0;::::1;28162:185:::0;28300:39;28317:4;28323:2;28327:7;28300:39;;;;;;;;;;;;:16;:39::i;36095:104::-;36150:4;36174:17;36182:8;36174:7;:17::i;26232:222::-;26352:7;;26399:22;:12;26415:5;26399:15;:22::i;:::-;-1:-1:-1;26377:44:0;26232:222;-1:-1:-1;;;26232:222:0:o;36890:101::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;36963:20:::1;36975:7;36963:11;:20::i;:::-;36890:101:::0;:::o;36207:106::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;36281:15:::1;:24:::0;36207:106::o;24284:289::-;24401:7;24446:119;24481:7;24446:119;;;;;;;;;;;;;;;;;:12;;:119;:16;:119::i;25688:97::-;25736:13;25769:8;25762:15;;;;;:::i;23968:308::-;24085:7;-1:-1:-1;;;;;24132:19:0;;24110:111;;;;-1:-1:-1;;;24110:111:0;;12191:2:1;24110:111:0;;;12173:21:1;12230:2;12210:18;;;12203:30;12269:34;12249:18;;;12242:62;-1:-1:-1;;;12320:18:1;;;12313:40;12370:19;;24110:111:0;11989:406:1;24110:111:0;-1:-1:-1;;;;;24239:20:0;;;;;;:13;:20;;;;;:29;;:27;:29::i;33864:148::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;33955:6:::1;::::0;33934:40:::1;::::0;33971:1:::1;::::0;-1:-1:-1;;;;;33955:6:0::1;::::0;33934:40:::1;::::0;33971:1;;33934:40:::1;33985:6;:19:::0;;-1:-1:-1;;;;;;33985:19:0::1;::::0;;33864:148::o;42500:251::-;33714:6;;42598:12;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42887:28:0;;;42844:18;42887:15;;;:9;:15;;;;;:20;;;;:28;42628:52:::1;;;::::0;-1:-1:-1;;;42628:52:0;;12602:2:1;42628:52:0::1;::::0;::::1;12584:21:1::0;12641:2;12621:18;;;12614:30;-1:-1:-1;;;12660:18:1;;;12653:49;12719:18;;42628:52:0::1;12400:343:1::0;42628:52:0::1;-1:-1:-1::0;;;;;;42691:15:0::1;;::::0;;;:9:::1;:15;::::0;;;;:27;;-1:-1:-1;;;;;;42691:27:0::1;::::0;;::::1;::::0;;;;42500:251::o;39693:1127::-;39745:13;39761;:11;:13::i;:::-;39808:10;43395:19;43439:16;;;:10;:16;;;;;:21;39745:29;;-1:-1:-1;;;;;;43439:21:0;;;:29;39785:58;;;;-1:-1:-1;;;39785:58:0;;12950:2:1;39785:58:0;;;12932:21:1;12989:2;12969:18;;;12962:30;-1:-1:-1;;;13008:18:1;;;13001:49;13067:18;;39785:58:0;12748:343:1;39785:58:0;39862:12;;;;39854:52;;;;-1:-1:-1;;;39854:52:0;;13298:2:1;39854:52:0;;;13280:21:1;13337:2;13317:18;;;13310:30;13376:29;13356:18;;;13349:57;13423:18;;39854:52:0;13096:351:1;39854:52:0;39945:12;;39926:14;39934:6;39926:5;:14;:::i;:::-;39925:32;;39917:63;;;;-1:-1:-1;;;39917:63:0;;13919:2:1;39917:63:0;;;13901:21:1;13958:2;13938:18;;;13931:30;-1:-1:-1;;;13977:18:1;;;13970:48;14035:18;;39917:63:0;13717:342:1;39917:63:0;40024:10;40050:1;40013:22;;;:10;:22;;;;;:34;;;39991:115;;;;-1:-1:-1;;;39991:115:0;;14266:2:1;39991:115:0;;;14248:21:1;14305:2;14285:18;;;14278:30;14344:29;14324:18;;;14317:57;14391:18;;39991:115:0;14064:351:1;39991:115:0;40160:10;40149:22;;;;:10;:22;;;;;:34;;;40139:44;;;40117:119;;;;-1:-1:-1;;;40117:119:0;;14622:2:1;40117:119:0;;;14604:21:1;14661:2;14641:18;;;14634:30;14700:27;14680:18;;;14673:55;14745:18;;40117:119:0;14420:349:1;40117:119:0;40254:9;40249:216;40273:6;40269:1;:10;40249:216;;;40301:17;40321:13;:11;:13::i;:::-;:17;;40337:1;40321:17;:::i;:::-;40301:37;;40373:12;;40357:13;:11;:13::i;:::-;:28;40353:101;;;40406:32;40416:10;40428:9;40406;:32::i;:::-;-1:-1:-1;40281:3:0;;;;:::i;:::-;;;;40249:216;;;-1:-1:-1;40538:10:0;40527:22;;;;:10;:22;;;;;:34;;;:56;;40577:6;;40527:56;:::i;:::-;40488:10;40477:22;;;;:10;:22;;;;;:34;;:106;40614:18;;:23;:127;;;;;40672:12;;40655:13;:11;:13::i;:::-;:29;:85;;;;40724:16;;40705:15;:35;;40655:85;40596:217;;;40789:12;40768:18;:33;39734:1086;39693:1127;:::o;41768:186::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;41848:13:::1;::::0;:18;41840:60:::1;;;::::0;-1:-1:-1;;;41840:60:0;;15246:2:1;41840:60:0::1;::::0;::::1;15228:21:1::0;15285:2;15265:18;;;15258:30;15324:31;15304:18;;;15297:59;15373:18;;41840:60:0::1;15044:353:1::0;41840:60:0::1;41934:12;41913:18;:33:::0;41768:186::o;36321:266::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;36382:13:::1;36398;:11;:13::i;:::-;36448:12;::::0;36382:29;;-1:-1:-1;36430:14:0::1;36438:6:::0;36382:29;36430:14:::1;:::i;:::-;:30;;36422:51;;;::::0;-1:-1:-1;;;36422:51:0;;15604:2:1;36422:51:0::1;::::0;::::1;15586:21:1::0;15643:1;15623:18;;;15616:29;-1:-1:-1;;;15661:18:1;;;15654:38;15709:18;;36422:51:0::1;15402:331:1::0;36422:51:0::1;36489:9;36484:96;36508:6;36504:1;:10;36484:96;;;36536:32;36546:10;36558:9;36566:1:::0;36558:5;:9:::1;:::i;:::-;36536;:32::i;:::-;36516:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36484:96;;35577:510:::0;35666:16;35700:18;35721:17;35731:6;35721:9;:17::i;:::-;35700:38;;35753:10;35767:1;35753:15;35749:331;;35792:16;;;35806:1;35792:16;;;;;;;;;;;;35749:331;35841:23;35881:10;35867:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35867:25:0;;35841:51;;35912:13;35907:134;35935:10;35927:5;:18;35907:134;;;35991:34;36011:6;36019:5;35991:19;:34::i;:::-;35975:6;35982:5;35975:13;;;;;;;;:::i;:::-;;;;;;;;;;:50;35947:7;;;;:::i;:::-;;;;35907:134;;35749:331;35689:398;35577:510;;;:::o;24689:104::-;24745:13;24778:7;24771:14;;;;;:::i;38004:1679::-;38060:13;38076;:11;:13::i;:::-;38108:12;;38060:29;;-1:-1:-1;38108:12:0;;38100:52;;;;-1:-1:-1;;;38100:52:0;;13298:2:1;38100:52:0;;;13280:21:1;13337:2;13317:18;;;13310:30;13376:29;13356:18;;;13349:57;13423:18;;38100:52:0;13096:351:1;38100:52:0;38191:12;;38172:14;38180:6;38172:5;:14;:::i;:::-;38171:32;;38163:54;;;;-1:-1:-1;;;38163:54:0;;16072:2:1;38163:54:0;;;16054:21:1;16111:1;16091:18;;;16084:29;-1:-1:-1;;;16129:18:1;;;16122:39;16178:18;;38163:54:0;15870:332:1;38163:54:0;38234:19;;;;;;;38230:781;;;38327:9;38316:6;38297:16;;:25;;;;:::i;:::-;38296:40;;38270:119;;;;-1:-1:-1;;;38270:119:0;;16582:2:1;38270:119:0;;;16564:21:1;16621:2;16601:18;;;16594:30;-1:-1:-1;;;16640:18:1;;;16633:47;16697:18;;38270:119:0;16380:341:1;38270:119:0;38422:18;;38412:6;:28;;38404:57;;;;-1:-1:-1;;;38404:57:0;;16928:2:1;38404:57:0;;;16910:21:1;16967:2;16947:18;;;16940:30;-1:-1:-1;;;16986:18:1;;;16979:46;17042:18;;38404:57:0;16726:340:1;38404:57:0;38498:10;42844:18;42887:15;;;:9;:15;;;;;:20;-1:-1:-1;;;;;42887:20:0;:28;38476:56;;;;-1:-1:-1;;;38476:56:0;;17273:2:1;38476:56:0;;;17255:21:1;17312:2;17292:18;;;17285:30;-1:-1:-1;;;17331:18:1;;;17324:48;17389:18;;38476:56:0;17071:342:1;38476:56:0;38641:18;;38583:10;38573:21;;;;:9;:21;;;;;:31;;;:43;;38609:6;38573:35;:43::i;:::-;:86;;38547:173;;;;-1:-1:-1;;;38547:173:0;;17620:2:1;38547:173:0;;;17602:21:1;17659:2;17639:18;;;17632:30;17698:27;17678:18;;;17671:55;17743:18;;38547:173:0;17418:349:1;38547:173:0;38779:10;38769:21;;;;:9;:21;;;;;:49;;;:79;;38841:6;38769:71;:79::i;:::-;38745:10;38735:21;;;;:9;:21;;;;;:31;;:113;38230:781;;;38937:9;38926:6;38908:15;;:24;;;;:::i;:::-;38907:39;;38881:118;;;;-1:-1:-1;;;38881:118:0;;16582:2:1;38881:118:0;;;16564:21:1;16621:2;16601:18;;;16594:30;-1:-1:-1;;;16640:18:1;;;16633:47;16697:18;;38881:118:0;16380:341:1;38881:118:0;39028:9;39023:216;39047:6;39043:1;:10;39023:216;;;39075:17;39095:13;:11;:13::i;:::-;:17;;39111:1;39095:17;:::i;:::-;39075:37;;39147:12;;39131:13;:11;:13::i;:::-;:28;39127:101;;;39180:32;39190:10;39202:9;39180;:32::i;:::-;-1:-1:-1;39055:3:0;;;;:::i;:::-;;;;39023:216;;;-1:-1:-1;39477:18:0;;:23;:127;;;;;39535:12;;39518:13;:11;:13::i;27221:327::-;175:10;-1:-1:-1;;;;;27356:24:0;;;27348:62;;;;-1:-1:-1;;;27348:62:0;;17974:2:1;27348:62:0;;;17956:21:1;18013:2;17993:18;;;17986:30;18052:27;18032:18;;;18025:55;18097:18;;27348:62:0;17772:349:1;27348:62:0;175:10;27423:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;27423:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;27423:53:0;;;;;;;;;;27492:48;;907:41:1;;;27423:42:0;;175:10;27492:48;;880:18:1;27492:48:0;;;;;;;27221:327;;:::o;37151:69::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;37197:8:::1;:15:::0;;-1:-1:-1;;37197:15:0::1;37208:4;37197:15;::::0;;37151:69::o;28355:365::-;28544:41;175:10;28577:7;28544:18;:41::i;:::-;28522:140;;;;-1:-1:-1;;;28522:140:0;;;;;;;:::i;:::-;28673:39;28687:4;28693:2;28697:7;28706:5;28673:13;:39::i;:::-;28355:365;;;;:::o;37228:553::-;37346:13;37399:16;37407:7;37399;:16::i;:::-;37377:113;;;;-1:-1:-1;;;37377:113:0;;18328:2:1;37377:113:0;;;18310:21:1;18367:2;18347:18;;;18340:30;18406:34;18386:18;;;18379:62;-1:-1:-1;;;18457:18:1;;;18450:45;18512:19;;37377:113:0;18126:411:1;37377:113:0;37520:13;:11;:13::i;:::-;37509:7;:24;;37501:68;;;;-1:-1:-1;;;37501:68:0;;18744:2:1;37501:68:0;;;18726:21:1;18783:2;18763:18;;;18756:30;18822:33;18802:18;;;18795:61;18873:18;;37501:68:0;18542:355:1;37501:68:0;37584:8;;;;:17;;:8;:17;37580:71;;37625:14;37618:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37228:553;;;:::o;37580:71::-;37661:18;37682:9;:7;:9::i;:::-;37661:30;;37733:4;37744:18;:7;:16;:18::i;:::-;37716:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;37702:71;;;37228:553;;;:::o;41526:234::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;41604:21;;::::1;::::0;:13:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;41641:9;41636:117;41660:13;:20:::0;41656:24;::::1;41636:117;;;41702:39;41724:13;41738:1;41724:16;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;41724:16:0::1;41702:21;:39::i;:::-;-1:-1:-1::0;41682:3:0;::::1;::::0;::::1;:::i;:::-;;;;41636:117;;40828:690:::0;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;40894:13:::1;::::0;:18;40886:60:::1;;;::::0;-1:-1:-1;;;40886:60:0;;15246:2:1;40886:60:0::1;::::0;::::1;15228:21:1::0;15285:2;15265:18;;;15258:30;15324:31;15304:18;;;15297:59;15373:18;;40886:60:0::1;15044:353:1::0;40886:60:0::1;40965:18;;40987:1;40965:23:::0;40957:68:::1;;;::::0;-1:-1:-1;;;40957:68:0;;19881:2:1;40957:68:0::1;::::0;::::1;19863:21:1::0;;;19900:18;;;19893:30;19959:34;19939:18;;;19932:62;20011:18;;40957:68:0::1;19679:356:1::0;40957:68:0::1;41095:12;::::0;41072:18:::1;::::0;41054:53:::1;::::0;41095:12;41062:29:::1;41054:53;:::i;:::-;41038:13;:69:::0;41259:18:::1;::::0;41281:3:::1;::::0;41244:33:::1;::::0;:12:::1;:33;:::i;:::-;41243:41;41239:141;;;41356:12;::::0;41335:16:::1;41350:1;41335:12;:16;:::i;:::-;41317:51;::::0;;41325:27:::1;41317:51;:::i;:::-;41301:13;:67:::0;41239:141:::1;41431:13;;41448:1;41431:18:::0;41427:84:::1;;41482:13;::::0;:17:::1;::::0;41498:1:::1;41482:17;:::i;:::-;41466:13;:33:::0;41427:84:::1;40828:690::o:0;36999:126::-;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;37085:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;34020:281::-:0;33714:6;;-1:-1:-1;;;;;33714:6:0;175:10;33776:23;33768:68;;;;-1:-1:-1;;;33768:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34123:22:0;::::1;34101:110;;;::::0;-1:-1:-1;;;34101:110:0;;20491:2:1;34101:110:0::1;::::0;::::1;20473:21:1::0;20530:2;20510:18;;;20503:30;20569:34;20549:18;;;20542:62;-1:-1:-1;;;20620:18:1;;;20613:36;20666:19;;34101:110:0::1;20289:402:1::0;34101:110:0::1;34248:6;::::0;34227:38:::1;::::0;-1:-1:-1;;;;;34227:38:0;;::::1;::::0;34248:6:::1;::::0;34227:38:::1;::::0;34248:6:::1;::::0;34227:38:::1;34276:6;:17:::0;;-1:-1:-1;;;;;;34276:17:0::1;-1:-1:-1::0;;;;;34276:17:0;;;::::1;::::0;;;::::1;::::0;;34020:281::o;34833:34::-;;;;;;;:::i;29088:127::-;29153:4;29177:30;:12;29199:7;29177:21;:30::i;32891:201::-;32966:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;32966:29:0;-1:-1:-1;;;;;32966:29:0;;;;;;;;:24;;33020:23;32966:24;33020:14;:23::i;:::-;-1:-1:-1;;;;;33011:46:0;;;;;;;;;;;32891:201;;:::o;20237:155::-;20333:7;20365:19;20373:3;18085:19;;18002:110;29223:459;29352:4;29396:16;29404:7;29396;:16::i;:::-;29374:110;;;;-1:-1:-1;;;29374:110:0;;20898:2:1;29374:110:0;;;20880:21:1;20937:2;20917:18;;;20910:30;20976:34;20956:18;;;20949:62;-1:-1:-1;;;21027:18:1;;;21020:42;21079:19;;29374:110:0;20696:408:1;29374:110:0;29495:13;29511:23;29526:7;29511:14;:23::i;:::-;29495:39;;29564:5;-1:-1:-1;;;;;29553:16:0;:7;-1:-1:-1;;;;;29553:16:0;;:64;;;;29610:7;-1:-1:-1;;;;;29586:31:0;:20;29598:7;29586:11;:20::i;:::-;-1:-1:-1;;;;;29586:31:0;;29553:64;:120;;;-1:-1:-1;;;;;;27727:25:0;;;27698:4;27727:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;29634:39;29545:129;29223:459;-1:-1:-1;;;;29223:459:0:o;31111:679::-;31284:4;-1:-1:-1;;;;;31257:31:0;:23;31272:7;31257:14;:23::i;:::-;-1:-1:-1;;;;;31257:31:0;;31235:122;;;;-1:-1:-1;;;31235:122:0;;21311:2:1;31235:122:0;;;21293:21:1;21350:2;21330:18;;;21323:30;21389:34;21369:18;;;21362:62;-1:-1:-1;;;21440:18:1;;;21433:39;21489:19;;31235:122:0;21109:405:1;31235:122:0;-1:-1:-1;;;;;31403:16:0;;31395:65;;;;-1:-1:-1;;;31395:65:0;;21721:2:1;31395:65:0;;;21703:21:1;21760:2;21740:18;;;21733:30;21799:34;21779:18;;;21772:62;-1:-1:-1;;;21850:18:1;;;21843:34;21894:19;;31395:65:0;21519:400:1;31395:65:0;31577:29;31594:1;31598:7;31577:8;:29::i;:::-;-1:-1:-1;;;;;31619:19:0;;;;;;:13;:19;;;;;:35;;31646:7;31619:26;:35::i;:::-;-1:-1:-1;;;;;;31665:17:0;;;;;;:13;:17;;;;;:30;;31687:7;31665:21;:30::i;:::-;-1:-1:-1;31708:29:0;:12;31725:7;31734:2;31708:16;:29::i;:::-;;31774:7;31770:2;-1:-1:-1;;;;;31755:27:0;31764:4;-1:-1:-1;;;;;31755:27:0;;;;;;;;;;;31111:679;;;:::o;15702:169::-;15800:7;15840:22;15844:3;15856:5;15840:3;:22::i;20400:268::-;20507:7;;;;20572:22;20576:3;20588:5;20572:3;:22::i;:::-;20541:53;;;;-1:-1:-1;20400:268:0;-1:-1:-1;;;;;20400:268:0:o;32081:100::-;32154:19;;;;:8;;:19;;;;;:::i;21169:292::-;21310:7;21392:44;21397:3;21417;21423:12;21392:4;:44::i;:::-;21384:53;-1:-1:-1;21169:292:0;;;;;;:::o;29690:110::-;29766:26;29776:2;29780:7;29766:26;;;;;;;;;;;;:9;:26::i;5037:179::-;5095:7;;5127:5;5131:1;5127;:5;:::i;:::-;5115:17;;5156:1;5151;:6;;5143:46;;;;-1:-1:-1;;;5143:46:0;;22126:2:1;5143:46:0;;;22108:21:1;22165:2;22145:18;;;22138:30;22204:29;22184:18;;;22177:57;22251:18;;5143:46:0;21924:351:1;28728:352:0;28885:28;28895:4;28901:2;28905:7;28885:9;:28::i;:::-;28946:48;28969:4;28975:2;28979:7;28988:5;28946:22;:48::i;:::-;28924:148;;;;-1:-1:-1;;;28924:148:0;;;;;;;:::i;21635:534::-;21691:13;21723:5;21732:1;21723:10;21719:53;;-1:-1:-1;;21750:10:0;;;;;;;;;;;;-1:-1:-1;;;21750:10:0;;;;;21635:534::o;21719:53::-;21797:5;21782:12;21838:78;21845:9;;21838:78;;21871:8;;;;:::i;:::-;;-1:-1:-1;21894:10:0;;-1:-1:-1;21902:2:0;21894:10;;:::i;:::-;;;21838:78;;;21926:19;21958:6;21948:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21948:17:0;;21926:39;;21976:154;21983:10;;21976:154;;22010:11;22020:1;22010:11;;:::i;:::-;;-1:-1:-1;22079:10:0;22087:2;22079:5;:10;:::i;:::-;22066:24;;:2;:24;:::i;:::-;22053:39;;22036:6;22043;22036:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;22036:56:0;;;;;;;;-1:-1:-1;22107:11:0;22116:2;22107:11;;:::i;:::-;;;21976:154;;20046:183;20157:4;17964:17;;;:12;;;:17;;;;;;:22;;20186:35;17837:157;15226:160;15314:4;15343:35;15351:3;15371:5;15343:7;:35::i;15087:131::-;15154:4;15178:32;15183:3;15203:5;15178:4;:32::i;19646:219::-;19769:4;19793:64;19798:3;19818;-1:-1:-1;;;;;19832:23:0;;19793:4;:64::i;12888:273::-;13029:18;;12982:7;;13029:26;-1:-1:-1;13007:110:0;;;;-1:-1:-1;;;13007:110:0;;23026:2:1;13007:110:0;;;23008:21:1;23065:2;23045:18;;;23038:30;23104:34;23084:18;;;23077:62;-1:-1:-1;;;23155:18:1;;;23148:32;23197:19;;13007:110:0;22824:398:1;13007:110:0;13135:3;:11;;13147:5;13135:18;;;;;;;;:::i;:::-;;;;;;;;;13128:25;;12888:273;;;;:::o;18120:348::-;18270:19;;18214:7;;;;18270:27;-1:-1:-1;18248:111:0;;;;-1:-1:-1;;;18248:111:0;;23429:2:1;18248:111:0;;;23411:21:1;23468:2;23448:18;;;23441:30;23507:34;23487:18;;;23480:62;-1:-1:-1;;;23558:18:1;;;23551:32;23600:19;;18248:111:0;23227:398:1;18248:111:0;18372:22;18397:3;:12;;18410:5;18397:19;;;;;;;;:::i;:::-;;;;;;;;;;;18372:44;;18435:5;:10;;;18447:5;:12;;;18427:33;;;;;18120:348;;;;;:::o;19179:371::-;19307:7;19346:17;;;:12;;;:17;;;;;;19397:12;19382:13;19374:36;;;;-1:-1:-1;;;19374:36:0;;;;;;;;:::i;:::-;-1:-1:-1;19473:3:0;19486:12;19497:1;19486:8;:12;:::i;:::-;19473:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;19466:40;;;19179:371;;;;;:::o;29808:321::-;29938:18;29944:2;29948:7;29938:5;:18::i;:::-;29989:54;30020:1;30024:2;30028:7;30037:5;29989:22;:54::i;:::-;29967:154;;;;-1:-1:-1;;;29967:154:0;;;;;;;:::i;32189:694::-;32344:4;-1:-1:-1;;;;;32366:13:0;;6829:20;32361:60;;-1:-1:-1;32405:4:0;32398:11;;32361:60;32431:23;32457:313;-1:-1:-1;;;175:10:0;32623:4;32646:7;32672:5;32487:205;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;32487:205:0;;;;;;;-1:-1:-1;;;;;32487:205:0;;;;;;;;;;;32457:313;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32457:15:0;;;:313;:15;:313::i;:::-;32431:339;;32781:13;32808:10;32797:32;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;32848:26:0;-1:-1:-1;;;32848:26:0;;-1:-1:-1;;;32189:694:0;;;;;;:::o;11694:900::-;11760:4;11899:19;;;:12;;;:19;;;;;;11935:15;;11931:656;;11971:21;11995:14;12008:1;11995:10;:14;:::i;:::-;12044:18;;11971:38;;-1:-1:-1;12024:17:0;;12044:22;;12065:1;;12044:22;:::i;:::-;12024:42;;12085:17;12105:3;:11;;12117:9;12105:22;;;;;;;;:::i;:::-;;;;;;;;;12085:42;;12251:9;12222:3;:11;;12234:13;12222:26;;;;;;;;:::i;:::-;;;;;;;;;;:38;12354:17;:13;12370:1;12354:17;:::i;:::-;12328:23;;;;:12;;;:23;;;;;:43;12388:17;;12328:3;;12388:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12483:3;:12;;:19;12496:5;12483:19;;;;;;;;;;;12476:26;;;12526:4;12519:11;;;;;;;;11931:656;12570:5;12563:12;;;;;11395:291;11458:4;17964:17;;;:12;;;:17;;;;;;11475:204;;-1:-1:-1;11518:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;11578:18;;11556:19;;;:12;;;:19;;;;;;:40;;;;11611:11;;11475:204;-1:-1:-1;11662:5:0;11655:12;;16200:616;16310:4;16445:17;;;:12;;;:17;;;;;;16479:13;;;16475:334;;-1:-1:-1;;16577:36:0;;;;;;;;;;;;;;;;;;16559:55;;;;;;;;:12;:55;;;;;;;;;;;;;;;;;;;;;;;;16651:19;;16631:17;;;:12;;;:17;;;;;;;:39;16685:11;;16475:334;16765:5;16729:3;16742:12;16753:1;16742:8;:12;:::i;:::-;16729:26;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;:41;;;;16792:5;16785:12;;;;;30137:404;-1:-1:-1;;;;;30217:16:0;;30209:61;;;;-1:-1:-1;;;30209:61:0;;24712:2:1;30209:61:0;;;24694:21:1;;;24731:18;;;24724:30;24790:34;24770:18;;;24763:62;24842:18;;30209:61:0;24510:356:1;30209:61:0;30290:16;30298:7;30290;:16::i;:::-;30289:17;30281:58;;;;-1:-1:-1;;;30281:58:0;;25073:2:1;30281:58:0;;;25055:21:1;25112:2;25092:18;;;25085:30;25151;25131:18;;;25124:58;25199:18;;30281:58:0;24871:352:1;30281:58:0;-1:-1:-1;;;;;30410:17:0;;;;;;:13;:17;;;;;:30;;30432:7;30410:21;:30::i;:::-;-1:-1:-1;30453:29:0;:12;30470:7;30479:2;30453:16;:29::i;:::-;-1:-1:-1;30500:33:0;;30525:7;;-1:-1:-1;;;;;30500:33:0;;;30517:1;;30500:33;;30517:1;;30500:33;30137:404;;:::o;7584:229::-;7721:12;7753:52;7775:6;7783:4;7789:1;7792:12;7721;6829:20;;8509:60;;;;-1:-1:-1;;;8509:60:0;;25837:2:1;8509:60:0;;;25819:21:1;25876:2;25856:18;;;25849:30;25915:31;25895:18;;;25888:59;25964:18;;8509:60:0;25635:353:1;8509:60:0;8643:12;8657:23;8684:6;-1:-1:-1;;;;;8684:11:0;8703:5;8724:4;8684:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8642:97;;;;8757:52;8775:7;8784:10;8796:12;8757:17;:52::i;:::-;8750:59;8185:632;-1:-1:-1;;;;;;;8185:632:0:o;10382:777::-;10532:12;10561:7;10557:595;;;-1:-1:-1;10592:10:0;10585:17;;10557:595;10706:17;;:21;10702:439;;10969:10;10963:17;11030:15;11017:10;11013:2;11009:19;11002:44;10702:439;11112:12;11105:20;;-1:-1:-1;;;11105:20:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:180:1;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:131::-;-1:-1:-1;;;;;;455:32:1;;445:43;;435:71;;502:1;499;492:12;517:245;575:6;628:2;616:9;607:7;603:23;599:32;596:52;;;644:1;641;634:12;596:52;683:9;670:23;702:30;726:5;702:30;:::i;959:258::-;1031:1;1041:113;1055:6;1052:1;1049:13;1041:113;;;1131:11;;;1125:18;1112:11;;;1105:39;1077:2;1070:10;1041:113;;;1172:6;1169:1;1166:13;1163:48;;;-1:-1:-1;;1207:1:1;1189:16;;1182:27;959:258::o;1222:::-;1264:3;1302:5;1296:12;1329:6;1324:3;1317:19;1345:63;1401:6;1394:4;1389:3;1385:14;1378:4;1371:5;1367:16;1345:63;:::i;:::-;1462:2;1441:15;-1:-1:-1;;1437:29:1;1428:39;;;;1469:4;1424:50;;1222:258;-1:-1:-1;;1222:258:1:o;1485:220::-;1634:2;1623:9;1616:21;1597:4;1654:45;1695:2;1684:9;1680:18;1672:6;1654:45;:::i;1918:131::-;-1:-1:-1;;;;;1993:31:1;;1983:42;;1973:70;;2039:1;2036;2029:12;2054:315;2122:6;2130;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;2238:9;2225:23;2257:31;2282:5;2257:31;:::i;:::-;2307:5;2359:2;2344:18;;;;2331:32;;-1:-1:-1;;;2054:315:1:o;2374:127::-;2435:10;2430:3;2426:20;2423:1;2416:31;2466:4;2463:1;2456:15;2490:4;2487:1;2480:15;2506:275;2577:2;2571:9;2642:2;2623:13;;-1:-1:-1;;2619:27:1;2607:40;;2677:18;2662:34;;2698:22;;;2659:62;2656:88;;;2724:18;;:::i;:::-;2760:2;2753:22;2506:275;;-1:-1:-1;2506:275:1:o;2786:407::-;2851:5;2885:18;2877:6;2874:30;2871:56;;;2907:18;;:::i;:::-;2945:57;2990:2;2969:15;;-1:-1:-1;;2965:29:1;2996:4;2961:40;2945:57;:::i;:::-;2936:66;;3025:6;3018:5;3011:21;3065:3;3056:6;3051:3;3047:16;3044:25;3041:45;;;3082:1;3079;3072:12;3041:45;3131:6;3126:3;3119:4;3112:5;3108:16;3095:43;3185:1;3178:4;3169:6;3162:5;3158:18;3154:29;3147:40;2786:407;;;;;:::o;3198:451::-;3267:6;3320:2;3308:9;3299:7;3295:23;3291:32;3288:52;;;3336:1;3333;3326:12;3288:52;3376:9;3363:23;3409:18;3401:6;3398:30;3395:50;;;3441:1;3438;3431:12;3395:50;3464:22;;3517:4;3509:13;;3505:27;-1:-1:-1;3495:55:1;;3546:1;3543;3536:12;3495:55;3569:74;3635:7;3630:2;3617:16;3612:2;3608;3604:11;3569:74;:::i;3654:323::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3843:9;3830:23;3820:33;;3903:2;3892:9;3888:18;3875:32;3916:31;3941:5;3916:31;:::i;:::-;3966:5;3956:15;;;3654:323;;;;;:::o;3982:456::-;4059:6;4067;4075;4128:2;4116:9;4107:7;4103:23;4099:32;4096:52;;;4144:1;4141;4134:12;4096:52;4183:9;4170:23;4202:31;4227:5;4202:31;:::i;:::-;4252:5;-1:-1:-1;4309:2:1;4294:18;;4281:32;4322:33;4281:32;4322:33;:::i;:::-;3982:456;;4374:7;;-1:-1:-1;;;4428:2:1;4413:18;;;;4400:32;;3982:456::o;4443:247::-;4502:6;4555:2;4543:9;4534:7;4530:23;4526:32;4523:52;;;4571:1;4568;4561:12;4523:52;4610:9;4597:23;4629:31;4654:5;4629:31;:::i;5045:632::-;5216:2;5268:21;;;5338:13;;5241:18;;;5360:22;;;5187:4;;5216:2;5439:15;;;;5413:2;5398:18;;;5187:4;5482:169;5496:6;5493:1;5490:13;5482:169;;;5557:13;;5545:26;;5626:15;;;;5591:12;;;;5518:1;5511:9;5482:169;;;-1:-1:-1;5668:3:1;;5045:632;-1:-1:-1;;;;;;5045:632:1:o;5682:416::-;5747:6;5755;5808:2;5796:9;5787:7;5783:23;5779:32;5776:52;;;5824:1;5821;5814:12;5776:52;5863:9;5850:23;5882:31;5907:5;5882:31;:::i;:::-;5932:5;-1:-1:-1;5989:2:1;5974:18;;5961:32;6031:15;;6024:23;6012:36;;6002:64;;6062:1;6059;6052:12;6103:795;6198:6;6206;6214;6222;6275:3;6263:9;6254:7;6250:23;6246:33;6243:53;;;6292:1;6289;6282:12;6243:53;6331:9;6318:23;6350:31;6375:5;6350:31;:::i;:::-;6400:5;-1:-1:-1;6457:2:1;6442:18;;6429:32;6470:33;6429:32;6470:33;:::i;:::-;6522:7;-1:-1:-1;6576:2:1;6561:18;;6548:32;;-1:-1:-1;6631:2:1;6616:18;;6603:32;6658:18;6647:30;;6644:50;;;6690:1;6687;6680:12;6644:50;6713:22;;6766:4;6758:13;;6754:27;-1:-1:-1;6744:55:1;;6795:1;6792;6785:12;6744:55;6818:74;6884:7;6879:2;6866:16;6861:2;6857;6853:11;6818:74;:::i;:::-;6808:84;;;6103:795;;;;;;;:::o;6903:1021::-;6987:6;7018:2;7061;7049:9;7040:7;7036:23;7032:32;7029:52;;;7077:1;7074;7067:12;7029:52;7117:9;7104:23;7146:18;7187:2;7179:6;7176:14;7173:34;;;7203:1;7200;7193:12;7173:34;7241:6;7230:9;7226:22;7216:32;;7286:7;7279:4;7275:2;7271:13;7267:27;7257:55;;7308:1;7305;7298:12;7257:55;7344:2;7331:16;7366:2;7362;7359:10;7356:36;;;7372:18;;:::i;:::-;7418:2;7415:1;7411:10;7401:20;;7441:28;7465:2;7461;7457:11;7441:28;:::i;:::-;7503:15;;;7573:11;;;7569:20;;;7534:12;;;;7601:19;;;7598:39;;;7633:1;7630;7623:12;7598:39;7657:11;;;;7677:217;7693:6;7688:3;7685:15;7677:217;;;7773:3;7760:17;7747:30;;7790:31;7815:5;7790:31;:::i;:::-;7834:18;;;7710:12;;;;7872;;;;7677:217;;;7913:5;6903:1021;-1:-1:-1;;;;;;;;6903:1021:1:o;7929:388::-;7997:6;8005;8058:2;8046:9;8037:7;8033:23;8029:32;8026:52;;;8074:1;8071;8064:12;8026:52;8113:9;8100:23;8132:31;8157:5;8132:31;:::i;:::-;8182:5;-1:-1:-1;8239:2:1;8224:18;;8211:32;8252:33;8211:32;8252:33;:::i;8322:356::-;8524:2;8506:21;;;8543:18;;;8536:30;8602:34;8597:2;8582:18;;8575:62;8669:2;8654:18;;8322:356::o;8683:380::-;8762:1;8758:12;;;;8805;;;8826:61;;8880:4;8872:6;8868:17;8858:27;;8826:61;8933:2;8925:6;8922:14;8902:18;8899:38;8896:161;;8979:10;8974:3;8970:20;8967:1;8960:31;9014:4;9011:1;9004:15;9042:4;9039:1;9032:15;11571:413;11773:2;11755:21;;;11812:2;11792:18;;;11785:30;11851:34;11846:2;11831:18;;11824:62;-1:-1:-1;;;11917:2:1;11902:18;;11895:47;11974:3;11959:19;;11571:413::o;13452:127::-;13513:10;13508:3;13504:20;13501:1;13494:31;13544:4;13541:1;13534:15;13568:4;13565:1;13558:15;13584:128;13624:3;13655:1;13651:6;13648:1;13645:13;13642:39;;;13661:18;;:::i;:::-;-1:-1:-1;13697:9:1;;13584:128::o;14774:135::-;14813:3;14834:17;;;14831:43;;14854:18;;:::i;:::-;-1:-1:-1;14901:1:1;14890:13;;14774:135::o;14914:125::-;14954:4;14982:1;14979;14976:8;14973:34;;;14987:18;;:::i;:::-;-1:-1:-1;15024:9:1;;14914:125::o;15738:127::-;15799:10;15794:3;15790:20;15787:1;15780:31;15830:4;15827:1;15820:15;15854:4;15851:1;15844:15;16207:168;16247:7;16313:1;16309;16305:6;16301:14;16298:1;16295:21;16290:1;16283:9;16276:17;16272:45;16269:71;;;16320:18;;:::i;:::-;-1:-1:-1;16360:9:1;;16207:168::o;18902:772::-;19283:3;19321:6;19315:13;19337:53;19383:6;19378:3;19371:4;19363:6;19359:17;19337:53;:::i;:::-;-1:-1:-1;;;19412:16:1;;;19437:18;;;19480:13;;19502:65;19480:13;19554:1;19543:13;;19536:4;19524:17;;19502:65;:::i;:::-;-1:-1:-1;;;19630:1:1;19586:20;;;;19622:10;;;19615:27;19666:1;19658:10;;18902:772;-1:-1:-1;;;;18902:772:1:o;20040:127::-;20101:10;20096:3;20092:20;20089:1;20082:31;20132:4;20129:1;20122:15;20156:4;20153:1;20146:15;20172:112;20204:1;20230;20220:35;;20235:18;;:::i;:::-;-1:-1:-1;20269:9:1;;20172:112::o;22280:414::-;22482:2;22464:21;;;22521:2;22501:18;;;22494:30;22560:34;22555:2;22540:18;;22533:62;-1:-1:-1;;;22626:2:1;22611:18;;22604:48;22684:3;22669:19;;22280:414::o;22699:120::-;22739:1;22765;22755:35;;22770:18;;:::i;:::-;-1:-1:-1;22804:9:1;;22699:120::o;23630:489::-;-1:-1:-1;;;;;23899:15:1;;;23881:34;;23951:15;;23946:2;23931:18;;23924:43;23998:2;23983:18;;23976:34;;;24046:3;24041:2;24026:18;;24019:31;;;23824:4;;24067:46;;24093:19;;24085:6;24067:46;:::i;:::-;24059:54;23630:489;-1:-1:-1;;;;;;23630:489:1:o;24124:249::-;24193:6;24246:2;24234:9;24225:7;24221:23;24217:32;24214:52;;;24262:1;24259;24252:12;24214:52;24294:9;24288:16;24313:30;24337:5;24313:30;:::i;24378:127::-;24439:10;24434:3;24430:20;24427:1;24420:31;24470:4;24467:1;24460:15;24494:4;24491:1;24484:15;25993:274;26122:3;26160:6;26154:13;26176:53;26222:6;26217:3;26210:4;26202:6;26198:17;26176:53;:::i;:::-;26245:16;;;;;25993:274;-1:-1:-1;;25993:274:1:o

Swarm Source

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