ETH Price: $2,956.62 (-5.25%)
Gas: 7 Gwei

Token

THE DAY OVER COOKED HOKKE (HOKKE)
 

Overview

Max Total Supply

118 HOKKE

Holders

83

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 HOKKE
0xb42e4920a5b4a0b7249cb7aedf02c28f18df8bc6
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:
CoveredRecoedsTheDay

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol
pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol
pragma solidity ^0.8.0;

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/extensions/IERC721Enumerable.sol
pragma solidity ^0.8.0;

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/utils/introspection/ERC165.sol
pragma solidity ^0.8.0;
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}
// File: @openzeppelin/contracts/utils/Strings.sol
pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity ^0.8.0;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

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

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

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

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

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol
pragma solidity ^0.8.0;

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/IERC721Receiver.sol
pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/utils/Context.sol
pragma solidity ^0.8.0;

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

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


// File: @openzeppelin/contracts/token/ERC721/ERC721.sol
pragma solidity ^0.8.0;

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    string private _name;
    string private _symbol;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

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

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

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

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

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

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

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

    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

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

        _approve(to, tokenId);
    }

    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 _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

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

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

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

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

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

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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

// File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol
pragma solidity ^0.8.0;

abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
    mapping(uint256 => uint256) private _ownedTokensIndex;
    uint256[] private _allTokens;
    mapping(uint256 => uint256) private _allTokensIndex;

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

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];
        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


// File: @openzeppelin/contracts/access/Ownable.sol
pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/interfaces/IERC2981.sol
pragma solidity ^0.8.0;

interface IERC2981 is IERC165 {
    function royaltyInfo(uint256 tokenId, uint256 salePrice)
        external
        view
        returns (address receiver, uint256 royaltyAmount);
}

// File: @openzeppelin/contracts/token/common/ERC2981.sol

pragma solidity ^0.8.0;

abstract contract ERC2981 is IERC2981, ERC165 {
    struct RoyaltyInfo {
        address receiver;
        uint96 royaltyFraction;
    }

    RoyaltyInfo private _defaultRoyaltyInfo;
    mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo;

    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) {
        return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId);
    }

    function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) {
        RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId];

        if (royalty.receiver == address(0)) {
            royalty = _defaultRoyaltyInfo;
        }

        uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator();

        return (royalty.receiver, royaltyAmount);
    }

    function _feeDenominator() internal pure virtual returns (uint96) {
        return 10000;
    }

    function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual {
        require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice");
        require(receiver != address(0), "ERC2981: invalid receiver");

        _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator);
    }


    function _deleteDefaultRoyalty() internal virtual {
        delete _defaultRoyaltyInfo;
    }

    function _setTokenRoyalty(
        uint256 tokenId,
        address receiver,
        uint96 feeNumerator
    ) internal virtual {
        require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice");
        require(receiver != address(0), "ERC2981: Invalid parameters");

        _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator);
    }

    function _resetTokenRoyalty(uint256 tokenId) internal virtual {
        delete _tokenRoyaltyInfo[tokenId];
    }
}

//merkle
pragma solidity ^0.8.0;

library MerkleProof {

    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    function verifyCalldata(
        bytes32[] calldata proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProofCalldata(proof, leaf) == root;
    }

    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    function multiProofVerify(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProof(proof, proofFlags, leaves) == root;
    }

    function multiProofVerifyCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProofCalldata(proof, proofFlags, leaves) == root;
    }

    function processMultiProof(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        uint256 leavesLen = leaves.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof");
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;
        uint256 hashPos = 0;
        uint256 proofPos = 0;

        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            return hashes[totalHashes - 1];
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    function processMultiProofCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        uint256 leavesLen = leaves.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof");
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;
        uint256 hashPos = 0;
        uint256 proofPos = 0;
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            return hashes[totalHashes - 1];
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {
        return a < b ? _efficientHash(a, b) : _efficientHash(b, a);
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }
}

pragma solidity >=0.7.0 <0.9.0;

contract CoveredRecoedsTheDay is ERC721Enumerable, Ownable, ReentrancyGuard, ERC2981{
  using Strings for uint256;
  string baseURI;
  string public baseExtension = ".json";
  uint256 public cost = 0.015 ether;
  uint256 public maxSupply = 333;
  uint256 public maxMintAmount = 3;
  bool public paused = true;
  bool public publicSaleStart = false;
  mapping(address => uint256) public addressMintedBalance;
  bytes32 public merkleRoot;

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _initBaseURI
  ) ERC721(_name, _symbol) {
    setBaseURI(_initBaseURI);
    _setDefaultRoyalty(0x976562228294Bfb387f845a9D05772455d2F176F, 1000);
  }

  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }
  
  function supportsInterface(bytes4 interfaceId) public view override(ERC721Enumerable, ERC2981) returns (bool) {
    return super.supportsInterface(interfaceId);
  }

  function mint(uint256 _mintAmount, bytes32[] calldata _merkleProof) public payable nonReentrant {
    bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
    uint256 supply = totalSupply();
    require(!paused);
    require(_mintAmount > 0);
    require(msg.value >= cost * _mintAmount, "Value sent is not correct");
    require(_mintAmount <= maxMintAmount);
    require(maxMintAmount >= addressMintedBalance[msg.sender] + _mintAmount);
    require(supply + _mintAmount <= maxSupply);
    require(MerkleProof.verify(_merkleProof, merkleRoot, leaf),"Invalid Merkle Proof");
    
    for (uint256 i = 1; i <= _mintAmount; i++) {
        addressMintedBalance[msg.sender]++;
      _safeMint(msg.sender, supply + i);
    }
  }

  function setMerkleRoot(bytes32 _merkleRoot) external onlyOwner {
    merkleRoot = _merkleRoot;
  }

  function publicMint(uint256 _mintAmount) public payable {
    uint256 supply = totalSupply();
    require(publicSaleStart);
    require(!paused);
    require(_mintAmount > 0);
    require(msg.value >= cost * _mintAmount, "Value sent is not correct");
    require(_mintAmount <= maxMintAmount);
    require(maxMintAmount >= addressMintedBalance[msg.sender] + _mintAmount);
    require(supply + _mintAmount <= maxSupply);
    
    for (uint256 i = 1; i <= _mintAmount; i++) {
        addressMintedBalance[msg.sender]++;
      _safeMint(msg.sender, supply + i);
    }
  }

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

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

  function ownerMint(address to, uint256 _mintAmount) public onlyOwner {
    uint256 supply = totalSupply();
    require(_mintAmount > 0);
    require(supply + _mintAmount <= maxSupply);
    for (uint256 i = 1; i <= _mintAmount; i++) {
      _safeMint(to, supply + i);
    }
  }

  function withdrawRevenueShare() external onlyOwner {
        uint256 sendAmount = address(this).balance;
        address founder = payable(0x976562228294Bfb387f845a9D05772455d2F176F);
        address platformer = payable(0x48A23fb6f56F9c14D29FA47A4f45b3a03167dDAe);
        address engineer = payable(0xeDAcc663C23ba31398550E17b1ccF47cd9Da1888);
        bool success;
        
        (success, ) = founder.call{value: (sendAmount * 800/1000)}("");
        require(success, "Failed to withdraw Ether");
        (success, ) = platformer.call{value: (sendAmount * 100/1000)}("");
        require(success, "Failed to withdraw Ether");
        (success, ) = engineer.call{value: (sendAmount * 100/1000)}("");
        require(success, "Failed to withdraw Ether");
    }
  
  function setCost(uint256 _newCost) public onlyOwner {
    cost = _newCost;
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {
    maxMintAmount = _newmaxMintAmount;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
 
  function switchPubSale(bool _state) external onlyOwner {
    publicSaleStart = _state;
  }

  function withdraw() public onlyOwner { 
    (bool os, ) = payable(owner()).call{value: address(this).balance}("");
    require(os);
  }

  function setDefaultRoyalty(address receiver, uint96 feeNumerator) external onlyOwner {
    _setDefaultRoyalty(receiver, feeNumerator);
  }

  function deleteDefaultRoyalty() external onlyOwner {
    _deleteDefaultRoyalty();
  }

  function setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator) external onlyOwner {
    _setTokenRoyalty(tokenId, receiver, feeNumerator);
  }

  function resetTokenRoyalty(uint256 tokenId) external onlyOwner {
    _resetTokenRoyalty(tokenId);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","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":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deleteDefaultRoyalty","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":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicSaleStart","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"resetTokenRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"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":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setTokenRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"switchPubSale","outputs":[],"stateMutability":"nonpayable","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawRevenueShare","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040526005608081905264173539b7b760d91b60a09081526200002891600f9190620002d4565b5066354a6ba7a1800060105561014d60115560036012556013805461ffff191660011790553480156200005a57600080fd5b50604051620033c6380380620033c68339810160408190526200007d9162000431565b82518390839062000096906000906020850190620002d4565b508051620000ac906001906020840190620002d4565b505050620000c9620000c36200010460201b60201c565b62000108565b6001600b55620000d9816200015a565b620000fb73976562228294bfb387f845a9d05772455d2f176f6103e8620001d3565b50505062000515565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314620001ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8051620001cf90600e906020840190620002d4565b5050565b6127106001600160601b0382161115620002435760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401620001b1565b6001600160a01b0382166200029b5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620001b1565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b828054620002e290620004c2565b90600052602060002090601f01602090048101928262000306576000855562000351565b82601f106200032157805160ff191683800117855562000351565b8280016001018555821562000351579182015b828111156200035157825182559160200191906001019062000334565b506200035f92915062000363565b5090565b5b808211156200035f576000815560010162000364565b600082601f8301126200038c57600080fd5b81516001600160401b0380821115620003a957620003a9620004ff565b604051601f8301601f19908116603f01168101908282118183101715620003d457620003d4620004ff565b81604052838152602092508683858801011115620003f157600080fd5b600091505b83821015620004155785820183015181830184015290820190620003f6565b83821115620004275760008385830101525b9695505050505050565b6000806000606084860312156200044757600080fd5b83516001600160401b03808211156200045f57600080fd5b6200046d878388016200037a565b945060208601519150808211156200048457600080fd5b62000492878388016200037a565b93506040860151915080821115620004a957600080fd5b50620004b8868287016200037a565b9150509250925092565b600181811c90821680620004d757607f821691505b60208210811415620004f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612ea180620005256000396000f3fe6080604052600436106102675760003560e01c80635944c75311610144578063aa1b103f116100b6578063c87b56dd1161007a578063c87b56dd14610709578063d5abeb0114610729578063da3ef23f1461073f578063e0b0b2fb1461075f578063e985e9c51461077f578063f2fde38b146107c857600080fd5b8063aa1b103f14610697578063aa38cd32146106ac578063b88d4fde146106c1578063ba41b0c6146106e1578063c6682862146106f457600080fd5b80637cb64759116101085780637cb64759146105e45780637f00c7a6146106045780638a616bc0146106245780638da5cb5b1461064457806395d89b4114610662578063a22cb4651461067757600080fd5b80635944c753146105555780635c975abb146105755780636352211e1461058f57806370a08231146105af578063715018a6146105cf57600080fd5b80632a55205a116101dd5780633ccfd60b116101a15780633ccfd60b146104a057806342842e0e146104b557806344a0d68a146104d5578063484b973c146104f55780634f6ccce71461051557806355f804b31461053557600080fd5b80632a55205a146103f95780632db11544146104385780632eb4a7ab1461044b5780632f745c59146104615780633360caa01461048157600080fd5b8063095ea7b31161022f578063095ea7b31461033d57806313faede61461035d57806318160ddd1461038157806318cae26914610396578063239c70ae146103c357806323b872dd146103d957600080fd5b806301ffc9a71461026c57806302329a29146102a157806304634d8d146102c357806306fdde03146102e3578063081812fc14610305575b600080fd5b34801561027857600080fd5b5061028c6102873660046128f6565b6107e8565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046128c2565b6107f9565b005b3480156102cf57600080fd5b506102c16102de366004612898565b61083f565b3480156102ef57600080fd5b506102f8610877565b6040516102989190612b83565b34801561031157600080fd5b506103256103203660046128dd565b610909565b6040516001600160a01b039091168152602001610298565b34801561034957600080fd5b506102c161035836600461286e565b61099e565b34801561036957600080fd5b5061037360105481565b604051908152602001610298565b34801561038d57600080fd5b50600854610373565b3480156103a257600080fd5b506103736103b136600461273e565b60146020526000908152604090205481565b3480156103cf57600080fd5b5061037360125481565b3480156103e557600080fd5b506102c16103f436600461278c565b610ab4565b34801561040557600080fd5b50610419610414366004612a34565b610ae5565b604080516001600160a01b039093168352602083019190915201610298565b6102c16104463660046128dd565b610b91565b34801561045757600080fd5b5061037360155481565b34801561046d57600080fd5b5061037361047c36600461286e565b610cc9565b34801561048d57600080fd5b5060135461028c90610100900460ff1681565b3480156104ac57600080fd5b506102c1610d5f565b3480156104c157600080fd5b506102c16104d036600461278c565b610dfd565b3480156104e157600080fd5b506102c16104f03660046128dd565b610e18565b34801561050157600080fd5b506102c161051036600461286e565b610e47565b34801561052157600080fd5b506103736105303660046128dd565b610ed3565b34801561054157600080fd5b506102c1610550366004612930565b610f66565b34801561056157600080fd5b506102c1610570366004612979565b610fa3565b34801561058157600080fd5b5060135461028c9060ff1681565b34801561059b57600080fd5b506103256105aa3660046128dd565b610fd8565b3480156105bb57600080fd5b506103736105ca36600461273e565b61104f565b3480156105db57600080fd5b506102c16110d6565b3480156105f057600080fd5b506102c16105ff3660046128dd565b61110c565b34801561061057600080fd5b506102c161061f3660046128dd565b61113b565b34801561063057600080fd5b506102c161063f3660046128dd565b61116a565b34801561065057600080fd5b50600a546001600160a01b0316610325565b34801561066e57600080fd5b506102f86111a5565b34801561068357600080fd5b506102c1610692366004612844565b6111b4565b3480156106a357600080fd5b506102c1611279565b3480156106b857600080fd5b506102c16112ad565b3480156106cd57600080fd5b506102c16106dc3660046127c8565b6114aa565b6102c16106ef3660046129b5565b6114dc565b34801561070057600080fd5b506102f86116cd565b34801561071557600080fd5b506102f86107243660046128dd565b61175b565b34801561073557600080fd5b5061037360115481565b34801561074b57600080fd5b506102c161075a366004612930565b611839565b34801561076b57600080fd5b506102c161077a3660046128c2565b611876565b34801561078b57600080fd5b5061028c61079a366004612759565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107d457600080fd5b506102c16107e336600461273e565b6118ba565b60006107f382611952565b92915050565b600a546001600160a01b0316331461082c5760405162461bcd60e51b815260040161082390612be8565b60405180910390fd5b6013805460ff1916911515919091179055565b600a546001600160a01b031633146108695760405162461bcd60e51b815260040161082390612be8565b6108738282611977565b5050565b60606000805461088690612d7d565b80601f01602080910402602001604051908101604052809291908181526020018280546108b290612d7d565b80156108ff5780601f106108d4576101008083540402835291602001916108ff565b820191906000526020600020905b8154815290600101906020018083116108e257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109825760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610823565b506000908152600460205260409020546001600160a01b031690565b60006109a982610fd8565b9050806001600160a01b0316836001600160a01b03161415610a175760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610823565b336001600160a01b0382161480610a335750610a33813361079a565b610aa55760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610823565b610aaf8383611a31565b505050565b610abe3382611a9f565b610ada5760405162461bcd60e51b815260040161082390612c54565b610aaf838383611b96565b6000828152600d602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610b5a575060408051808201909152600c546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610b79906001600160601b031687612d1b565b610b839190612d07565b915196919550909350505050565b6000610b9c60085490565b601354909150610100900460ff16610bb357600080fd5b60135460ff1615610bc357600080fd5b60008211610bd057600080fd5b81601054610bde9190612d1b565b341015610c295760405162461bcd60e51b815260206004820152601960248201527815985b1d59481cd95b9d081a5cc81b9bdd0818dbdc9c9958dd603a1b6044820152606401610823565b601254821115610c3857600080fd5b33600090815260146020526040902054610c53908390612cef565b6012541015610c6157600080fd5b601154610c6e8383612cef565b1115610c7957600080fd5b60015b828111610aaf57336000908152601460205260408120805491610c9e83612db8565b90915550610cb7905033610cb28385612cef565b611d41565b80610cc181612db8565b915050610c7c565b6000610cd48361104f565b8210610d365760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610823565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610d895760405162461bcd60e51b815260040161082390612be8565b6000610d9d600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610de7576040519150601f19603f3d011682016040523d82523d6000602084013e610dec565b606091505b5050905080610dfa57600080fd5b50565b610aaf838383604051806020016040528060008152506114aa565b600a546001600160a01b03163314610e425760405162461bcd60e51b815260040161082390612be8565b601055565b600a546001600160a01b03163314610e715760405162461bcd60e51b815260040161082390612be8565b6000610e7c60085490565b905060008211610e8b57600080fd5b601154610e988383612cef565b1115610ea357600080fd5b60015b828111610ecd57610ebb84610cb28385612cef565b80610ec581612db8565b915050610ea6565b50505050565b6000610ede60085490565b8210610f415760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610823565b60088281548110610f5457610f54612e29565b90600052602060002001549050919050565b600a546001600160a01b03163314610f905760405162461bcd60e51b815260040161082390612be8565b805161087390600e9060208401906125ec565b600a546001600160a01b03163314610fcd5760405162461bcd60e51b815260040161082390612be8565b610aaf838383611d5b565b6000818152600260205260408120546001600160a01b0316806107f35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610823565b60006001600160a01b0382166110ba5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610823565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146111005760405162461bcd60e51b815260040161082390612be8565b61110a6000611e26565b565b600a546001600160a01b031633146111365760405162461bcd60e51b815260040161082390612be8565b601555565b600a546001600160a01b031633146111655760405162461bcd60e51b815260040161082390612be8565b601255565b600a546001600160a01b031633146111945760405162461bcd60e51b815260040161082390612be8565b6000908152600d6020526040812055565b60606001805461088690612d7d565b6001600160a01b03821633141561120d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610823565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146112a35760405162461bcd60e51b815260040161082390612be8565b61110a6000600c55565b600a546001600160a01b031633146112d75760405162461bcd60e51b815260040161082390612be8565b4773976562228294bfb387f845a9d05772455d2f176f7348a23fb6f56f9c14d29fa47a4f45b3a03167ddae73edacc663c23ba31398550e17b1ccf47cd9da18886000836103e861132987610320612d1b565b6113339190612d07565b604051600081818185875af1925050503d806000811461136f576040519150601f19603f3d011682016040523d82523d6000602084013e611374565b606091505b505080915050806113975760405162461bcd60e51b815260040161082390612c1d565b6001600160a01b0383166103e86113af876064612d1b565b6113b99190612d07565b604051600081818185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b5050809150508061141d5760405162461bcd60e51b815260040161082390612c1d565b6001600160a01b0382166103e8611435876064612d1b565b61143f9190612d07565b604051600081818185875af1925050503d806000811461147b576040519150601f19603f3d011682016040523d82523d6000602084013e611480565b606091505b505080915050806114a35760405162461bcd60e51b815260040161082390612c1d565b5050505050565b6114b43383611a9f565b6114d05760405162461bcd60e51b815260040161082390612c54565b610ecd84848484611e78565b6114e4611eab565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050600061152860085490565b60135490915060ff161561153b57600080fd5b6000851161154857600080fd5b846010546115569190612d1b565b3410156115a15760405162461bcd60e51b815260206004820152601960248201527815985b1d59481cd95b9d081a5cc81b9bdd0818dbdc9c9958dd603a1b6044820152606401610823565b6012548511156115b057600080fd5b336000908152601460205260409020546115cb908690612cef565b60125410156115d957600080fd5b6011546115e68683612cef565b11156115f157600080fd5b611632848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506015549150859050611f05565b6116755760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21026b2b935b63290283937b7b360611b6044820152606401610823565b60015b8581116116c05733600090815260146020526040812080549161169a83612db8565b909155506116ae905033610cb28385612cef565b806116b881612db8565b915050611678565b505050610aaf6001600b55565b600f80546116da90612d7d565b80601f016020809104026020016040519081016040528092919081815260200182805461170690612d7d565b80156117535780601f1061172857610100808354040283529160200191611753565b820191906000526020600020905b81548152906001019060200180831161173657829003601f168201915b505050505081565b6000818152600260205260409020546060906001600160a01b03166117da5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610823565b60006117e4611f1b565b905060008151116118045760405180602001604052806000815250611832565b8061180e84611f2a565b600f60405160200161182293929190612a82565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146118635760405162461bcd60e51b815260040161082390612be8565b805161087390600f9060208401906125ec565b600a546001600160a01b031633146118a05760405162461bcd60e51b815260040161082390612be8565b601380549115156101000261ff0019909216919091179055565b600a546001600160a01b031633146118e45760405162461bcd60e51b815260040161082390612be8565b6001600160a01b0381166119495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610823565b610dfa81611e26565b60006001600160e01b0319821663152a902d60e11b14806107f357506107f382612028565b6127106001600160601b03821611156119a25760405162461bcd60e51b815260040161082390612ca5565b6001600160a01b0382166119f85760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610823565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a6682610fd8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611b185760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610823565b6000611b2383610fd8565b9050806001600160a01b0316846001600160a01b03161480611b5e5750836001600160a01b0316611b5384610909565b6001600160a01b0316145b80611b8e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611ba982610fd8565b6001600160a01b031614611c115760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610823565b6001600160a01b038216611c735760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610823565b611c7e83838361204d565b611c89600082611a31565b6001600160a01b0383166000908152600360205260408120805460019290611cb2908490612d3a565b90915550506001600160a01b0382166000908152600360205260408120805460019290611ce0908490612cef565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610873828260405180602001604052806000815250612105565b6127106001600160601b0382161115611d865760405162461bcd60e51b815260040161082390612ca5565b6001600160a01b038216611ddc5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610823565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600d90529190942093519051909116600160a01b029116179055565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611e83848484611b96565b611e8f84848484612138565b610ecd5760405162461bcd60e51b815260040161082390612b96565b6002600b541415611efe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610823565b6002600b55565b600082611f128584612245565b14949350505050565b6060600e805461088690612d7d565b606081611f4e5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f785780611f6281612db8565b9150611f719050600a83612d07565b9150611f52565b60008167ffffffffffffffff811115611f9357611f93612e3f565b6040519080825280601f01601f191660200182016040528015611fbd576020820181803683370190505b5090505b8415611b8e57611fd2600183612d3a565b9150611fdf600a86612dd3565b611fea906030612cef565b60f81b818381518110611fff57611fff612e29565b60200101906001600160f81b031916908160001a905350612021600a86612d07565b9450611fc1565b60006001600160e01b0319821663780e9d6360e01b14806107f357506107f382612292565b6001600160a01b0383166120a8576120a381600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6120cb565b816001600160a01b0316836001600160a01b0316146120cb576120cb83826122e2565b6001600160a01b0382166120e257610aaf8161237f565b826001600160a01b0316826001600160a01b031614610aaf57610aaf828261242e565b61210f8383612472565b61211c6000848484612138565b610aaf5760405162461bcd60e51b815260040161082390612b96565b60006001600160a01b0384163b1561223a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061217c903390899088908890600401612b46565b602060405180830381600087803b15801561219657600080fd5b505af19250505080156121c6575060408051601f3d908101601f191682019092526121c391810190612913565b60015b612220573d8080156121f4576040519150601f19603f3d011682016040523d82523d6000602084013e6121f9565b606091505b5080516122185760405162461bcd60e51b815260040161082390612b96565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b8e565b506001949350505050565b600081815b845181101561228a576122768286838151811061226957612269612e29565b60200260200101516125c0565b91508061228281612db8565b91505061224a565b509392505050565b60006001600160e01b031982166380ac58cd60e01b14806122c357506001600160e01b03198216635b5e139f60e01b145b806107f357506301ffc9a760e01b6001600160e01b03198316146107f3565b600060016122ef8461104f565b6122f99190612d3a565b60008381526007602052604090205490915080821461234c576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061239190600190612d3a565b600083815260096020526040812054600880549394509092849081106123b9576123b9612e29565b9060005260206000200154905080600883815481106123da576123da612e29565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061241257612412612e13565b6001900381819060005260206000200160009055905550505050565b60006124398361104f565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166124c85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610823565b6000818152600260205260409020546001600160a01b03161561252d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610823565b6125396000838361204d565b6001600160a01b0382166000908152600360205260408120805460019290612562908490612cef565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008183106125dc576000828152602084905260409020611832565b5060009182526020526040902090565b8280546125f890612d7d565b90600052602060002090601f01602090048101928261261a5760008555612660565b82601f1061263357805160ff1916838001178555612660565b82800160010185558215612660579182015b82811115612660578251825591602001919060010190612645565b5061266c929150612670565b5090565b5b8082111561266c5760008155600101612671565b600067ffffffffffffffff808411156126a0576126a0612e3f565b604051601f8501601f19908116603f011681019082821181831017156126c8576126c8612e3f565b816040528093508581528686860111156126e157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461271257600080fd5b919050565b8035801515811461271257600080fd5b80356001600160601b038116811461271257600080fd5b60006020828403121561275057600080fd5b611832826126fb565b6000806040838503121561276c57600080fd5b612775836126fb565b9150612783602084016126fb565b90509250929050565b6000806000606084860312156127a157600080fd5b6127aa846126fb565b92506127b8602085016126fb565b9150604084013590509250925092565b600080600080608085870312156127de57600080fd5b6127e7856126fb565b93506127f5602086016126fb565b925060408501359150606085013567ffffffffffffffff81111561281857600080fd5b8501601f8101871361282957600080fd5b61283887823560208401612685565b91505092959194509250565b6000806040838503121561285757600080fd5b612860836126fb565b915061278360208401612717565b6000806040838503121561288157600080fd5b61288a836126fb565b946020939093013593505050565b600080604083850312156128ab57600080fd5b6128b4836126fb565b915061278360208401612727565b6000602082840312156128d457600080fd5b61183282612717565b6000602082840312156128ef57600080fd5b5035919050565b60006020828403121561290857600080fd5b813561183281612e55565b60006020828403121561292557600080fd5b815161183281612e55565b60006020828403121561294257600080fd5b813567ffffffffffffffff81111561295957600080fd5b8201601f8101841361296a57600080fd5b611b8e84823560208401612685565b60008060006060848603121561298e57600080fd5b8335925061299e602085016126fb565b91506129ac60408501612727565b90509250925092565b6000806000604084860312156129ca57600080fd5b83359250602084013567ffffffffffffffff808211156129e957600080fd5b818601915086601f8301126129fd57600080fd5b813581811115612a0c57600080fd5b8760208260051b8501011115612a2157600080fd5b6020830194508093505050509250925092565b60008060408385031215612a4757600080fd5b50508035926020909101359150565b60008151808452612a6e816020860160208601612d51565b601f01601f19169290920160200192915050565b600084516020612a958285838a01612d51565b855191840191612aa88184848a01612d51565b8554920191600090600181811c9080831680612ac557607f831692505b858310811415612ae357634e487b7160e01b85526022600452602485fd5b808015612af75760018114612b0857612b35565b60ff19851688528388019550612b35565b60008b81526020902060005b85811015612b2d5781548a820152908401908801612b14565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b7990830184612a56565b9695505050505050565b6020815260006118326020830184612a56565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f4661696c656420746f2077697468647261772045746865720000000000000000604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60008219821115612d0257612d02612de7565b500190565b600082612d1657612d16612dfd565b500490565b6000816000190483118215151615612d3557612d35612de7565b500290565b600082821015612d4c57612d4c612de7565b500390565b60005b83811015612d6c578181015183820152602001612d54565b83811115610ecd5750506000910152565b600181811c90821680612d9157607f821691505b60208210811415612db257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612dcc57612dcc612de7565b5060010190565b600082612de257612de2612dfd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610dfa57600080fdfea2646970667358221220b15fb3f11486bd750bf7472b2d9675f83d0811ec60a64fdcc7a5ad3ee648445864736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001954484520444159204f56455220434f4f4b454420484f4b4b45000000000000000000000000000000000000000000000000000000000000000000000000000005484f4b4b45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f617277656176652e6e65742f4137685a667a70735473764c6d324b595157796f75657a47726a7a545665333673757a6a77536e676b66552f

Deployed Bytecode

0x6080604052600436106102675760003560e01c80635944c75311610144578063aa1b103f116100b6578063c87b56dd1161007a578063c87b56dd14610709578063d5abeb0114610729578063da3ef23f1461073f578063e0b0b2fb1461075f578063e985e9c51461077f578063f2fde38b146107c857600080fd5b8063aa1b103f14610697578063aa38cd32146106ac578063b88d4fde146106c1578063ba41b0c6146106e1578063c6682862146106f457600080fd5b80637cb64759116101085780637cb64759146105e45780637f00c7a6146106045780638a616bc0146106245780638da5cb5b1461064457806395d89b4114610662578063a22cb4651461067757600080fd5b80635944c753146105555780635c975abb146105755780636352211e1461058f57806370a08231146105af578063715018a6146105cf57600080fd5b80632a55205a116101dd5780633ccfd60b116101a15780633ccfd60b146104a057806342842e0e146104b557806344a0d68a146104d5578063484b973c146104f55780634f6ccce71461051557806355f804b31461053557600080fd5b80632a55205a146103f95780632db11544146104385780632eb4a7ab1461044b5780632f745c59146104615780633360caa01461048157600080fd5b8063095ea7b31161022f578063095ea7b31461033d57806313faede61461035d57806318160ddd1461038157806318cae26914610396578063239c70ae146103c357806323b872dd146103d957600080fd5b806301ffc9a71461026c57806302329a29146102a157806304634d8d146102c357806306fdde03146102e3578063081812fc14610305575b600080fd5b34801561027857600080fd5b5061028c6102873660046128f6565b6107e8565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046128c2565b6107f9565b005b3480156102cf57600080fd5b506102c16102de366004612898565b61083f565b3480156102ef57600080fd5b506102f8610877565b6040516102989190612b83565b34801561031157600080fd5b506103256103203660046128dd565b610909565b6040516001600160a01b039091168152602001610298565b34801561034957600080fd5b506102c161035836600461286e565b61099e565b34801561036957600080fd5b5061037360105481565b604051908152602001610298565b34801561038d57600080fd5b50600854610373565b3480156103a257600080fd5b506103736103b136600461273e565b60146020526000908152604090205481565b3480156103cf57600080fd5b5061037360125481565b3480156103e557600080fd5b506102c16103f436600461278c565b610ab4565b34801561040557600080fd5b50610419610414366004612a34565b610ae5565b604080516001600160a01b039093168352602083019190915201610298565b6102c16104463660046128dd565b610b91565b34801561045757600080fd5b5061037360155481565b34801561046d57600080fd5b5061037361047c36600461286e565b610cc9565b34801561048d57600080fd5b5060135461028c90610100900460ff1681565b3480156104ac57600080fd5b506102c1610d5f565b3480156104c157600080fd5b506102c16104d036600461278c565b610dfd565b3480156104e157600080fd5b506102c16104f03660046128dd565b610e18565b34801561050157600080fd5b506102c161051036600461286e565b610e47565b34801561052157600080fd5b506103736105303660046128dd565b610ed3565b34801561054157600080fd5b506102c1610550366004612930565b610f66565b34801561056157600080fd5b506102c1610570366004612979565b610fa3565b34801561058157600080fd5b5060135461028c9060ff1681565b34801561059b57600080fd5b506103256105aa3660046128dd565b610fd8565b3480156105bb57600080fd5b506103736105ca36600461273e565b61104f565b3480156105db57600080fd5b506102c16110d6565b3480156105f057600080fd5b506102c16105ff3660046128dd565b61110c565b34801561061057600080fd5b506102c161061f3660046128dd565b61113b565b34801561063057600080fd5b506102c161063f3660046128dd565b61116a565b34801561065057600080fd5b50600a546001600160a01b0316610325565b34801561066e57600080fd5b506102f86111a5565b34801561068357600080fd5b506102c1610692366004612844565b6111b4565b3480156106a357600080fd5b506102c1611279565b3480156106b857600080fd5b506102c16112ad565b3480156106cd57600080fd5b506102c16106dc3660046127c8565b6114aa565b6102c16106ef3660046129b5565b6114dc565b34801561070057600080fd5b506102f86116cd565b34801561071557600080fd5b506102f86107243660046128dd565b61175b565b34801561073557600080fd5b5061037360115481565b34801561074b57600080fd5b506102c161075a366004612930565b611839565b34801561076b57600080fd5b506102c161077a3660046128c2565b611876565b34801561078b57600080fd5b5061028c61079a366004612759565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107d457600080fd5b506102c16107e336600461273e565b6118ba565b60006107f382611952565b92915050565b600a546001600160a01b0316331461082c5760405162461bcd60e51b815260040161082390612be8565b60405180910390fd5b6013805460ff1916911515919091179055565b600a546001600160a01b031633146108695760405162461bcd60e51b815260040161082390612be8565b6108738282611977565b5050565b60606000805461088690612d7d565b80601f01602080910402602001604051908101604052809291908181526020018280546108b290612d7d565b80156108ff5780601f106108d4576101008083540402835291602001916108ff565b820191906000526020600020905b8154815290600101906020018083116108e257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109825760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610823565b506000908152600460205260409020546001600160a01b031690565b60006109a982610fd8565b9050806001600160a01b0316836001600160a01b03161415610a175760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610823565b336001600160a01b0382161480610a335750610a33813361079a565b610aa55760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610823565b610aaf8383611a31565b505050565b610abe3382611a9f565b610ada5760405162461bcd60e51b815260040161082390612c54565b610aaf838383611b96565b6000828152600d602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610b5a575060408051808201909152600c546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610b79906001600160601b031687612d1b565b610b839190612d07565b915196919550909350505050565b6000610b9c60085490565b601354909150610100900460ff16610bb357600080fd5b60135460ff1615610bc357600080fd5b60008211610bd057600080fd5b81601054610bde9190612d1b565b341015610c295760405162461bcd60e51b815260206004820152601960248201527815985b1d59481cd95b9d081a5cc81b9bdd0818dbdc9c9958dd603a1b6044820152606401610823565b601254821115610c3857600080fd5b33600090815260146020526040902054610c53908390612cef565b6012541015610c6157600080fd5b601154610c6e8383612cef565b1115610c7957600080fd5b60015b828111610aaf57336000908152601460205260408120805491610c9e83612db8565b90915550610cb7905033610cb28385612cef565b611d41565b80610cc181612db8565b915050610c7c565b6000610cd48361104f565b8210610d365760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610823565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610d895760405162461bcd60e51b815260040161082390612be8565b6000610d9d600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610de7576040519150601f19603f3d011682016040523d82523d6000602084013e610dec565b606091505b5050905080610dfa57600080fd5b50565b610aaf838383604051806020016040528060008152506114aa565b600a546001600160a01b03163314610e425760405162461bcd60e51b815260040161082390612be8565b601055565b600a546001600160a01b03163314610e715760405162461bcd60e51b815260040161082390612be8565b6000610e7c60085490565b905060008211610e8b57600080fd5b601154610e988383612cef565b1115610ea357600080fd5b60015b828111610ecd57610ebb84610cb28385612cef565b80610ec581612db8565b915050610ea6565b50505050565b6000610ede60085490565b8210610f415760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610823565b60088281548110610f5457610f54612e29565b90600052602060002001549050919050565b600a546001600160a01b03163314610f905760405162461bcd60e51b815260040161082390612be8565b805161087390600e9060208401906125ec565b600a546001600160a01b03163314610fcd5760405162461bcd60e51b815260040161082390612be8565b610aaf838383611d5b565b6000818152600260205260408120546001600160a01b0316806107f35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610823565b60006001600160a01b0382166110ba5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610823565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146111005760405162461bcd60e51b815260040161082390612be8565b61110a6000611e26565b565b600a546001600160a01b031633146111365760405162461bcd60e51b815260040161082390612be8565b601555565b600a546001600160a01b031633146111655760405162461bcd60e51b815260040161082390612be8565b601255565b600a546001600160a01b031633146111945760405162461bcd60e51b815260040161082390612be8565b6000908152600d6020526040812055565b60606001805461088690612d7d565b6001600160a01b03821633141561120d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610823565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146112a35760405162461bcd60e51b815260040161082390612be8565b61110a6000600c55565b600a546001600160a01b031633146112d75760405162461bcd60e51b815260040161082390612be8565b4773976562228294bfb387f845a9d05772455d2f176f7348a23fb6f56f9c14d29fa47a4f45b3a03167ddae73edacc663c23ba31398550e17b1ccf47cd9da18886000836103e861132987610320612d1b565b6113339190612d07565b604051600081818185875af1925050503d806000811461136f576040519150601f19603f3d011682016040523d82523d6000602084013e611374565b606091505b505080915050806113975760405162461bcd60e51b815260040161082390612c1d565b6001600160a01b0383166103e86113af876064612d1b565b6113b99190612d07565b604051600081818185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b5050809150508061141d5760405162461bcd60e51b815260040161082390612c1d565b6001600160a01b0382166103e8611435876064612d1b565b61143f9190612d07565b604051600081818185875af1925050503d806000811461147b576040519150601f19603f3d011682016040523d82523d6000602084013e611480565b606091505b505080915050806114a35760405162461bcd60e51b815260040161082390612c1d565b5050505050565b6114b43383611a9f565b6114d05760405162461bcd60e51b815260040161082390612c54565b610ecd84848484611e78565b6114e4611eab565b6040516bffffffffffffffffffffffff193360601b166020820152600090603401604051602081830303815290604052805190602001209050600061152860085490565b60135490915060ff161561153b57600080fd5b6000851161154857600080fd5b846010546115569190612d1b565b3410156115a15760405162461bcd60e51b815260206004820152601960248201527815985b1d59481cd95b9d081a5cc81b9bdd0818dbdc9c9958dd603a1b6044820152606401610823565b6012548511156115b057600080fd5b336000908152601460205260409020546115cb908690612cef565b60125410156115d957600080fd5b6011546115e68683612cef565b11156115f157600080fd5b611632848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506015549150859050611f05565b6116755760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21026b2b935b63290283937b7b360611b6044820152606401610823565b60015b8581116116c05733600090815260146020526040812080549161169a83612db8565b909155506116ae905033610cb28385612cef565b806116b881612db8565b915050611678565b505050610aaf6001600b55565b600f80546116da90612d7d565b80601f016020809104026020016040519081016040528092919081815260200182805461170690612d7d565b80156117535780601f1061172857610100808354040283529160200191611753565b820191906000526020600020905b81548152906001019060200180831161173657829003601f168201915b505050505081565b6000818152600260205260409020546060906001600160a01b03166117da5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610823565b60006117e4611f1b565b905060008151116118045760405180602001604052806000815250611832565b8061180e84611f2a565b600f60405160200161182293929190612a82565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146118635760405162461bcd60e51b815260040161082390612be8565b805161087390600f9060208401906125ec565b600a546001600160a01b031633146118a05760405162461bcd60e51b815260040161082390612be8565b601380549115156101000261ff0019909216919091179055565b600a546001600160a01b031633146118e45760405162461bcd60e51b815260040161082390612be8565b6001600160a01b0381166119495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610823565b610dfa81611e26565b60006001600160e01b0319821663152a902d60e11b14806107f357506107f382612028565b6127106001600160601b03821611156119a25760405162461bcd60e51b815260040161082390612ca5565b6001600160a01b0382166119f85760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610823565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a6682610fd8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611b185760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610823565b6000611b2383610fd8565b9050806001600160a01b0316846001600160a01b03161480611b5e5750836001600160a01b0316611b5384610909565b6001600160a01b0316145b80611b8e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611ba982610fd8565b6001600160a01b031614611c115760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610823565b6001600160a01b038216611c735760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610823565b611c7e83838361204d565b611c89600082611a31565b6001600160a01b0383166000908152600360205260408120805460019290611cb2908490612d3a565b90915550506001600160a01b0382166000908152600360205260408120805460019290611ce0908490612cef565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610873828260405180602001604052806000815250612105565b6127106001600160601b0382161115611d865760405162461bcd60e51b815260040161082390612ca5565b6001600160a01b038216611ddc5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610823565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600d90529190942093519051909116600160a01b029116179055565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611e83848484611b96565b611e8f84848484612138565b610ecd5760405162461bcd60e51b815260040161082390612b96565b6002600b541415611efe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610823565b6002600b55565b600082611f128584612245565b14949350505050565b6060600e805461088690612d7d565b606081611f4e5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f785780611f6281612db8565b9150611f719050600a83612d07565b9150611f52565b60008167ffffffffffffffff811115611f9357611f93612e3f565b6040519080825280601f01601f191660200182016040528015611fbd576020820181803683370190505b5090505b8415611b8e57611fd2600183612d3a565b9150611fdf600a86612dd3565b611fea906030612cef565b60f81b818381518110611fff57611fff612e29565b60200101906001600160f81b031916908160001a905350612021600a86612d07565b9450611fc1565b60006001600160e01b0319821663780e9d6360e01b14806107f357506107f382612292565b6001600160a01b0383166120a8576120a381600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6120cb565b816001600160a01b0316836001600160a01b0316146120cb576120cb83826122e2565b6001600160a01b0382166120e257610aaf8161237f565b826001600160a01b0316826001600160a01b031614610aaf57610aaf828261242e565b61210f8383612472565b61211c6000848484612138565b610aaf5760405162461bcd60e51b815260040161082390612b96565b60006001600160a01b0384163b1561223a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061217c903390899088908890600401612b46565b602060405180830381600087803b15801561219657600080fd5b505af19250505080156121c6575060408051601f3d908101601f191682019092526121c391810190612913565b60015b612220573d8080156121f4576040519150601f19603f3d011682016040523d82523d6000602084013e6121f9565b606091505b5080516122185760405162461bcd60e51b815260040161082390612b96565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b8e565b506001949350505050565b600081815b845181101561228a576122768286838151811061226957612269612e29565b60200260200101516125c0565b91508061228281612db8565b91505061224a565b509392505050565b60006001600160e01b031982166380ac58cd60e01b14806122c357506001600160e01b03198216635b5e139f60e01b145b806107f357506301ffc9a760e01b6001600160e01b03198316146107f3565b600060016122ef8461104f565b6122f99190612d3a565b60008381526007602052604090205490915080821461234c576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061239190600190612d3a565b600083815260096020526040812054600880549394509092849081106123b9576123b9612e29565b9060005260206000200154905080600883815481106123da576123da612e29565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061241257612412612e13565b6001900381819060005260206000200160009055905550505050565b60006124398361104f565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166124c85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610823565b6000818152600260205260409020546001600160a01b03161561252d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610823565b6125396000838361204d565b6001600160a01b0382166000908152600360205260408120805460019290612562908490612cef565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008183106125dc576000828152602084905260409020611832565b5060009182526020526040902090565b8280546125f890612d7d565b90600052602060002090601f01602090048101928261261a5760008555612660565b82601f1061263357805160ff1916838001178555612660565b82800160010185558215612660579182015b82811115612660578251825591602001919060010190612645565b5061266c929150612670565b5090565b5b8082111561266c5760008155600101612671565b600067ffffffffffffffff808411156126a0576126a0612e3f565b604051601f8501601f19908116603f011681019082821181831017156126c8576126c8612e3f565b816040528093508581528686860111156126e157600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461271257600080fd5b919050565b8035801515811461271257600080fd5b80356001600160601b038116811461271257600080fd5b60006020828403121561275057600080fd5b611832826126fb565b6000806040838503121561276c57600080fd5b612775836126fb565b9150612783602084016126fb565b90509250929050565b6000806000606084860312156127a157600080fd5b6127aa846126fb565b92506127b8602085016126fb565b9150604084013590509250925092565b600080600080608085870312156127de57600080fd5b6127e7856126fb565b93506127f5602086016126fb565b925060408501359150606085013567ffffffffffffffff81111561281857600080fd5b8501601f8101871361282957600080fd5b61283887823560208401612685565b91505092959194509250565b6000806040838503121561285757600080fd5b612860836126fb565b915061278360208401612717565b6000806040838503121561288157600080fd5b61288a836126fb565b946020939093013593505050565b600080604083850312156128ab57600080fd5b6128b4836126fb565b915061278360208401612727565b6000602082840312156128d457600080fd5b61183282612717565b6000602082840312156128ef57600080fd5b5035919050565b60006020828403121561290857600080fd5b813561183281612e55565b60006020828403121561292557600080fd5b815161183281612e55565b60006020828403121561294257600080fd5b813567ffffffffffffffff81111561295957600080fd5b8201601f8101841361296a57600080fd5b611b8e84823560208401612685565b60008060006060848603121561298e57600080fd5b8335925061299e602085016126fb565b91506129ac60408501612727565b90509250925092565b6000806000604084860312156129ca57600080fd5b83359250602084013567ffffffffffffffff808211156129e957600080fd5b818601915086601f8301126129fd57600080fd5b813581811115612a0c57600080fd5b8760208260051b8501011115612a2157600080fd5b6020830194508093505050509250925092565b60008060408385031215612a4757600080fd5b50508035926020909101359150565b60008151808452612a6e816020860160208601612d51565b601f01601f19169290920160200192915050565b600084516020612a958285838a01612d51565b855191840191612aa88184848a01612d51565b8554920191600090600181811c9080831680612ac557607f831692505b858310811415612ae357634e487b7160e01b85526022600452602485fd5b808015612af75760018114612b0857612b35565b60ff19851688528388019550612b35565b60008b81526020902060005b85811015612b2d5781548a820152908401908801612b14565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b7990830184612a56565b9695505050505050565b6020815260006118326020830184612a56565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f4661696c656420746f2077697468647261772045746865720000000000000000604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60008219821115612d0257612d02612de7565b500190565b600082612d1657612d16612dfd565b500490565b6000816000190483118215151615612d3557612d35612de7565b500290565b600082821015612d4c57612d4c612de7565b500390565b60005b83811015612d6c578181015183820152602001612d54565b83811115610ecd5750506000910152565b600181811c90821680612d9157607f821691505b60208210811415612db257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612dcc57612dcc612de7565b5060010190565b600082612de257612de2612dfd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610dfa57600080fdfea2646970667358221220b15fb3f11486bd750bf7472b2d9675f83d0811ec60a64fdcc7a5ad3ee648445864736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001954484520444159204f56455220434f4f4b454420484f4b4b45000000000000000000000000000000000000000000000000000000000000000000000000000005484f4b4b45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f617277656176652e6e65742f4137685a667a70735473764c6d324b595157796f75657a47726a7a545665333673757a6a77536e676b66552f

-----Decoded View---------------
Arg [0] : _name (string): THE DAY OVER COOKED HOKKE
Arg [1] : _symbol (string): HOKKE
Arg [2] : _initBaseURI (string): https://arweave.net/A7hZfzpsTsvLm2KYQWyouezGrjzTVe36suzjwSngkfU/

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [4] : 54484520444159204f56455220434f4f4b454420484f4b4b4500000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 484f4b4b45000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [8] : 68747470733a2f2f617277656176652e6e65742f4137685a667a70735473764c
Arg [9] : 6d324b595157796f75657a47726a7a545665333673757a6a77536e676b66552f


Deployed Bytecode Sourcemap

28065:5198:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28872:166;;;;;;;;;;-1:-1:-1;28872:166:0;;;;;:::i;:::-;;:::i;:::-;;;9587:14:1;;9580:22;9562:41;;9550:2;9535:18;28872:166:0;;;;;;;;32428:73;;;;;;;;;;-1:-1:-1;32428:73:0;;;;;:::i;:::-;;:::i;:::-;;32750:140;;;;;;;;;;-1:-1:-1;32750:140:0;;;;;:::i;:::-;;:::i;9886:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11030:221::-;;;;;;;;;;-1:-1:-1;11030:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8606:32:1;;;8588:51;;8576:2;8561:18;11030:221:0;8442:203:1;10611:411:0;;;;;;;;;;-1:-1:-1;10611:411:0;;;;;:::i;:::-;;:::i;28245:33::-;;;;;;;;;;;;;;;;;;;9760:25:1;;;9748:2;9733:18;28245:33:0;9614:177:1;17380:113:0;;;;;;;;;;-1:-1:-1;17468:10:0;:17;17380:113;;28425:55;;;;;;;;;;-1:-1:-1;28425:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;28318:32;;;;;;;;;;;;;;;;11734:339;;;;;;;;;;-1:-1:-1;11734:339:0;;;;;:::i;:::-;;:::i;21591:442::-;;;;;;;;;;-1:-1:-1;21591:442:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;9335:32:1;;;9317:51;;9399:2;9384:18;;9377:34;;;;9290:18;21591:442:0;9143:274:1;29897:582:0;;;;;;:::i;:::-;;:::i;28485:25::-;;;;;;;;;;;;;;;;17116:256;;;;;;;;;;-1:-1:-1;17116:256:0;;;;;:::i;:::-;;:::i;28385:35::-;;;;;;;;;;-1:-1:-1;28385:35:0;;;;;;;;;;;32606:138;;;;;;;;;;;;;:::i;12081:185::-;;;;;;;;;;-1:-1:-1;12081:185:0;;;;;:::i;:::-;;:::i;31988:80::-;;;;;;;;;;-1:-1:-1;31988:80:0;;;;;:::i;:::-;;:::i;30914:283::-;;;;;;;;;;-1:-1:-1;30914:283:0;;;;;:::i;:::-;;:::i;17501:233::-;;;;;;;;;;-1:-1:-1;17501:233:0;;;;;:::i;:::-;;:::i;32196:98::-;;;;;;;;;;-1:-1:-1;32196:98:0;;;;;:::i;:::-;;:::i;32989:162::-;;;;;;;;;;-1:-1:-1;32989:162:0;;;;;:::i;:::-;;:::i;28355:25::-;;;;;;;;;;-1:-1:-1;28355:25:0;;;;;;;;9639:239;;;;;;;;;;-1:-1:-1;9639:239:0;;;;;:::i;:::-;;:::i;9423:208::-;;;;;;;;;;-1:-1:-1;9423:208:0;;;;;:::i;:::-;;:::i;20261:94::-;;;;;;;;;;;;;:::i;29791:100::-;;;;;;;;;;-1:-1:-1;29791:100:0;;;;;:::i;:::-;;:::i;32074:116::-;;;;;;;;;;-1:-1:-1;32074:116:0;;;;;:::i;:::-;;:::i;33157:103::-;;;;;;;;;;-1:-1:-1;33157:103:0;;;;;:::i;:::-;;:::i;20038:87::-;;;;;;;;;;-1:-1:-1;20111:6:0;;-1:-1:-1;;;;;20111:6:0;20038:87;;10055:104;;;;;;;;;;;;;:::i;11259:295::-;;;;;;;;;;-1:-1:-1;11259:295:0;;;;;:::i;:::-;;:::i;32896:87::-;;;;;;;;;;;;;:::i;31203:777::-;;;;;;;;;;;;;:::i;12274:328::-;;;;;;;;;;-1:-1:-1;12274:328:0;;;;;:::i;:::-;;:::i;29044:741::-;;;;;;:::i;:::-;;:::i;28203:37::-;;;;;;;;;;;;;:::i;30485:423::-;;;;;;;;;;-1:-1:-1;30485:423:0;;;;;:::i;:::-;;:::i;28283:30::-;;;;;;;;;;;;;;;;32300:122;;;;;;;;;;-1:-1:-1;32300:122:0;;;;;:::i;:::-;;:::i;32508:92::-;;;;;;;;;;-1:-1:-1;32508:92:0;;;;;:::i;:::-;;:::i;11562:164::-;;;;;;;;;;-1:-1:-1;11562:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;11683:25:0;;;11659:4;11683:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;11562:164;20363:192;;;;;;;;;;-1:-1:-1;20363:192:0;;;;;:::i;:::-;;:::i;28872:166::-;28976:4;28996:36;29020:11;28996:23;:36::i;:::-;28989:43;28872:166;-1:-1:-1;;28872:166:0:o;32428:73::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;;;;;;;;;32480:6:::1;:15:::0;;-1:-1:-1;;32480:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32428:73::o;32750:140::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32842:42:::1;32861:8;32871:12;32842:18;:42::i;:::-;32750:140:::0;;:::o;9886:100::-;9940:13;9973:5;9966:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9886:100;:::o;11030:221::-;11106:7;13022:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13022:16:0;11126:73;;;;-1:-1:-1;;;11126:73:0;;14950:2:1;11126:73:0;;;14932:21:1;14989:2;14969:18;;;14962:30;15028:34;15008:18;;;15001:62;-1:-1:-1;;;15079:18:1;;;15072:42;15131:19;;11126:73:0;14748:408:1;11126:73:0;-1:-1:-1;11219:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;11219:24:0;;11030:221::o;10611:411::-;10692:13;10708:23;10723:7;10708:14;:23::i;:::-;10692:39;;10756:5;-1:-1:-1;;;;;10750:11:0;:2;-1:-1:-1;;;;;10750:11:0;;;10742:57;;;;-1:-1:-1;;;10742:57:0;;16903:2:1;10742:57:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:34;16961:18;;;16954:62;-1:-1:-1;;;17032:18:1;;;17025:31;17073:19;;10742:57:0;16701:397:1;10742:57:0;8337:10;-1:-1:-1;;;;;10834:21:0;;;;:62;;-1:-1:-1;10859:37:0;10876:5;8337:10;11562:164;:::i;10859:37::-;10812:168;;;;-1:-1:-1;;;10812:168:0;;12989:2:1;10812:168:0;;;12971:21:1;13028:2;13008:18;;;13001:30;13067:34;13047:18;;;13040:62;13138:26;13118:18;;;13111:54;13182:19;;10812:168:0;12787:420:1;10812:168:0;10993:21;11002:2;11006:7;10993:8;:21::i;:::-;10681:341;10611:411;;:::o;11734:339::-;11929:41;8337:10;11962:7;11929:18;:41::i;:::-;11921:103;;;;-1:-1:-1;;;11921:103:0;;;;;;;:::i;:::-;12037:28;12047:4;12053:2;12057:7;12037:9;:28::i;21591:442::-;21688:7;21746:27;;;:17;:27;;;;;;;;21717:56;;;;;;;;;-1:-1:-1;;;;;21717:56:0;;;;;-1:-1:-1;;;21717:56:0;;;-1:-1:-1;;;;;21717:56:0;;;;;;;;21688:7;;21786:92;;-1:-1:-1;21837:29:0;;;;;;;;;21847:19;21837:29;-1:-1:-1;;;;;21837:29:0;;;;-1:-1:-1;;;21837:29:0;;-1:-1:-1;;;;;21837:29:0;;;;;21786:92;21928:23;;;;21890:21;;22125:5;;21915:36;;-1:-1:-1;;;;;21915:36:0;:10;:36;:::i;:::-;21914:58;;;;:::i;:::-;21993:16;;;;;-1:-1:-1;21591:442:0;;-1:-1:-1;;;;21591:442:0:o;29897:582::-;29960:14;29977:13;17468:10;:17;;17380:113;29977:13;30005:15;;29960:30;;-1:-1:-1;30005:15:0;;;;;29997:24;;;;;;30037:6;;;;30036:7;30028:16;;;;;;30073:1;30059:11;:15;30051:24;;;;;;30110:11;30103:4;;:18;;;;:::i;:::-;30090:9;:31;;30082:69;;;;-1:-1:-1;;;30082:69:0;;14235:2:1;30082:69:0;;;14217:21:1;14274:2;14254:18;;;14247:30;-1:-1:-1;;;14293:18:1;;;14286:55;14358:18;;30082:69:0;14033:349:1;30082:69:0;30181:13;;30166:11;:28;;30158:37;;;;;;30248:10;30227:32;;;;:20;:32;;;;;;:46;;30262:11;;30227:46;:::i;:::-;30210:13;;:63;;30202:72;;;;;;30313:9;;30289:20;30298:11;30289:6;:20;:::i;:::-;:33;;30281:42;;;;;;30353:1;30336:138;30361:11;30356:1;:16;30336:138;;30411:10;30390:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;30433:33:0;;-1:-1:-1;30443:10:0;30455;30464:1;30455:6;:10;:::i;:::-;30433:9;:33::i;:::-;30374:3;;;;:::i;:::-;;;;30336:138;;17116:256;17213:7;17249:23;17266:5;17249:16;:23::i;:::-;17241:5;:31;17233:87;;;;-1:-1:-1;;;17233:87:0;;10222:2:1;17233:87:0;;;10204:21:1;10261:2;10241:18;;;10234:30;10300:34;10280:18;;;10273:62;-1:-1:-1;;;10351:18:1;;;10344:41;10402:19;;17233:87:0;10020:407:1;17233:87:0;-1:-1:-1;;;;;;17338:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;17116:256::o;32606:138::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32652:7:::1;32673;20111:6:::0;;-1:-1:-1;;;;;20111:6:0;;20038:87;32673:7:::1;-1:-1:-1::0;;;;;32665:21:0::1;32694;32665:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32651:69;;;32735:2;32727:11;;;::::0;::::1;;32643:101;32606:138::o:0;12081:185::-;12219:39;12236:4;12242:2;12246:7;12219:39;;;;;;;;;;;;:16;:39::i;31988:80::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32047:4:::1;:15:::0;31988:80::o;30914:283::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;30990:14:::1;31007:13;17468:10:::0;:17;;17380:113;31007:13:::1;30990:30;;31049:1;31035:11;:15;31027:24;;;::::0;::::1;;31090:9;::::0;31066:20:::1;31075:11:::0;31066:6;:20:::1;:::i;:::-;:33;;31058:42;;;::::0;::::1;;31124:1;31107:85;31132:11;31127:1;:16;31107:85;;31159:25;31169:2:::0;31173:10:::1;31182:1:::0;31173:6;:10:::1;:::i;31159:25::-;31145:3:::0;::::1;::::0;::::1;:::i;:::-;;;;31107:85;;;;30983:214;30914:283:::0;;:::o;17501:233::-;17576:7;17612:30;17468:10;:17;;17380:113;17612:30;17604:5;:38;17596:95;;;;-1:-1:-1;;;17596:95:0;;18079:2:1;17596:95:0;;;18061:21:1;18118:2;18098:18;;;18091:30;18157:34;18137:18;;;18130:62;-1:-1:-1;;;18208:18:1;;;18201:42;18260:19;;17596:95:0;17877:408:1;17596:95:0;17709:10;17720:5;17709:17;;;;;;;;:::i;:::-;;;;;;;;;17702:24;;17501:233;;;:::o;32196:98::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32267:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;32989:162::-:0;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;33096:49:::1;33113:7;33122:8;33132:12;33096:16;:49::i;9639:239::-:0;9711:7;9747:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9747:16:0;9782:19;9774:73;;;;-1:-1:-1;;;9774:73:0;;13825:2:1;9774:73:0;;;13807:21:1;13864:2;13844:18;;;13837:30;13903:34;13883:18;;;13876:62;-1:-1:-1;;;13954:18:1;;;13947:39;14003:19;;9774:73:0;13623:405:1;9423:208:0;9495:7;-1:-1:-1;;;;;9523:19:0;;9515:74;;;;-1:-1:-1;;;9515:74:0;;13414:2:1;9515:74:0;;;13396:21:1;13453:2;13433:18;;;13426:30;13492:34;13472:18;;;13465:62;-1:-1:-1;;;13543:18:1;;;13536:40;13593:19;;9515:74:0;13212:406:1;9515:74:0;-1:-1:-1;;;;;;9607:16:0;;;;;:9;:16;;;;;;;9423:208::o;20261:94::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;20326:21:::1;20344:1;20326:9;:21::i;:::-;20261:94::o:0;29791:100::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;29861:10:::1;:24:::0;29791:100::o;32074:116::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32151:13:::1;:33:::0;32074:116::o;33157:103::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;23069:26;;;;:17;:26;;;;;23062:33;32606:138::o;10055:104::-;10111:13;10144:7;10137:14;;;;;:::i;11259:295::-;-1:-1:-1;;;;;11362:24:0;;8337:10;11362:24;;11354:62;;;;-1:-1:-1;;;11354:62:0;;12222:2:1;11354:62:0;;;12204:21:1;12261:2;12241:18;;;12234:30;12300:27;12280:18;;;12273:55;12345:18;;11354:62:0;12020:349:1;11354:62:0;8337:10;11429:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;11429:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;11429:53:0;;;;;;;;;;11498:48;;9562:41:1;;;11429:42:0;;8337:10;11498:48;;9535:18:1;11498:48:0;;;;;;;11259:295;;:::o;32896:87::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32954:23:::1;22556:19:::0;;22549:26;22488:95;31203:777;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;31286:21:::1;31344:42;31427;31508;31265:18;31344:42:::0;31647:4:::1;31630:16;31286:21:::0;31643:3:::1;31630:16;:::i;:::-;:21;;;;:::i;:::-;31609:48;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31595:62;;;;;31676:7;31668:44;;;;-1:-1:-1::0;;;31668:44:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31737:15:0;::::1;31778:4;31761:16;:10:::0;31774:3:::1;31761:16;:::i;:::-;:21;;;;:::i;:::-;31737:51;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31723:65;;;;;31807:7;31799:44;;;;-1:-1:-1::0;;;31799:44:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31868:13:0;::::1;31907:4;31890:16;:10:::0;31903:3:::1;31890:16;:::i;:::-;:21;;;;:::i;:::-;31868:49;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31854:63;;;;;31936:7;31928:44;;;;-1:-1:-1::0;;;31928:44:0::1;;;;;;;:::i;:::-;31254:726;;;;;31203:777::o:0;12274:328::-;12449:41;8337:10;12482:7;12449:18;:41::i;:::-;12441:103;;;;-1:-1:-1;;;12441:103:0;;;;;;;:::i;:::-;12555:39;12569:4;12575:2;12579:7;12588:5;12555:13;:39::i;29044:741::-;27706:21;:19;:21::i;:::-;29172:28:::1;::::0;-1:-1:-1;;29189:10:0::1;6615:2:1::0;6611:15;6607:53;29172:28:0::1;::::0;::::1;6595:66:1::0;29147:12:0::1;::::0;6677::1;;29172:28:0::1;;;;;;;;;;;;29162:39;;;;;;29147:54;;29208:14;29225:13;17468:10:::0;:17;;17380:113;29225:13:::1;29254:6;::::0;29208:30;;-1:-1:-1;29254:6:0::1;;29253:7;29245:16;;;::::0;::::1;;29290:1;29276:11;:15;29268:24;;;::::0;::::1;;29327:11;29320:4;;:18;;;;:::i;:::-;29307:9;:31;;29299:69;;;::::0;-1:-1:-1;;;29299:69:0;;14235:2:1;29299:69:0::1;::::0;::::1;14217:21:1::0;14274:2;14254:18;;;14247:30;-1:-1:-1;;;14293:18:1;;;14286:55;14358:18;;29299:69:0::1;14033:349:1::0;29299:69:0::1;29398:13;;29383:11;:28;;29375:37;;;::::0;::::1;;29465:10;29444:32;::::0;;;:20:::1;:32;::::0;;;;;:46:::1;::::0;29479:11;;29444:46:::1;:::i;:::-;29427:13;;:63;;29419:72;;;::::0;::::1;;29530:9;::::0;29506:20:::1;29515:11:::0;29506:6;:20:::1;:::i;:::-;:33;;29498:42;;;::::0;::::1;;29555:50;29574:12;;29555:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;29588:10:0::1;::::0;;-1:-1:-1;29600:4:0;;-1:-1:-1;29555:18:0::1;:50::i;:::-;29547:82;;;::::0;-1:-1:-1;;;29547:82:0;;18903:2:1;29547:82:0::1;::::0;::::1;18885:21:1::0;18942:2;18922:18;;;18915:30;-1:-1:-1;;;18961:18:1;;;18954:50;19021:18;;29547:82:0::1;18701:344:1::0;29547:82:0::1;29659:1;29642:138;29667:11;29662:1;:16;29642:138;;29717:10;29696:32;::::0;;;:20:::1;:32;::::0;;;;:34;;;::::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;29739:33:0::1;::::0;-1:-1:-1;29749:10:0::1;29761;29770:1:::0;29761:6;:10:::1;:::i;29739:33::-;29680:3:::0;::::1;::::0;::::1;:::i;:::-;;;;29642:138;;;;29140:645;;27750:20:::0;27522:1;27993:7;:22;27944:79;28203:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30485:423::-;12998:4;13022:16;;;:7;:16;;;;;;30583:13;;-1:-1:-1;;;;;13022:16:0;30608:97;;;;-1:-1:-1;;;30608:97:0;;16134:2:1;30608:97:0;;;16116:21:1;16173:2;16153:18;;;16146:30;16212:34;16192:18;;;16185:62;-1:-1:-1;;;16263:18:1;;;16256:45;16318:19;;30608:97:0;15932:411:1;30608:97:0;30714:28;30745:10;:8;:10::i;:::-;30714:41;;30800:1;30775:14;30769:28;:32;:133;;;;;;;;;;;;;;;;;30837:14;30853:18;:7;:16;:18::i;:::-;30873:13;30820:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;30769:133;30762:140;30485:423;-1:-1:-1;;;30485:423:0:o;32300:122::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32383:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;32508:92::-:0;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;32570:15:::1;:24:::0;;;::::1;;;;-1:-1:-1::0;;32570:24:0;;::::1;::::0;;;::::1;::::0;;32508:92::o;20363:192::-;20111:6;;-1:-1:-1;;;;;20111:6:0;8337:10;20173:23;20165:68;;;;-1:-1:-1;;;20165:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20452:22:0;::::1;20444:73;;;::::0;-1:-1:-1;;;20444:73:0;;11053:2:1;20444:73:0::1;::::0;::::1;11035:21:1::0;11092:2;11072:18;;;11065:30;11131:34;11111:18;;;11104:62;-1:-1:-1;;;11182:18:1;;;11175:36;11228:19;;20444:73:0::1;10851:402:1::0;20444:73:0::1;20528:19;20538:8;20528:9;:19::i;21368:215::-:0;21470:4;-1:-1:-1;;;;;;21494:41:0;;-1:-1:-1;;;21494:41:0;;:81;;;21539:36;21563:11;21539:23;:36::i;22146:332::-;22125:5;-1:-1:-1;;;;;22249:33:0;;;;22241:88;;;;-1:-1:-1;;;22241:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22348:22:0;;22340:60;;;;-1:-1:-1;;;22340:60:0;;19612:2:1;22340:60:0;;;19594:21:1;19651:2;19631:18;;;19624:30;19690:27;19670:18;;;19663:55;19735:18;;22340:60:0;19410:349:1;22340:60:0;22435:35;;;;;;;;;-1:-1:-1;;;;;22435:35:0;;;;;;-1:-1:-1;;;;;22435:35:0;;;;;;;;;;-1:-1:-1;;;22413:57:0;;;;:19;:57;22146:332::o;15215:174::-;15290:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15290:29:0;-1:-1:-1;;;;;15290:29:0;;;;;;;;:24;;15344:23;15290:24;15344:14;:23::i;:::-;-1:-1:-1;;;;;15335:46:0;;;;;;;;;;;15215:174;;:::o;13068:348::-;13161:4;13022:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13022:16:0;13178:73;;;;-1:-1:-1;;;13178:73:0;;12576:2:1;13178:73:0;;;12558:21:1;12615:2;12595:18;;;12588:30;12654:34;12634:18;;;12627:62;-1:-1:-1;;;12705:18:1;;;12698:42;12757:19;;13178:73:0;12374:408:1;13178:73:0;13262:13;13278:23;13293:7;13278:14;:23::i;:::-;13262:39;;13331:5;-1:-1:-1;;;;;13320:16:0;:7;-1:-1:-1;;;;;13320:16:0;;:51;;;;13364:7;-1:-1:-1;;;;;13340:31:0;:20;13352:7;13340:11;:20::i;:::-;-1:-1:-1;;;;;13340:31:0;;13320:51;:87;;;-1:-1:-1;;;;;;11683:25:0;;;11659:4;11683:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;13375:32;13312:96;13068:348;-1:-1:-1;;;;13068:348:0:o;14629:578::-;14788:4;-1:-1:-1;;;;;14761:31:0;:23;14776:7;14761:14;:23::i;:::-;-1:-1:-1;;;;;14761:31:0;;14753:85;;;;-1:-1:-1;;;14753:85:0;;15724:2:1;14753:85:0;;;15706:21:1;15763:2;15743:18;;;15736:30;15802:34;15782:18;;;15775:62;-1:-1:-1;;;15853:18:1;;;15846:39;15902:19;;14753:85:0;15522:405:1;14753:85:0;-1:-1:-1;;;;;14857:16:0;;14849:65;;;;-1:-1:-1;;;14849:65:0;;11817:2:1;14849:65:0;;;11799:21:1;11856:2;11836:18;;;11829:30;11895:34;11875:18;;;11868:62;-1:-1:-1;;;11946:18:1;;;11939:34;11990:19;;14849:65:0;11615:400:1;14849:65:0;14927:39;14948:4;14954:2;14958:7;14927:20;:39::i;:::-;15031:29;15048:1;15052:7;15031:8;:29::i;:::-;-1:-1:-1;;;;;15073:15:0;;;;;;:9;:15;;;;;:20;;15092:1;;15073:15;:20;;15092:1;;15073:20;:::i;:::-;;;;-1:-1:-1;;;;;;;15104:13:0;;;;;;:9;:13;;;;;:18;;15121:1;;15104:13;:18;;15121:1;;15104:18;:::i;:::-;;;;-1:-1:-1;;15133:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15133:21:0;-1:-1:-1;;;;;15133:21:0;;;;;;;;;15172:27;;15133:16;;15172:27;;;;;;;14629:578;;;:::o;13424:110::-;13500:26;13510:2;13514:7;13500:26;;;;;;;;;;;;:9;:26::i;22591:390::-;22125:5;-1:-1:-1;;;;;22743:33:0;;;;22735:88;;;;-1:-1:-1;;;22735:88:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22842:22:0;;22834:62;;;;-1:-1:-1;;;22834:62:0;;17723:2:1;22834:62:0;;;17705:21:1;17762:2;17742:18;;;17735:30;17801:29;17781:18;;;17774:57;17848:18;;22834:62:0;17521:351:1;22834:62:0;22938:35;;;;;;;;-1:-1:-1;;;;;22938:35:0;;;;;-1:-1:-1;;;;;22938:35:0;;;;;;;;;;-1:-1:-1;22909:26:0;;;:17;:26;;;;;;:64;;;;;;;-1:-1:-1;;;22909:64:0;;;;;;22591:390::o;20563:173::-;20638:6;;;-1:-1:-1;;;;;20655:17:0;;;-1:-1:-1;;;;;;20655:17:0;;;;;;;20688:40;;20638:6;;;20655:17;20638:6;;20688:40;;20619:16;;20688:40;20608:128;20563:173;:::o;12610:315::-;12767:28;12777:4;12783:2;12787:7;12767:9;:28::i;:::-;12814:48;12837:4;12843:2;12847:7;12856:5;12814:22;:48::i;:::-;12806:111;;;;-1:-1:-1;;;12806:111:0;;;;;;;:::i;27786:150::-;27566:1;27844:7;;:19;;27836:63;;;;-1:-1:-1;;;27836:63:0;;19252:2:1;27836:63:0;;;19234:21:1;19291:2;19271:18;;;19264:30;19330:33;19310:18;;;19303:61;19381:18;;27836:63:0;19050:355:1;27836:63:0;27566:1;27910:7;:18;27786:150::o;23176:190::-;23301:4;23354;23325:25;23338:5;23345:4;23325:12;:25::i;:::-;:33;;23176:190;-1:-1:-1;;;;23176:190:0:o;28762:102::-;28822:13;28851:7;28844:14;;;;;:::i;2346:721::-;2402:13;2621:10;2617:53;;-1:-1:-1;;2648:10:0;;;;;;;;;;;;-1:-1:-1;;;2648:10:0;;;;;2346:721::o;2617:53::-;2695:5;2680:12;2736:78;2743:9;;2736:78;;2769:8;;;;:::i;:::-;;-1:-1:-1;2792:10:0;;-1:-1:-1;2800:2:0;2792:10;;:::i;:::-;;;2736:78;;;2824:19;2856:6;2846:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2846:17:0;;2824:39;;2874:154;2881:10;;2874:154;;2908:11;2918:1;2908:11;;:::i;:::-;;-1:-1:-1;2977:10:0;2985:2;2977:5;:10;:::i;:::-;2964:24;;:2;:24;:::i;:::-;2951:39;;2934:6;2941;2934:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2934:56:0;;;;;;;;-1:-1:-1;3005:11:0;3014:2;3005:11;;:::i;:::-;;;2874:154;;16808:224;16910:4;-1:-1:-1;;;;;;16934:50:0;;-1:-1:-1;;;16934:50:0;;:90;;;16988:36;17012:11;16988:23;:36::i;17742:589::-;-1:-1:-1;;;;;17948:18:0;;17944:187;;17983:40;18015:7;18672:10;:17;;18645:24;;;;:15;:24;;;;;:44;;;18700:24;;;;;;;;;;;;18568:164;17983:40;17944:187;;;18053:2;-1:-1:-1;;;;;18045:10:0;:4;-1:-1:-1;;;;;18045:10:0;;18041:90;;18072:47;18105:4;18111:7;18072:32;:47::i;:::-;-1:-1:-1;;;;;18145:16:0;;18141:183;;18178:45;18215:7;18178:36;:45::i;18141:183::-;18251:4;-1:-1:-1;;;;;18245:10:0;:2;-1:-1:-1;;;;;18245:10:0;;18241:83;;18272:40;18300:2;18304:7;18272:27;:40::i;13542:321::-;13672:18;13678:2;13682:7;13672:5;:18::i;:::-;13723:54;13754:1;13758:2;13762:7;13771:5;13723:22;:54::i;:::-;13701:154;;;;-1:-1:-1;;;13701:154:0;;;;;;;:::i;15397:799::-;15552:4;-1:-1:-1;;;;;15573:13:0;;4115:20;4163:8;15569:620;;15609:72;;-1:-1:-1;;;15609:72:0;;-1:-1:-1;;;;;15609:36:0;;;;;:72;;8337:10;;15660:4;;15666:7;;15675:5;;15609:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15609:72:0;;;;;;;;-1:-1:-1;;15609:72:0;;;;;;;;;;;;:::i;:::-;;;15605:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15851:13:0;;15847:272;;15894:60;;-1:-1:-1;;;15894:60:0;;;;;;;:::i;15847:272::-;16069:6;16063:13;16054:6;16050:2;16046:15;16039:38;15605:529;-1:-1:-1;;;;;;15732:51:0;-1:-1:-1;;;15732:51:0;;-1:-1:-1;15725:58:0;;15569:620;-1:-1:-1;16173:4:0;15397:799;;;;;;:::o;23590:296::-;23673:7;23716:4;23673:7;23731:118;23755:5;:12;23751:1;:16;23731:118;;;23804:33;23814:12;23828:5;23834:1;23828:8;;;;;;;;:::i;:::-;;;;;;;23804:9;:33::i;:::-;23789:48;-1:-1:-1;23769:3:0;;;;:::i;:::-;;;;23731:118;;;-1:-1:-1;23866:12:0;23590:296;-1:-1:-1;;;23590:296:0:o;9110:305::-;9212:4;-1:-1:-1;;;;;;9249:40:0;;-1:-1:-1;;;9249:40:0;;:105;;-1:-1:-1;;;;;;;9306:48:0;;-1:-1:-1;;;9306:48:0;9249:105;:158;;;-1:-1:-1;;;;;;;;;;2126:40:0;;;9371:36;2017:157;18740:551;18832:22;18882:1;18857:22;18874:4;18857:16;:22::i;:::-;:26;;;;:::i;:::-;18894:18;18915:26;;;:17;:26;;;;;;18832:51;;-1:-1:-1;18956:28:0;;;18952:236;;-1:-1:-1;;;;;19023:18:0;;19001:19;19023:18;;;:12;:18;;;;;;;;:34;;;;;;;;;19074:30;;;;;;:44;;;19133:30;;:17;:30;;;;;:43;;;18952:236;-1:-1:-1;19205:26:0;;;;:17;:26;;;;;;;;19198:33;;;-1:-1:-1;;;;;19249:18:0;;;;;:12;:18;;;;;:34;;;;;;;19242:41;18740:551::o;19299:419::-;19406:10;:17;19381:22;;19406:21;;19426:1;;19406:21;:::i;:::-;19438:18;19459:24;;;:15;:24;;;;;;19516:10;:26;;19381:46;;-1:-1:-1;19459:24:0;;19381:46;;19516:26;;;;;;:::i;:::-;;;;;;;;;19494:48;;19578:11;19553:10;19564;19553:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;19600:28;;;:15;:28;;;;;;;:41;;;19659:24;;;;;19652:31;19694:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19370:348;;;19299:419;:::o;18339:221::-;18424:14;18441:20;18458:2;18441:16;:20::i;:::-;-1:-1:-1;;;;;18472:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;18517:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;18339:221:0:o;13871:382::-;-1:-1:-1;;;;;13951:16:0;;13943:61;;;;-1:-1:-1;;;13943:61:0;;14589:2:1;13943:61:0;;;14571:21:1;;;14608:18;;;14601:30;14667:34;14647:18;;;14640:62;14719:18;;13943:61:0;14387:356:1;13943:61:0;12998:4;13022:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13022:16:0;:30;14015:58;;;;-1:-1:-1;;;14015:58:0;;11460:2:1;14015:58:0;;;11442:21:1;11499:2;11479:18;;;11472:30;11538;11518:18;;;11511:58;11586:18;;14015:58:0;11258:352:1;14015:58:0;14086:45;14115:1;14119:2;14123:7;14086:20;:45::i;:::-;-1:-1:-1;;;;;14144:13:0;;;;;;:9;:13;;;;;:18;;14161:1;;14144:13;:18;;14161:1;;14144:18;:::i;:::-;;;;-1:-1:-1;;14173:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14173:21:0;-1:-1:-1;;;;;14173:21:0;;;;;;;;14212:33;;14173:16;;;14212:33;;14173:16;;14212:33;13871:382;;:::o;26982:149::-;27045:7;27076:1;27072;:5;:51;;27207:13;27301:15;;;27337:4;27330:15;;;27384:4;27368:21;;27072:51;;;-1:-1:-1;27207:13:0;27301:15;;;27337:4;27330:15;27384:4;27368:21;;;26982:149::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:179;1060:20;;-1:-1:-1;;;;;1109:38:1;;1099:49;;1089:77;;1162:1;1159;1152:12;1177:186;1236:6;1289:2;1277:9;1268:7;1264:23;1260:32;1257:52;;;1305:1;1302;1295:12;1257:52;1328:29;1347:9;1328:29;:::i;1368:260::-;1436:6;1444;1497:2;1485:9;1476:7;1472:23;1468:32;1465:52;;;1513:1;1510;1503:12;1465:52;1536:29;1555:9;1536:29;:::i;:::-;1526:39;;1584:38;1618:2;1607:9;1603:18;1584:38;:::i;:::-;1574:48;;1368:260;;;;;:::o;1633:328::-;1710:6;1718;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1818:29;1837:9;1818:29;:::i;:::-;1808:39;;1866:38;1900:2;1889:9;1885:18;1866:38;:::i;:::-;1856:48;;1951:2;1940:9;1936:18;1923:32;1913:42;;1633:328;;;;;:::o;1966:666::-;2061:6;2069;2077;2085;2138:3;2126:9;2117:7;2113:23;2109:33;2106:53;;;2155:1;2152;2145:12;2106:53;2178:29;2197:9;2178:29;:::i;:::-;2168:39;;2226:38;2260:2;2249:9;2245:18;2226:38;:::i;:::-;2216:48;;2311:2;2300:9;2296:18;2283:32;2273:42;;2366:2;2355:9;2351:18;2338:32;2393:18;2385:6;2382:30;2379:50;;;2425:1;2422;2415:12;2379:50;2448:22;;2501:4;2493:13;;2489:27;-1:-1:-1;2479:55:1;;2530:1;2527;2520:12;2479:55;2553:73;2618:7;2613:2;2600:16;2595:2;2591;2587:11;2553:73;:::i;:::-;2543:83;;;1966:666;;;;;;;:::o;2637:254::-;2702:6;2710;2763:2;2751:9;2742:7;2738:23;2734:32;2731:52;;;2779:1;2776;2769:12;2731:52;2802:29;2821:9;2802:29;:::i;:::-;2792:39;;2850:35;2881:2;2870:9;2866:18;2850:35;:::i;2896:254::-;2964:6;2972;3025:2;3013:9;3004:7;3000:23;2996:32;2993:52;;;3041:1;3038;3031:12;2993:52;3064:29;3083:9;3064:29;:::i;:::-;3054:39;3140:2;3125:18;;;;3112:32;;-1:-1:-1;;;2896:254:1:o;3155:258::-;3222:6;3230;3283:2;3271:9;3262:7;3258:23;3254:32;3251:52;;;3299:1;3296;3289:12;3251:52;3322:29;3341:9;3322:29;:::i;:::-;3312:39;;3370:37;3403:2;3392:9;3388:18;3370:37;:::i;3418:180::-;3474:6;3527:2;3515:9;3506:7;3502:23;3498:32;3495:52;;;3543:1;3540;3533:12;3495:52;3566:26;3582:9;3566:26;:::i;3603:180::-;3662:6;3715:2;3703:9;3694:7;3690:23;3686:32;3683:52;;;3731:1;3728;3721:12;3683:52;-1:-1:-1;3754:23:1;;3603:180;-1:-1:-1;3603:180:1:o;3788:245::-;3846:6;3899:2;3887:9;3878:7;3874:23;3870:32;3867:52;;;3915:1;3912;3905:12;3867:52;3954:9;3941:23;3973:30;3997:5;3973:30;:::i;4038:249::-;4107:6;4160:2;4148:9;4139:7;4135:23;4131:32;4128:52;;;4176:1;4173;4166:12;4128:52;4208:9;4202:16;4227:30;4251:5;4227:30;:::i;4292:450::-;4361:6;4414:2;4402:9;4393:7;4389:23;4385:32;4382:52;;;4430:1;4427;4420:12;4382:52;4470:9;4457:23;4503:18;4495:6;4492:30;4489:50;;;4535:1;4532;4525:12;4489:50;4558:22;;4611:4;4603:13;;4599:27;-1:-1:-1;4589:55:1;;4640:1;4637;4630:12;4589:55;4663:73;4728:7;4723:2;4710:16;4705:2;4701;4697:11;4663:73;:::i;4932:326::-;5008:6;5016;5024;5077:2;5065:9;5056:7;5052:23;5048:32;5045:52;;;5093:1;5090;5083:12;5045:52;5129:9;5116:23;5106:33;;5158:38;5192:2;5181:9;5177:18;5158:38;:::i;:::-;5148:48;;5215:37;5248:2;5237:9;5233:18;5215:37;:::i;:::-;5205:47;;4932:326;;;;;:::o;5263:683::-;5358:6;5366;5374;5427:2;5415:9;5406:7;5402:23;5398:32;5395:52;;;5443:1;5440;5433:12;5395:52;5479:9;5466:23;5456:33;;5540:2;5529:9;5525:18;5512:32;5563:18;5604:2;5596:6;5593:14;5590:34;;;5620:1;5617;5610:12;5590:34;5658:6;5647:9;5643:22;5633:32;;5703:7;5696:4;5692:2;5688:13;5684:27;5674:55;;5725:1;5722;5715:12;5674:55;5765:2;5752:16;5791:2;5783:6;5780:14;5777:34;;;5807:1;5804;5797:12;5777:34;5860:7;5855:2;5845:6;5842:1;5838:14;5834:2;5830:23;5826:32;5823:45;5820:65;;;5881:1;5878;5871:12;5820:65;5912:2;5908;5904:11;5894:21;;5934:6;5924:16;;;;;5263:683;;;;;:::o;5951:248::-;6019:6;6027;6080:2;6068:9;6059:7;6055:23;6051:32;6048:52;;;6096:1;6093;6086:12;6048:52;-1:-1:-1;;6119:23:1;;;6189:2;6174:18;;;6161:32;;-1:-1:-1;5951:248:1:o;6204:257::-;6245:3;6283:5;6277:12;6310:6;6305:3;6298:19;6326:63;6382:6;6375:4;6370:3;6366:14;6359:4;6352:5;6348:16;6326:63;:::i;:::-;6443:2;6422:15;-1:-1:-1;;6418:29:1;6409:39;;;;6450:4;6405:50;;6204:257;-1:-1:-1;;6204:257:1:o;6700:1527::-;6924:3;6962:6;6956:13;6988:4;7001:51;7045:6;7040:3;7035:2;7027:6;7023:15;7001:51;:::i;:::-;7115:13;;7074:16;;;;7137:55;7115:13;7074:16;7159:15;;;7137:55;:::i;:::-;7281:13;;7214:20;;;7254:1;;7341;7363:18;;;;7416;;;;7443:93;;7521:4;7511:8;7507:19;7495:31;;7443:93;7584:2;7574:8;7571:16;7551:18;7548:40;7545:167;;;-1:-1:-1;;;7611:33:1;;7667:4;7664:1;7657:15;7697:4;7618:3;7685:17;7545:167;7728:18;7755:110;;;;7879:1;7874:328;;;;7721:481;;7755:110;-1:-1:-1;;7790:24:1;;7776:39;;7835:20;;;;-1:-1:-1;7755:110:1;;7874:328;20019:1;20012:14;;;20056:4;20043:18;;7969:1;7983:169;7997:8;7994:1;7991:15;7983:169;;;8079:14;;8064:13;;;8057:37;8122:16;;;;8014:10;;7983:169;;;7987:3;;8183:8;8176:5;8172:20;8165:27;;7721:481;-1:-1:-1;8218:3:1;;6700:1527;-1:-1:-1;;;;;;;;;;;6700:1527:1:o;8650:488::-;-1:-1:-1;;;;;8919:15:1;;;8901:34;;8971:15;;8966:2;8951:18;;8944:43;9018:2;9003:18;;8996:34;;;9066:3;9061:2;9046:18;;9039:31;;;8844:4;;9087:45;;9112:19;;9104:6;9087:45;:::i;:::-;9079:53;8650:488;-1:-1:-1;;;;;;8650:488:1:o;9796:219::-;9945:2;9934:9;9927:21;9908:4;9965:44;10005:2;9994:9;9990:18;9982:6;9965:44;:::i;10432:414::-;10634:2;10616:21;;;10673:2;10653:18;;;10646:30;10712:34;10707:2;10692:18;;10685:62;-1:-1:-1;;;10778:2:1;10763:18;;10756:48;10836:3;10821:19;;10432:414::o;15161:356::-;15363:2;15345:21;;;15382:18;;;15375:30;15441:34;15436:2;15421:18;;15414:62;15508:2;15493:18;;15161:356::o;16348:348::-;16550:2;16532:21;;;16589:2;16569:18;;;16562:30;16628:26;16623:2;16608:18;;16601:54;16687:2;16672:18;;16348:348::o;17103:413::-;17305:2;17287:21;;;17344:2;17324:18;;;17317:30;17383:34;17378:2;17363:18;;17356:62;-1:-1:-1;;;17449:2:1;17434:18;;17427:47;17506:3;17491:19;;17103:413::o;18290:406::-;18492:2;18474:21;;;18531:2;18511:18;;;18504:30;18570:34;18565:2;18550:18;;18543:62;-1:-1:-1;;;18636:2:1;18621:18;;18614:40;18686:3;18671:19;;18290:406::o;20072:128::-;20112:3;20143:1;20139:6;20136:1;20133:13;20130:39;;;20149:18;;:::i;:::-;-1:-1:-1;20185:9:1;;20072:128::o;20205:120::-;20245:1;20271;20261:35;;20276:18;;:::i;:::-;-1:-1:-1;20310:9:1;;20205:120::o;20330:168::-;20370:7;20436:1;20432;20428:6;20424:14;20421:1;20418:21;20413:1;20406:9;20399:17;20395:45;20392:71;;;20443:18;;:::i;:::-;-1:-1:-1;20483:9:1;;20330:168::o;20503:125::-;20543:4;20571:1;20568;20565:8;20562:34;;;20576:18;;:::i;:::-;-1:-1:-1;20613:9:1;;20503:125::o;20633:258::-;20705:1;20715:113;20729:6;20726:1;20723:13;20715:113;;;20805:11;;;20799:18;20786:11;;;20779:39;20751:2;20744:10;20715:113;;;20846:6;20843:1;20840:13;20837:48;;;-1:-1:-1;;20881:1:1;20863:16;;20856:27;20633:258::o;20896:380::-;20975:1;20971:12;;;;21018;;;21039:61;;21093:4;21085:6;21081:17;21071:27;;21039:61;21146:2;21138:6;21135:14;21115:18;21112:38;21109:161;;;21192:10;21187:3;21183:20;21180:1;21173:31;21227:4;21224:1;21217:15;21255:4;21252:1;21245:15;21109:161;;20896:380;;;:::o;21281:135::-;21320:3;-1:-1:-1;;21341:17:1;;21338:43;;;21361:18;;:::i;:::-;-1:-1:-1;21408:1:1;21397:13;;21281:135::o;21421:112::-;21453:1;21479;21469:35;;21484:18;;:::i;:::-;-1:-1:-1;21518:9:1;;21421:112::o;21538:127::-;21599:10;21594:3;21590:20;21587:1;21580:31;21630:4;21627:1;21620:15;21654:4;21651:1;21644:15;21670:127;21731:10;21726:3;21722:20;21719:1;21712:31;21762:4;21759:1;21752:15;21786:4;21783:1;21776:15;21802:127;21863:10;21858:3;21854:20;21851:1;21844:31;21894:4;21891:1;21884:15;21918:4;21915:1;21908:15;21934:127;21995:10;21990:3;21986:20;21983:1;21976:31;22026:4;22023:1;22016:15;22050:4;22047:1;22040:15;22066:127;22127:10;22122:3;22118:20;22115:1;22108:31;22158:4;22155:1;22148:15;22182:4;22179:1;22172:15;22198:131;-1:-1:-1;;;;;;22272:32:1;;22262:43;;22252:71;;22319:1;22316;22309:12

Swarm Source

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