ETH Price: $3,476.77 (+4.29%)

Token

WTF (WTF)
 

Overview

Max Total Supply

2,000 WTF

Holders

561

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
lewei.eth
Balance
1 WTF
0x70cb8ed82182ae316e894f0cf507dd120c26f85c
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:
WTF

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-11
*/

pragma solidity ^0.8.0;


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


// File @openzeppelin/contracts/token/ERC721/[email protected]

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/[email protected]

pragma solidity ^0.8.0;


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


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]

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/utils/[email protected]

pragma solidity ^0.8.0;


library Address {
    
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/utils/[email protected]

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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// File @openzeppelin/contracts/utils/[email protected]


pragma solidity ^0.8.0;

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

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

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

}


// File @openzeppelin/contracts/utils/introspection/[email protected]


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/token/ERC721/[email protected]


pragma solidity ^0.8.0;

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

    
    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(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    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/[email protected]


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/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;


abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

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

    
    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 {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


// File @openzeppelin/contracts/access/[email protected]


pragma solidity ^0.8.0;


abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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


// File contracts/SRSC.sol

pragma solidity ^0.8.0;
contract WTF is ERC721Enumerable, Ownable {
    uint public constant MAX_WTF = 2000;
    string _baseTokenURI;
    bool public paused = true;

    constructor(string memory baseURI) ERC721("WTF", "WTF")  {
        setBaseURI(baseURI);
    }

    modifier saleIsOpen{
        require(totalSupply() < MAX_WTF, "Sale end");
        _;
    }

    
    function reserveWTF() public onlyOwner {
        uint supply = totalSupply();
        uint i;
        for (i = 0; i < 30; i++) {
            _safeMint(msg.sender, supply + i);
        }
    }


    function mintWTF(address _to, uint _count) public payable saleIsOpen {
        if(msg.sender != owner()){
            require(!paused, "Paused");
        }
        require(totalSupply() + _count <= MAX_WTF, "Max limit");
        require(totalSupply() < MAX_WTF, "Sale end");
        require(_count <= 10, "Exceeds 10");
        require(msg.value >= price(_count), "Value below price");

        for(uint i = 0; i < _count; i++){
            _safeMint(_to, totalSupply());
        }
    }

    function price(uint _count) public view returns (uint256) {
        return 0 * _count; 
    }

    function contractURI() public view returns (string memory) {
        return "ipfs://Qme6q6FqyG6Hnwzn2gRN2dSz3C8TphchP9aBNhUAo1KwiH";
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }
    function setBaseURI(string memory baseURI) public onlyOwner {
        _baseTokenURI = baseURI;
    }

    function walletOfOwner(address _owner) external view returns(uint256[] memory) {
        uint tokenCount = balanceOf(_owner);

        uint256[] memory tokensId = new uint256[](tokenCount);
        for(uint i = 0; i < tokenCount; i++){
            tokensId[i] = tokenOfOwnerByIndex(_owner, i);
        }

        return tokensId;
    }

    function pause(bool val) public onlyOwner {
        paused = val;
    }

    function withdrawAll() public payable onlyOwner {
        require(payable(_msgSender()).send(address(this).balance));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_WTF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mintWTF","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":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"val","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":"_count","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveWTF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]

60806040526001600c60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040516200457b3803806200457b8339818101604052810190620000529190620003ba565b6040518060400160405280600381526020017f57544600000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f57544600000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000d692919062000298565b508060019080519060200190620000ef92919062000298565b505050600062000104620001bb60201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001b481620001c360201b60201c565b50620005a5565b600033905090565b620001d3620001bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620001f96200026e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000252576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002499062000441565b60405180910390fd5b80600b90805190602001906200026a92919062000298565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002a69062000511565b90600052602060002090601f016020900481019282620002ca576000855562000316565b82601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b5b80821115620003445760008160009055506001016200032a565b5090565b60006200035f620003598462000497565b62000463565b9050828152602081018484840111156200037857600080fd5b62000385848285620004db565b509392505050565b600082601f8301126200039f57600080fd5b8151620003b184826020860162000348565b91505092915050565b600060208284031215620003cd57600080fd5b600082015167ffffffffffffffff811115620003e857600080fd5b620003f6848285016200038d565b91505092915050565b60006200040e602083620004ca565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600060208201905081810360008301526200045c81620003ff565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200048d576200048c62000576565b5b8060405250919050565b600067ffffffffffffffff821115620004b557620004b462000576565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60005b83811015620004fb578082015181840152602081019050620004de565b838111156200050b576000848401525b50505050565b600060028204905060018216806200052a57607f821691505b6020821081141562000541576200054062000547565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613fc680620005b56000396000f3fe6080604052600436106101b75760003560e01c806355f804b3116100ec57806395d89b411161008a578063c87b56dd11610064578063c87b56dd14610602578063e8a3d4851461063f578063e985e9c51461066a578063f2fde38b146106a7576101b7565b806395d89b4114610585578063a22cb465146105b0578063b88d4fde146105d9576101b7565b80636d65fd0c116100c65780636d65fd0c146104e857806370a0823114610513578063853828b6146105505780638da5cb5b1461055a576101b7565b806355f804b3146104575780635c975abb146104805780636352211e146104ab576101b7565b806323b872dd116101595780633e751cc8116101335780633e751cc81461039d57806342842e0e146103b4578063438b6300146103dd5780634f6ccce71461041a576101b7565b806323b872dd146102fa57806326a49e37146103235780632f745c5914610360576101b7565b8063081812fc11610195578063081812fc1461024d578063095ea7b31461028a5780630fea40a8146102b357806318160ddd146102cf576101b7565b806301ffc9a7146101bc57806302329a29146101f957806306fdde0314610222575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612ce4565b6106d0565b6040516101f09190613776565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612cbb565b61074a565b005b34801561022e57600080fd5b506102376107e3565b6040516102449190613791565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612d77565b610875565b60405161028191906136ed565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190612c7f565b6108fa565b005b6102cd60048036038101906102c89190612c7f565b610a12565b005b3480156102db57600080fd5b506102e4610c4d565b6040516102f19190613a93565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190612b79565b610c5a565b005b34801561032f57600080fd5b5061034a60048036038101906103459190612d77565b610cba565b6040516103579190613a93565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190612c7f565b610cd0565b6040516103949190613a93565b60405180910390f35b3480156103a957600080fd5b506103b2610d75565b005b3480156103c057600080fd5b506103db60048036038101906103d69190612b79565b610e35565b005b3480156103e957600080fd5b5061040460048036038101906103ff9190612b14565b610e55565b6040516104119190613754565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190612d77565b610f4f565b60405161044e9190613a93565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190612d36565b610fe6565b005b34801561048c57600080fd5b5061049561107c565b6040516104a29190613776565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd9190612d77565b61108f565b6040516104df91906136ed565b60405180910390f35b3480156104f457600080fd5b506104fd611141565b60405161050a9190613a93565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612b14565b611147565b6040516105479190613a93565b60405180910390f35b6105586111ff565b005b34801561056657600080fd5b5061056f6112c2565b60405161057c91906136ed565b60405180910390f35b34801561059157600080fd5b5061059a6112ec565b6040516105a79190613791565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190612c43565b61137e565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190612bc8565b6114ff565b005b34801561060e57600080fd5b5061062960048036038101906106249190612d77565b611561565b6040516106369190613791565b60405180910390f35b34801561064b57600080fd5b50610654611608565b6040516106619190613791565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190612b3d565b611628565b60405161069e9190613776565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190612b14565b6116bc565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610743575061074282611868565b5b9050919050565b61075261194a565b73ffffffffffffffffffffffffffffffffffffffff166107706112c2565b73ffffffffffffffffffffffffffffffffffffffff16146107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90613993565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b6060600080546107f290613d86565b80601f016020809104026020016040519081016040528092919081815260200182805461081e90613d86565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b600061088082611952565b6108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690613973565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109058261108f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d90613a13565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661099561194a565b73ffffffffffffffffffffffffffffffffffffffff1614806109c457506109c3816109be61194a565b611628565b5b610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa906138d3565b60405180910390fd5b610a0d83836119be565b505050565b6107d0610a1d610c4d565b10610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490613953565b60405180910390fd5b610a656112c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae857600c60009054906101000a900460ff1615610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade906137b3565b60405180910390fd5b5b6107d081610af4610c4d565b610afe9190613bbb565b1115610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613893565b60405180910390fd5b6107d0610b4a610c4d565b10610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190613953565b60405180910390fd5b600a811115610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590613a73565b60405180910390fd5b610bd781610cba565b341015610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c10906139f3565b60405180910390fd5b60005b81811015610c4857610c3583610c30610c4d565b611a77565b8080610c4090613db8565b915050610c1c565b505050565b6000600880549050905090565b610c6b610c6561194a565b82611a95565b610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190613a33565b60405180910390fd5b610cb5838383611b73565b505050565b6000816000610cc99190613c42565b9050919050565b6000610cdb83611147565b8210610d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d13906137d3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d7d61194a565b73ffffffffffffffffffffffffffffffffffffffff16610d9b6112c2565b73ffffffffffffffffffffffffffffffffffffffff1614610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890613993565b60405180910390fd5b6000610dfb610c4d565b905060005b601e811015610e3157610e1e338284610e199190613bbb565b611a77565b8080610e2990613db8565b915050610e00565b5050565b610e50838383604051806020016040528060008152506114ff565b505050565b60606000610e6283611147565b905060008167ffffffffffffffff811115610ea6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ed45781602001602082028036833780820191505090505b50905060005b82811015610f4457610eec8582610cd0565b828281518110610f25577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080610f3c90613db8565b915050610eda565b508092505050919050565b6000610f59610c4d565b8210610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613a53565b60405180910390fd5b60088281548110610fd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610fee61194a565b73ffffffffffffffffffffffffffffffffffffffff1661100c6112c2565b73ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990613993565b60405180910390fd5b80600b9080519060200190611078929190612938565b5050565b600c60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613913565b60405180910390fd5b80915050919050565b6107d081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af906138f3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120761194a565b73ffffffffffffffffffffffffffffffffffffffff166112256112c2565b73ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290613993565b60405180910390fd5b61128361194a565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050506112c057600080fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112fb90613d86565b80601f016020809104026020016040519081016040528092919081815260200182805461132790613d86565b80156113745780601f1061134957610100808354040283529160200191611374565b820191906000526020600020905b81548152906001019060200180831161135757829003601f168201915b5050505050905090565b61138661194a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90613873565b60405180910390fd5b806005600061140161194a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114ae61194a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114f39190613776565b60405180910390a35050565b61151061150a61194a565b83611a95565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613a33565b60405180910390fd5b61155b84848484611dcf565b50505050565b606061156c82611952565b6115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906139d3565b60405180910390fd5b60006115b5611e2b565b905060008151116115d55760405180602001604052806000815250611600565b806115df84611ebd565b6040516020016115f09291906136c9565b6040516020818303038152906040525b915050919050565b6060604051806060016040528060358152602001613f5c60359139905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116c461194a565b73ffffffffffffffffffffffffffffffffffffffff166116e26112c2565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90613813565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061193357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061194357506119428261206a565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a318361108f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611a918282604051806020016040528060008152506120d4565b5050565b6000611aa082611952565b611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad6906138b3565b60405180910390fd5b6000611aea8361108f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b5957508373ffffffffffffffffffffffffffffffffffffffff16611b4184610875565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b6a5750611b698185611628565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b938261108f565b73ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be0906139b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090613853565b60405180910390fd5b611c6483838361212f565b611c6f6000826119be565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cbf9190613c9c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d169190613bbb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611dda848484611b73565b611de684848484612243565b611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c906137f3565b60405180910390fd5b50505050565b6060600b8054611e3a90613d86565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6690613d86565b8015611eb35780601f10611e8857610100808354040283529160200191611eb3565b820191906000526020600020905b815481529060010190602001808311611e9657829003601f168201915b5050505050905090565b60606000821415611f05576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612065565b600082905060005b60008214611f37578080611f2090613db8565b915050600a82611f309190613c11565b9150611f0d565b60008167ffffffffffffffff811115611f79577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fab5781602001600182028036833780820191505090505b5090505b6000851461205e57600182611fc49190613c9c565b9150600a85611fd39190613e01565b6030611fdf9190613bbb565b60f81b81838151811061201b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120579190613c11565b9450611faf565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120de83836123da565b6120eb6000848484612243565b61212a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612121906137f3565b60405180910390fd5b505050565b61213a8383836125a8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561217d57612178816125ad565b6121bc565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121bb576121ba83826125f6565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ff576121fa81612763565b61223e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461223d5761223c82826128a6565b5b5b505050565b60006122648473ffffffffffffffffffffffffffffffffffffffff16612925565b156123cd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261228d61194a565b8786866040518563ffffffff1660e01b81526004016122af9493929190613708565b602060405180830381600087803b1580156122c957600080fd5b505af19250505080156122fa57506040513d601f19601f820116820180604052508101906122f79190612d0d565b60015b61237d573d806000811461232a576040519150601f19603f3d011682016040523d82523d6000602084013e61232f565b606091505b50600081511415612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c906137f3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123d2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244190613933565b60405180910390fd5b61245381611952565b15612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a90613833565b60405180910390fd5b61249f6000838361212f565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124ef9190613bbb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161260384611147565b61260d9190613c9c565b90506000600760008481526020019081526020016000205490508181146126f2576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127779190613c9c565b90506000600960008481526020019081526020016000205490506000600883815481106127cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612815577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061288a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006128b183611147565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461294490613d86565b90600052602060002090601f01602090048101928261296657600085556129ad565b82601f1061297f57805160ff19168380011785556129ad565b828001600101855582156129ad579182015b828111156129ac578251825591602001919060010190612991565b5b5090506129ba91906129be565b5090565b5b808211156129d75760008160009055506001016129bf565b5090565b60006129ee6129e984613adf565b613aae565b905082815260208101848484011115612a0657600080fd5b612a11848285613d44565b509392505050565b6000612a2c612a2784613b0f565b613aae565b905082815260208101848484011115612a4457600080fd5b612a4f848285613d44565b509392505050565b600081359050612a6681613eff565b92915050565b600081359050612a7b81613f16565b92915050565b600081359050612a9081613f2d565b92915050565b600081519050612aa581613f2d565b92915050565b600082601f830112612abc57600080fd5b8135612acc8482602086016129db565b91505092915050565b600082601f830112612ae657600080fd5b8135612af6848260208601612a19565b91505092915050565b600081359050612b0e81613f44565b92915050565b600060208284031215612b2657600080fd5b6000612b3484828501612a57565b91505092915050565b60008060408385031215612b5057600080fd5b6000612b5e85828601612a57565b9250506020612b6f85828601612a57565b9150509250929050565b600080600060608486031215612b8e57600080fd5b6000612b9c86828701612a57565b9350506020612bad86828701612a57565b9250506040612bbe86828701612aff565b9150509250925092565b60008060008060808587031215612bde57600080fd5b6000612bec87828801612a57565b9450506020612bfd87828801612a57565b9350506040612c0e87828801612aff565b925050606085013567ffffffffffffffff811115612c2b57600080fd5b612c3787828801612aab565b91505092959194509250565b60008060408385031215612c5657600080fd5b6000612c6485828601612a57565b9250506020612c7585828601612a6c565b9150509250929050565b60008060408385031215612c9257600080fd5b6000612ca085828601612a57565b9250506020612cb185828601612aff565b9150509250929050565b600060208284031215612ccd57600080fd5b6000612cdb84828501612a6c565b91505092915050565b600060208284031215612cf657600080fd5b6000612d0484828501612a81565b91505092915050565b600060208284031215612d1f57600080fd5b6000612d2d84828501612a96565b91505092915050565b600060208284031215612d4857600080fd5b600082013567ffffffffffffffff811115612d6257600080fd5b612d6e84828501612ad5565b91505092915050565b600060208284031215612d8957600080fd5b6000612d9784828501612aff565b91505092915050565b6000612dac83836136ab565b60208301905092915050565b612dc181613cd0565b82525050565b6000612dd282613b4f565b612ddc8185613b7d565b9350612de783613b3f565b8060005b83811015612e18578151612dff8882612da0565b9750612e0a83613b70565b925050600181019050612deb565b5085935050505092915050565b612e2e81613ce2565b82525050565b6000612e3f82613b5a565b612e498185613b8e565b9350612e59818560208601613d53565b612e6281613eee565b840191505092915050565b6000612e7882613b65565b612e828185613b9f565b9350612e92818560208601613d53565b612e9b81613eee565b840191505092915050565b6000612eb182613b65565b612ebb8185613bb0565b9350612ecb818560208601613d53565b80840191505092915050565b6000612ee4600683613b9f565b91507f50617573656400000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f24602b83613b9f565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000612f8a603283613b9f565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612ff0602683613b9f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613056601c83613b9f565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000613096602483613b9f565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130fc601983613b9f565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b600061313c600983613b9f565b91507f4d6178206c696d697400000000000000000000000000000000000000000000006000830152602082019050919050565b600061317c602c83613b9f565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006131e2603883613b9f565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613248602a83613b9f565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006132ae602983613b9f565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613314602083613b9f565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000613354600883613b9f565b91507f53616c6520656e640000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613394602c83613b9f565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006133fa602083613b9f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061343a602983613b9f565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006134a0602f83613b9f565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000613506601183613b9f565b91507f56616c75652062656c6f772070726963650000000000000000000000000000006000830152602082019050919050565b6000613546602183613b9f565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135ac603183613b9f565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613612602c83613b9f565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6000613678600a83613b9f565b91507f45786365656473203130000000000000000000000000000000000000000000006000830152602082019050919050565b6136b481613d3a565b82525050565b6136c381613d3a565b82525050565b60006136d58285612ea6565b91506136e18284612ea6565b91508190509392505050565b60006020820190506137026000830184612db8565b92915050565b600060808201905061371d6000830187612db8565b61372a6020830186612db8565b61373760408301856136ba565b81810360608301526137498184612e34565b905095945050505050565b6000602082019050818103600083015261376e8184612dc7565b905092915050565b600060208201905061378b6000830184612e25565b92915050565b600060208201905081810360008301526137ab8184612e6d565b905092915050565b600060208201905081810360008301526137cc81612ed7565b9050919050565b600060208201905081810360008301526137ec81612f17565b9050919050565b6000602082019050818103600083015261380c81612f7d565b9050919050565b6000602082019050818103600083015261382c81612fe3565b9050919050565b6000602082019050818103600083015261384c81613049565b9050919050565b6000602082019050818103600083015261386c81613089565b9050919050565b6000602082019050818103600083015261388c816130ef565b9050919050565b600060208201905081810360008301526138ac8161312f565b9050919050565b600060208201905081810360008301526138cc8161316f565b9050919050565b600060208201905081810360008301526138ec816131d5565b9050919050565b6000602082019050818103600083015261390c8161323b565b9050919050565b6000602082019050818103600083015261392c816132a1565b9050919050565b6000602082019050818103600083015261394c81613307565b9050919050565b6000602082019050818103600083015261396c81613347565b9050919050565b6000602082019050818103600083015261398c81613387565b9050919050565b600060208201905081810360008301526139ac816133ed565b9050919050565b600060208201905081810360008301526139cc8161342d565b9050919050565b600060208201905081810360008301526139ec81613493565b9050919050565b60006020820190508181036000830152613a0c816134f9565b9050919050565b60006020820190508181036000830152613a2c81613539565b9050919050565b60006020820190508181036000830152613a4c8161359f565b9050919050565b60006020820190508181036000830152613a6c81613605565b9050919050565b60006020820190508181036000830152613a8c8161366b565b9050919050565b6000602082019050613aa860008301846136ba565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613ad557613ad4613ebf565b5b8060405250919050565b600067ffffffffffffffff821115613afa57613af9613ebf565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613b2a57613b29613ebf565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613bc682613d3a565b9150613bd183613d3a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0657613c05613e32565b5b828201905092915050565b6000613c1c82613d3a565b9150613c2783613d3a565b925082613c3757613c36613e61565b5b828204905092915050565b6000613c4d82613d3a565b9150613c5883613d3a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9157613c90613e32565b5b828202905092915050565b6000613ca782613d3a565b9150613cb283613d3a565b925082821015613cc557613cc4613e32565b5b828203905092915050565b6000613cdb82613d1a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613d71578082015181840152602081019050613d56565b83811115613d80576000848401525b50505050565b60006002820490506001821680613d9e57607f821691505b60208210811415613db257613db1613e90565b5b50919050565b6000613dc382613d3a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613df657613df5613e32565b5b600182019050919050565b6000613e0c82613d3a565b9150613e1783613d3a565b925082613e2757613e26613e61565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613f0881613cd0565b8114613f1357600080fd5b50565b613f1f81613ce2565b8114613f2a57600080fd5b50565b613f3681613cee565b8114613f4157600080fd5b50565b613f4d81613d3a565b8114613f5857600080fd5b5056fe697066733a2f2f516d653671364671794736486e777a6e3267524e3264537a3343385470686368503961424e6855416f314b776948a26469706673582212207224fcf46794fc8c05348b3275805b6e2fd9c7279cd383ab810ae1fce8b411a464736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101b75760003560e01c806355f804b3116100ec57806395d89b411161008a578063c87b56dd11610064578063c87b56dd14610602578063e8a3d4851461063f578063e985e9c51461066a578063f2fde38b146106a7576101b7565b806395d89b4114610585578063a22cb465146105b0578063b88d4fde146105d9576101b7565b80636d65fd0c116100c65780636d65fd0c146104e857806370a0823114610513578063853828b6146105505780638da5cb5b1461055a576101b7565b806355f804b3146104575780635c975abb146104805780636352211e146104ab576101b7565b806323b872dd116101595780633e751cc8116101335780633e751cc81461039d57806342842e0e146103b4578063438b6300146103dd5780634f6ccce71461041a576101b7565b806323b872dd146102fa57806326a49e37146103235780632f745c5914610360576101b7565b8063081812fc11610195578063081812fc1461024d578063095ea7b31461028a5780630fea40a8146102b357806318160ddd146102cf576101b7565b806301ffc9a7146101bc57806302329a29146101f957806306fdde0314610222575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612ce4565b6106d0565b6040516101f09190613776565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612cbb565b61074a565b005b34801561022e57600080fd5b506102376107e3565b6040516102449190613791565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612d77565b610875565b60405161028191906136ed565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190612c7f565b6108fa565b005b6102cd60048036038101906102c89190612c7f565b610a12565b005b3480156102db57600080fd5b506102e4610c4d565b6040516102f19190613a93565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190612b79565b610c5a565b005b34801561032f57600080fd5b5061034a60048036038101906103459190612d77565b610cba565b6040516103579190613a93565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190612c7f565b610cd0565b6040516103949190613a93565b60405180910390f35b3480156103a957600080fd5b506103b2610d75565b005b3480156103c057600080fd5b506103db60048036038101906103d69190612b79565b610e35565b005b3480156103e957600080fd5b5061040460048036038101906103ff9190612b14565b610e55565b6040516104119190613754565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190612d77565b610f4f565b60405161044e9190613a93565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190612d36565b610fe6565b005b34801561048c57600080fd5b5061049561107c565b6040516104a29190613776565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd9190612d77565b61108f565b6040516104df91906136ed565b60405180910390f35b3480156104f457600080fd5b506104fd611141565b60405161050a9190613a93565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612b14565b611147565b6040516105479190613a93565b60405180910390f35b6105586111ff565b005b34801561056657600080fd5b5061056f6112c2565b60405161057c91906136ed565b60405180910390f35b34801561059157600080fd5b5061059a6112ec565b6040516105a79190613791565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190612c43565b61137e565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190612bc8565b6114ff565b005b34801561060e57600080fd5b5061062960048036038101906106249190612d77565b611561565b6040516106369190613791565b60405180910390f35b34801561064b57600080fd5b50610654611608565b6040516106619190613791565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190612b3d565b611628565b60405161069e9190613776565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190612b14565b6116bc565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610743575061074282611868565b5b9050919050565b61075261194a565b73ffffffffffffffffffffffffffffffffffffffff166107706112c2565b73ffffffffffffffffffffffffffffffffffffffff16146107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90613993565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b6060600080546107f290613d86565b80601f016020809104026020016040519081016040528092919081815260200182805461081e90613d86565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b600061088082611952565b6108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690613973565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109058261108f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096d90613a13565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661099561194a565b73ffffffffffffffffffffffffffffffffffffffff1614806109c457506109c3816109be61194a565b611628565b5b610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa906138d3565b60405180910390fd5b610a0d83836119be565b505050565b6107d0610a1d610c4d565b10610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490613953565b60405180910390fd5b610a656112c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae857600c60009054906101000a900460ff1615610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade906137b3565b60405180910390fd5b5b6107d081610af4610c4d565b610afe9190613bbb565b1115610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613893565b60405180910390fd5b6107d0610b4a610c4d565b10610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190613953565b60405180910390fd5b600a811115610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590613a73565b60405180910390fd5b610bd781610cba565b341015610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c10906139f3565b60405180910390fd5b60005b81811015610c4857610c3583610c30610c4d565b611a77565b8080610c4090613db8565b915050610c1c565b505050565b6000600880549050905090565b610c6b610c6561194a565b82611a95565b610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190613a33565b60405180910390fd5b610cb5838383611b73565b505050565b6000816000610cc99190613c42565b9050919050565b6000610cdb83611147565b8210610d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d13906137d3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d7d61194a565b73ffffffffffffffffffffffffffffffffffffffff16610d9b6112c2565b73ffffffffffffffffffffffffffffffffffffffff1614610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890613993565b60405180910390fd5b6000610dfb610c4d565b905060005b601e811015610e3157610e1e338284610e199190613bbb565b611a77565b8080610e2990613db8565b915050610e00565b5050565b610e50838383604051806020016040528060008152506114ff565b505050565b60606000610e6283611147565b905060008167ffffffffffffffff811115610ea6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ed45781602001602082028036833780820191505090505b50905060005b82811015610f4457610eec8582610cd0565b828281518110610f25577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080610f3c90613db8565b915050610eda565b508092505050919050565b6000610f59610c4d565b8210610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613a53565b60405180910390fd5b60088281548110610fd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610fee61194a565b73ffffffffffffffffffffffffffffffffffffffff1661100c6112c2565b73ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990613993565b60405180910390fd5b80600b9080519060200190611078929190612938565b5050565b600c60009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613913565b60405180910390fd5b80915050919050565b6107d081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af906138f3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120761194a565b73ffffffffffffffffffffffffffffffffffffffff166112256112c2565b73ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290613993565b60405180910390fd5b61128361194a565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050506112c057600080fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112fb90613d86565b80601f016020809104026020016040519081016040528092919081815260200182805461132790613d86565b80156113745780601f1061134957610100808354040283529160200191611374565b820191906000526020600020905b81548152906001019060200180831161135757829003601f168201915b5050505050905090565b61138661194a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90613873565b60405180910390fd5b806005600061140161194a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114ae61194a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114f39190613776565b60405180910390a35050565b61151061150a61194a565b83611a95565b61154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690613a33565b60405180910390fd5b61155b84848484611dcf565b50505050565b606061156c82611952565b6115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906139d3565b60405180910390fd5b60006115b5611e2b565b905060008151116115d55760405180602001604052806000815250611600565b806115df84611ebd565b6040516020016115f09291906136c9565b6040516020818303038152906040525b915050919050565b6060604051806060016040528060358152602001613f5c60359139905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116c461194a565b73ffffffffffffffffffffffffffffffffffffffff166116e26112c2565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90613813565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061193357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061194357506119428261206a565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a318361108f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611a918282604051806020016040528060008152506120d4565b5050565b6000611aa082611952565b611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad6906138b3565b60405180910390fd5b6000611aea8361108f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b5957508373ffffffffffffffffffffffffffffffffffffffff16611b4184610875565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b6a5750611b698185611628565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b938261108f565b73ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be0906139b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090613853565b60405180910390fd5b611c6483838361212f565b611c6f6000826119be565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cbf9190613c9c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d169190613bbb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611dda848484611b73565b611de684848484612243565b611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c906137f3565b60405180910390fd5b50505050565b6060600b8054611e3a90613d86565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6690613d86565b8015611eb35780601f10611e8857610100808354040283529160200191611eb3565b820191906000526020600020905b815481529060010190602001808311611e9657829003601f168201915b5050505050905090565b60606000821415611f05576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612065565b600082905060005b60008214611f37578080611f2090613db8565b915050600a82611f309190613c11565b9150611f0d565b60008167ffffffffffffffff811115611f79577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fab5781602001600182028036833780820191505090505b5090505b6000851461205e57600182611fc49190613c9c565b9150600a85611fd39190613e01565b6030611fdf9190613bbb565b60f81b81838151811061201b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120579190613c11565b9450611faf565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120de83836123da565b6120eb6000848484612243565b61212a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612121906137f3565b60405180910390fd5b505050565b61213a8383836125a8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561217d57612178816125ad565b6121bc565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146121bb576121ba83826125f6565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ff576121fa81612763565b61223e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461223d5761223c82826128a6565b5b5b505050565b60006122648473ffffffffffffffffffffffffffffffffffffffff16612925565b156123cd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261228d61194a565b8786866040518563ffffffff1660e01b81526004016122af9493929190613708565b602060405180830381600087803b1580156122c957600080fd5b505af19250505080156122fa57506040513d601f19601f820116820180604052508101906122f79190612d0d565b60015b61237d573d806000811461232a576040519150601f19603f3d011682016040523d82523d6000602084013e61232f565b606091505b50600081511415612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c906137f3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123d2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244190613933565b60405180910390fd5b61245381611952565b15612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a90613833565b60405180910390fd5b61249f6000838361212f565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124ef9190613bbb565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161260384611147565b61260d9190613c9c565b90506000600760008481526020019081526020016000205490508181146126f2576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127779190613c9c565b90506000600960008481526020019081526020016000205490506000600883815481106127cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110612815577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061288a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006128b183611147565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461294490613d86565b90600052602060002090601f01602090048101928261296657600085556129ad565b82601f1061297f57805160ff19168380011785556129ad565b828001600101855582156129ad579182015b828111156129ac578251825591602001919060010190612991565b5b5090506129ba91906129be565b5090565b5b808211156129d75760008160009055506001016129bf565b5090565b60006129ee6129e984613adf565b613aae565b905082815260208101848484011115612a0657600080fd5b612a11848285613d44565b509392505050565b6000612a2c612a2784613b0f565b613aae565b905082815260208101848484011115612a4457600080fd5b612a4f848285613d44565b509392505050565b600081359050612a6681613eff565b92915050565b600081359050612a7b81613f16565b92915050565b600081359050612a9081613f2d565b92915050565b600081519050612aa581613f2d565b92915050565b600082601f830112612abc57600080fd5b8135612acc8482602086016129db565b91505092915050565b600082601f830112612ae657600080fd5b8135612af6848260208601612a19565b91505092915050565b600081359050612b0e81613f44565b92915050565b600060208284031215612b2657600080fd5b6000612b3484828501612a57565b91505092915050565b60008060408385031215612b5057600080fd5b6000612b5e85828601612a57565b9250506020612b6f85828601612a57565b9150509250929050565b600080600060608486031215612b8e57600080fd5b6000612b9c86828701612a57565b9350506020612bad86828701612a57565b9250506040612bbe86828701612aff565b9150509250925092565b60008060008060808587031215612bde57600080fd5b6000612bec87828801612a57565b9450506020612bfd87828801612a57565b9350506040612c0e87828801612aff565b925050606085013567ffffffffffffffff811115612c2b57600080fd5b612c3787828801612aab565b91505092959194509250565b60008060408385031215612c5657600080fd5b6000612c6485828601612a57565b9250506020612c7585828601612a6c565b9150509250929050565b60008060408385031215612c9257600080fd5b6000612ca085828601612a57565b9250506020612cb185828601612aff565b9150509250929050565b600060208284031215612ccd57600080fd5b6000612cdb84828501612a6c565b91505092915050565b600060208284031215612cf657600080fd5b6000612d0484828501612a81565b91505092915050565b600060208284031215612d1f57600080fd5b6000612d2d84828501612a96565b91505092915050565b600060208284031215612d4857600080fd5b600082013567ffffffffffffffff811115612d6257600080fd5b612d6e84828501612ad5565b91505092915050565b600060208284031215612d8957600080fd5b6000612d9784828501612aff565b91505092915050565b6000612dac83836136ab565b60208301905092915050565b612dc181613cd0565b82525050565b6000612dd282613b4f565b612ddc8185613b7d565b9350612de783613b3f565b8060005b83811015612e18578151612dff8882612da0565b9750612e0a83613b70565b925050600181019050612deb565b5085935050505092915050565b612e2e81613ce2565b82525050565b6000612e3f82613b5a565b612e498185613b8e565b9350612e59818560208601613d53565b612e6281613eee565b840191505092915050565b6000612e7882613b65565b612e828185613b9f565b9350612e92818560208601613d53565b612e9b81613eee565b840191505092915050565b6000612eb182613b65565b612ebb8185613bb0565b9350612ecb818560208601613d53565b80840191505092915050565b6000612ee4600683613b9f565b91507f50617573656400000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f24602b83613b9f565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000612f8a603283613b9f565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612ff0602683613b9f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613056601c83613b9f565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000613096602483613b9f565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130fc601983613b9f565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b600061313c600983613b9f565b91507f4d6178206c696d697400000000000000000000000000000000000000000000006000830152602082019050919050565b600061317c602c83613b9f565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006131e2603883613b9f565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613248602a83613b9f565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b60006132ae602983613b9f565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613314602083613b9f565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000613354600883613b9f565b91507f53616c6520656e640000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613394602c83613b9f565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b60006133fa602083613b9f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061343a602983613b9f565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006134a0602f83613b9f565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000613506601183613b9f565b91507f56616c75652062656c6f772070726963650000000000000000000000000000006000830152602082019050919050565b6000613546602183613b9f565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135ac603183613b9f565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000613612602c83613b9f565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b6000613678600a83613b9f565b91507f45786365656473203130000000000000000000000000000000000000000000006000830152602082019050919050565b6136b481613d3a565b82525050565b6136c381613d3a565b82525050565b60006136d58285612ea6565b91506136e18284612ea6565b91508190509392505050565b60006020820190506137026000830184612db8565b92915050565b600060808201905061371d6000830187612db8565b61372a6020830186612db8565b61373760408301856136ba565b81810360608301526137498184612e34565b905095945050505050565b6000602082019050818103600083015261376e8184612dc7565b905092915050565b600060208201905061378b6000830184612e25565b92915050565b600060208201905081810360008301526137ab8184612e6d565b905092915050565b600060208201905081810360008301526137cc81612ed7565b9050919050565b600060208201905081810360008301526137ec81612f17565b9050919050565b6000602082019050818103600083015261380c81612f7d565b9050919050565b6000602082019050818103600083015261382c81612fe3565b9050919050565b6000602082019050818103600083015261384c81613049565b9050919050565b6000602082019050818103600083015261386c81613089565b9050919050565b6000602082019050818103600083015261388c816130ef565b9050919050565b600060208201905081810360008301526138ac8161312f565b9050919050565b600060208201905081810360008301526138cc8161316f565b9050919050565b600060208201905081810360008301526138ec816131d5565b9050919050565b6000602082019050818103600083015261390c8161323b565b9050919050565b6000602082019050818103600083015261392c816132a1565b9050919050565b6000602082019050818103600083015261394c81613307565b9050919050565b6000602082019050818103600083015261396c81613347565b9050919050565b6000602082019050818103600083015261398c81613387565b9050919050565b600060208201905081810360008301526139ac816133ed565b9050919050565b600060208201905081810360008301526139cc8161342d565b9050919050565b600060208201905081810360008301526139ec81613493565b9050919050565b60006020820190508181036000830152613a0c816134f9565b9050919050565b60006020820190508181036000830152613a2c81613539565b9050919050565b60006020820190508181036000830152613a4c8161359f565b9050919050565b60006020820190508181036000830152613a6c81613605565b9050919050565b60006020820190508181036000830152613a8c8161366b565b9050919050565b6000602082019050613aa860008301846136ba565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613ad557613ad4613ebf565b5b8060405250919050565b600067ffffffffffffffff821115613afa57613af9613ebf565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115613b2a57613b29613ebf565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613bc682613d3a565b9150613bd183613d3a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0657613c05613e32565b5b828201905092915050565b6000613c1c82613d3a565b9150613c2783613d3a565b925082613c3757613c36613e61565b5b828204905092915050565b6000613c4d82613d3a565b9150613c5883613d3a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9157613c90613e32565b5b828202905092915050565b6000613ca782613d3a565b9150613cb283613d3a565b925082821015613cc557613cc4613e32565b5b828203905092915050565b6000613cdb82613d1a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613d71578082015181840152602081019050613d56565b83811115613d80576000848401525b50505050565b60006002820490506001821680613d9e57607f821691505b60208210811415613db257613db1613e90565b5b50919050565b6000613dc382613d3a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613df657613df5613e32565b5b600182019050919050565b6000613e0c82613d3a565b9150613e1783613d3a565b925082613e2757613e26613e61565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613f0881613cd0565b8114613f1357600080fd5b50565b613f1f81613ce2565b8114613f2a57600080fd5b50565b613f3681613cee565b8114613f4157600080fd5b50565b613f4d81613d3a565b8114613f5857600080fd5b5056fe697066733a2f2f516d653671364671794736486e777a6e3267524e3264537a3343385470686368503961424e6855416f314b776948a26469706673582212207224fcf46794fc8c05348b3275805b6e2fd9c7279cd383ab810ae1fce8b411a464736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI (string):

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22619:2119:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17678:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24529:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10300:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11424:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11013:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23189:499;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18199:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23696:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17929:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22982:197;;;;;;;;;;;;;:::i;:::-;;12464:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24177:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18326:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24067:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22737:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10047:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22668:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9826:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24610:125;;;:::i;:::-;;22076:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10414:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11659:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12629:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10532:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23799:140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11967:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22311:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17678:237;17780:4;17819:35;17804:50;;;:11;:50;;;;:103;;;;17871:36;17895:11;17871:23;:36::i;:::-;17804:103;17797:110;;17678:237;;;:::o;24529:73::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24591:3:::1;24582:6;;:12;;;;;;;;;;;;;;;;;;24529:73:::0;:::o;10300:100::-;10354:13;10387:5;10380:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10300:100;:::o;11424:221::-;11500:7;11528:16;11536:7;11528;:16::i;:::-;11520:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11613:15;:24;11629:7;11613:24;;;;;;;;;;;;;;;;;;;;;11606:31;;11424:221;;;:::o;11013:397::-;11094:13;11110:23;11125:7;11110:14;:23::i;:::-;11094:39;;11158:5;11152:11;;:2;:11;;;;11144:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11238:5;11222:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;11247:37;11264:5;11271:12;:10;:12::i;:::-;11247:16;:37::i;:::-;11222:62;11214:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;11381:21;11390:2;11394:7;11381:8;:21::i;:::-;11013:397;;;:::o;23189:499::-;22699:4;22912:13;:11;:13::i;:::-;:23;22904:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23286:7:::1;:5;:7::i;:::-;23272:21;;:10;:21;;;23269:78;;23318:6;;;;;;;;;;;23317:7;23309:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;23269:78;22699:4;23381:6;23365:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:33;;23357:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;22699:4;23431:13;:11;:13::i;:::-;:23;23423:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23496:2;23486:6;:12;;23478:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;23545:13;23551:6;23545:5;:13::i;:::-;23532:9;:26;;23524:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23597:6;23593:88;23613:6;23609:1;:10;23593:88;;;23640:29;23650:3;23655:13;:11;:13::i;:::-;23640:9;:29::i;:::-;23621:3;;;;;:::i;:::-;;;;23593:88;;;;23189:499:::0;;:::o;18199:113::-;18260:7;18287:10;:17;;;;18280:24;;18199:113;:::o;12145:305::-;12306:41;12325:12;:10;:12::i;:::-;12339:7;12306:18;:41::i;:::-;12298:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12414:28;12424:4;12430:2;12434:7;12414:9;:28::i;:::-;12145:305;;;:::o;23696:95::-;23745:7;23776:6;23772:1;:10;;;;:::i;:::-;23765:17;;23696:95;;;:::o;17929:256::-;18026:7;18062:23;18079:5;18062:16;:23::i;:::-;18054:5;:31;18046:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18151:12;:19;18164:5;18151:19;;;;;;;;;;;;;;;:26;18171:5;18151:26;;;;;;;;;;;;18144:33;;17929:256;;;;:::o;22982:197::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23032:11:::1;23046:13;:11;:13::i;:::-;23032:27;;23070:6;23087:85;23103:2;23099:1;:6;23087:85;;;23127:33;23137:10;23158:1;23149:6;:10;;;;:::i;:::-;23127:9;:33::i;:::-;23107:3;;;;;:::i;:::-;;;;23087:85;;;22288:1;;22982:197::o:0;12464:151::-;12568:39;12585:4;12591:2;12595:7;12568:39;;;;;;;;;;;;:16;:39::i;:::-;12464:151;;;:::o;24177:344::-;24238:16;24267:15;24285:17;24295:6;24285:9;:17::i;:::-;24267:35;;24315:25;24357:10;24343:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24315:53;;24383:6;24379:107;24399:10;24395:1;:14;24379:107;;;24444:30;24464:6;24472:1;24444:19;:30::i;:::-;24430:8;24439:1;24430:11;;;;;;;;;;;;;;;;;;;;;:44;;;;;24411:3;;;;;:::i;:::-;;;;24379:107;;;;24505:8;24498:15;;;;24177:344;;;:::o;18326:233::-;18401:7;18437:30;:28;:30::i;:::-;18429:5;:38;18421:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18534:10;18545:5;18534:17;;;;;;;;;;;;;;;;;;;;;;;;18527:24;;18326:233;;;:::o;24067:102::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24154:7:::1;24138:13;:23;;;;;;;;;;;;:::i;:::-;;24067:102:::0;:::o;22737:25::-;;;;;;;;;;;;;:::o;10047:239::-;10119:7;10139:13;10155:7;:16;10163:7;10155:16;;;;;;;;;;;;;;;;;;;;;10139:32;;10207:1;10190:19;;:5;:19;;;;10182:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10273:5;10266:12;;;10047:239;;;:::o;22668:35::-;22699:4;22668:35;:::o;9826:208::-;9898:7;9943:1;9926:19;;:5;:19;;;;9918:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10010:9;:16;10020:5;10010:16;;;;;;;;;;;;;;;;10003:23;;9826:208;;;:::o;24610:125::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24685:12:::1;:10;:12::i;:::-;24677:26;;:49;24704:21;24677:49;;;;;;;;;;;;;;;;;;;;;;;24669:58;;;::::0;::::1;;24610:125::o:0;22076:87::-;22122:7;22149:6;;;;;;;;;;;22142:13;;22076:87;:::o;10414:104::-;10470:13;10503:7;10496:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10414:104;:::o;11659:295::-;11774:12;:10;:12::i;:::-;11762:24;;:8;:24;;;;11754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:8;11829:18;:32;11848:12;:10;:12::i;:::-;11829:32;;;;;;;;;;;;;;;:42;11862:8;11829:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;11927:8;11898:48;;11913:12;:10;:12::i;:::-;11898:48;;;11937:8;11898:48;;;;;;:::i;:::-;;;;;;;;11659:295;;:::o;12629:285::-;12761:41;12780:12;:10;:12::i;:::-;12794:7;12761:18;:41::i;:::-;12753:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12867:39;12881:4;12887:2;12891:7;12900:5;12867:13;:39::i;:::-;12629:285;;;;:::o;10532:360::-;10605:13;10639:16;10647:7;10639;:16::i;:::-;10631:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10720:21;10744:10;:8;:10::i;:::-;10720:34;;10796:1;10778:7;10772:21;:25;:112;;;;;;;;;;;;;;;;;10837:7;10846:18;:7;:16;:18::i;:::-;10820:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10772:112;10765:119;;;10532:360;;;:::o;23799:140::-;23843:13;23869:62;;;;;;;;;;;;;;;;;;;23799:140;:::o;11967:164::-;12064:4;12088:18;:25;12107:5;12088:25;;;;;;;;;;;;;;;:35;12114:8;12088:35;;;;;;;;;;;;;;;;;;;;;;;;;12081:42;;11967:164;;;;:::o;22311:244::-;22228:12;:10;:12::i;:::-;22217:23;;:7;:5;:7::i;:::-;:23;;;22209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22420:1:::1;22400:22;;:8;:22;;;;22392:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22510:8;22481:38;;22502:6;;;;;;;;;;;22481:38;;;;;;;;;;;;22539:8;22530:6;;:17;;;;;;;;;;;;;;;;;;22311:244:::0;:::o;9520:292::-;9622:4;9661:25;9646:40;;;:11;:40;;;;:105;;;;9718:33;9703:48;;;:11;:48;;;;9646:105;:158;;;;9768:36;9792:11;9768:23;:36::i;:::-;9646:158;9639:165;;9520:292;;;:::o;6356:98::-;6409:7;6436:10;6429:17;;6356:98;:::o;13213:127::-;13278:4;13330:1;13302:30;;:7;:16;13310:7;13302:16;;;;;;;;;;;;;;;;;;;;;:30;;;;13295:37;;13213:127;;;:::o;15430:174::-;15532:2;15505:15;:24;15521:7;15505:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;15588:7;15584:2;15550:46;;15559:23;15574:7;15559:14;:23::i;:::-;15550:46;;;;;;;;;;;;15430:174;;:::o;13716:110::-;13792:26;13802:2;13806:7;13792:26;;;;;;;;;;;;:9;:26::i;:::-;13716:110;;:::o;13354:348::-;13447:4;13472:16;13480:7;13472;:16::i;:::-;13464:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13548:13;13564:23;13579:7;13564:14;:23::i;:::-;13548:39;;13617:5;13606:16;;:7;:16;;;:51;;;;13650:7;13626:31;;:20;13638:7;13626:11;:20::i;:::-;:31;;;13606:51;:87;;;;13661:32;13678:5;13685:7;13661:16;:32::i;:::-;13606:87;13598:96;;;13354:348;;;;:::o;14873:544::-;14998:4;14971:31;;:23;14986:7;14971:14;:23::i;:::-;:31;;;14963:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15081:1;15067:16;;:2;:16;;;;15059:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15137:39;15158:4;15164:2;15168:7;15137:20;:39::i;:::-;15241:29;15258:1;15262:7;15241:8;:29::i;:::-;15302:1;15283:9;:15;15293:4;15283:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;15331:1;15314:9;:13;15324:2;15314:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;15362:2;15343:7;:16;15351:7;15343:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15401:7;15397:2;15382:27;;15391:4;15382:27;;;;;;;;;;;;14873:544;;;:::o;12928:272::-;13042:28;13052:4;13058:2;13062:7;13042:9;:28::i;:::-;13089:48;13112:4;13118:2;13122:7;13131:5;13089:22;:48::i;:::-;13081:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12928:272;;;;:::o;23947:114::-;24007:13;24040;24033:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23947:114;:::o;6925:542::-;6981:13;7030:1;7021:5;:10;7017:53;;;7048:10;;;;;;;;;;;;;;;;;;;;;7017:53;7080:12;7095:5;7080:20;;7111:14;7136:78;7151:1;7143:4;:9;7136:78;;7169:8;;;;;:::i;:::-;;;;7200:2;7192:10;;;;;:::i;:::-;;;7136:78;;;7224:19;7256:6;7246:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7224:39;;7274:154;7290:1;7281:5;:10;7274:154;;7318:1;7308:11;;;;;:::i;:::-;;;7385:2;7377:5;:10;;;;:::i;:::-;7364:2;:24;;;;:::i;:::-;7351:39;;7334:6;7341;7334:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;7414:2;7405:11;;;;;:::i;:::-;;;7274:154;;;7452:6;7438:21;;;;;6925:542;;;;:::o;8446:157::-;8531:4;8570:25;8555:40;;;:11;:40;;;;8548:47;;8446:157;;;:::o;13840:250::-;13936:18;13942:2;13946:7;13936:5;:18::i;:::-;13973:54;14004:1;14008:2;14012:7;14021:5;13973:22;:54::i;:::-;13965:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13840:250;;;:::o;18573:555::-;18683:45;18710:4;18716:2;18720:7;18683:26;:45::i;:::-;18761:1;18745:18;;:4;:18;;;18741:187;;;18780:40;18812:7;18780:31;:40::i;:::-;18741:187;;;18850:2;18842:10;;:4;:10;;;18838:90;;18869:47;18902:4;18908:7;18869:32;:47::i;:::-;18838:90;18741:187;18956:1;18942:16;;:2;:16;;;18938:183;;;18975:45;19012:7;18975:36;:45::i;:::-;18938:183;;;19048:4;19042:10;;:2;:10;;;19038:83;;19069:40;19097:2;19101:7;19069:27;:40::i;:::-;19038:83;18938:183;18573:555;;;:::o;15618:843::-;15739:4;15765:15;:2;:13;;;:15::i;:::-;15761:693;;;15817:2;15801:36;;;15838:12;:10;:12::i;:::-;15852:4;15858:7;15867:5;15801:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15797:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16064:1;16047:6;:13;:18;16043:341;;;16090:60;;;;;;;;;;:::i;:::-;;;;;;;;16043:341;16334:6;16328:13;16319:6;16315:2;16311:15;16304:38;15797:602;15934:45;;;15924:55;;;:6;:55;;;;15917:62;;;;;15761:693;16438:4;16431:11;;15618:843;;;;;;;:::o;14104:382::-;14198:1;14184:16;;:2;:16;;;;14176:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14257:16;14265:7;14257;:16::i;:::-;14256:17;14248:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14319:45;14348:1;14352:2;14356:7;14319:20;:45::i;:::-;14394:1;14377:9;:13;14387:2;14377:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;14425:2;14406:7;:16;14414:7;14406:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14470:7;14466:2;14445:33;;14462:1;14445:33;;;;;;;;;;;;14104:382;;:::o;16475:93::-;;;;:::o;19377:164::-;19481:10;:17;;;;19454:15;:24;19470:7;19454:24;;;;;;;;;;;:44;;;;19509:10;19525:7;19509:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19377:164;:::o;19555:988::-;19821:22;19871:1;19846:22;19863:4;19846:16;:22::i;:::-;:26;;;;:::i;:::-;19821:51;;19883:18;19904:17;:26;19922:7;19904:26;;;;;;;;;;;;19883:47;;20051:14;20037:10;:28;20033:328;;20082:19;20104:12;:18;20117:4;20104:18;;;;;;;;;;;;;;;:34;20123:14;20104:34;;;;;;;;;;;;20082:56;;20188:11;20155:12;:18;20168:4;20155:18;;;;;;;;;;;;;;;:30;20174:10;20155:30;;;;;;;;;;;:44;;;;20305:10;20272:17;:30;20290:11;20272:30;;;;;;;;;;;:43;;;;20033:328;;20457:17;:26;20475:7;20457:26;;;;;;;;;;;20450:33;;;20501:12;:18;20514:4;20501:18;;;;;;;;;;;;;;;:34;20520:14;20501:34;;;;;;;;;;;20494:41;;;19555:988;;;;:::o;20557:1079::-;20810:22;20855:1;20835:10;:17;;;;:21;;;;:::i;:::-;20810:46;;20867:18;20888:15;:24;20904:7;20888:24;;;;;;;;;;;;20867:45;;21239:19;21261:10;21272:14;21261:26;;;;;;;;;;;;;;;;;;;;;;;;21239:48;;21325:11;21300:10;21311;21300:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;21436:10;21405:15;:28;21421:11;21405:28;;;;;;;;;;;:41;;;;21577:15;:24;21593:7;21577:24;;;;;;;;;;;21570:31;;;21612:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20557:1079;;;;:::o;19142:221::-;19227:14;19244:20;19261:2;19244:16;:20::i;:::-;19227:37;;19302:7;19275:12;:16;19288:2;19275:16;;;;;;;;;;;;;;;:24;19292:6;19275:24;;;;;;;;;;;:34;;;;19349:6;19320:17;:26;19338:7;19320:26;;;;;;;;;;;:35;;;;19142:221;;;:::o;2167:422::-;2227:4;2435:12;2546:7;2534:20;2526:28;;2580:1;2573:4;:8;2566:15;;;2167:422;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:344::-;;458:65;473:49;515:6;473:49;:::i;:::-;458:65;:::i;:::-;449:74;;546:6;539:5;532:21;584:4;577:5;573:16;622:3;613:6;608:3;604:16;601:25;598:2;;;639:1;636;629:12;598:2;652:41;686:6;681:3;676;652:41;:::i;:::-;439:260;;;;;;:::o;705:139::-;;789:6;776:20;767:29;;805:33;832:5;805:33;:::i;:::-;757:87;;;;:::o;850:133::-;;931:6;918:20;909:29;;947:30;971:5;947:30;:::i;:::-;899:84;;;;:::o;989:137::-;;1072:6;1059:20;1050:29;;1088:32;1114:5;1088:32;:::i;:::-;1040:86;;;;:::o;1132:141::-;;1219:6;1213:13;1204:22;;1235:32;1261:5;1235:32;:::i;:::-;1194:79;;;;:::o;1292:271::-;;1396:3;1389:4;1381:6;1377:17;1373:27;1363:2;;1414:1;1411;1404:12;1363:2;1454:6;1441:20;1479:78;1553:3;1545:6;1538:4;1530:6;1526:17;1479:78;:::i;:::-;1470:87;;1353:210;;;;;:::o;1583:273::-;;1688:3;1681:4;1673:6;1669:17;1665:27;1655:2;;1706:1;1703;1696:12;1655:2;1746:6;1733:20;1771:79;1846:3;1838:6;1831:4;1823:6;1819:17;1771:79;:::i;:::-;1762:88;;1645:211;;;;;:::o;1862:139::-;;1946:6;1933:20;1924:29;;1962:33;1989:5;1962:33;:::i;:::-;1914:87;;;;:::o;2007:262::-;;2115:2;2103:9;2094:7;2090:23;2086:32;2083:2;;;2131:1;2128;2121:12;2083:2;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2073:196;;;;:::o;2275:407::-;;;2400:2;2388:9;2379:7;2375:23;2371:32;2368:2;;;2416:1;2413;2406:12;2368:2;2459:1;2484:53;2529:7;2520:6;2509:9;2505:22;2484:53;:::i;:::-;2474:63;;2430:117;2586:2;2612:53;2657:7;2648:6;2637:9;2633:22;2612:53;:::i;:::-;2602:63;;2557:118;2358:324;;;;;:::o;2688:552::-;;;;2830:2;2818:9;2809:7;2805:23;2801:32;2798:2;;;2846:1;2843;2836:12;2798:2;2889:1;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2860:117;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;3144:2;3170:53;3215:7;3206:6;3195:9;3191:22;3170:53;:::i;:::-;3160:63;;3115:118;2788:452;;;;;:::o;3246:809::-;;;;;3414:3;3402:9;3393:7;3389:23;3385:33;3382:2;;;3431:1;3428;3421:12;3382:2;3474:1;3499:53;3544:7;3535:6;3524:9;3520:22;3499:53;:::i;:::-;3489:63;;3445:117;3601:2;3627:53;3672:7;3663:6;3652:9;3648:22;3627:53;:::i;:::-;3617:63;;3572:118;3729:2;3755:53;3800:7;3791:6;3780:9;3776:22;3755:53;:::i;:::-;3745:63;;3700:118;3885:2;3874:9;3870:18;3857:32;3916:18;3908:6;3905:30;3902:2;;;3948:1;3945;3938:12;3902:2;3976:62;4030:7;4021:6;4010:9;4006:22;3976:62;:::i;:::-;3966:72;;3828:220;3372:683;;;;;;;:::o;4061:401::-;;;4183:2;4171:9;4162:7;4158:23;4154:32;4151:2;;;4199:1;4196;4189:12;4151:2;4242:1;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4213:117;4369:2;4395:50;4437:7;4428:6;4417:9;4413:22;4395:50;:::i;:::-;4385:60;;4340:115;4141:321;;;;;:::o;4468:407::-;;;4593:2;4581:9;4572:7;4568:23;4564:32;4561:2;;;4609:1;4606;4599:12;4561:2;4652:1;4677:53;4722:7;4713:6;4702:9;4698:22;4677:53;:::i;:::-;4667:63;;4623:117;4779:2;4805:53;4850:7;4841:6;4830:9;4826:22;4805:53;:::i;:::-;4795:63;;4750:118;4551:324;;;;;:::o;4881:256::-;;4986:2;4974:9;4965:7;4961:23;4957:32;4954:2;;;5002:1;4999;4992:12;4954:2;5045:1;5070:50;5112:7;5103:6;5092:9;5088:22;5070:50;:::i;:::-;5060:60;;5016:114;4944:193;;;;:::o;5143:260::-;;5250:2;5238:9;5229:7;5225:23;5221:32;5218:2;;;5266:1;5263;5256:12;5218:2;5309:1;5334:52;5378:7;5369:6;5358:9;5354:22;5334:52;:::i;:::-;5324:62;;5280:116;5208:195;;;;:::o;5409:282::-;;5527:2;5515:9;5506:7;5502:23;5498:32;5495:2;;;5543:1;5540;5533:12;5495:2;5586:1;5611:63;5666:7;5657:6;5646:9;5642:22;5611:63;:::i;:::-;5601:73;;5557:127;5485:206;;;;:::o;5697:375::-;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5902:1;5891:9;5887:17;5874:31;5932:18;5924:6;5921:30;5918:2;;;5964:1;5961;5954:12;5918:2;5992:63;6047:7;6038:6;6027:9;6023:22;5992:63;:::i;:::-;5982:73;;5845:220;5773:299;;;;:::o;6078:262::-;;6186:2;6174:9;6165:7;6161:23;6157:32;6154:2;;;6202:1;6199;6192:12;6154:2;6245:1;6270:53;6315:7;6306:6;6295:9;6291:22;6270:53;:::i;:::-;6260:63;;6216:117;6144:196;;;;:::o;6346:179::-;;6436:46;6478:3;6470:6;6436:46;:::i;:::-;6514:4;6509:3;6505:14;6491:28;;6426:99;;;;:::o;6531:118::-;6618:24;6636:5;6618:24;:::i;:::-;6613:3;6606:37;6596:53;;:::o;6685:732::-;;6833:54;6881:5;6833:54;:::i;:::-;6903:86;6982:6;6977:3;6903:86;:::i;:::-;6896:93;;7013:56;7063:5;7013:56;:::i;:::-;7092:7;7123:1;7108:284;7133:6;7130:1;7127:13;7108:284;;;7209:6;7203:13;7236:63;7295:3;7280:13;7236:63;:::i;:::-;7229:70;;7322:60;7375:6;7322:60;:::i;:::-;7312:70;;7168:224;7155:1;7152;7148:9;7143:14;;7108:284;;;7112:14;7408:3;7401:10;;6809:608;;;;;;;:::o;7423:109::-;7504:21;7519:5;7504:21;:::i;:::-;7499:3;7492:34;7482:50;;:::o;7538:360::-;;7652:38;7684:5;7652:38;:::i;:::-;7706:70;7769:6;7764:3;7706:70;:::i;:::-;7699:77;;7785:52;7830:6;7825:3;7818:4;7811:5;7807:16;7785:52;:::i;:::-;7862:29;7884:6;7862:29;:::i;:::-;7857:3;7853:39;7846:46;;7628:270;;;;;:::o;7904:364::-;;8020:39;8053:5;8020:39;:::i;:::-;8075:71;8139:6;8134:3;8075:71;:::i;:::-;8068:78;;8155:52;8200:6;8195:3;8188:4;8181:5;8177:16;8155:52;:::i;:::-;8232:29;8254:6;8232:29;:::i;:::-;8227:3;8223:39;8216:46;;7996:272;;;;;:::o;8274:377::-;;8408:39;8441:5;8408:39;:::i;:::-;8463:89;8545:6;8540:3;8463:89;:::i;:::-;8456:96;;8561:52;8606:6;8601:3;8594:4;8587:5;8583:16;8561:52;:::i;:::-;8638:6;8633:3;8629:16;8622:23;;8384:267;;;;;:::o;8657:303::-;;8820:66;8884:1;8879:3;8820:66;:::i;:::-;8813:73;;8916:8;8912:1;8907:3;8903:11;8896:29;8951:2;8946:3;8942:12;8935:19;;8803:157;;;:::o;8966:375::-;;9129:67;9193:2;9188:3;9129:67;:::i;:::-;9122:74;;9226:34;9222:1;9217:3;9213:11;9206:55;9292:13;9287:2;9282:3;9278:12;9271:35;9332:2;9327:3;9323:12;9316:19;;9112:229;;;:::o;9347:382::-;;9510:67;9574:2;9569:3;9510:67;:::i;:::-;9503:74;;9607:34;9603:1;9598:3;9594:11;9587:55;9673:20;9668:2;9663:3;9659:12;9652:42;9720:2;9715:3;9711:12;9704:19;;9493:236;;;:::o;9735:370::-;;9898:67;9962:2;9957:3;9898:67;:::i;:::-;9891:74;;9995:34;9991:1;9986:3;9982:11;9975:55;10061:8;10056:2;10051:3;10047:12;10040:30;10096:2;10091:3;10087:12;10080:19;;9881:224;;;:::o;10111:326::-;;10274:67;10338:2;10333:3;10274:67;:::i;:::-;10267:74;;10371:30;10367:1;10362:3;10358:11;10351:51;10428:2;10423:3;10419:12;10412:19;;10257:180;;;:::o;10443:368::-;;10606:67;10670:2;10665:3;10606:67;:::i;:::-;10599:74;;10703:34;10699:1;10694:3;10690:11;10683:55;10769:6;10764:2;10759:3;10755:12;10748:28;10802:2;10797:3;10793:12;10786:19;;10589:222;;;:::o;10817:323::-;;10980:67;11044:2;11039:3;10980:67;:::i;:::-;10973:74;;11077:27;11073:1;11068:3;11064:11;11057:48;11131:2;11126:3;11122:12;11115:19;;10963:177;;;:::o;11146:306::-;;11309:66;11373:1;11368:3;11309:66;:::i;:::-;11302:73;;11405:11;11401:1;11396:3;11392:11;11385:32;11443:2;11438:3;11434:12;11427:19;;11292:160;;;:::o;11458:376::-;;11621:67;11685:2;11680:3;11621:67;:::i;:::-;11614:74;;11718:34;11714:1;11709:3;11705:11;11698:55;11784:14;11779:2;11774:3;11770:12;11763:36;11825:2;11820:3;11816:12;11809:19;;11604:230;;;:::o;11840:388::-;;12003:67;12067:2;12062:3;12003:67;:::i;:::-;11996:74;;12100:34;12096:1;12091:3;12087:11;12080:55;12166:26;12161:2;12156:3;12152:12;12145:48;12219:2;12214:3;12210:12;12203:19;;11986:242;;;:::o;12234:374::-;;12397:67;12461:2;12456:3;12397:67;:::i;:::-;12390:74;;12494:34;12490:1;12485:3;12481:11;12474:55;12560:12;12555:2;12550:3;12546:12;12539:34;12599:2;12594:3;12590:12;12583:19;;12380:228;;;:::o;12614:373::-;;12777:67;12841:2;12836:3;12777:67;:::i;:::-;12770:74;;12874:34;12870:1;12865:3;12861:11;12854:55;12940:11;12935:2;12930:3;12926:12;12919:33;12978:2;12973:3;12969:12;12962:19;;12760:227;;;:::o;12993:330::-;;13156:67;13220:2;13215:3;13156:67;:::i;:::-;13149:74;;13253:34;13249:1;13244:3;13240:11;13233:55;13314:2;13309:3;13305:12;13298:19;;13139:184;;;:::o;13329:305::-;;13492:66;13556:1;13551:3;13492:66;:::i;:::-;13485:73;;13588:10;13584:1;13579:3;13575:11;13568:31;13625:2;13620:3;13616:12;13609:19;;13475:159;;;:::o;13640:376::-;;13803:67;13867:2;13862:3;13803:67;:::i;:::-;13796:74;;13900:34;13896:1;13891:3;13887:11;13880:55;13966:14;13961:2;13956:3;13952:12;13945:36;14007:2;14002:3;13998:12;13991:19;;13786:230;;;:::o;14022:330::-;;14185:67;14249:2;14244:3;14185:67;:::i;:::-;14178:74;;14282:34;14278:1;14273:3;14269:11;14262:55;14343:2;14338:3;14334:12;14327:19;;14168:184;;;:::o;14358:373::-;;14521:67;14585:2;14580:3;14521:67;:::i;:::-;14514:74;;14618:34;14614:1;14609:3;14605:11;14598:55;14684:11;14679:2;14674:3;14670:12;14663:33;14722:2;14717:3;14713:12;14706:19;;14504:227;;;:::o;14737:379::-;;14900:67;14964:2;14959:3;14900:67;:::i;:::-;14893:74;;14997:34;14993:1;14988:3;14984:11;14977:55;15063:17;15058:2;15053:3;15049:12;15042:39;15107:2;15102:3;15098:12;15091:19;;14883:233;;;:::o;15122:315::-;;15285:67;15349:2;15344:3;15285:67;:::i;:::-;15278:74;;15382:19;15378:1;15373:3;15369:11;15362:40;15428:2;15423:3;15419:12;15412:19;;15268:169;;;:::o;15443:365::-;;15606:67;15670:2;15665:3;15606:67;:::i;:::-;15599:74;;15703:34;15699:1;15694:3;15690:11;15683:55;15769:3;15764:2;15759:3;15755:12;15748:25;15799:2;15794:3;15790:12;15783:19;;15589:219;;;:::o;15814:381::-;;15977:67;16041:2;16036:3;15977:67;:::i;:::-;15970:74;;16074:34;16070:1;16065:3;16061:11;16054:55;16140:19;16135:2;16130:3;16126:12;16119:41;16186:2;16181:3;16177:12;16170:19;;15960:235;;;:::o;16201:376::-;;16364:67;16428:2;16423:3;16364:67;:::i;:::-;16357:74;;16461:34;16457:1;16452:3;16448:11;16441:55;16527:14;16522:2;16517:3;16513:12;16506:36;16568:2;16563:3;16559:12;16552:19;;16347:230;;;:::o;16583:308::-;;16746:67;16810:2;16805:3;16746:67;:::i;:::-;16739:74;;16843:12;16839:1;16834:3;16830:11;16823:33;16882:2;16877:3;16873:12;16866:19;;16729:162;;;:::o;16897:108::-;16974:24;16992:5;16974:24;:::i;:::-;16969:3;16962:37;16952:53;;:::o;17011:118::-;17098:24;17116:5;17098:24;:::i;:::-;17093:3;17086:37;17076:53;;:::o;17135:435::-;;17337:95;17428:3;17419:6;17337:95;:::i;:::-;17330:102;;17449:95;17540:3;17531:6;17449:95;:::i;:::-;17442:102;;17561:3;17554:10;;17319:251;;;;;:::o;17576:222::-;;17707:2;17696:9;17692:18;17684:26;;17720:71;17788:1;17777:9;17773:17;17764:6;17720:71;:::i;:::-;17674:124;;;;:::o;17804:640::-;;18037:3;18026:9;18022:19;18014:27;;18051:71;18119:1;18108:9;18104:17;18095:6;18051:71;:::i;:::-;18132:72;18200:2;18189:9;18185:18;18176:6;18132:72;:::i;:::-;18214;18282:2;18271:9;18267:18;18258:6;18214:72;:::i;:::-;18333:9;18327:4;18323:20;18318:2;18307:9;18303:18;18296:48;18361:76;18432:4;18423:6;18361:76;:::i;:::-;18353:84;;18004:440;;;;;;;:::o;18450:373::-;;18631:2;18620:9;18616:18;18608:26;;18680:9;18674:4;18670:20;18666:1;18655:9;18651:17;18644:47;18708:108;18811:4;18802:6;18708:108;:::i;:::-;18700:116;;18598:225;;;;:::o;18829:210::-;;18954:2;18943:9;18939:18;18931:26;;18967:65;19029:1;19018:9;19014:17;19005:6;18967:65;:::i;:::-;18921:118;;;;:::o;19045:313::-;;19196:2;19185:9;19181:18;19173:26;;19245:9;19239:4;19235:20;19231:1;19220:9;19216:17;19209:47;19273:78;19346:4;19337:6;19273:78;:::i;:::-;19265:86;;19163:195;;;;:::o;19364:419::-;;19568:2;19557:9;19553:18;19545:26;;19617:9;19611:4;19607:20;19603:1;19592:9;19588:17;19581:47;19645:131;19771:4;19645:131;:::i;:::-;19637:139;;19535:248;;;:::o;19789:419::-;;19993:2;19982:9;19978:18;19970:26;;20042:9;20036:4;20032:20;20028:1;20017:9;20013:17;20006:47;20070:131;20196:4;20070:131;:::i;:::-;20062:139;;19960:248;;;:::o;20214:419::-;;20418:2;20407:9;20403:18;20395:26;;20467:9;20461:4;20457:20;20453:1;20442:9;20438:17;20431:47;20495:131;20621:4;20495:131;:::i;:::-;20487:139;;20385:248;;;:::o;20639:419::-;;20843:2;20832:9;20828:18;20820:26;;20892:9;20886:4;20882:20;20878:1;20867:9;20863:17;20856:47;20920:131;21046:4;20920:131;:::i;:::-;20912:139;;20810:248;;;:::o;21064:419::-;;21268:2;21257:9;21253:18;21245:26;;21317:9;21311:4;21307:20;21303:1;21292:9;21288:17;21281:47;21345:131;21471:4;21345:131;:::i;:::-;21337:139;;21235:248;;;:::o;21489:419::-;;21693:2;21682:9;21678:18;21670:26;;21742:9;21736:4;21732:20;21728:1;21717:9;21713:17;21706:47;21770:131;21896:4;21770:131;:::i;:::-;21762:139;;21660:248;;;:::o;21914:419::-;;22118:2;22107:9;22103:18;22095:26;;22167:9;22161:4;22157:20;22153:1;22142:9;22138:17;22131:47;22195:131;22321:4;22195:131;:::i;:::-;22187:139;;22085:248;;;:::o;22339:419::-;;22543:2;22532:9;22528:18;22520:26;;22592:9;22586:4;22582:20;22578:1;22567:9;22563:17;22556:47;22620:131;22746:4;22620:131;:::i;:::-;22612:139;;22510:248;;;:::o;22764:419::-;;22968:2;22957:9;22953:18;22945:26;;23017:9;23011:4;23007:20;23003:1;22992:9;22988:17;22981:47;23045:131;23171:4;23045:131;:::i;:::-;23037:139;;22935:248;;;:::o;23189:419::-;;23393:2;23382:9;23378:18;23370:26;;23442:9;23436:4;23432:20;23428:1;23417:9;23413:17;23406:47;23470:131;23596:4;23470:131;:::i;:::-;23462:139;;23360:248;;;:::o;23614:419::-;;23818:2;23807:9;23803:18;23795:26;;23867:9;23861:4;23857:20;23853:1;23842:9;23838:17;23831:47;23895:131;24021:4;23895:131;:::i;:::-;23887:139;;23785:248;;;:::o;24039:419::-;;24243:2;24232:9;24228:18;24220:26;;24292:9;24286:4;24282:20;24278:1;24267:9;24263:17;24256:47;24320:131;24446:4;24320:131;:::i;:::-;24312:139;;24210:248;;;:::o;24464:419::-;;24668:2;24657:9;24653:18;24645:26;;24717:9;24711:4;24707:20;24703:1;24692:9;24688:17;24681:47;24745:131;24871:4;24745:131;:::i;:::-;24737:139;;24635:248;;;:::o;24889:419::-;;25093:2;25082:9;25078:18;25070:26;;25142:9;25136:4;25132:20;25128:1;25117:9;25113:17;25106:47;25170:131;25296:4;25170:131;:::i;:::-;25162:139;;25060:248;;;:::o;25314:419::-;;25518:2;25507:9;25503:18;25495:26;;25567:9;25561:4;25557:20;25553:1;25542:9;25538:17;25531:47;25595:131;25721:4;25595:131;:::i;:::-;25587:139;;25485:248;;;:::o;25739:419::-;;25943:2;25932:9;25928:18;25920:26;;25992:9;25986:4;25982:20;25978:1;25967:9;25963:17;25956:47;26020:131;26146:4;26020:131;:::i;:::-;26012:139;;25910:248;;;:::o;26164:419::-;;26368:2;26357:9;26353:18;26345:26;;26417:9;26411:4;26407:20;26403:1;26392:9;26388:17;26381:47;26445:131;26571:4;26445:131;:::i;:::-;26437:139;;26335:248;;;:::o;26589:419::-;;26793:2;26782:9;26778:18;26770:26;;26842:9;26836:4;26832:20;26828:1;26817:9;26813:17;26806:47;26870:131;26996:4;26870:131;:::i;:::-;26862:139;;26760:248;;;:::o;27014:419::-;;27218:2;27207:9;27203:18;27195:26;;27267:9;27261:4;27257:20;27253:1;27242:9;27238:17;27231:47;27295:131;27421:4;27295:131;:::i;:::-;27287:139;;27185:248;;;:::o;27439:419::-;;27643:2;27632:9;27628:18;27620:26;;27692:9;27686:4;27682:20;27678:1;27667:9;27663:17;27656:47;27720:131;27846:4;27720:131;:::i;:::-;27712:139;;27610:248;;;:::o;27864:419::-;;28068:2;28057:9;28053:18;28045:26;;28117:9;28111:4;28107:20;28103:1;28092:9;28088:17;28081:47;28145:131;28271:4;28145:131;:::i;:::-;28137:139;;28035:248;;;:::o;28289:419::-;;28493:2;28482:9;28478:18;28470:26;;28542:9;28536:4;28532:20;28528:1;28517:9;28513:17;28506:47;28570:131;28696:4;28570:131;:::i;:::-;28562:139;;28460:248;;;:::o;28714:419::-;;28918:2;28907:9;28903:18;28895:26;;28967:9;28961:4;28957:20;28953:1;28942:9;28938:17;28931:47;28995:131;29121:4;28995:131;:::i;:::-;28987:139;;28885:248;;;:::o;29139:222::-;;29270:2;29259:9;29255:18;29247:26;;29283:71;29351:1;29340:9;29336:17;29327:6;29283:71;:::i;:::-;29237:124;;;;:::o;29367:283::-;;29433:2;29427:9;29417:19;;29475:4;29467:6;29463:17;29582:6;29570:10;29567:22;29546:18;29534:10;29531:34;29528:62;29525:2;;;29593:18;;:::i;:::-;29525:2;29633:10;29629:2;29622:22;29407:243;;;;:::o;29656:331::-;;29807:18;29799:6;29796:30;29793:2;;;29829:18;;:::i;:::-;29793:2;29914:4;29910:9;29903:4;29895:6;29891:17;29887:33;29879:41;;29975:4;29969;29965:15;29957:23;;29722:265;;;:::o;29993:332::-;;30145:18;30137:6;30134:30;30131:2;;;30167:18;;:::i;:::-;30131:2;30252:4;30248:9;30241:4;30233:6;30229:17;30225:33;30217:41;;30313:4;30307;30303:15;30295:23;;30060:265;;;:::o;30331:132::-;;30421:3;30413:11;;30451:4;30446:3;30442:14;30434:22;;30403:60;;;:::o;30469:114::-;;30570:5;30564:12;30554:22;;30543:40;;;:::o;30589:98::-;;30674:5;30668:12;30658:22;;30647:40;;;:::o;30693:99::-;;30779:5;30773:12;30763:22;;30752:40;;;:::o;30798:113::-;;30900:4;30895:3;30891:14;30883:22;;30873:38;;;:::o;30917:184::-;;31050:6;31045:3;31038:19;31090:4;31085:3;31081:14;31066:29;;31028:73;;;;:::o;31107:168::-;;31224:6;31219:3;31212:19;31264:4;31259:3;31255:14;31240:29;;31202:73;;;;:::o;31281:169::-;;31399:6;31394:3;31387:19;31439:4;31434:3;31430:14;31415:29;;31377:73;;;;:::o;31456:148::-;;31595:3;31580:18;;31570:34;;;;:::o;31610:305::-;;31669:20;31687:1;31669:20;:::i;:::-;31664:25;;31703:20;31721:1;31703:20;:::i;:::-;31698:25;;31857:1;31789:66;31785:74;31782:1;31779:81;31776:2;;;31863:18;;:::i;:::-;31776:2;31907:1;31904;31900:9;31893:16;;31654:261;;;;:::o;31921:185::-;;31978:20;31996:1;31978:20;:::i;:::-;31973:25;;32012:20;32030:1;32012:20;:::i;:::-;32007:25;;32051:1;32041:2;;32056:18;;:::i;:::-;32041:2;32098:1;32095;32091:9;32086:14;;31963:143;;;;:::o;32112:348::-;;32175:20;32193:1;32175:20;:::i;:::-;32170:25;;32209:20;32227:1;32209:20;:::i;:::-;32204:25;;32397:1;32329:66;32325:74;32322:1;32319:81;32314:1;32307:9;32300:17;32296:105;32293:2;;;32404:18;;:::i;:::-;32293:2;32452:1;32449;32445:9;32434:20;;32160:300;;;;:::o;32466:191::-;;32526:20;32544:1;32526:20;:::i;:::-;32521:25;;32560:20;32578:1;32560:20;:::i;:::-;32555:25;;32599:1;32596;32593:8;32590:2;;;32604:18;;:::i;:::-;32590:2;32649:1;32646;32642:9;32634:17;;32511:146;;;;:::o;32663:96::-;;32729:24;32747:5;32729:24;:::i;:::-;32718:35;;32708:51;;;:::o;32765:90::-;;32842:5;32835:13;32828:21;32817:32;;32807:48;;;:::o;32861:149::-;;32937:66;32930:5;32926:78;32915:89;;32905:105;;;:::o;33016:126::-;;33093:42;33086:5;33082:54;33071:65;;33061:81;;;:::o;33148:77::-;;33214:5;33203:16;;33193:32;;;:::o;33231:154::-;33315:6;33310:3;33305;33292:30;33377:1;33368:6;33363:3;33359:16;33352:27;33282:103;;;:::o;33391:307::-;33459:1;33469:113;33483:6;33480:1;33477:13;33469:113;;;33568:1;33563:3;33559:11;33553:18;33549:1;33544:3;33540:11;33533:39;33505:2;33502:1;33498:10;33493:15;;33469:113;;;33600:6;33597:1;33594:13;33591:2;;;33680:1;33671:6;33666:3;33662:16;33655:27;33591:2;33440:258;;;;:::o;33704:320::-;;33785:1;33779:4;33775:12;33765:22;;33832:1;33826:4;33822:12;33853:18;33843:2;;33909:4;33901:6;33897:17;33887:27;;33843:2;33971;33963:6;33960:14;33940:18;33937:38;33934:2;;;33990:18;;:::i;:::-;33934:2;33755:269;;;;:::o;34030:233::-;;34092:24;34110:5;34092:24;:::i;:::-;34083:33;;34138:66;34131:5;34128:77;34125:2;;;34208:18;;:::i;:::-;34125:2;34255:1;34248:5;34244:13;34237:20;;34073:190;;;:::o;34269:176::-;;34318:20;34336:1;34318:20;:::i;:::-;34313:25;;34352:20;34370:1;34352:20;:::i;:::-;34347:25;;34391:1;34381:2;;34396:18;;:::i;:::-;34381:2;34437:1;34434;34430:9;34425:14;;34303:142;;;;:::o;34451:180::-;34499:77;34496:1;34489:88;34596:4;34593:1;34586:15;34620:4;34617:1;34610:15;34637:180;34685:77;34682:1;34675:88;34782:4;34779:1;34772:15;34806:4;34803:1;34796:15;34823:180;34871:77;34868:1;34861:88;34968:4;34965:1;34958:15;34992:4;34989:1;34982:15;35009:180;35057:77;35054:1;35047:88;35154:4;35151:1;35144:15;35178:4;35175:1;35168:15;35195:102;;35287:2;35283:7;35278:2;35271:5;35267:14;35263:28;35253:38;;35243:54;;;:::o;35303:122::-;35376:24;35394:5;35376:24;:::i;:::-;35369:5;35366:35;35356:2;;35415:1;35412;35405:12;35356:2;35346:79;:::o;35431:116::-;35501:21;35516:5;35501:21;:::i;:::-;35494:5;35491:32;35481:2;;35537:1;35534;35527:12;35481:2;35471:76;:::o;35553:120::-;35625:23;35642:5;35625:23;:::i;:::-;35618:5;35615:34;35605:2;;35663:1;35660;35653:12;35605:2;35595:78;:::o;35679:122::-;35752:24;35770:5;35752:24;:::i;:::-;35745:5;35742:35;35732:2;;35791:1;35788;35781:12;35732:2;35722:79;:::o

Swarm Source

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