ETH Price: $3,391.12 (+1.84%)

Token

Trolltown Mutants (TT-M)
 

Overview

Max Total Supply

1,838 TT-M

Holders

771

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
3 TT-M
0xed3d058f0034ab41FE825cc5a8f0996F801aaC5a
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:
TrollTownMutant

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-27
*/

// SPDX-License-Identifier: MIT
/**
 * @title TrollMutant
 * @author AhmYieTrollMutant
 * @dev Used for Ethereum projects compatible with OpenSea
 */
pragma solidity ^0.8.0;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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

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

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

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);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

pragma solidity ^0.8.0;
library Address {
    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

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

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

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

pragma solidity ^0.8.0;
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        _setOwner(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

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

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

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

pragma solidity ^0.8.0;
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;

        _;
        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    string private _name;
    string private _symbol;

    mapping(uint256 => address) private _owners;

    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    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 {
        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);

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

        _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 {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

pragma solidity ^0.8.0;
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    mapping(uint256 => uint256) private _ownedTokensIndex;

    uint256[] private _allTokens;

    mapping(uint256 => uint256) private _allTokensIndex;
    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 {

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

        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
        }

        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {

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

        uint256 lastTokenId = _allTokens[lastTokenIndex];

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

        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

pragma solidity ^0.8.0;
abstract contract TrollTown {
    function ownerOf(uint256 tokenId) public view virtual returns (address);
}

pragma solidity ^0.8.0;
abstract contract TrollTownElixir {
    function balanceOf(address account, uint256 id) public view virtual returns (uint256);
    function burnElixirForAddress(uint256 typeId, address burnTokenAddress) external virtual;
}

pragma solidity ^0.8.0;
contract TrollTownMutant is ERC721Enumerable, Ownable, ReentrancyGuard {

    TrollTown public immutable tt;
    TrollTownElixir public immutable tte;

    uint256 public currentT2Id = 10000;
    uint256 public currentT1Id = 0;

    uint256[40] mutateBitMap;

    bool public mutationActive;

    string private _baseTokenURI = "https://troll-town.wtf/ipfs/jsons/";

    event mutateTroll(address _from, uint256 _type, uint256 _id);

    constructor(string memory _NAME, string memory _SYMBOL, address ttAddress, address tteAddress) ERC721 (_NAME, _SYMBOL) {
        tt = TrollTown(ttAddress);
        tte = TrollTownElixir(tteAddress);
    }

    modifier callerIsUser() {
        require(tx.origin == msg.sender, "The caller is another contract");
        _;
    }

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

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        string memory _tokenURI = super.tokenURI(tokenId);
        return bytes(_tokenURI).length > 0 ? string(abi.encodePacked(_tokenURI, ".json")) : "";
    }

    function isMutated(uint256 tokenId) public view returns (bool) {
        uint256 mutateWordIndex = tokenId / 256;
        uint256 mutateBitIndex = tokenId % 256;
        uint256 mutateWord = mutateBitMap[mutateWordIndex];
        uint256 mask = (1 << mutateBitIndex);
        return mutateWord & mask == mask;
    }

    function _setMutate(uint256 tokenId) internal {
        uint256 mutateWordIndex = tokenId / 256;
        uint256 mutateBitIndex = tokenId % 256;
        mutateBitMap[mutateWordIndex] = mutateBitMap[mutateWordIndex] | (1 << mutateBitIndex);
    }
    
    function mint(uint256 elixirTypeId, uint256 trollId) external nonReentrant callerIsUser {
        require(mutationActive, "MUTATION_IS_NOT_ACTIVE");
        require(tt.ownerOf(trollId) == msg.sender, "MUST_OWN_THE_TROLL_YOU_ARE_ATTEMPTING_TO_MUTATE");
        require(tte.balanceOf(msg.sender, elixirTypeId) > 0, "MUST_OWN_AT_LEAST_ONE_OF_THIS_ELIXIR_TYPE_TO_MUTATE");
        require(!isMutated(trollId), "ALREADY_MUTATED");
        uint256 mutantId;
        if (elixirTypeId == 1) {
            mutantId = currentT2Id;
            currentT2Id++;
        } else if (elixirTypeId == 0) {
            mutantId = currentT1Id;
            currentT1Id++;
        }
        _setMutate(trollId);
        tte.burnElixirForAddress(elixirTypeId, msg.sender);
        _safeMint(msg.sender, mutantId);
    }

    function flipMutate() external onlyOwner {
        mutationActive = !mutationActive;
    }

    function setBaseURI(string calldata baseURI) external onlyOwner {
        _baseTokenURI = baseURI;
    }

    function withdraw() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_NAME","type":"string"},{"internalType":"string","name":"_SYMBOL","type":"string"},{"internalType":"address","name":"ttAddress","type":"address"},{"internalType":"address","name":"tteAddress","type":"address"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_type","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"mutateTroll","type":"event"},{"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":"currentT1Id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentT2Id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipMutate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isMutated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"elixirTypeId","type":"uint256"},{"internalType":"uint256","name":"trollId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mutationActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[],"name":"tt","outputs":[{"internalType":"contract TrollTown","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tte","outputs":[{"internalType":"contract TrollTownElixir","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052612710600c556000600d556040518060600160405280602281526020016200499060229139603790805190602001906200004092919062000218565b503480156200004e57600080fd5b50604051620049b2380380620049b2833981810160405281019062000074919062000351565b838381600090805190602001906200008e92919062000218565b508060019080519060200190620000a792919062000218565b505050620000ca620000be6200014a60201b60201c565b6200015260201b60201c565b6001600b819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050505050620005ad565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200022690620004b8565b90600052602060002090601f0160209004810192826200024a576000855562000296565b82601f106200026557805160ff191683800117855562000296565b8280016001018555821562000296579182015b828111156200029557825182559160200191906001019062000278565b5b509050620002a59190620002a9565b5090565b5b80821115620002c4576000816000905550600101620002aa565b5090565b6000620002df620002d98462000418565b620003ef565b905082815260208101848484011115620002f857600080fd5b6200030584828562000482565b509392505050565b6000815190506200031e8162000593565b92915050565b600082601f8301126200033657600080fd5b815162000348848260208601620002c8565b91505092915050565b600080600080608085870312156200036857600080fd5b600085015167ffffffffffffffff8111156200038357600080fd5b620003918782880162000324565b945050602085015167ffffffffffffffff811115620003af57600080fd5b620003bd8782880162000324565b9350506040620003d0878288016200030d565b9250506060620003e3878288016200030d565b91505092959194509250565b6000620003fb6200040e565b9050620004098282620004ee565b919050565b6000604051905090565b600067ffffffffffffffff82111562000436576200043562000553565b5b620004418262000582565b9050602081019050919050565b60006200045b8262000462565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620004a257808201518184015260208101905062000485565b83811115620004b2576000848401525b50505050565b60006002820490506001821680620004d157607f821691505b60208210811415620004e857620004e762000524565b5b50919050565b620004f98262000582565b810181811067ffffffffffffffff821117156200051b576200051a62000553565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200059e816200044e565b8114620005aa57600080fd5b50565b60805160601c60a05160601c6143a2620005ee60003960008181610a6b01528181610bfc015261154501526000818161096a0152610ca001526143a26000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806355f804b311610104578063a14b1e65116100a2578063c87b56dd11610071578063c87b56dd146104f6578063d27dfea214610526578063e985e9c514610544578063f2fde38b14610574576101cf565b8063a14b1e6514610470578063a22cb465146104a0578063a81ed426146104bc578063b88d4fde146104da576101cf565b8063715018a6116100de578063715018a61461040c57806378df6ad4146104165780638da5cb5b1461043457806395d89b4114610452576101cf565b806355f804b3146103905780636352211e146103ac57806370a08231146103dc576101cf565b806323b872dd116101715780632f745c591161014b5780632f745c591461030a5780633ccfd60b1461033a57806342842e0e146103445780634f6ccce714610360576101cf565b806323b872dd146102c657806327dcf639146102e2578063295f9663146102ec576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e5780631b2ef1ca1461028c5780631e36169e146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190612ea8565b610590565b6040516101fb91906134fc565b60405180910390f35b61020c61060a565b604051610219919061354d565b60405180910390f35b61023c60048036038101906102379190612f3f565b61069c565b604051610249919061346c565b60405180910390f35b61026c60048036038101906102679190612e6c565b610721565b005b610276610839565b604051610283919061386f565b60405180910390f35b6102a660048036038101906102a19190612f91565b610846565b005b6102b0610c9e565b6040516102bd9190613532565b60405180910390f35b6102e060048036038101906102db9190612d66565b610cc2565b005b6102ea610d22565b005b6102f4610dca565b604051610301919061386f565b60405180910390f35b610324600480360381019061031f9190612e6c565b610dd0565b604051610331919061386f565b60405180910390f35b610342610e75565b005b61035e60048036038101906103599190612d66565b610f3a565b005b61037a60048036038101906103759190612f3f565b610f5a565b604051610387919061386f565b60405180910390f35b6103aa60048036038101906103a59190612efa565b610ff1565b005b6103c660048036038101906103c19190612f3f565b611083565b6040516103d3919061346c565b60405180910390f35b6103f660048036038101906103f19190612cd8565b611135565b604051610403919061386f565b60405180910390f35b6104146111ed565b005b61041e611275565b60405161042b91906134fc565b60405180910390f35b61043c611288565b604051610449919061346c565b60405180910390f35b61045a6112b2565b604051610467919061354d565b60405180910390f35b61048a60048036038101906104859190612f3f565b611344565b60405161049791906134fc565b60405180910390f35b6104ba60048036038101906104b59190612e30565b6113c2565b005b6104c4611543565b6040516104d19190613517565b60405180910390f35b6104f460048036038101906104ef9190612db5565b611567565b005b610510600480360381019061050b9190612f3f565b6115c9565b60405161051d919061354d565b60405180910390f35b61052e611667565b60405161053b919061386f565b60405180910390f35b61055e60048036038101906105599190612d2a565b61166d565b60405161056b91906134fc565b60405180910390f35b61058e60048036038101906105899190612cd8565b611701565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106035750610602826117f9565b5b9050919050565b60606000805461061990613b05565b80601f016020809104026020016040519081016040528092919081815260200182805461064590613b05565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b5050505050905090565b60006106a7826118db565b6106e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106dd9061370f565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061072c82611083565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107949061378f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107bc611947565b73ffffffffffffffffffffffffffffffffffffffff1614806107eb57506107ea816107e5611947565b61166d565b5b61082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108219061368f565b60405180910390fd5b610834838361194f565b505050565b6000600880549050905090565b6002600b54141561088c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108839061384f565b60405180910390fd5b6002600b819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f99061366f565b60405180910390fd5b603660009054906101000a900460ff16610951576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109489061382f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016109c1919061386f565b60206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190612d01565b73ffffffffffffffffffffffffffffffffffffffff1614610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e906135ef565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1662fdd58e33856040518363ffffffff1660e01b8152600401610ac39291906134d3565b60206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190612f68565b11610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a9061380f565b60405180910390fd5b610b5c81611344565b15610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906137af565b60405180910390fd5b60006001831415610bc957600c549050600c6000815480929190610bbf90613b68565b9190505550610bf1565b6000831415610bf057600d549050600d6000815480929190610bea90613b68565b91905055505b5b610bfa82611a08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635f480e9a84336040518363ffffffff1660e01b8152600401610c5592919061388a565b600060405180830381600087803b158015610c6f57600080fd5b505af1158015610c83573d6000803e3d6000fd5b50505050610c913382611ab2565b506001600b819055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cd3610ccd611947565b82611ad0565b610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906137cf565b60405180910390fd5b610d1d838383611bae565b505050565b610d2a611947565b73ffffffffffffffffffffffffffffffffffffffff16610d48611288565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061372f565b60405180910390fd5b603660009054906101000a900460ff1615603660006101000a81548160ff021916908315150217905550565b600d5481565b6000610ddb83611135565b8210610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e139061356f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610e7d611947565b73ffffffffffffffffffffffffffffffffffffffff16610e9b611288565b73ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee89061372f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f37573d6000803e3d6000fd5b50565b610f5583838360405180602001604052806000815250611567565b505050565b6000610f64610839565b8210610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c906137ef565b60405180910390fd5b60088281548110610fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610ff9611947565b73ffffffffffffffffffffffffffffffffffffffff16611017611288565b73ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110649061372f565b60405180910390fd5b81816037919061107e929190612af0565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906136cf565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d906136af565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f5611947565b73ffffffffffffffffffffffffffffffffffffffff16611213611288565b73ffffffffffffffffffffffffffffffffffffffff1614611269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112609061372f565b60405180910390fd5b6112736000611e0a565b565b603660009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112c190613b05565b80601f01602080910402602001604051908101604052809291908181526020018280546112ed90613b05565b801561133a5780601f1061130f5761010080835404028352916020019161133a565b820191906000526020600020905b81548152906001019060200180831161131d57829003601f168201915b5050505050905090565b6000806101008361135591906139a2565b90506000610100846113679190613bb1565b90506000600e83602881106113a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015490506000826001901b90508081831614945050505050919050565b6113ca611947565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f9061362f565b60405180910390fd5b8060056000611445611947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114f2611947565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161153791906134fc565b60405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611578611572611947565b83611ad0565b6115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae906137cf565b60405180910390fd5b6115c384848484611ed0565b50505050565b60606115d4826118db565b611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a9061376f565b60405180910390fd5b600061161e83611f2c565b9050600081511161163e576040518060200160405280600081525061165f565b8060405160200161164f919061344a565b6040516020818303038152906040525b915050919050565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611709611947565b73ffffffffffffffffffffffffffffffffffffffff16611727611288565b73ffffffffffffffffffffffffffffffffffffffff161461177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117749061372f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e4906135af565b60405180910390fd5b6117f681611e0a565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118c457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806118d457506118d382611fd3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119c283611083565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061010082611a1891906139a2565b9050600061010083611a2a9190613bb1565b9050806001901b600e8360288110611a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015417600e8360288110611aa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0181905550505050565b611acc82826040518060200160405280600081525061203d565b5050565b6000611adb826118db565b611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b119061364f565b60405180910390fd5b6000611b2583611083565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b9457508373ffffffffffffffffffffffffffffffffffffffff16611b7c8461069c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ba55750611ba4818561166d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611bce82611083565b73ffffffffffffffffffffffffffffffffffffffff1614611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b9061374f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b9061360f565b60405180910390fd5b611c9f838383612098565b611caa60008261194f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cfa91906139d3565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d51919061394c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611edb848484611bae565b611ee7848484846121ac565b611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d9061358f565b60405180910390fd5b50505050565b6060611f37826118db565b611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d9061376f565b60405180910390fd5b6000611f80612343565b90506000815111611fa05760405180602001604052806000815250611fcb565b80611faa846123d5565b604051602001611fbb929190613426565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120478383612582565b61205460008484846121ac565b612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a9061358f565b60405180910390fd5b505050565b6120a3838383612750565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120e6576120e181612755565b612125565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461212457612123838261279e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612168576121638161290b565b6121a7565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121a6576121a58282612a4e565b5b5b505050565b60006121cd8473ffffffffffffffffffffffffffffffffffffffff16612acd565b15612336578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121f6611947565b8786866040518563ffffffff1660e01b81526004016122189493929190613487565b602060405180830381600087803b15801561223257600080fd5b505af192505050801561226357506040513d601f19601f820116820180604052508101906122609190612ed1565b60015b6122e6573d8060008114612293576040519150601f19603f3d011682016040523d82523d6000602084013e612298565b606091505b506000815114156122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d59061358f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061233b565b600190505b949350505050565b60606037805461235290613b05565b80601f016020809104026020016040519081016040528092919081815260200182805461237e90613b05565b80156123cb5780601f106123a0576101008083540402835291602001916123cb565b820191906000526020600020905b8154815290600101906020018083116123ae57829003601f168201915b5050505050905090565b6060600082141561241d576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061257d565b600082905060005b6000821461244f57808061243890613b68565b915050600a8261244891906139a2565b9150612425565b60008167ffffffffffffffff811115612491577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156124c35781602001600182028036833780820191505090505b5090505b60008514612576576001826124dc91906139d3565b9150600a856124eb9190613bb1565b60306124f7919061394c565b60f81b818381518110612533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561256f91906139a2565b94506124c7565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e9906136ef565b60405180910390fd5b6125fb816118db565b1561263b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612632906135cf565b60405180910390fd5b61264760008383612098565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612697919061394c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016127ab84611135565b6127b591906139d3565b905060006007600084815260200190815260200160002054905081811461289a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061291f91906139d3565b9050600060096000848152602001908152602001600020549050600060088381548110612975577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600883815481106129bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612a32577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612a5983611135565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612afc90613b05565b90600052602060002090601f016020900481019282612b1e5760008555612b65565b82601f10612b3757803560ff1916838001178555612b65565b82800160010185558215612b65579182015b82811115612b64578235825591602001919060010190612b49565b5b509050612b729190612b76565b5090565b5b80821115612b8f576000816000905550600101612b77565b5090565b6000612ba6612ba1846138d8565b6138b3565b905082815260208101848484011115612bbe57600080fd5b612bc9848285613ac3565b509392505050565b600081359050612be081614310565b92915050565b600081519050612bf581614310565b92915050565b600081359050612c0a81614327565b92915050565b600081359050612c1f8161433e565b92915050565b600081519050612c348161433e565b92915050565b600082601f830112612c4b57600080fd5b8135612c5b848260208601612b93565b91505092915050565b60008083601f840112612c7657600080fd5b8235905067ffffffffffffffff811115612c8f57600080fd5b602083019150836001820283011115612ca757600080fd5b9250929050565b600081359050612cbd81614355565b92915050565b600081519050612cd281614355565b92915050565b600060208284031215612cea57600080fd5b6000612cf884828501612bd1565b91505092915050565b600060208284031215612d1357600080fd5b6000612d2184828501612be6565b91505092915050565b60008060408385031215612d3d57600080fd5b6000612d4b85828601612bd1565b9250506020612d5c85828601612bd1565b9150509250929050565b600080600060608486031215612d7b57600080fd5b6000612d8986828701612bd1565b9350506020612d9a86828701612bd1565b9250506040612dab86828701612cae565b9150509250925092565b60008060008060808587031215612dcb57600080fd5b6000612dd987828801612bd1565b9450506020612dea87828801612bd1565b9350506040612dfb87828801612cae565b925050606085013567ffffffffffffffff811115612e1857600080fd5b612e2487828801612c3a565b91505092959194509250565b60008060408385031215612e4357600080fd5b6000612e5185828601612bd1565b9250506020612e6285828601612bfb565b9150509250929050565b60008060408385031215612e7f57600080fd5b6000612e8d85828601612bd1565b9250506020612e9e85828601612cae565b9150509250929050565b600060208284031215612eba57600080fd5b6000612ec884828501612c10565b91505092915050565b600060208284031215612ee357600080fd5b6000612ef184828501612c25565b91505092915050565b60008060208385031215612f0d57600080fd5b600083013567ffffffffffffffff811115612f2757600080fd5b612f3385828601612c64565b92509250509250929050565b600060208284031215612f5157600080fd5b6000612f5f84828501612cae565b91505092915050565b600060208284031215612f7a57600080fd5b6000612f8884828501612cc3565b91505092915050565b60008060408385031215612fa457600080fd5b6000612fb285828601612cae565b9250506020612fc385828601612cae565b9150509250929050565b612fd681613a07565b82525050565b612fe581613a19565b82525050565b6000612ff682613909565b613000818561391f565b9350613010818560208601613ad2565b61301981613c9e565b840191505092915050565b61302d81613a7b565b82525050565b61303c81613a9f565b82525050565b600061304d82613914565b6130578185613930565b9350613067818560208601613ad2565b61307081613c9e565b840191505092915050565b600061308682613914565b6130908185613941565b93506130a0818560208601613ad2565b80840191505092915050565b60006130b9602b83613930565b91506130c482613caf565b604082019050919050565b60006130dc603283613930565b91506130e782613cfe565b604082019050919050565b60006130ff602683613930565b915061310a82613d4d565b604082019050919050565b6000613122601c83613930565b915061312d82613d9c565b602082019050919050565b6000613145602f83613930565b915061315082613dc5565b604082019050919050565b6000613168602483613930565b915061317382613e14565b604082019050919050565b600061318b601983613930565b915061319682613e63565b602082019050919050565b60006131ae602c83613930565b91506131b982613e8c565b604082019050919050565b60006131d1601e83613930565b91506131dc82613edb565b602082019050919050565b60006131f4603883613930565b91506131ff82613f04565b604082019050919050565b6000613217602a83613930565b915061322282613f53565b604082019050919050565b600061323a602983613930565b915061324582613fa2565b604082019050919050565b600061325d602083613930565b915061326882613ff1565b602082019050919050565b6000613280602c83613930565b915061328b8261401a565b604082019050919050565b60006132a3600583613941565b91506132ae82614069565b600582019050919050565b60006132c6602083613930565b91506132d182614092565b602082019050919050565b60006132e9602983613930565b91506132f4826140bb565b604082019050919050565b600061330c602f83613930565b91506133178261410a565b604082019050919050565b600061332f602183613930565b915061333a82614159565b604082019050919050565b6000613352600f83613930565b915061335d826141a8565b602082019050919050565b6000613375603183613930565b9150613380826141d1565b604082019050919050565b6000613398602c83613930565b91506133a382614220565b604082019050919050565b60006133bb603383613930565b91506133c68261426f565b604082019050919050565b60006133de601683613930565b91506133e9826142be565b602082019050919050565b6000613401601f83613930565b915061340c826142e7565b602082019050919050565b61342081613a71565b82525050565b6000613432828561307b565b915061343e828461307b565b91508190509392505050565b6000613456828461307b565b915061346182613296565b915081905092915050565b60006020820190506134816000830184612fcd565b92915050565b600060808201905061349c6000830187612fcd565b6134a96020830186612fcd565b6134b66040830185613417565b81810360608301526134c88184612feb565b905095945050505050565b60006040820190506134e86000830185612fcd565b6134f56020830184613417565b9392505050565b60006020820190506135116000830184612fdc565b92915050565b600060208201905061352c6000830184613024565b92915050565b60006020820190506135476000830184613033565b92915050565b600060208201905081810360008301526135678184613042565b905092915050565b60006020820190508181036000830152613588816130ac565b9050919050565b600060208201905081810360008301526135a8816130cf565b9050919050565b600060208201905081810360008301526135c8816130f2565b9050919050565b600060208201905081810360008301526135e881613115565b9050919050565b6000602082019050818103600083015261360881613138565b9050919050565b600060208201905081810360008301526136288161315b565b9050919050565b600060208201905081810360008301526136488161317e565b9050919050565b60006020820190508181036000830152613668816131a1565b9050919050565b60006020820190508181036000830152613688816131c4565b9050919050565b600060208201905081810360008301526136a8816131e7565b9050919050565b600060208201905081810360008301526136c88161320a565b9050919050565b600060208201905081810360008301526136e88161322d565b9050919050565b6000602082019050818103600083015261370881613250565b9050919050565b6000602082019050818103600083015261372881613273565b9050919050565b60006020820190508181036000830152613748816132b9565b9050919050565b60006020820190508181036000830152613768816132dc565b9050919050565b60006020820190508181036000830152613788816132ff565b9050919050565b600060208201905081810360008301526137a881613322565b9050919050565b600060208201905081810360008301526137c881613345565b9050919050565b600060208201905081810360008301526137e881613368565b9050919050565b600060208201905081810360008301526138088161338b565b9050919050565b60006020820190508181036000830152613828816133ae565b9050919050565b60006020820190508181036000830152613848816133d1565b9050919050565b60006020820190508181036000830152613868816133f4565b9050919050565b60006020820190506138846000830184613417565b92915050565b600060408201905061389f6000830185613417565b6138ac6020830184612fcd565b9392505050565b60006138bd6138ce565b90506138c98282613b37565b919050565b6000604051905090565b600067ffffffffffffffff8211156138f3576138f2613c6f565b5b6138fc82613c9e565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061395782613a71565b915061396283613a71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561399757613996613be2565b5b828201905092915050565b60006139ad82613a71565b91506139b883613a71565b9250826139c8576139c7613c11565b5b828204905092915050565b60006139de82613a71565b91506139e983613a71565b9250828210156139fc576139fb613be2565b5b828203905092915050565b6000613a1282613a51565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613a8682613a8d565b9050919050565b6000613a9882613a51565b9050919050565b6000613aaa82613ab1565b9050919050565b6000613abc82613a51565b9050919050565b82818337600083830152505050565b60005b83811015613af0578082015181840152602081019050613ad5565b83811115613aff576000848401525b50505050565b60006002820490506001821680613b1d57607f821691505b60208210811415613b3157613b30613c40565b5b50919050565b613b4082613c9e565b810181811067ffffffffffffffff82111715613b5f57613b5e613c6f565b5b80604052505050565b6000613b7382613a71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ba657613ba5613be2565b5b600182019050919050565b6000613bbc82613a71565b9150613bc783613a71565b925082613bd757613bd6613c11565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4d5553545f4f574e5f5448455f54524f4c4c5f594f555f4152455f415454454d60008201527f5054494e475f544f5f4d55544154450000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f414c52454144595f4d5554415445440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4d5553545f4f574e5f41545f4c454153545f4f4e455f4f465f544849535f454c60008201527f495849525f545950455f544f5f4d555441544500000000000000000000000000602082015250565b7f4d55544154494f4e5f49535f4e4f545f41435449564500000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61431981613a07565b811461432457600080fd5b50565b61433081613a19565b811461433b57600080fd5b50565b61434781613a25565b811461435257600080fd5b50565b61435e81613a71565b811461436957600080fd5b5056fea26469706673582212204b652b17aeacd64218262f6d6d4f3e413400ca5c46fd6fc66a1ce52fe66d76b664736f6c6343000804003368747470733a2f2f74726f6c6c2d746f776e2e7774662f697066732f6a736f6e732f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357000000000000000000000000dc2576a24dcf5ab8c4bb48413245d3ca741ee12b000000000000000000000000000000000000000000000000000000000000001154726f6c6c746f776e204d7574616e7473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000454542d4d00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806355f804b311610104578063a14b1e65116100a2578063c87b56dd11610071578063c87b56dd146104f6578063d27dfea214610526578063e985e9c514610544578063f2fde38b14610574576101cf565b8063a14b1e6514610470578063a22cb465146104a0578063a81ed426146104bc578063b88d4fde146104da576101cf565b8063715018a6116100de578063715018a61461040c57806378df6ad4146104165780638da5cb5b1461043457806395d89b4114610452576101cf565b806355f804b3146103905780636352211e146103ac57806370a08231146103dc576101cf565b806323b872dd116101715780632f745c591161014b5780632f745c591461030a5780633ccfd60b1461033a57806342842e0e146103445780634f6ccce714610360576101cf565b806323b872dd146102c657806327dcf639146102e2578063295f9663146102ec576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e5780631b2ef1ca1461028c5780631e36169e146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190612ea8565b610590565b6040516101fb91906134fc565b60405180910390f35b61020c61060a565b604051610219919061354d565b60405180910390f35b61023c60048036038101906102379190612f3f565b61069c565b604051610249919061346c565b60405180910390f35b61026c60048036038101906102679190612e6c565b610721565b005b610276610839565b604051610283919061386f565b60405180910390f35b6102a660048036038101906102a19190612f91565b610846565b005b6102b0610c9e565b6040516102bd9190613532565b60405180910390f35b6102e060048036038101906102db9190612d66565b610cc2565b005b6102ea610d22565b005b6102f4610dca565b604051610301919061386f565b60405180910390f35b610324600480360381019061031f9190612e6c565b610dd0565b604051610331919061386f565b60405180910390f35b610342610e75565b005b61035e60048036038101906103599190612d66565b610f3a565b005b61037a60048036038101906103759190612f3f565b610f5a565b604051610387919061386f565b60405180910390f35b6103aa60048036038101906103a59190612efa565b610ff1565b005b6103c660048036038101906103c19190612f3f565b611083565b6040516103d3919061346c565b60405180910390f35b6103f660048036038101906103f19190612cd8565b611135565b604051610403919061386f565b60405180910390f35b6104146111ed565b005b61041e611275565b60405161042b91906134fc565b60405180910390f35b61043c611288565b604051610449919061346c565b60405180910390f35b61045a6112b2565b604051610467919061354d565b60405180910390f35b61048a60048036038101906104859190612f3f565b611344565b60405161049791906134fc565b60405180910390f35b6104ba60048036038101906104b59190612e30565b6113c2565b005b6104c4611543565b6040516104d19190613517565b60405180910390f35b6104f460048036038101906104ef9190612db5565b611567565b005b610510600480360381019061050b9190612f3f565b6115c9565b60405161051d919061354d565b60405180910390f35b61052e611667565b60405161053b919061386f565b60405180910390f35b61055e60048036038101906105599190612d2a565b61166d565b60405161056b91906134fc565b60405180910390f35b61058e60048036038101906105899190612cd8565b611701565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106035750610602826117f9565b5b9050919050565b60606000805461061990613b05565b80601f016020809104026020016040519081016040528092919081815260200182805461064590613b05565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b5050505050905090565b60006106a7826118db565b6106e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106dd9061370f565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061072c82611083565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107949061378f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107bc611947565b73ffffffffffffffffffffffffffffffffffffffff1614806107eb57506107ea816107e5611947565b61166d565b5b61082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108219061368f565b60405180910390fd5b610834838361194f565b505050565b6000600880549050905090565b6002600b54141561088c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108839061384f565b60405180910390fd5b6002600b819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f99061366f565b60405180910390fd5b603660009054906101000a900460ff16610951576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109489061382f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d35773ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016109c1919061386f565b60206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190612d01565b73ffffffffffffffffffffffffffffffffffffffff1614610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e906135ef565b60405180910390fd5b60007f000000000000000000000000dc2576a24dcf5ab8c4bb48413245d3ca741ee12b73ffffffffffffffffffffffffffffffffffffffff1662fdd58e33856040518363ffffffff1660e01b8152600401610ac39291906134d3565b60206040518083038186803b158015610adb57600080fd5b505afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190612f68565b11610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a9061380f565b60405180910390fd5b610b5c81611344565b15610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906137af565b60405180910390fd5b60006001831415610bc957600c549050600c6000815480929190610bbf90613b68565b9190505550610bf1565b6000831415610bf057600d549050600d6000815480929190610bea90613b68565b91905055505b5b610bfa82611a08565b7f000000000000000000000000dc2576a24dcf5ab8c4bb48413245d3ca741ee12b73ffffffffffffffffffffffffffffffffffffffff16635f480e9a84336040518363ffffffff1660e01b8152600401610c5592919061388a565b600060405180830381600087803b158015610c6f57600080fd5b505af1158015610c83573d6000803e3d6000fd5b50505050610c913382611ab2565b506001600b819055505050565b7f00000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d35781565b610cd3610ccd611947565b82611ad0565b610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906137cf565b60405180910390fd5b610d1d838383611bae565b505050565b610d2a611947565b73ffffffffffffffffffffffffffffffffffffffff16610d48611288565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061372f565b60405180910390fd5b603660009054906101000a900460ff1615603660006101000a81548160ff021916908315150217905550565b600d5481565b6000610ddb83611135565b8210610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e139061356f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610e7d611947565b73ffffffffffffffffffffffffffffffffffffffff16610e9b611288565b73ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee89061372f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f37573d6000803e3d6000fd5b50565b610f5583838360405180602001604052806000815250611567565b505050565b6000610f64610839565b8210610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c906137ef565b60405180910390fd5b60088281548110610fdf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610ff9611947565b73ffffffffffffffffffffffffffffffffffffffff16611017611288565b73ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110649061372f565b60405180910390fd5b81816037919061107e929190612af0565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906136cf565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d906136af565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f5611947565b73ffffffffffffffffffffffffffffffffffffffff16611213611288565b73ffffffffffffffffffffffffffffffffffffffff1614611269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112609061372f565b60405180910390fd5b6112736000611e0a565b565b603660009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112c190613b05565b80601f01602080910402602001604051908101604052809291908181526020018280546112ed90613b05565b801561133a5780601f1061130f5761010080835404028352916020019161133a565b820191906000526020600020905b81548152906001019060200180831161131d57829003601f168201915b5050505050905090565b6000806101008361135591906139a2565b90506000610100846113679190613bb1565b90506000600e83602881106113a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015490506000826001901b90508081831614945050505050919050565b6113ca611947565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f9061362f565b60405180910390fd5b8060056000611445611947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114f2611947565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161153791906134fc565b60405180910390a35050565b7f000000000000000000000000dc2576a24dcf5ab8c4bb48413245d3ca741ee12b81565b611578611572611947565b83611ad0565b6115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae906137cf565b60405180910390fd5b6115c384848484611ed0565b50505050565b60606115d4826118db565b611613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160a9061376f565b60405180910390fd5b600061161e83611f2c565b9050600081511161163e576040518060200160405280600081525061165f565b8060405160200161164f919061344a565b6040516020818303038152906040525b915050919050565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611709611947565b73ffffffffffffffffffffffffffffffffffffffff16611727611288565b73ffffffffffffffffffffffffffffffffffffffff161461177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117749061372f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e4906135af565b60405180910390fd5b6117f681611e0a565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118c457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806118d457506118d382611fd3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119c283611083565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061010082611a1891906139a2565b9050600061010083611a2a9190613bb1565b9050806001901b600e8360288110611a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015417600e8360288110611aa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0181905550505050565b611acc82826040518060200160405280600081525061203d565b5050565b6000611adb826118db565b611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b119061364f565b60405180910390fd5b6000611b2583611083565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b9457508373ffffffffffffffffffffffffffffffffffffffff16611b7c8461069c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ba55750611ba4818561166d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611bce82611083565b73ffffffffffffffffffffffffffffffffffffffff1614611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b9061374f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b9061360f565b60405180910390fd5b611c9f838383612098565b611caa60008261194f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cfa91906139d3565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d51919061394c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611edb848484611bae565b611ee7848484846121ac565b611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d9061358f565b60405180910390fd5b50505050565b6060611f37826118db565b611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d9061376f565b60405180910390fd5b6000611f80612343565b90506000815111611fa05760405180602001604052806000815250611fcb565b80611faa846123d5565b604051602001611fbb929190613426565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120478383612582565b61205460008484846121ac565b612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a9061358f565b60405180910390fd5b505050565b6120a3838383612750565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120e6576120e181612755565b612125565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461212457612123838261279e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612168576121638161290b565b6121a7565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121a6576121a58282612a4e565b5b5b505050565b60006121cd8473ffffffffffffffffffffffffffffffffffffffff16612acd565b15612336578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121f6611947565b8786866040518563ffffffff1660e01b81526004016122189493929190613487565b602060405180830381600087803b15801561223257600080fd5b505af192505050801561226357506040513d601f19601f820116820180604052508101906122609190612ed1565b60015b6122e6573d8060008114612293576040519150601f19603f3d011682016040523d82523d6000602084013e612298565b606091505b506000815114156122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d59061358f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061233b565b600190505b949350505050565b60606037805461235290613b05565b80601f016020809104026020016040519081016040528092919081815260200182805461237e90613b05565b80156123cb5780601f106123a0576101008083540402835291602001916123cb565b820191906000526020600020905b8154815290600101906020018083116123ae57829003601f168201915b5050505050905090565b6060600082141561241d576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061257d565b600082905060005b6000821461244f57808061243890613b68565b915050600a8261244891906139a2565b9150612425565b60008167ffffffffffffffff811115612491577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156124c35781602001600182028036833780820191505090505b5090505b60008514612576576001826124dc91906139d3565b9150600a856124eb9190613bb1565b60306124f7919061394c565b60f81b818381518110612533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561256f91906139a2565b94506124c7565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e9906136ef565b60405180910390fd5b6125fb816118db565b1561263b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612632906135cf565b60405180910390fd5b61264760008383612098565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612697919061394c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016127ab84611135565b6127b591906139d3565b905060006007600084815260200190815260200160002054905081811461289a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061291f91906139d3565b9050600060096000848152602001908152602001600020549050600060088381548110612975577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600883815481106129bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612a32577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612a5983611135565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612afc90613b05565b90600052602060002090601f016020900481019282612b1e5760008555612b65565b82601f10612b3757803560ff1916838001178555612b65565b82800160010185558215612b65579182015b82811115612b64578235825591602001919060010190612b49565b5b509050612b729190612b76565b5090565b5b80821115612b8f576000816000905550600101612b77565b5090565b6000612ba6612ba1846138d8565b6138b3565b905082815260208101848484011115612bbe57600080fd5b612bc9848285613ac3565b509392505050565b600081359050612be081614310565b92915050565b600081519050612bf581614310565b92915050565b600081359050612c0a81614327565b92915050565b600081359050612c1f8161433e565b92915050565b600081519050612c348161433e565b92915050565b600082601f830112612c4b57600080fd5b8135612c5b848260208601612b93565b91505092915050565b60008083601f840112612c7657600080fd5b8235905067ffffffffffffffff811115612c8f57600080fd5b602083019150836001820283011115612ca757600080fd5b9250929050565b600081359050612cbd81614355565b92915050565b600081519050612cd281614355565b92915050565b600060208284031215612cea57600080fd5b6000612cf884828501612bd1565b91505092915050565b600060208284031215612d1357600080fd5b6000612d2184828501612be6565b91505092915050565b60008060408385031215612d3d57600080fd5b6000612d4b85828601612bd1565b9250506020612d5c85828601612bd1565b9150509250929050565b600080600060608486031215612d7b57600080fd5b6000612d8986828701612bd1565b9350506020612d9a86828701612bd1565b9250506040612dab86828701612cae565b9150509250925092565b60008060008060808587031215612dcb57600080fd5b6000612dd987828801612bd1565b9450506020612dea87828801612bd1565b9350506040612dfb87828801612cae565b925050606085013567ffffffffffffffff811115612e1857600080fd5b612e2487828801612c3a565b91505092959194509250565b60008060408385031215612e4357600080fd5b6000612e5185828601612bd1565b9250506020612e6285828601612bfb565b9150509250929050565b60008060408385031215612e7f57600080fd5b6000612e8d85828601612bd1565b9250506020612e9e85828601612cae565b9150509250929050565b600060208284031215612eba57600080fd5b6000612ec884828501612c10565b91505092915050565b600060208284031215612ee357600080fd5b6000612ef184828501612c25565b91505092915050565b60008060208385031215612f0d57600080fd5b600083013567ffffffffffffffff811115612f2757600080fd5b612f3385828601612c64565b92509250509250929050565b600060208284031215612f5157600080fd5b6000612f5f84828501612cae565b91505092915050565b600060208284031215612f7a57600080fd5b6000612f8884828501612cc3565b91505092915050565b60008060408385031215612fa457600080fd5b6000612fb285828601612cae565b9250506020612fc385828601612cae565b9150509250929050565b612fd681613a07565b82525050565b612fe581613a19565b82525050565b6000612ff682613909565b613000818561391f565b9350613010818560208601613ad2565b61301981613c9e565b840191505092915050565b61302d81613a7b565b82525050565b61303c81613a9f565b82525050565b600061304d82613914565b6130578185613930565b9350613067818560208601613ad2565b61307081613c9e565b840191505092915050565b600061308682613914565b6130908185613941565b93506130a0818560208601613ad2565b80840191505092915050565b60006130b9602b83613930565b91506130c482613caf565b604082019050919050565b60006130dc603283613930565b91506130e782613cfe565b604082019050919050565b60006130ff602683613930565b915061310a82613d4d565b604082019050919050565b6000613122601c83613930565b915061312d82613d9c565b602082019050919050565b6000613145602f83613930565b915061315082613dc5565b604082019050919050565b6000613168602483613930565b915061317382613e14565b604082019050919050565b600061318b601983613930565b915061319682613e63565b602082019050919050565b60006131ae602c83613930565b91506131b982613e8c565b604082019050919050565b60006131d1601e83613930565b91506131dc82613edb565b602082019050919050565b60006131f4603883613930565b91506131ff82613f04565b604082019050919050565b6000613217602a83613930565b915061322282613f53565b604082019050919050565b600061323a602983613930565b915061324582613fa2565b604082019050919050565b600061325d602083613930565b915061326882613ff1565b602082019050919050565b6000613280602c83613930565b915061328b8261401a565b604082019050919050565b60006132a3600583613941565b91506132ae82614069565b600582019050919050565b60006132c6602083613930565b91506132d182614092565b602082019050919050565b60006132e9602983613930565b91506132f4826140bb565b604082019050919050565b600061330c602f83613930565b91506133178261410a565b604082019050919050565b600061332f602183613930565b915061333a82614159565b604082019050919050565b6000613352600f83613930565b915061335d826141a8565b602082019050919050565b6000613375603183613930565b9150613380826141d1565b604082019050919050565b6000613398602c83613930565b91506133a382614220565b604082019050919050565b60006133bb603383613930565b91506133c68261426f565b604082019050919050565b60006133de601683613930565b91506133e9826142be565b602082019050919050565b6000613401601f83613930565b915061340c826142e7565b602082019050919050565b61342081613a71565b82525050565b6000613432828561307b565b915061343e828461307b565b91508190509392505050565b6000613456828461307b565b915061346182613296565b915081905092915050565b60006020820190506134816000830184612fcd565b92915050565b600060808201905061349c6000830187612fcd565b6134a96020830186612fcd565b6134b66040830185613417565b81810360608301526134c88184612feb565b905095945050505050565b60006040820190506134e86000830185612fcd565b6134f56020830184613417565b9392505050565b60006020820190506135116000830184612fdc565b92915050565b600060208201905061352c6000830184613024565b92915050565b60006020820190506135476000830184613033565b92915050565b600060208201905081810360008301526135678184613042565b905092915050565b60006020820190508181036000830152613588816130ac565b9050919050565b600060208201905081810360008301526135a8816130cf565b9050919050565b600060208201905081810360008301526135c8816130f2565b9050919050565b600060208201905081810360008301526135e881613115565b9050919050565b6000602082019050818103600083015261360881613138565b9050919050565b600060208201905081810360008301526136288161315b565b9050919050565b600060208201905081810360008301526136488161317e565b9050919050565b60006020820190508181036000830152613668816131a1565b9050919050565b60006020820190508181036000830152613688816131c4565b9050919050565b600060208201905081810360008301526136a8816131e7565b9050919050565b600060208201905081810360008301526136c88161320a565b9050919050565b600060208201905081810360008301526136e88161322d565b9050919050565b6000602082019050818103600083015261370881613250565b9050919050565b6000602082019050818103600083015261372881613273565b9050919050565b60006020820190508181036000830152613748816132b9565b9050919050565b60006020820190508181036000830152613768816132dc565b9050919050565b60006020820190508181036000830152613788816132ff565b9050919050565b600060208201905081810360008301526137a881613322565b9050919050565b600060208201905081810360008301526137c881613345565b9050919050565b600060208201905081810360008301526137e881613368565b9050919050565b600060208201905081810360008301526138088161338b565b9050919050565b60006020820190508181036000830152613828816133ae565b9050919050565b60006020820190508181036000830152613848816133d1565b9050919050565b60006020820190508181036000830152613868816133f4565b9050919050565b60006020820190506138846000830184613417565b92915050565b600060408201905061389f6000830185613417565b6138ac6020830184612fcd565b9392505050565b60006138bd6138ce565b90506138c98282613b37565b919050565b6000604051905090565b600067ffffffffffffffff8211156138f3576138f2613c6f565b5b6138fc82613c9e565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061395782613a71565b915061396283613a71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561399757613996613be2565b5b828201905092915050565b60006139ad82613a71565b91506139b883613a71565b9250826139c8576139c7613c11565b5b828204905092915050565b60006139de82613a71565b91506139e983613a71565b9250828210156139fc576139fb613be2565b5b828203905092915050565b6000613a1282613a51565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613a8682613a8d565b9050919050565b6000613a9882613a51565b9050919050565b6000613aaa82613ab1565b9050919050565b6000613abc82613a51565b9050919050565b82818337600083830152505050565b60005b83811015613af0578082015181840152602081019050613ad5565b83811115613aff576000848401525b50505050565b60006002820490506001821680613b1d57607f821691505b60208210811415613b3157613b30613c40565b5b50919050565b613b4082613c9e565b810181811067ffffffffffffffff82111715613b5f57613b5e613c6f565b5b80604052505050565b6000613b7382613a71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ba657613ba5613be2565b5b600182019050919050565b6000613bbc82613a71565b9150613bc783613a71565b925082613bd757613bd6613c11565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4d5553545f4f574e5f5448455f54524f4c4c5f594f555f4152455f415454454d60008201527f5054494e475f544f5f4d55544154450000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f414c52454144595f4d5554415445440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4d5553545f4f574e5f41545f4c454153545f4f4e455f4f465f544849535f454c60008201527f495849525f545950455f544f5f4d555441544500000000000000000000000000602082015250565b7f4d55544154494f4e5f49535f4e4f545f41435449564500000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61431981613a07565b811461432457600080fd5b50565b61433081613a19565b811461433b57600080fd5b50565b61434781613a25565b811461435257600080fd5b50565b61435e81613a71565b811461436957600080fd5b5056fea26469706673582212204b652b17aeacd64218262f6d6d4f3e413400ca5c46fd6fc66a1ce52fe66d76b664736f6c63430008040033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357000000000000000000000000dc2576a24dcf5ab8c4bb48413245d3ca741ee12b000000000000000000000000000000000000000000000000000000000000001154726f6c6c746f776e204d7574616e7473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000454542d4d00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _NAME (string): Trolltown Mutants
Arg [1] : _SYMBOL (string): TT-M
Arg [2] : ttAddress (address): 0x54616C0815c306FC22417b96282cA4AA6F47D357
Arg [3] : tteAddress (address): 0xDC2576A24DCf5AB8c4BB48413245d3ca741Ee12B

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 00000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357
Arg [3] : 000000000000000000000000dc2576a24dcf5ab8c4bb48413245d3ca741ee12b
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [5] : 54726f6c6c746f776e204d7574616e7473000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 54542d4d00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

21212:3004:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17771:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11222:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12295:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11878:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18263:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23070:812;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21292:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12993:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23890:92;;;:::i;:::-;;21414:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18001:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24104:109;;;:::i;:::-;;13285:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18382:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23990:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10977:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10763:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7141:94;;;:::i;:::-;;21486:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6922:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11328:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22480:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12522:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21328:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13476:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22132:340;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21373:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12823:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7241:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17771:224;17873:4;17912:35;17897:50;;;:11;:50;;;;:90;;;;17951:36;17975:11;17951:23;:36::i;:::-;17897:90;17890:97;;17771:224;;;:::o;11222:100::-;11276:13;11309:5;11302:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11222:100;:::o;12295:221::-;12371:7;12399:16;12407:7;12399;:16::i;:::-;12391:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12484:15;:24;12500:7;12484:24;;;;;;;;;;;;;;;;;;;;;12477:31;;12295:221;;;:::o;11878:411::-;11959:13;11975:23;11990:7;11975:14;:23::i;:::-;11959:39;;12023:5;12017:11;;:2;:11;;;;12009:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12117:5;12101:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;12126:37;12143:5;12150:12;:10;:12::i;:::-;12126:16;:37::i;:::-;12101:62;12079:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;12260:21;12269:2;12273:7;12260:8;:21::i;:::-;11878:411;;;:::o;18263:113::-;18324:7;18351:10;:17;;;;18344:24;;18263:113;:::o;23070:812::-;9579:1;9725:7;;:19;;9717:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9579:1;9791:7;:18;;;;21937:10:::1;21924:23;;:9;:23;;;21916:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23177:14:::2;;;;;;;;;;;23169:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23260:10;23237:33;;:2;:10;;;23248:7;23237:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;;;23229:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;23383:1;23341:3;:13;;;23355:10;23367:12;23341:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;23333:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;23460:18;23470:7;23460:9;:18::i;:::-;23459:19;23451:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;23509:16;23556:1;23540:12;:17;23536:206;;;23585:11;;23574:22;;23611:11;;:13;;;;;;;;;:::i;:::-;;;;;;23536:206;;;23662:1;23646:12;:17;23642:100;;;23691:11;;23680:22;;23717:11;;:13;;;;;;;;;:::i;:::-;;;;;;23642:100;23536:206;23752:19;23763:7;23752:10;:19::i;:::-;23782:3;:24;;;23807:12;23821:10;23782:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;23843:31;23853:10;23865:8;23843:9;:31::i;:::-;21993:1;9535::::0;9834:7;:22;;;;23070:812;;:::o;21292:29::-;;;:::o;12993:286::-;13135:41;13154:12;:10;:12::i;:::-;13168:7;13135:18;:41::i;:::-;13127:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;13243:28;13253:4;13259:2;13263:7;13243:9;:28::i;:::-;12993:286;;;:::o;23890:92::-;7066:12;:10;:12::i;:::-;7055:23;;:7;:5;:7::i;:::-;:23;;;7047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23960:14:::1;;;;;;;;;;;23959:15;23942:14;;:32;;;;;;;;;;;;;;;;;;23890:92::o:0;21414:30::-;;;;:::o;18001:256::-;18098:7;18134:23;18151:5;18134:16;:23::i;:::-;18126:5;:31;18118:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18223:12;:19;18236:5;18223:19;;;;;;;;;;;;;;;:26;18243:5;18223:26;;;;;;;;;;;;18216:33;;18001:256;;;;:::o;24104:109::-;7066:12;:10;:12::i;:::-;7055:23;;:7;:5;:7::i;:::-;:23;;;7047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24162:10:::1;24154:28;;:51;24183:21;24154:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24104:109::o:0;13285:185::-;13423:39;13440:4;13446:2;13450:7;13423:39;;;;;;;;;;;;:16;:39::i;:::-;13285:185;;;:::o;18382:233::-;18457:7;18493:30;:28;:30::i;:::-;18485:5;:38;18477:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18590:10;18601:5;18590:17;;;;;;;;;;;;;;;;;;;;;;;;18583:24;;18382:233;;;:::o;23990:106::-;7066:12;:10;:12::i;:::-;7055:23;;:7;:5;:7::i;:::-;:23;;;7047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24081:7:::1;;24065:13;:23;;;;;;;:::i;:::-;;23990:106:::0;;:::o;10977:239::-;11049:7;11069:13;11085:7;:16;11093:7;11085:16;;;;;;;;;;;;;;;;;;;;;11069:32;;11137:1;11120:19;;:5;:19;;;;11112:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11203:5;11196:12;;;10977:239;;;:::o;10763:208::-;10835:7;10880:1;10863:19;;:5;:19;;;;10855:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10947:9;:16;10957:5;10947:16;;;;;;;;;;;;;;;;10940:23;;10763:208;;;:::o;7141:94::-;7066:12;:10;:12::i;:::-;7055:23;;:7;:5;:7::i;:::-;:23;;;7047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7206:21:::1;7224:1;7206:9;:21::i;:::-;7141:94::o:0;21486:26::-;;;;;;;;;;;;;:::o;6922:87::-;6968:7;6995:6;;;;;;;;;;;6988:13;;6922:87;:::o;11328:104::-;11384:13;11417:7;11410:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11328:104;:::o;22480:321::-;22537:4;22554:23;22590:3;22580:7;:13;;;;:::i;:::-;22554:39;;22604:22;22639:3;22629:7;:13;;;;:::i;:::-;22604:38;;22653:18;22674:12;22687:15;22674:29;;;;;;;;;;;;;;;;;22653:50;;22714:12;22735:14;22730:1;:19;;22714:36;;22789:4;22781;22768:10;:17;:25;22761:32;;;;;;22480:321;;;:::o;12522:295::-;12637:12;:10;:12::i;:::-;12625:24;;:8;:24;;;;12617:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12737:8;12692:18;:32;12711:12;:10;:12::i;:::-;12692:32;;;;;;;;;;;;;;;:42;12725:8;12692:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;12790:8;12761:48;;12776:12;:10;:12::i;:::-;12761:48;;;12800:8;12761:48;;;;;;:::i;:::-;;;;;;;;12522:295;;:::o;21328:36::-;;;:::o;13476:328::-;13651:41;13670:12;:10;:12::i;:::-;13684:7;13651:18;:41::i;:::-;13643:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;13757:39;13771:4;13777:2;13781:7;13790:5;13757:13;:39::i;:::-;13476:328;;;;:::o;22132:340::-;22205:13;22239:16;22247:7;22239;:16::i;:::-;22231:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22318:23;22344;22359:7;22344:14;:23::i;:::-;22318:49;;22411:1;22391:9;22385:23;:27;:79;;;;;;;;;;;;;;;;;22439:9;22422:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;22385:79;22378:86;;;22132:340;;;:::o;21373:34::-;;;;:::o;12823:164::-;12920:4;12944:18;:25;12963:5;12944:25;;;;;;;;;;;;;;;:35;12970:8;12944:35;;;;;;;;;;;;;;;;;;;;;;;;;12937:42;;12823:164;;;;:::o;7241:229::-;7066:12;:10;:12::i;:::-;7055:23;;:7;:5;:7::i;:::-;:23;;;7047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7364:1:::1;7344:22;;:8;:22;;;;7322:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7443:19;7453:8;7443:9;:19::i;:::-;7241:229:::0;:::o;10452:305::-;10554:4;10606:25;10591:40;;;:11;:40;;;;:105;;;;10663:33;10648:48;;;:11;:48;;;;10591:105;:158;;;;10713:36;10737:11;10713:23;:36::i;:::-;10591:158;10571:178;;10452:305;;;:::o;14131:127::-;14196:4;14248:1;14220:30;;:7;:16;14228:7;14220:16;;;;;;;;;;;;;;;;;;;;;:30;;;;14213:37;;14131:127;;;:::o;6431:98::-;6484:7;6511:10;6504:17;;6431:98;:::o;16319:174::-;16421:2;16394:15;:24;16410:7;16394:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16477:7;16473:2;16439:46;;16448:23;16463:7;16448:14;:23::i;:::-;16439:46;;;;;;;;;;;;16319:174;;:::o;22809:249::-;22866:23;22902:3;22892:7;:13;;;;:::i;:::-;22866:39;;22916:22;22951:3;22941:7;:13;;;;:::i;:::-;22916:38;;23035:14;23030:1;:19;;22997:12;23010:15;22997:29;;;;;;;;;;;;;;;;;:53;22965:12;22978:15;22965:29;;;;;;;;;;;;;;;;:85;;;;22809:249;;;:::o;14618:110::-;14694:26;14704:2;14708:7;14694:26;;;;;;;;;;;;:9;:26::i;:::-;14618:110;;:::o;14264:348::-;14357:4;14382:16;14390:7;14382;:16::i;:::-;14374:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14458:13;14474:23;14489:7;14474:14;:23::i;:::-;14458:39;;14527:5;14516:16;;:7;:16;;;:51;;;;14560:7;14536:31;;:20;14548:7;14536:11;:20::i;:::-;:31;;;14516:51;:87;;;;14571:32;14588:5;14595:7;14571:16;:32::i;:::-;14516:87;14508:96;;;14264:348;;;;:::o;15787:526::-;15946:4;15919:31;;:23;15934:7;15919:14;:23::i;:::-;:31;;;15911:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16029:1;16015:16;;:2;:16;;;;16007:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16085:39;16106:4;16112:2;16116:7;16085:20;:39::i;:::-;16137:29;16154:1;16158:7;16137:8;:29::i;:::-;16198:1;16179:9;:15;16189:4;16179:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;16227:1;16210:9;:13;16220:2;16210:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;16258:2;16239:7;:16;16247:7;16239:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16297:7;16293:2;16278:27;;16287:4;16278:27;;;;;;;;;;;;15787:526;;;:::o;7478:173::-;7534:16;7553:6;;;;;;;;;;;7534:25;;7579:8;7570:6;;:17;;;;;;;;;;;;;;;;;;7634:8;7603:40;;7624:8;7603:40;;;;;;;;;;;;7478:173;;:::o;13810:315::-;13967:28;13977:4;13983:2;13987:7;13967:9;:28::i;:::-;14014:48;14037:4;14043:2;14047:7;14056:5;14014:22;:48::i;:::-;14006:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13810:315;;;;:::o;11438:334::-;11511:13;11545:16;11553:7;11545;:16::i;:::-;11537:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11626:21;11650:10;:8;:10::i;:::-;11626:34;;11702:1;11684:7;11678:21;:25;:86;;;;;;;;;;;;;;;;;11730:7;11739:18;:7;:16;:18::i;:::-;11713:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11678:86;11671:93;;;11438:334;;;:::o;9215:207::-;9345:4;9389:25;9374:40;;;:11;:40;;;;9367:47;;9215:207;;;:::o;14734:321::-;14864:18;14870:2;14874:7;14864:5;:18::i;:::-;14915:54;14946:1;14950:2;14954:7;14963:5;14915:22;:54::i;:::-;14893:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;14734:321;;;:::o;18621:589::-;18765:45;18792:4;18798:2;18802:7;18765:26;:45::i;:::-;18843:1;18827:18;;:4;:18;;;18823:187;;;18862:40;18894:7;18862:31;:40::i;:::-;18823:187;;;18932:2;18924:10;;:4;:10;;;18920:90;;18951:47;18984:4;18990:7;18951:32;:47::i;:::-;18920:90;18823:187;19038:1;19024:16;;:2;:16;;;19020:183;;;19057:45;19094:7;19057:36;:45::i;:::-;19020:183;;;19130:4;19124:10;;:2;:10;;;19120:83;;19151:40;19179:2;19183:7;19151:27;:40::i;:::-;19120:83;19020:183;18621:589;;;:::o;16499:803::-;16654:4;16675:15;:2;:13;;;:15::i;:::-;16671:624;;;16727:2;16711:36;;;16748:12;:10;:12::i;:::-;16762:4;16768:7;16777:5;16711:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16707:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16974:1;16957:6;:13;:18;16953:272;;;17000:60;;;;;;;;;;:::i;:::-;;;;;;;;16953:272;17175:6;17169:13;17160:6;17156:2;17152:15;17145:38;16707:533;16844:45;;;16834:55;;;:6;:55;;;;16827:62;;;;;16671:624;17279:4;17272:11;;16499:803;;;;;;;:::o;22010:114::-;22070:13;22103;22096:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22010:114;:::o;7771:534::-;7827:13;7868:1;7859:5;:10;7855:53;;;7886:10;;;;;;;;;;;;;;;;;;;;;7855:53;7918:12;7933:5;7918:20;;7949:14;7974:78;7989:1;7981:4;:9;7974:78;;8007:8;;;;;:::i;:::-;;;;8038:2;8030:10;;;;;:::i;:::-;;;7974:78;;;8062:19;8094:6;8084:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8062:39;;8112:154;8128:1;8119:5;:10;8112:154;;8156:1;8146:11;;;;;:::i;:::-;;;8223:2;8215:5;:10;;;;:::i;:::-;8202:2;:24;;;;:::i;:::-;8189:39;;8172:6;8179;8172:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;8252:2;8243:11;;;;;:::i;:::-;;;8112:154;;;8290:6;8276:21;;;;;7771:534;;;;:::o;15061:382::-;15155:1;15141:16;;:2;:16;;;;15133:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15214:16;15222:7;15214;:16::i;:::-;15213:17;15205:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15276:45;15305:1;15309:2;15313:7;15276:20;:45::i;:::-;15351:1;15334:9;:13;15344:2;15334:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;15382:2;15363:7;:16;15371:7;15363:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15427:7;15423:2;15402:33;;15419:1;15402:33;;;;;;;;;;;;15061:382;;:::o;17308:126::-;;;;:::o;19443:164::-;19547:10;:17;;;;19520:15;:24;19536:7;19520:24;;;;;;;;;;;:44;;;;19575:10;19591:7;19575:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19443:164;:::o;19613:649::-;19707:22;19757:1;19732:22;19749:4;19732:16;:22::i;:::-;:26;;;;:::i;:::-;19707:51;;19769:18;19790:17;:26;19808:7;19790:26;;;;;;;;;;;;19769:47;;19847:14;19833:10;:28;19829:328;;19878:19;19900:12;:18;19913:4;19900:18;;;;;;;;;;;;;;;:34;19919:14;19900:34;;;;;;;;;;;;19878:56;;19984:11;19951:12;:18;19964:4;19951:18;;;;;;;;;;;;;;;:30;19970:10;19951:30;;;;;;;;;;;:44;;;;20101:10;20068:17;:30;20086:11;20068:30;;;;;;;;;;;:43;;;;19829:328;;20176:17;:26;20194:7;20176:26;;;;;;;;;;;20169:33;;;20220:12;:18;20233:4;20220:18;;;;;;;;;;;;;;;:34;20239:14;20220:34;;;;;;;;;;;20213:41;;;19613:649;;;;:::o;20268:519::-;20352:22;20397:1;20377:10;:17;;;;:21;;;;:::i;:::-;20352:46;;20409:18;20430:15;:24;20446:7;20430:24;;;;;;;;;;;;20409:45;;20467:19;20489:10;20500:14;20489:26;;;;;;;;;;;;;;;;;;;;;;;;20467:48;;20553:11;20528:10;20539;20528:22;;;;;;;;;;;;;;;;;;;;;;;:36;;;;20664:10;20633:15;:28;20649:11;20633:28;;;;;;;;;;;:41;;;;20728:15;:24;20744:7;20728:24;;;;;;;;;;;20721:31;;;20763:10;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20268:519;;;;:::o;19216:221::-;19301:14;19318:20;19335:2;19318:16;:20::i;:::-;19301:37;;19376:7;19349:12;:16;19362:2;19349:16;;;;;;;;;;;;;;;:24;19366:6;19349:24;;;;;;;;;;;:34;;;;19423:6;19394:17;:26;19412:7;19394:26;;;;;;;;;;;:35;;;;19216:221;;;:::o;2489:117::-;2549:4;2597:1;2575:7;:19;;;:23;2568:30;;2489:117;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:139::-;402:5;440:6;427:20;418:29;;456:33;483:5;456:33;:::i;:::-;408:87;;;;:::o;501:143::-;558:5;589:6;583:13;574:22;;605:33;632:5;605:33;:::i;:::-;564:80;;;;:::o;650:133::-;693:5;731:6;718:20;709:29;;747:30;771:5;747:30;:::i;:::-;699:84;;;;:::o;789:137::-;834:5;872:6;859:20;850:29;;888:32;914:5;888:32;:::i;:::-;840:86;;;;:::o;932:141::-;988:5;1019:6;1013:13;1004:22;;1035:32;1061:5;1035:32;:::i;:::-;994:79;;;;:::o;1092:271::-;1147:5;1196:3;1189:4;1181:6;1177:17;1173:27;1163:2;;1214:1;1211;1204:12;1163:2;1254:6;1241:20;1279:78;1353:3;1345:6;1338:4;1330:6;1326:17;1279:78;:::i;:::-;1270:87;;1153:210;;;;;:::o;1383:352::-;1441:8;1451:6;1501:3;1494:4;1486:6;1482:17;1478:27;1468:2;;1519:1;1516;1509:12;1468:2;1555:6;1542:20;1532:30;;1585:18;1577:6;1574:30;1571:2;;;1617:1;1614;1607:12;1571:2;1654:4;1646:6;1642:17;1630:29;;1708:3;1700:4;1692:6;1688:17;1678:8;1674:32;1671:41;1668:2;;;1725:1;1722;1715:12;1668:2;1458:277;;;;;:::o;1741:139::-;1787:5;1825:6;1812:20;1803:29;;1841:33;1868:5;1841:33;:::i;:::-;1793:87;;;;:::o;1886:143::-;1943:5;1974:6;1968:13;1959:22;;1990:33;2017:5;1990:33;:::i;:::-;1949:80;;;;:::o;2035:262::-;2094:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:2;;;2159:1;2156;2149:12;2111:2;2202:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2173:117;2101:196;;;;:::o;2303:284::-;2373:6;2422:2;2410:9;2401:7;2397:23;2393:32;2390:2;;;2438:1;2435;2428:12;2390:2;2481:1;2506:64;2562:7;2553:6;2542:9;2538:22;2506:64;:::i;:::-;2496:74;;2452:128;2380:207;;;;:::o;2593:407::-;2661:6;2669;2718:2;2706:9;2697:7;2693:23;2689:32;2686:2;;;2734:1;2731;2724:12;2686:2;2777:1;2802:53;2847:7;2838:6;2827:9;2823:22;2802:53;:::i;:::-;2792:63;;2748:117;2904:2;2930:53;2975:7;2966:6;2955:9;2951:22;2930:53;:::i;:::-;2920:63;;2875:118;2676:324;;;;;:::o;3006:552::-;3083:6;3091;3099;3148:2;3136:9;3127:7;3123:23;3119:32;3116:2;;;3164:1;3161;3154:12;3116:2;3207:1;3232:53;3277:7;3268:6;3257:9;3253:22;3232:53;:::i;:::-;3222:63;;3178:117;3334:2;3360:53;3405:7;3396:6;3385:9;3381:22;3360:53;:::i;:::-;3350:63;;3305:118;3462:2;3488:53;3533:7;3524:6;3513:9;3509:22;3488:53;:::i;:::-;3478:63;;3433:118;3106:452;;;;;:::o;3564:809::-;3659:6;3667;3675;3683;3732:3;3720:9;3711:7;3707:23;3703:33;3700:2;;;3749:1;3746;3739:12;3700:2;3792:1;3817:53;3862:7;3853:6;3842:9;3838:22;3817:53;:::i;:::-;3807:63;;3763:117;3919:2;3945:53;3990:7;3981:6;3970:9;3966:22;3945:53;:::i;:::-;3935:63;;3890:118;4047:2;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4018:118;4203:2;4192:9;4188:18;4175:32;4234:18;4226:6;4223:30;4220:2;;;4266:1;4263;4256:12;4220:2;4294:62;4348:7;4339:6;4328:9;4324:22;4294:62;:::i;:::-;4284:72;;4146:220;3690:683;;;;;;;:::o;4379:401::-;4444:6;4452;4501:2;4489:9;4480:7;4476:23;4472:32;4469:2;;;4517:1;4514;4507:12;4469:2;4560:1;4585:53;4630:7;4621:6;4610:9;4606:22;4585:53;:::i;:::-;4575:63;;4531:117;4687:2;4713:50;4755:7;4746:6;4735:9;4731:22;4713:50;:::i;:::-;4703:60;;4658:115;4459:321;;;;;:::o;4786:407::-;4854:6;4862;4911:2;4899:9;4890:7;4886:23;4882:32;4879:2;;;4927:1;4924;4917:12;4879:2;4970:1;4995:53;5040:7;5031:6;5020:9;5016:22;4995:53;:::i;:::-;4985:63;;4941:117;5097:2;5123:53;5168:7;5159:6;5148:9;5144:22;5123:53;:::i;:::-;5113:63;;5068:118;4869:324;;;;;:::o;5199:260::-;5257:6;5306:2;5294:9;5285:7;5281:23;5277:32;5274:2;;;5322:1;5319;5312:12;5274:2;5365:1;5390:52;5434:7;5425:6;5414:9;5410:22;5390:52;:::i;:::-;5380:62;;5336:116;5264:195;;;;:::o;5465:282::-;5534:6;5583:2;5571:9;5562:7;5558:23;5554:32;5551:2;;;5599:1;5596;5589:12;5551:2;5642:1;5667:63;5722:7;5713:6;5702:9;5698:22;5667:63;:::i;:::-;5657:73;;5613:127;5541:206;;;;:::o;5753:395::-;5824:6;5832;5881:2;5869:9;5860:7;5856:23;5852:32;5849:2;;;5897:1;5894;5887:12;5849:2;5968:1;5957:9;5953:17;5940:31;5998:18;5990:6;5987:30;5984:2;;;6030:1;6027;6020:12;5984:2;6066:65;6123:7;6114:6;6103:9;6099:22;6066:65;:::i;:::-;6048:83;;;;5911:230;5839:309;;;;;:::o;6154:262::-;6213:6;6262:2;6250:9;6241:7;6237:23;6233:32;6230:2;;;6278:1;6275;6268:12;6230:2;6321:1;6346:53;6391:7;6382:6;6371:9;6367:22;6346:53;:::i;:::-;6336:63;;6292:117;6220:196;;;;:::o;6422:284::-;6492:6;6541:2;6529:9;6520:7;6516:23;6512:32;6509:2;;;6557:1;6554;6547:12;6509:2;6600:1;6625:64;6681:7;6672:6;6661:9;6657:22;6625:64;:::i;:::-;6615:74;;6571:128;6499:207;;;;:::o;6712:407::-;6780:6;6788;6837:2;6825:9;6816:7;6812:23;6808:32;6805:2;;;6853:1;6850;6843:12;6805:2;6896:1;6921:53;6966:7;6957:6;6946:9;6942:22;6921:53;:::i;:::-;6911:63;;6867:117;7023:2;7049:53;7094:7;7085:6;7074:9;7070:22;7049:53;:::i;:::-;7039:63;;6994:118;6795:324;;;;;:::o;7125:118::-;7212:24;7230:5;7212:24;:::i;:::-;7207:3;7200:37;7190:53;;:::o;7249:109::-;7330:21;7345:5;7330:21;:::i;:::-;7325:3;7318:34;7308:50;;:::o;7364:360::-;7450:3;7478:38;7510:5;7478:38;:::i;:::-;7532:70;7595:6;7590:3;7532:70;:::i;:::-;7525:77;;7611:52;7656:6;7651:3;7644:4;7637:5;7633:16;7611:52;:::i;:::-;7688:29;7710:6;7688:29;:::i;:::-;7683:3;7679:39;7672:46;;7454:270;;;;;:::o;7730:179::-;7841:61;7896:5;7841:61;:::i;:::-;7836:3;7829:74;7819:90;;:::o;7915:167::-;8020:55;8069:5;8020:55;:::i;:::-;8015:3;8008:68;7998:84;;:::o;8088:364::-;8176:3;8204:39;8237:5;8204:39;:::i;:::-;8259:71;8323:6;8318:3;8259:71;:::i;:::-;8252:78;;8339:52;8384:6;8379:3;8372:4;8365:5;8361:16;8339:52;:::i;:::-;8416:29;8438:6;8416:29;:::i;:::-;8411:3;8407:39;8400:46;;8180:272;;;;;:::o;8458:377::-;8564:3;8592:39;8625:5;8592:39;:::i;:::-;8647:89;8729:6;8724:3;8647:89;:::i;:::-;8640:96;;8745:52;8790:6;8785:3;8778:4;8771:5;8767:16;8745:52;:::i;:::-;8822:6;8817:3;8813:16;8806:23;;8568:267;;;;;:::o;8841:366::-;8983:3;9004:67;9068:2;9063:3;9004:67;:::i;:::-;8997:74;;9080:93;9169:3;9080:93;:::i;:::-;9198:2;9193:3;9189:12;9182:19;;8987:220;;;:::o;9213:366::-;9355:3;9376:67;9440:2;9435:3;9376:67;:::i;:::-;9369:74;;9452:93;9541:3;9452:93;:::i;:::-;9570:2;9565:3;9561:12;9554:19;;9359:220;;;:::o;9585:366::-;9727:3;9748:67;9812:2;9807:3;9748:67;:::i;:::-;9741:74;;9824:93;9913:3;9824:93;:::i;:::-;9942:2;9937:3;9933:12;9926:19;;9731:220;;;:::o;9957:366::-;10099:3;10120:67;10184:2;10179:3;10120:67;:::i;:::-;10113:74;;10196:93;10285:3;10196:93;:::i;:::-;10314:2;10309:3;10305:12;10298:19;;10103:220;;;:::o;10329:366::-;10471:3;10492:67;10556:2;10551:3;10492:67;:::i;:::-;10485:74;;10568:93;10657:3;10568:93;:::i;:::-;10686:2;10681:3;10677:12;10670:19;;10475:220;;;:::o;10701:366::-;10843:3;10864:67;10928:2;10923:3;10864:67;:::i;:::-;10857:74;;10940:93;11029:3;10940:93;:::i;:::-;11058:2;11053:3;11049:12;11042:19;;10847:220;;;:::o;11073:366::-;11215:3;11236:67;11300:2;11295:3;11236:67;:::i;:::-;11229:74;;11312:93;11401:3;11312:93;:::i;:::-;11430:2;11425:3;11421:12;11414:19;;11219:220;;;:::o;11445:366::-;11587:3;11608:67;11672:2;11667:3;11608:67;:::i;:::-;11601:74;;11684:93;11773:3;11684:93;:::i;:::-;11802:2;11797:3;11793:12;11786:19;;11591:220;;;:::o;11817:366::-;11959:3;11980:67;12044:2;12039:3;11980:67;:::i;:::-;11973:74;;12056:93;12145:3;12056:93;:::i;:::-;12174:2;12169:3;12165:12;12158:19;;11963:220;;;:::o;12189:366::-;12331:3;12352:67;12416:2;12411:3;12352:67;:::i;:::-;12345:74;;12428:93;12517:3;12428:93;:::i;:::-;12546:2;12541:3;12537:12;12530:19;;12335:220;;;:::o;12561:366::-;12703:3;12724:67;12788:2;12783:3;12724:67;:::i;:::-;12717:74;;12800:93;12889:3;12800:93;:::i;:::-;12918:2;12913:3;12909:12;12902:19;;12707:220;;;:::o;12933:366::-;13075:3;13096:67;13160:2;13155:3;13096:67;:::i;:::-;13089:74;;13172:93;13261:3;13172:93;:::i;:::-;13290:2;13285:3;13281:12;13274:19;;13079:220;;;:::o;13305:366::-;13447:3;13468:67;13532:2;13527:3;13468:67;:::i;:::-;13461:74;;13544:93;13633:3;13544:93;:::i;:::-;13662:2;13657:3;13653:12;13646:19;;13451:220;;;:::o;13677:366::-;13819:3;13840:67;13904:2;13899:3;13840:67;:::i;:::-;13833:74;;13916:93;14005:3;13916:93;:::i;:::-;14034:2;14029:3;14025:12;14018:19;;13823:220;;;:::o;14049:400::-;14209:3;14230:84;14312:1;14307:3;14230:84;:::i;:::-;14223:91;;14323:93;14412:3;14323:93;:::i;:::-;14441:1;14436:3;14432:11;14425:18;;14213:236;;;:::o;14455:366::-;14597:3;14618:67;14682:2;14677:3;14618:67;:::i;:::-;14611:74;;14694:93;14783:3;14694:93;:::i;:::-;14812:2;14807:3;14803:12;14796:19;;14601:220;;;:::o;14827:366::-;14969:3;14990:67;15054:2;15049:3;14990:67;:::i;:::-;14983:74;;15066:93;15155:3;15066:93;:::i;:::-;15184:2;15179:3;15175:12;15168:19;;14973:220;;;:::o;15199:366::-;15341:3;15362:67;15426:2;15421:3;15362:67;:::i;:::-;15355:74;;15438:93;15527:3;15438:93;:::i;:::-;15556:2;15551:3;15547:12;15540:19;;15345:220;;;:::o;15571:366::-;15713:3;15734:67;15798:2;15793:3;15734:67;:::i;:::-;15727:74;;15810:93;15899:3;15810:93;:::i;:::-;15928:2;15923:3;15919:12;15912:19;;15717:220;;;:::o;15943:366::-;16085:3;16106:67;16170:2;16165:3;16106:67;:::i;:::-;16099:74;;16182:93;16271:3;16182:93;:::i;:::-;16300:2;16295:3;16291:12;16284:19;;16089:220;;;:::o;16315:366::-;16457:3;16478:67;16542:2;16537:3;16478:67;:::i;:::-;16471:74;;16554:93;16643:3;16554:93;:::i;:::-;16672:2;16667:3;16663:12;16656:19;;16461:220;;;:::o;16687:366::-;16829:3;16850:67;16914:2;16909:3;16850:67;:::i;:::-;16843:74;;16926:93;17015:3;16926:93;:::i;:::-;17044:2;17039:3;17035:12;17028:19;;16833:220;;;:::o;17059:366::-;17201:3;17222:67;17286:2;17281:3;17222:67;:::i;:::-;17215:74;;17298:93;17387:3;17298:93;:::i;:::-;17416:2;17411:3;17407:12;17400:19;;17205:220;;;:::o;17431:366::-;17573:3;17594:67;17658:2;17653:3;17594:67;:::i;:::-;17587:74;;17670:93;17759:3;17670:93;:::i;:::-;17788:2;17783:3;17779:12;17772:19;;17577:220;;;:::o;17803:366::-;17945:3;17966:67;18030:2;18025:3;17966:67;:::i;:::-;17959:74;;18042:93;18131:3;18042:93;:::i;:::-;18160:2;18155:3;18151:12;18144:19;;17949:220;;;:::o;18175:118::-;18262:24;18280:5;18262:24;:::i;:::-;18257:3;18250:37;18240:53;;:::o;18299:435::-;18479:3;18501:95;18592:3;18583:6;18501:95;:::i;:::-;18494:102;;18613:95;18704:3;18695:6;18613:95;:::i;:::-;18606:102;;18725:3;18718:10;;18483:251;;;;;:::o;18740:541::-;18973:3;18995:95;19086:3;19077:6;18995:95;:::i;:::-;18988:102;;19107:148;19251:3;19107:148;:::i;:::-;19100:155;;19272:3;19265:10;;18977:304;;;;:::o;19287:222::-;19380:4;19418:2;19407:9;19403:18;19395:26;;19431:71;19499:1;19488:9;19484:17;19475:6;19431:71;:::i;:::-;19385:124;;;;:::o;19515:640::-;19710:4;19748:3;19737:9;19733:19;19725:27;;19762:71;19830:1;19819:9;19815:17;19806:6;19762:71;:::i;:::-;19843:72;19911:2;19900:9;19896:18;19887:6;19843:72;:::i;:::-;19925;19993:2;19982:9;19978:18;19969:6;19925:72;:::i;:::-;20044:9;20038:4;20034:20;20029:2;20018:9;20014:18;20007:48;20072:76;20143:4;20134:6;20072:76;:::i;:::-;20064:84;;19715:440;;;;;;;:::o;20161:332::-;20282:4;20320:2;20309:9;20305:18;20297:26;;20333:71;20401:1;20390:9;20386:17;20377:6;20333:71;:::i;:::-;20414:72;20482:2;20471:9;20467:18;20458:6;20414:72;:::i;:::-;20287:206;;;;;:::o;20499:210::-;20586:4;20624:2;20613:9;20609:18;20601:26;;20637:65;20699:1;20688:9;20684:17;20675:6;20637:65;:::i;:::-;20591:118;;;;:::o;20715:270::-;20832:4;20870:2;20859:9;20855:18;20847:26;;20883:95;20975:1;20964:9;20960:17;20951:6;20883:95;:::i;:::-;20837:148;;;;:::o;20991:258::-;21102:4;21140:2;21129:9;21125:18;21117:26;;21153:89;21239:1;21228:9;21224:17;21215:6;21153:89;:::i;:::-;21107:142;;;;:::o;21255:313::-;21368:4;21406:2;21395:9;21391:18;21383:26;;21455:9;21449:4;21445:20;21441:1;21430:9;21426:17;21419:47;21483:78;21556:4;21547:6;21483:78;:::i;:::-;21475:86;;21373:195;;;;:::o;21574:419::-;21740:4;21778:2;21767:9;21763:18;21755:26;;21827:9;21821:4;21817:20;21813:1;21802:9;21798:17;21791:47;21855:131;21981:4;21855:131;:::i;:::-;21847:139;;21745:248;;;:::o;21999:419::-;22165:4;22203:2;22192:9;22188:18;22180:26;;22252:9;22246:4;22242:20;22238:1;22227:9;22223:17;22216:47;22280:131;22406:4;22280:131;:::i;:::-;22272:139;;22170:248;;;:::o;22424:419::-;22590:4;22628:2;22617:9;22613:18;22605:26;;22677:9;22671:4;22667:20;22663:1;22652:9;22648:17;22641:47;22705:131;22831:4;22705:131;:::i;:::-;22697:139;;22595:248;;;:::o;22849:419::-;23015:4;23053:2;23042:9;23038:18;23030:26;;23102:9;23096:4;23092:20;23088:1;23077:9;23073:17;23066:47;23130:131;23256:4;23130:131;:::i;:::-;23122:139;;23020:248;;;:::o;23274:419::-;23440:4;23478:2;23467:9;23463:18;23455:26;;23527:9;23521:4;23517:20;23513:1;23502:9;23498:17;23491:47;23555:131;23681:4;23555:131;:::i;:::-;23547:139;;23445:248;;;:::o;23699:419::-;23865:4;23903:2;23892:9;23888:18;23880:26;;23952:9;23946:4;23942:20;23938:1;23927:9;23923:17;23916:47;23980:131;24106:4;23980:131;:::i;:::-;23972:139;;23870:248;;;:::o;24124:419::-;24290:4;24328:2;24317:9;24313:18;24305:26;;24377:9;24371:4;24367:20;24363:1;24352:9;24348:17;24341:47;24405:131;24531:4;24405:131;:::i;:::-;24397:139;;24295:248;;;:::o;24549:419::-;24715:4;24753:2;24742:9;24738:18;24730:26;;24802:9;24796:4;24792:20;24788:1;24777:9;24773:17;24766:47;24830:131;24956:4;24830:131;:::i;:::-;24822:139;;24720:248;;;:::o;24974:419::-;25140:4;25178:2;25167:9;25163:18;25155:26;;25227:9;25221:4;25217:20;25213:1;25202:9;25198:17;25191:47;25255:131;25381:4;25255:131;:::i;:::-;25247:139;;25145:248;;;:::o;25399:419::-;25565:4;25603:2;25592:9;25588:18;25580:26;;25652:9;25646:4;25642:20;25638:1;25627:9;25623:17;25616:47;25680:131;25806:4;25680:131;:::i;:::-;25672:139;;25570:248;;;:::o;25824:419::-;25990:4;26028:2;26017:9;26013:18;26005:26;;26077:9;26071:4;26067:20;26063:1;26052:9;26048:17;26041:47;26105:131;26231:4;26105:131;:::i;:::-;26097:139;;25995:248;;;:::o;26249:419::-;26415:4;26453:2;26442:9;26438:18;26430:26;;26502:9;26496:4;26492:20;26488:1;26477:9;26473:17;26466:47;26530:131;26656:4;26530:131;:::i;:::-;26522:139;;26420:248;;;:::o;26674:419::-;26840:4;26878:2;26867:9;26863:18;26855:26;;26927:9;26921:4;26917:20;26913:1;26902:9;26898:17;26891:47;26955:131;27081:4;26955:131;:::i;:::-;26947:139;;26845:248;;;:::o;27099:419::-;27265:4;27303:2;27292:9;27288:18;27280:26;;27352:9;27346:4;27342:20;27338:1;27327:9;27323:17;27316:47;27380:131;27506:4;27380:131;:::i;:::-;27372:139;;27270:248;;;:::o;27524:419::-;27690:4;27728:2;27717:9;27713:18;27705:26;;27777:9;27771:4;27767:20;27763:1;27752:9;27748:17;27741:47;27805:131;27931:4;27805:131;:::i;:::-;27797:139;;27695:248;;;:::o;27949:419::-;28115:4;28153:2;28142:9;28138:18;28130:26;;28202:9;28196:4;28192:20;28188:1;28177:9;28173:17;28166:47;28230:131;28356:4;28230:131;:::i;:::-;28222:139;;28120:248;;;:::o;28374:419::-;28540:4;28578:2;28567:9;28563:18;28555:26;;28627:9;28621:4;28617:20;28613:1;28602:9;28598:17;28591:47;28655:131;28781:4;28655:131;:::i;:::-;28647:139;;28545:248;;;:::o;28799:419::-;28965:4;29003:2;28992:9;28988:18;28980:26;;29052:9;29046:4;29042:20;29038:1;29027:9;29023:17;29016:47;29080:131;29206:4;29080:131;:::i;:::-;29072:139;;28970:248;;;:::o;29224:419::-;29390:4;29428:2;29417:9;29413:18;29405:26;;29477:9;29471:4;29467:20;29463:1;29452:9;29448:17;29441:47;29505:131;29631:4;29505:131;:::i;:::-;29497:139;;29395:248;;;:::o;29649:419::-;29815:4;29853:2;29842:9;29838:18;29830:26;;29902:9;29896:4;29892:20;29888:1;29877:9;29873:17;29866:47;29930:131;30056:4;29930:131;:::i;:::-;29922:139;;29820:248;;;:::o;30074:419::-;30240:4;30278:2;30267:9;30263:18;30255:26;;30327:9;30321:4;30317:20;30313:1;30302:9;30298:17;30291:47;30355:131;30481:4;30355:131;:::i;:::-;30347:139;;30245:248;;;:::o;30499:419::-;30665:4;30703:2;30692:9;30688:18;30680:26;;30752:9;30746:4;30742:20;30738:1;30727:9;30723:17;30716:47;30780:131;30906:4;30780:131;:::i;:::-;30772:139;;30670:248;;;:::o;30924:419::-;31090:4;31128:2;31117:9;31113:18;31105:26;;31177:9;31171:4;31167:20;31163:1;31152:9;31148:17;31141:47;31205:131;31331:4;31205:131;:::i;:::-;31197:139;;31095:248;;;:::o;31349:419::-;31515:4;31553:2;31542:9;31538:18;31530:26;;31602:9;31596:4;31592:20;31588:1;31577:9;31573:17;31566:47;31630:131;31756:4;31630:131;:::i;:::-;31622:139;;31520:248;;;:::o;31774:222::-;31867:4;31905:2;31894:9;31890:18;31882:26;;31918:71;31986:1;31975:9;31971:17;31962:6;31918:71;:::i;:::-;31872:124;;;;:::o;32002:332::-;32123:4;32161:2;32150:9;32146:18;32138:26;;32174:71;32242:1;32231:9;32227:17;32218:6;32174:71;:::i;:::-;32255:72;32323:2;32312:9;32308:18;32299:6;32255:72;:::i;:::-;32128:206;;;;;:::o;32340:129::-;32374:6;32401:20;;:::i;:::-;32391:30;;32430:33;32458:4;32450:6;32430:33;:::i;:::-;32381:88;;;:::o;32475:75::-;32508:6;32541:2;32535:9;32525:19;;32515:35;:::o;32556:307::-;32617:4;32707:18;32699:6;32696:30;32693:2;;;32729:18;;:::i;:::-;32693:2;32767:29;32789:6;32767:29;:::i;:::-;32759:37;;32851:4;32845;32841:15;32833:23;;32622:241;;;:::o;32869:98::-;32920:6;32954:5;32948:12;32938:22;;32927:40;;;:::o;32973:99::-;33025:6;33059:5;33053:12;33043:22;;33032:40;;;:::o;33078:168::-;33161:11;33195:6;33190:3;33183:19;33235:4;33230:3;33226:14;33211:29;;33173:73;;;;:::o;33252:169::-;33336:11;33370:6;33365:3;33358:19;33410:4;33405:3;33401:14;33386:29;;33348:73;;;;:::o;33427:148::-;33529:11;33566:3;33551:18;;33541:34;;;;:::o;33581:305::-;33621:3;33640:20;33658:1;33640:20;:::i;:::-;33635:25;;33674:20;33692:1;33674:20;:::i;:::-;33669:25;;33828:1;33760:66;33756:74;33753:1;33750:81;33747:2;;;33834:18;;:::i;:::-;33747:2;33878:1;33875;33871:9;33864:16;;33625:261;;;;:::o;33892:185::-;33932:1;33949:20;33967:1;33949:20;:::i;:::-;33944:25;;33983:20;34001:1;33983:20;:::i;:::-;33978:25;;34022:1;34012:2;;34027:18;;:::i;:::-;34012:2;34069:1;34066;34062:9;34057:14;;33934:143;;;;:::o;34083:191::-;34123:4;34143:20;34161:1;34143:20;:::i;:::-;34138:25;;34177:20;34195:1;34177:20;:::i;:::-;34172:25;;34216:1;34213;34210:8;34207:2;;;34221:18;;:::i;:::-;34207:2;34266:1;34263;34259:9;34251:17;;34128:146;;;;:::o;34280:96::-;34317:7;34346:24;34364:5;34346:24;:::i;:::-;34335:35;;34325:51;;;:::o;34382:90::-;34416:7;34459:5;34452:13;34445:21;34434:32;;34424:48;;;:::o;34478:149::-;34514:7;34554:66;34547:5;34543:78;34532:89;;34522:105;;;:::o;34633:126::-;34670:7;34710:42;34703:5;34699:54;34688:65;;34678:81;;;:::o;34765:77::-;34802:7;34831:5;34820:16;;34810:32;;;:::o;34848:174::-;34922:9;34955:61;35010:5;34955:61;:::i;:::-;34942:74;;34932:90;;;:::o;35028:137::-;35102:9;35135:24;35153:5;35135:24;:::i;:::-;35122:37;;35112:53;;;:::o;35171:162::-;35239:9;35272:55;35321:5;35272:55;:::i;:::-;35259:68;;35249:84;;;:::o;35339:131::-;35407:9;35440:24;35458:5;35440:24;:::i;:::-;35427:37;;35417:53;;;:::o;35476:154::-;35560:6;35555:3;35550;35537:30;35622:1;35613:6;35608:3;35604:16;35597:27;35527:103;;;:::o;35636:307::-;35704:1;35714:113;35728:6;35725:1;35722:13;35714:113;;;35813:1;35808:3;35804:11;35798:18;35794:1;35789:3;35785:11;35778:39;35750:2;35747:1;35743:10;35738:15;;35714:113;;;35845:6;35842:1;35839:13;35836:2;;;35925:1;35916:6;35911:3;35907:16;35900:27;35836:2;35685:258;;;;:::o;35949:320::-;35993:6;36030:1;36024:4;36020:12;36010:22;;36077:1;36071:4;36067:12;36098:18;36088:2;;36154:4;36146:6;36142:17;36132:27;;36088:2;36216;36208:6;36205:14;36185:18;36182:38;36179:2;;;36235:18;;:::i;:::-;36179:2;36000:269;;;;:::o;36275:281::-;36358:27;36380:4;36358:27;:::i;:::-;36350:6;36346:40;36488:6;36476:10;36473:22;36452:18;36440:10;36437:34;36434:62;36431:2;;;36499:18;;:::i;:::-;36431:2;36539:10;36535:2;36528:22;36318:238;;;:::o;36562:233::-;36601:3;36624:24;36642:5;36624:24;:::i;:::-;36615:33;;36670:66;36663:5;36660:77;36657:2;;;36740:18;;:::i;:::-;36657:2;36787:1;36780:5;36776:13;36769:20;;36605:190;;;:::o;36801:176::-;36833:1;36850:20;36868:1;36850:20;:::i;:::-;36845:25;;36884:20;36902:1;36884:20;:::i;:::-;36879:25;;36923:1;36913:2;;36928:18;;:::i;:::-;36913:2;36969:1;36966;36962:9;36957:14;;36835:142;;;;:::o;36983:180::-;37031:77;37028:1;37021:88;37128:4;37125:1;37118:15;37152:4;37149:1;37142:15;37169:180;37217:77;37214:1;37207:88;37314:4;37311:1;37304:15;37338:4;37335:1;37328:15;37355:180;37403:77;37400:1;37393:88;37500:4;37497:1;37490:15;37524:4;37521:1;37514:15;37541:180;37589:77;37586:1;37579:88;37686:4;37683:1;37676:15;37710:4;37707:1;37700:15;37727:102;37768:6;37819:2;37815:7;37810:2;37803:5;37799:14;37795:28;37785:38;;37775:54;;;:::o;37835:230::-;37975:34;37971:1;37963:6;37959:14;37952:58;38044:13;38039:2;38031:6;38027:15;38020:38;37941:124;:::o;38071:237::-;38211:34;38207:1;38199:6;38195:14;38188:58;38280:20;38275:2;38267:6;38263:15;38256:45;38177:131;:::o;38314:225::-;38454:34;38450:1;38442:6;38438:14;38431:58;38523:8;38518:2;38510:6;38506:15;38499:33;38420:119;:::o;38545:178::-;38685:30;38681:1;38673:6;38669:14;38662:54;38651:72;:::o;38729:234::-;38869:34;38865:1;38857:6;38853:14;38846:58;38938:17;38933:2;38925:6;38921:15;38914:42;38835:128;:::o;38969:223::-;39109:34;39105:1;39097:6;39093:14;39086:58;39178:6;39173:2;39165:6;39161:15;39154:31;39075:117;:::o;39198:175::-;39338:27;39334:1;39326:6;39322:14;39315:51;39304:69;:::o;39379:231::-;39519:34;39515:1;39507:6;39503:14;39496:58;39588:14;39583:2;39575:6;39571:15;39564:39;39485:125;:::o;39616:180::-;39756:32;39752:1;39744:6;39740:14;39733:56;39722:74;:::o;39802:243::-;39942:34;39938:1;39930:6;39926:14;39919:58;40011:26;40006:2;39998:6;39994:15;39987:51;39908:137;:::o;40051:229::-;40191:34;40187:1;40179:6;40175:14;40168:58;40260:12;40255:2;40247:6;40243:15;40236:37;40157:123;:::o;40286:228::-;40426:34;40422:1;40414:6;40410:14;40403:58;40495:11;40490:2;40482:6;40478:15;40471:36;40392:122;:::o;40520:182::-;40660:34;40656:1;40648:6;40644:14;40637:58;40626:76;:::o;40708:231::-;40848:34;40844:1;40836:6;40832:14;40825:58;40917:14;40912:2;40904:6;40900:15;40893:39;40814:125;:::o;40945:155::-;41085:7;41081:1;41073:6;41069:14;41062:31;41051:49;:::o;41106:182::-;41246:34;41242:1;41234:6;41230:14;41223:58;41212:76;:::o;41294:228::-;41434:34;41430:1;41422:6;41418:14;41411:58;41503:11;41498:2;41490:6;41486:15;41479:36;41400:122;:::o;41528:234::-;41668:34;41664:1;41656:6;41652:14;41645:58;41737:17;41732:2;41724:6;41720:15;41713:42;41634:128;:::o;41768:220::-;41908:34;41904:1;41896:6;41892:14;41885:58;41977:3;41972:2;41964:6;41960:15;41953:28;41874:114;:::o;41994:165::-;42134:17;42130:1;42122:6;42118:14;42111:41;42100:59;:::o;42165:236::-;42305:34;42301:1;42293:6;42289:14;42282:58;42374:19;42369:2;42361:6;42357:15;42350:44;42271:130;:::o;42407:231::-;42547:34;42543:1;42535:6;42531:14;42524:58;42616:14;42611:2;42603:6;42599:15;42592:39;42513:125;:::o;42644:238::-;42784:34;42780:1;42772:6;42768:14;42761:58;42853:21;42848:2;42840:6;42836:15;42829:46;42750:132;:::o;42888:172::-;43028:24;43024:1;43016:6;43012:14;43005:48;42994:66;:::o;43066:181::-;43206:33;43202:1;43194:6;43190:14;43183:57;43172:75;:::o;43253:122::-;43326:24;43344:5;43326:24;:::i;:::-;43319:5;43316:35;43306:2;;43365:1;43362;43355:12;43306:2;43296:79;:::o;43381:116::-;43451:21;43466:5;43451:21;:::i;:::-;43444:5;43441:32;43431:2;;43487:1;43484;43477:12;43431:2;43421:76;:::o;43503:120::-;43575:23;43592:5;43575:23;:::i;:::-;43568:5;43565:34;43555:2;;43613:1;43610;43603:12;43555:2;43545:78;:::o;43629:122::-;43702:24;43720:5;43702:24;:::i;:::-;43695:5;43692:35;43682:2;;43741:1;43738;43731:12;43682:2;43672:79;:::o

Swarm Source

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